基于ARM的电脑鼠走迷宫的研究
引言
电脑鼠(Micromouse)是智能机电鼠的简称,是一个由微处理器控制的集探测、分析、行走功能于一体,能够自动搜索最佳路径到达目的地的微型机器人。实际上电脑鼠就是一个电力驱动小车,而这个电动小车是由一个或多个微控制器来控制,通过传感器和其他各功能器件的配合,具备一定的智能。同时,电脑鼠需拥有探测障碍物、行走、转弯、加减速和制动等基本功能。
本文是以"IEEE国际电脑鼠竞赛"为背景,以美国Luminary Micro公司生产的ARM CortexM3内核的ARM处理器LM3S615为主控制器,控制和检测红外传感器;微控制器根据检测到的传感信号,控制电机驱动电路,调整行走,按照载入搜索算法进行迷宫的探测,寻找最短路径,最终实现从起点到终点的冲刺。
1 电脑鼠系统整体设计方案
如图1所示,整个系统可以大致分为以下主要部分:电源模块,控制模块,执行机构模块,传感器模块,机身模块。可以做形象的比喻:电源模块是电脑鼠的葡萄糖,控制模块是电脑鼠的大脑,传感器模块是电脑鼠的眼睛,机身模块是电脑鼠的躯干,执行机构是电脑鼠的腿;各模块之间相互配合使电脑鼠正常工作并寻找到终点。
2 电脑鼠硬件研究与实现
2.1 电脑鼠硬件设计原理
本文研究的电脑鼠是一个跨学科的综合作品,主要由电源、传感器、步进电机、控制核心电路、机身5个部分组成,如图1所示。所以,电脑鼠的硬件设计主要包括电源模块、微控制器单元模块、传感器模块、电机控制模块4个部分的设计。其中LM3S615微控制器是电脑鼠的核心,通过检测到的传感器信号,结合载入的搜索算法,控制步进电机,实现电脑鼠在迷宫中的行走。
2.2 电源模块
电源模块包括供电电池和电压调节电路。供电电池为2 200 mAh,7.4 V的可充电锂电池。电机驱动电压由电源直接供给;LM3S615微控制器需3.3 V电压供电,电压调节电路采用Exar公司生产的SPX1117M3-3.3芯片将电源电压稳至3.3V;电脑鼠所使用的红外线传感器工作电压为5 V,升压芯片采用Exar公司生产的SP6641A将已经较为稳定的3.3 V电压升至5 V。
2.3 微控制器单元模块
本文采用美国Luminary Micro公司生产的CorteX-M3内核的ARM处理器LM3S615,该芯片具有32位RISC性能,具备32 KB单周期FLASH,8 KB单周期SRAM,29个中断,带8个优先级。微控制器模块和其他模块共同构成一个闭环的反馈控制系统,通过对路程信号、岔口信号和姿势修正信号的检测,经由LM3S615进行运算,再将结果赋给电机执行,由此实现电脑鼠的智能穿越迷宫。
2.4 传感器模块
2.4.1 传感器模块组成
传感器模块采用红外传感器:红外线发射对管SIR563ST3F和IRM8601S,红外线收发对管IR204和PD204-6B。红外线发射管SIR563ST3F最大辐射角约为30°,工作中心频率38 kHz;红外线接受管IRM8601S为一体式红外线接收头,最佳工作波长940 nm。可以通过设置不同的发射频率来实现用一个红外传感器完成远距和近距探测的功能。红外线发射管IR204和红外线接收管PD204-6B工作波长均为940 nm,它们固定在两轮内侧,并在轮内贴上黑白码盘,码盘随车轮的转动而转动,当传感器正对着码盘黑色条纹时,输出高电平,反之低电平。通过GPIO口中断检测电平变化,就可以计算并记录电脑鼠行走的距离。
2.4.2 传感器模块功能
(1)路程检测。由安装在两轮内侧的红外线收发管IR204和PD204-6B,对黑白码盘条纹进行计数,按照迷宫单元的长度为单位进行路程计数,以记录电脑鼠在迷宫中的方位坐标,同时还可以精确地实现转弯。
(2)岔口检测。岔口检测由安装在正前、左前、右前的3个红外线发射对管SZR563ST3F和IRM8601S实现,工作波长940 nm,实现远红外测距功能,探测前、左、右有无障碍。
(3)姿势修正。姿势修正由左右2个红外线发射对管SIR563ST3F和IRM8601S实现,发射信号约30.5 kHz,实现近红外测距功能,保持电脑鼠在中轴线附近行走,避免撞击迷宫。值得注意的是,在转弯过程中不要进行姿势修正,这样有可能导致转弯的角度出现偏差,即电脑鼠只是在前进的过程中才进行姿势修正。
2.5 电机控制模块
电机控制模块主要负责控制电脑鼠的运动,包括电机和电机驱动电路两部分。电机为两个两相四线制步进电机,工作电压为7.4 V。电机驱动芯片采用BA6845FS,每个芯片包含2个H桥,它的最大驱动电流为1 A,且在输入逻辑的控制下输出有3种模式:正向、反向和停止。
3 电脑鼠软件研究与实现
电脑鼠的软件部分主要用来检测迷宫环境,传送控制信号给相应的硬件模块,对在迷宫中行走的电脑鼠进行制导与导航。其主要由迷宫搜索主程序和其他实现各种功能的子程序组成,主程序主要起到搜索探测迷宫和决策功能,而其他各种功能则是通过调用其相应子程序来实现的,搜索流程如图2所示。
3.1 迷宫搜索主程序
在没有预知迷宫路径的情况下,电脑鼠必须优先探索迷宫中的所有单元格,直到抵达终点为止。做这个处理的电脑鼠要随时知道自己的位置及姿态,同时要记录所有访问过的方块四周是否有墙壁,并且在搜索过程中尽量避免重复搜索它搜索过的地方。迷宫搜索流程图如图3所示。
3.1.1 左手法则
电脑鼠在前进的方向上存在两条和两条以上支路时,优先考虑左转,其次是向前,最后才考虑向右。示意图如图4所示。
3.1.2 右手法则
电脑鼠在前进方向存在两条和两条以上的支路时,优先考虑右转,其次向前,最后才向左。示意图如图4所示。
3.1.3 求心法则
求心法则就是当电脑鼠有至少两个方向可以选择时,则优先转向离中心点最近的方向前进。如图5所示,把迷宫分为对等区域(1,2,3,4)。可以观察出,在区域1中,电脑鼠向右和向上更能接近中心,其他区域同理。如果电脑鼠可供选择的前进方向包含两个都有可能是离迷宫中心点最近的方向时,优先选择可以直接前进的方向,其次选择只用转90°的方向前进。如果可前进方向都是远离中心点的方向时,优先选择直线运行方向,其次选择转弯90°的方向。其搜索示意图如图6所示。
3.2 其他功能子程序
3.2.1 路程检测子程序
通过安装在两轮内侧的红外线收发管和黑白码盘来测算电脑鼠走过的路程,确定电脑鼠在迷宫中的位置,并在岔口实现精确的90°和180°转弯。
3.2.2 岔口检测子程序
由安装在正前、左前、右前方向的3个红外发射管发射38 kHz的信号完成远距检测,根据传感器读入值,判断迷宫中障碍信息、路口信息。
3.2.3 姿势修正子程序
根据左右两侧红外传感器接收的反馈信号来判断电脑鼠偏离迷宫巷道中轴线的程度,通过调整步进电机工作脉冲使某一边电机减速来修正电脑鼠的行驶方向,使其基本行走在中轴线附近。
3.2.4 转弯子程序
当电脑鼠检测到岔口,且需要转弯时,调用该子程序。
3.2.5 最优路径子程序
通过对迷宫环境进行搜索检测,数组自动记录迷宫地图信息以及迷宫中每一单元格到起始点的路程,运行最优路径子程序,就能找到一条从始点到终点的最短路径。其实质是一种路径优化算法,常用的算法有等高图法和蚁群算法。
3.2.6 冲刺子程序
调用此程序可使电脑鼠循着最短路径从起点以最快的速度冲到终点。
- 基于STM32F的电脑鼠控制系统设计(02-21)
- 基于ARM的除法运算优化策略(01-14)
- 基于ARM的CAN总线智能节点的设计(01-24)
- ARM基础知识教程五 (02-08)
- ARM基础知识教程六(02-08)
- ARM基础知识教程七(02-08)