软件系统设计与实现毕业设计.docx
- 文档编号:17596046
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:78
- 大小:466.64KB
软件系统设计与实现毕业设计.docx
《软件系统设计与实现毕业设计.docx》由会员分享,可在线阅读,更多相关《软件系统设计与实现毕业设计.docx(78页珍藏版)》请在冰点文库上搜索。
软件系统设计与实现毕业设计
软件系统设计与实现毕业设计
1简介
1.1背景与意义
电脑鼠(Micro-Mouse)是指采用嵌入式微处理器、传感器、机械电子运动部件为一体的微型智能移动机器人[1],可实现探测、分析、行走等基本功能控制,且集合传感、机械移动等设计功用[2]。
国际电气和电子工程学会(IEEE)每年都要举办一次国际性的电脑鼠走迷宫竞赛,而对应的赛事要求、设计成果等内容业已成为参与电脑鼠研究的关注点[3]。
目前电脑鼠迷宫竞赛就参与程度、设计水平、发展程度而言,主要集中在美国、日本、英国、新加坡等,例如APEC(美国)、ALLJAPANMICROMOUSECONTEST(日本)、SingaporeInter-SchoolMicromouseCompetition(新加坡)、Euromousemazecontest(英国)[4]。
我国于2007年开始举办“IEEE标准电脑鼠走迷宫”邀请赛,而比赛发展至今,比赛规模和参赛质量上均取得了显著的进步[5]。
目前电脑鼠迷宫边塞规定,电脑鼠在按下启动键后将自行选取搜寻法则,并且在迷宫行进过程中实现前行、转弯、往返、记忆迷宫墙壁资料、计算最优路径、探测障碍物、寻找目标终点等功能内容[6]。
1.2研究内容与思路
本文以“IEEE标准电脑鼠走迷宫”竞赛规则为研究背景,选取电脑鼠MicromouseV3.2作为研究对象和实验工具,以STM32F103R8T6增强型系列微控制器[8]作为电脑鼠主控制器,具体依据课题设计要求分别完成规定部分,包括三个独立部分:
(1)往返运动:
电脑鼠从起始点A处出发,运行到挡板B处,并原路返回至起始点A处,如图1.1所示。
图1.1“往返运动”示意图
(2)连续转弯:
电脑鼠从A点出发,先后经B,C,D点之后,到达A处;之后掉头原路返回,如图1.2所示。
图1.2“连续转弯”示意图
(3)寻找目标点:
电脑鼠从A点出发,寻找到迷宫终点B处,并最终运行到终点B处。
如图1.3所示。
图1.3“寻找目标点”示意图
课题研究具体的研究内容分为以下几个部分:
(1)电脑鼠硬件结构研究与分析,包括电脑鼠主控制模块的特征与开发原理、电机选择与驱动模块分析、红外检测模块、迷宫挡板探测模块、电源模块、速度感应与状态调整模块、电动机选取与分析等等。
(2)电脑鼠软件系统实现,包括程序初始化模块、迷宫墙壁记忆模块、红外探测与反馈模块、运动及其驱动控制模块、决策模块等等。
(3)电脑鼠迷宫路径搜寻与避障算法的研究,包括现代典型迷宫算法的分析对比、迷宫数字化表征方式、迷宫路径的数学模型研究、基于硬件语言的迷宫算法实现、记忆与决策功能算法的实现等等。
(4)实现软件系统设计和算法程序载入后,利用电脑鼠MicromouseV3.2在专用比赛跑道进行系统测试和调整,最终使电脑鼠具有基本的运动、探测、控制功能,并完成课题规定的竞赛功能。
2现有迷宫算法简述
迷宫算法的研究属于移动机器人路径规划研究的一部分[9],是优化与提升移动机器人性能的重要研究环节。
面向不同环境的路径规划决策方式与实时避障功能是当前移动机器人性能研究中表征自主能力的重要检测指标[10]。
针对移动机器人(或面向电脑鼠)的路径规划算法和实时避障算法的研究已经获得众多理论成果,重点分为两类:
(1)基于已知地图的路径规划方法,如栅格法[11]、FreeSpaceApproach、V-Graph等;
(2)基于未知地图的路径规划方法,遗传算法、势场法、模糊逻辑算法[9]、深广结合算法[9]、粒子群算法[10]等等。
各类算法都有针对性的适用范围和使用优势,对电脑鼠迷宫路径算法研究具有重要参考意义。
2.1迷宫的数字模型表征
本次毕业设计面向的迷宫模型如图2.1所示,共有10×10个方格组成。
由于设计中“连续转弯”规定部分的需要,迷宫外围是一个封闭式的挡板。
对应地,电脑鼠的起点位置是封闭挡板内的任意位置单元。
因此,电脑鼠实际的运动范围为8×8个方格。
图2.1迷宫示意图
依据上述分析,迷宫的位置单元,即每一个方格,可以用一个数值属性来表征该位置是否可以通行,而所有位置单元的数值属性的集合可以用一个矩阵来描述。
基于该思想,将迷宫格栅(挡板)表征为数值“1”,迷宫空格表征为数值“0”,据此可以利用一个二值的二维矩阵表征迷宫,即将迷宫进行数学化的抽象描述。
图2.2为迷宫中部分区域进行抽象化和数字化之后的表征结果。
a
b
c
图2.2迷宫抽象化、数字化的结果
2.2迷宫问题的搜寻准则
结合计算机图形学、图论学、、拓扑学、数据结构等领域对于迷宫问题的解释与解决方法,电脑鼠等移动机器人面对的迷宫路径规划和决策判定问题可以进一步转化为迷宫路径最优化选择问题[12-14]。
在具体的迷宫环境中,以图2.1所示迷宫为例,电脑鼠前进至一个位置单元(假设为一个方格),最多面对三个前进方向(三种选择),最少面对三个挡板(唯一选择退回)。
在迷宫行进过程中,如果出现至少两个方向,即有两个以上的选择,通过设计好的搜寻算法,电脑鼠判定优先行进的方向和顺序。
目前常用的搜寻准则如下所示[1,4,12,15,16]:
(1)左手准则:
在迷宫中行进的电脑鼠面对两种以上选择方向时,优先选择向左行进,其次选择向前行进,最后选择向右行进。
(2)右手准则:
在迷宫中行进的电脑鼠面对两种以上选择方向时,优先选择向右行进,其次选择向前行进,最后选择向左行进。
(3)中左准则:
在迷宫中行进的电脑鼠面对两种以上选择方向时,优先选择向前行进,其次选择向左行进,最后选择向右行进。
(4)中右准则:
在迷宫中行进的电脑鼠面对两种以上选择方向时,优先选择向前行进,其次选择向右行进,最后选择向左行进。
(5)乱序准则:
或称乱数准则,在迷宫中行进的电脑鼠面对两种以上选择方向时,以随机值(随机方向)作为下一步的行进方向。
(6)向心准则:
在迷宫中行进的电脑鼠面对两种以上选择方向时,优先选择距离迷宫中心最近的方向作为行进方向。
上述各类法则基本能够解决迷宫中的路径选择问题。
对于单迷宫(无回路)而言,其“入口”与“出口”的在拓扑学上始终是封闭的,因此,在迷宫中的行进者只需一直沿单一墙壁前进必然抵达目的地;对于复迷宫而言,上述“法则”不能完全解决,但是只考虑本次课题中设计的迷宫问题,可以认为课题中面向的迷宫是由多个单迷宫组成,因此利用上述准则中的任意一种就可以充分解决目标搜寻问题。
2.3迷宫问题的搜寻策略
上述的搜寻准则解决的是电脑鼠在迷宫行进中微观的最优决策问题,即保证目标地点的成功抵达,而搜寻策略(或称搜寻模式[1,18,19])则解决的是迷宫墙壁记忆、等高线绘制、最短路径等问题。
目前的搜寻策略包括两类,如下:
(1)全部迷宫路径搜索策略:
电脑鼠从出发到终点过程中会进行地毯式搜索,将迷宫中全部道路进行逐一行进,然后选择一条最优路径(根据不同要求选择路径最短,或时间最短),再从起点出发由最优路径抵达终点。
(2)单一迷宫路径搜索策略:
电脑鼠在出发后只沿一条路径前进,直至终点,不再搜寻其他迷宫区域,不再返回,结束搜寻任务。
面向全迷宫的搜寻策略可以获得迷宫的全部位置信息,利于未来获取目标最优路径的选取和算法优化,但是对于时间要求较高的任务或比赛,该策略会耗费大量时间而不具有实用性。
面向局部的迷宫搜寻策略可以迅速解决目标搜寻任务,具有时间上的优势。
如果进一步结合最佳路径判定算法,即返回时选取最短路径,则在时间上会具有明显优势。
本次课题中采用单一迷宫路径的搜寻策略和优化算法。
3硬件系统分析
3.1实验平台与设计工具
本次毕业设计以“IEEE标准电脑鼠走迷宫”竞赛规则为研究背景,选取电脑鼠MicromouseV3.2作为研究对象和实验工具,选用基于“IEEE标准电脑鼠走迷宫”标准的课题测试赛道作为测试环境。
电脑鼠系统可以划分为硬件系统和软件系统。
硬件系统包括[10,19,20]:
电源模块、红外传感器模块、驱动电机模块、微处理器控制模块、机身模块。
软件系统包括:
红外检测模块、控制判断模块、驱动模块、运动调整模块、存储记忆模块(功能性模块)等。
针对本次课题要求,电脑鼠功能系统的设计主要针对于控制模块、驱动模块、传感器模块等。
本次毕设的软件开发平台是基于ARM公司发布的RealViewMDK开发工具中集成的KeiluVision4。
KeiluVision4支持目前市场上多种不同的MCS51架构的芯片以及ARM,具有编辑、编译、仿真等一体功能,且操作界面与VC++相类似,形成友好的操作界面[21]。
3.2硬件控制模块分析
本次设计以ST旗下的STM32F103R8T6增强型系列微控制器作为电脑鼠控制系统的控制器。
在实际工程应用中,STM32F103R8T6适用于多种工作场合:
电机驱动、探测控制等常规电子设备;可编程控制器、继电器等工业设备等。
STM32F103R8T6核心使用的是ARM®Cortex-M3™处理器。
芯体尺寸32位,速度72MHZ,RAM为20KB,程序存储64KB,存储类型FLASH,数据转换器为A/D16*12B,电压-电源(Vcc/Vdd)为2V-3.6V,工作温度为-40—85摄氏度。
外设为DMA、电机驱动控制PWM、PDR等。
在本次毕业设计中,基于STM32微处理器的控制模块需要完成对传感器探测模块的迷宫环境与路径信号做出处理和分析,并下达判定指令;对迷宫环境信息进行记忆和最优返回路径的计算;对电脑鼠运动姿态进行调整修正等任务。
上述功能的完成需要配合其他模块进行系统合作和反馈。
本次毕设使用的电脑鼠MicromouseV3.2对应的MCU电路如图3.1所示。
图3.1电脑鼠MCU电路原理图
3.3电机选择与分析
本次毕业设计采用的电脑鼠驱动模块使用的是基于脉宽调制的集成电路芯片L298N,实现驱动和控制两个直流电机。
采用74HC245作为驱动器与主控芯片的缓冲器,实现数据总线的双向异步通信。
驱动电路依据PWM脉冲信号的占空比进行速度调节,进一步控制运动姿态和行进方向。
驱动电路如图3.2所示。
图3.2驱动电路图
3.3.1电机比较
驱动模块中电机是决定电脑鼠行进与运动姿态调整的基本工具[13,22]。
目前,步进电机和普通直流电机是使用最为广泛的两种驱动电机。
步进电机的核心思路是利用控制电路将供给的直流电转换为分时的多相时序电流,并以此供电。
直流电机(directcurrentmachine)是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机,的结构应由定子和转子两大部分组成。
上述两种电机的优缺点如表3.1。
表3.1步进电机与直流电机的比较
电机类型
优点
缺点
控制方式
步进电机
每步的进度在3%~5%,且误差不会累积,具有行进准确的优势;开环控制使得电机结构简单,成本较低;电机转速范围较大且易于控制。
高转速难以获得,效率低,耗电大。
加减速齿轮利用闭环回路控制。
直流电机
速度调整具有范围广、过程平滑等特征;抗负载能力强,适应频繁冲击负载;制动、旋转等功能可以在短期内频繁实现;耗电较低。
速度同步控制、低速控制等难度大,且低速启动有振动,价格高,控制器要求高。
CPU输出脉冲控制。
考虑步进电机与直流电机的特点,可以发现:
步进电机能够达到快速启动与停止、精度高、反转控制灵活的要求;直流电机能够达到调速性能优良、过载能力强、冲击负载承受度高的要求。
3.3.2电机选择
考虑本次毕设的研究背景和设计要求,驱动模块中电机需要满足以下几个方面的要求:
(1)可靠性:
保证在电脑鼠行驶过程中电机控制能够满足系统自动控制要求,及时稳定执行关于转向、姿态调整等指令。
(2)精度:
在执行行进、方向调整、姿态控制等过程中,驱动模块接收控制模块命令并由电机执行,而较高的电机精度能够保证上述命令的执行效果与测试结果。
此外,因为控制系统的精度与步进电机的步距精度、直流电机的线性度、矢步振荡直接相关。
(3)启动、反向、停止能连续完成,响应快。
(4)较高的速度调整性能、较强的过载和承担频繁冲击负载的能力。
结合近期我校的迷宫鼠竞赛均换成了直流电机,因此可以预测直流电机将越来越会被普及到各种赛事中。
而且步进电机在执行点到点的移动命令时(假设为直线),需要经过提速、恒速、减速的过程。
如果在启动阶段,速度一次达到预定速度,启动频率有可能超过极限启动频率,而步进电机会发生失步先现象,导致启动失控。
在本次课题研究中,电脑鼠需要完成连续转弯、路径探测、姿态调整等任务,速度的连续转换与调整会导致电机需要承担过负载和频繁冲击负载的状况。
显然,在该条件下步进电机难以高效完成任务。
相对地,直流电机可以在短期内实现制动、旋转等功能且具有较高的过负载能力和较大的速度调节范围,有利于电脑鼠在此次研究环境下的任务执行。
因此,电脑鼠选取直流电机具有更明显的优势和任务适应性。
3.4传感器模块分析
本次毕设采用的传感器模块是由5个分别位于“左前”、“左”、“前”、“右”、“右前”的反射式红外发射接收传感器检测电路构成,如图3.3。
通过设置不同的发射频率实现在各个方向上远距和近距的环境探测功能。
利用5个传感器检测电路完成对行进方向挡板的检测,获得迷宫墙壁信息。
此外,利用非理想带通滤波器截止频率处幅频响应非理想的特征,通过调整发射频率,例如到35KHz,可以实现探测范围的控制,从而保证电脑鼠在行进过程中与挡板的距离保持在预定范围内,达到姿态调整的目的。
图3.3反射式红外发射接收传感器检测电路
图3.4模拟滤波器
如图3.4所示,利用模拟滤波器对频率响应非理想的特性,在略微偏离中心频率的频点上可以获得探测距离稍短的探测结果。
码盘是测量角位移的数字编码器,在电脑鼠中与车轮同轴转动,通过用光电传感器计数从而监测码盘的转动角速度,因而测量车轮转动次数,结合迷宫位置单元的长度完成行进路径的计数,从而获得方位信息。
码盘如图3.4所示。
码盘转一圈记录车轮行进距离(l)根据码盘转动圈数(n)计算迷宫鼠行进距离(L)
L=n*l/圈
图3.5码盘示意图
3.5测试赛道
本次毕设所使用的赛道是依据“IEEE标准电脑鼠走迷宫”竞赛规则(如图3.4)而设计的测试迷宫。
按照位置单元,迷宫可以划分为8×8的方格,示意图如图2.1所示。
出发位置为任意位置,终点目的地中心位置的四个空白位置单元(如图1.3中的B)。
一个位置单元对应于一个15cm×15cm的方格,挡板单元为10cm×1.5cm(高度×厚度)。
测试使用的迷宫为单迷宫,且迷宫包含挡板、方柱(挡板连接)、地板。
图3.6竞赛迷宫模型图
4软件系统设计与实现
此次课题电脑鼠软件设计采用模块化设计方法,通过主程序调用各模块程序实现设计任务。
主程序流程图见图4.1。
其中路径决策功能模块、驱动功能模块完成迷宫探测与路径优化。
图4.1主程序流程图
4.1路径决策功能的实现
本次毕业设计的要求包括
(1)“连续转弯”、
(2)“目标搜寻”。
(1)主要是电脑鼠运动姿态的调整和在岔路口路径决策的判定等功能的基本应用。
(2)是基于前述功能的基础上结合搜寻准则和策略完成确定任务。
电脑鼠传感模块包括5个分别位于“左前”、“左”、“前”、“右”、“右前”的反射式红外发射接收传感器检测电路。
其中,“左”、“前”、“右”反馈的挡板信息用于路径判定;“左前”、“右前”反馈的信息用来调整电脑鼠行进姿势,防止与挡板碰撞。
基于此组信号,主控制模块做出路径决策判定。
4.1.1迷宫探测算法
在具体实现中,考虑到设计要求,本次毕业设计选用“左手准则”作为搜寻准则、选用“面向局部迷宫的搜寻策略”作为搜寻策略。
迷宫探测算法流程图如图4.2所示。
图4.2迷宫探测流程图
4.1.2路径决策功能程序及分析
依据上述分析,具体实现如下:
switch(sensorsState&0x1c)
{
case0x18:
//F
{
if(sensorsStateAuxiliary&0x04)/*判断前方的墙距离是否较近,如果是,离墙距离远向左慢速转大弯,否则距离墙较近,向左快速转小弯*/
MoveLeft(3);
else
TurnLeft
(2);
break;
}
case0x14:
//LF电脑鼠在跑道中位置朝向过于偏左,向右调整
{
TurnRight(3);
break;
}
case0x0c:
//L
{
if(sensorsStateAuxiliary&0x10)/*如果左方墙壁距离较远,继续前行,如果距离较近,向右转。
防止与墙壁碰撞*/
MoveForward(5);
else
MoveRight(3);
break;
}
case0x10:
//LFF如果左前和左方存在墙壁且距离较近,向右调整
{
TurnRight
(2);
break;
}
case0x08:
//LF如果左方和前方均有墙壁(转弯),如果距离较远,向右调整,反之向右转。
{
if((~sensorsStateAuxiliary)&0x14)
TurnRight(3);
else
MoveRight(3);
break;
}
case0x04:
//LLF如果左方或左前方存在墙壁,如果墙壁过近(30度角左右),向右转;反之,向右调整
{
if(sensorsStateAuxiliary&0x10)
MoveRight(3);
else
TurnRight
(2);
break;
}
case0x1c:
//none四周不存在墙壁,向左转
{
MoveLeft(3);
break;
}
case0x00:
//死路,向右调整或向右转,返回
{
if((~sensorsStateAuxiliary)&0x14)
TurnRight
(2);
else
MoveRight(3);
break;
}
}
上述程序中各类情况如下列各图进行描述:
(a)case0x18:
11000
判断前方的墙距离是否较近,如果是,离墙距离远向左慢速转大弯,否则距离墙较近,向左快速转小弯
(b)case0x14:
10100
电脑鼠在跑道中位置朝向过于偏左,向右调整
(c)case0x0c:
01100
如果左方墙壁距离较远,继续前行,如果距离较近,向右转。
防止与墙壁碰撞。
(d)case0x10:
10000
如果左前和左方存在墙壁且距离较近,向右调整
(e)case0x08:
01000
如果左方和前方均有墙壁(转弯),如果距离较远,向右调整,反之向右转。
(f)case0x04:
00100
如果左方或左前方存在墙壁,如果墙壁过近(30度角左右),向右转;反之,向右调整
(g)case0x1c:
11100
四周不存在墙壁,向左转
(h)case0x00:
00000
死路,向右调整或向右转,返回
图4.3路径决策功能执行情况
4.2驱动控制功能的实现
电脑鼠搜寻迷宫以及该过程中的运动调整等机械运动均是基于位于左右两侧的电机驱动实现的。
通过对两个电机分别下达控制各自转速和转向的指令信息,可以实现对电脑鼠行进速度、行进方向的控制与调整。
本次毕业设计采用的电脑鼠配备的是直流电机,而基于标准定时器的PWM是目前调控直流电机的典型模块。
具体的工程实现中,改变输入电机驱动链路的PWM占空比来实现上述对转速和转向的控制。
电脑鼠处于直行状态时,左右两部电机输入的PWM一致;电脑鼠发生左、右转弯(路径调整)或小角度转向(运动状态调整)时,左右两部电机分别采用不同占空比的PWM信号。
在具体实现时,利用L298N对两个电机分别进行驱动控制。
表4.1L298N控制电机功能表
输入
电机状态
运行标志
Ven(6脚、11脚)
C(5脚、10脚)
D(7脚、12脚)
H
H
L
正转
电机转动
L
H
反转
0
0
停止
电机制动
1
1
停止
L
停止
电机未受控制
本次毕业设计利用电脑鼠自带芯片的PWM模块产生PWM信号(含占空比调整)实现对电机的控制,程序处理流程图如图4.7所示。
图4.7驱动模块程序流程框图
具体程序如下所示:
/********************************************************************************
*文件名:
motor.c
*描述:
直流电机L298N驱动函数库
*实验平台:
emouseSTM32竞赛平台
*硬件连接:
----------------------------
*|L298N硬件连接:
|
*|PC6-IN1(右电机)|
*|PC7-IN2|
*|PC8-IN3(左电机)|
*|PC9-IN4|
*|PA8-ENA(右电机PWM)|
*|(TIM1-CH1)|
*|PA9-ENB(左电机PWM)|
*|(TIM1-CH2)|
*|----------------------------|
*|测速传感器接口:
|
*|PB8-SL(左电机测速)|
*|(TIM4-CH3)|
*|PB9-SR(右电机测速)|
*|(TIM4-CH4)|
*----------------------------
*库版本:
ST3.5.0
*时间:
13/06/26
*作者:
温世波
**********************************************************************************/
#include"motor.h"
/************************************************
电机模块初始化配置
*************************************************/
/*
*函数名:
Motor_GPIO_Config
*描述:
电机模块IO端口配置
*
*输入:
无
*输出:
无
*调用:
内部调用
*/
staticvoidMotor_GPIO_Config(void)
{
/*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDefGPIO_InitStructure;
/*开启GPIOA,GPIOC,GPIOD的外设时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 系统 设计 实现 毕业设计