范县成, 孙新柱, 房 稳, 彭 诚
(安徽工程大学电气工程学院,安徽 芜湖 214000)
基于STM32F407的新型迷宫机器人系统设计
范县成, 孙新柱, 房 稳, 彭 诚
(安徽工程大学电气工程学院,安徽 芜湖 214000)
针对迷宫机器人走迷宫的要求,介绍了一种基于STM32F407和L6207双核四轮新型迷宫机器人系统的设计与实现。根据迷宫机器人在走迷宫过程中,单一微控制器无法满足迷宫机器人的频繁启动与制动,在此基础上引入L6207芯片,从而减轻了迷宫机器人在走迷宫时STM32F407的工作量。然后通过重新设置硬件,并对设计的主要模块做了详细介绍,主要包括微控制器、红外传感器、电源模块、电机控制等模块。软件模块采用中心算法结合洪水算法进行迷宫的搜索与冲刺。该算法简单,模块化容易移植,大大提高了迷宫机器人在时效性与稳定性方面的性能。
迷宫机器人;STM32F407;中心算法;洪水算法
所谓迷宫机器人,是使用微处理器、传感器和机电运动部件构成的智能性行走装置[1]。迷宫机器人拥有行走、感知、判断、存储等基本功能,搜索整个迷宫,找到从起点到设定终点的最短路径,并以最快的速度冲刺终点。
目前,对于迷宫机器人的硬件设计主要是基于ARM和单片机的单一微处理器,如文献[2-3]提出的单一微处理器设计实现。由于受到单一微处理器硬件方面的限制,在迷宫机器人进行频繁的刹车和启动过程中,加重了单一处理器的工作量,单一处理器将无法满足迷宫机器人快速启动与停止的要求,不利于高速迷宫机器人的发展。文献[4]设计实现了两轮迷宫机器人,但两轮迷宫机器人在加速时会造成重心后移,使得迷宫机器人前部出现轻飘现象,即使在良好的路面上迷宫机器人也会打滑,可能出现撞墙的现象,而且为了满足复杂情况下的频繁加减速,要求单个驱动电机的功率较大,这会在一些相对需求较低的状态下造成“大马拉小车”的现象,不利于迷宫机器人系统能源的节约。软件设计方面,主要是算法的设计。一些传统迷宫求解算法需要遍历整个迷宫,搜索时间长,时效性较差。而对于像蚁群算法[5]、粒子群算法、神经网络算法[6]等智能性算法,这些高智能性算法设计过于复杂,适用于大型迷宫求解,不适用于对小型迷宫的搜索求解。为了解决这类问题,人们在传统算法的基础上,进行了算法优化改进,如向心算法[7]、洪水算法[8]等。改进算法大大缩短了搜索时间,提高了搜索效率。
为了实现迷宫机器人走迷宫的时效性与稳定性要求,先进的硬件与优秀的算法设计已成必然趋势,抛弃目前单一控制器模式,提出由STM32F407引入L6207的四轮迷宫机器人,以直流电机驱动芯片L6207为处理核心实现运动控制。针对快速性的要求,设计了中心算法结合洪水算法的智能算法,克服了低级算法不能完成任务和用时长的缺点,实现迷宫机器人的仿真与运行。
1.1 系统概述
迷宫机器人设计主要有以下几个模块组成:
(1)微控制器:本文采用的是由STM32F407与L6207组成的双核微控制器,这将大大提高迷宫机器人的性能。
(2)电源模块:采用锂离子电池,保证迷宫机器人的正常工作电压[9]。
(3)红外测距模块:使用红外发射器OPE5594A和红外接收器TSL262,能大大提高运算精度、克服CCD摄像头复杂的图像处理工作和超声波相互干扰的问题,有利于迷宫探测。
(4)电机驱动模块:负责迷宫机器人前、后、左、右轮的电机X、电机Y,电机的伺服控制是由L6207芯片控制。迷宫机器人的二维示意图如图1所示。其中,编号1~6是3对红外线设备,X、Y、Z、R是四个车轮,由两个直流电机控制。
图1 迷宫机器人二维示意图
1.2 迷宫机器人系统整体设计方案
由于迷宫算法的复杂性和对电机控制的要求,对单一处理器造成了负担,不利于迷宫的搜索,单一处理器不能满足迷宫机器人稳定性与快速性的要求。本文采用STM32F407和L6207双核四轮新型迷宫机器人的设计,由L6207控制两个直流电机的伺服工作,大大减轻了STM32F407处理器的负担,并能时刻与STM32F407进行数据的调用与共享。STM32F407和L6207控制的迷宫机器人的原理图如图2所示。
图2 双核四轮迷宫机器人原理图
1.3 电源模块
电源由11.1 V、100 mAh的锂离子电池主要是为微控制器、电机驱动装置和红外线装置提供其所需的电压。红外线传感器工作电压为5 V,采用L5973D系列的降压单片开关功率稳压器降压输出提供;微处理器STM32F407需要3.3 V供电电压,由LM2937型号的低压差集成稳压器对5 V电压输入转换为3.3 V电压供电;电机驱动模块由锂离子电池直接供电。3.3 V和5 V电压电路设计如图3所示。
图3 供电电源设计图
1.4 红外检测模块
为了能够准确地探测到迷宫墙壁信息,设计采用红外发射器OPE5594A和红外接收器TSL262作为探测部件。总共有3对红外发射器,如图1所示。其中,1对位于迷宫机器人的正前方,与车轮平行,主要完成正前方的迷宫探测;1对位于左右垂直于车轮位置,主要完成左右方向的迷宫探测;1对与车轮向呈45°夹角,斜向前,主要完成辅助探测。工作原理是由红外发射器OPE5594A发出红外光,由红外接收器TSL262感知从墙壁反射的红外光线,计算墙壁距离。红外发射器与接收器的电路如图4所示。
图4 红外探测器电路图
1.5 电机驱动模块
L6207主要完成两个直流电机的驱动,由STM32F407结合迷宫机器人检测到的外部信息发布指令给L6207,L6207生成两路PWM波信号控制直流电机X、电机Y,完成两轴伺服系统的同步控制,经驱动桥驱动迷宫机器人到达指定位置,完成迷宫机器人的转弯、直走、加减速等动作。L6207电机驱动电路如图5所示。
图5 L6207电机驱动电路
2.1 主程序流程
一个完整的迷宫机器人既要有硬件设备也要有软件。有好的软件支持才能体现迷宫机器人的价值,才能发挥本身的意义。
软件设计包括迷宫搜索、方向位置判断、墙壁信息存储以及寻优路径等功能。迷宫机器人行走过程主要包括等待阶段、搜索阶段以及冲刺阶段[10]。主程序流程图如图6所示。
图6 主程序流程图
2.2 行走原理
迷宫机器人从起点出发,在迷宫中将途中所有岔口探测一遍后,进入目的地,并自动将所有单元格资料整理,存储有效方位信息。再计算出最佳路径,直接返回原点,做直接冲刺,从而实现迷宫机器人快速高效地到达迷宫的终点[11]。
行走流程图如图7所示。
图7 行走流程图
2.3 搜索算法设计
本文采用中心算法与洪水算法(Flood-Fill Algorithm)相结合的方法进行搜索算法设计。由中心算法搜索出局部最优路径,洪水算法在此基础上进行全局最优路径规划。
迷宫机器人处在迷宫宫格中,当检测到多个出口时,迷宫机器人就要选择朝哪个方向行走。像左手法则、右手法则等简单的搜索算法,用时较长,有时还不能完成迷宫搜索[12]。本着简单有效的原则,采用的是通过右手法则、左手法则、中右法则、中左法则按照一定的规则组合的中心算法来搜索迷宫[7]。
右手法则:首先检测迷宫机器人右边是否可行,可行则右转,否则检测前面是否可行,可行则不转向,否则左转。
左手法则:首先检测迷宫机器人左边是否可行,可行则左转,否则检测前面是否可行,可行则不转向,否则右转。
中右法则:首先检测迷宫机器人前面是否可行,可行则不转向,否则检测右边是否可行,可行则右转,否则左转。
中左法则:首先检测迷宫机器人前面是否可行,可行则不转向,否则检测左边是否可行,可行则左转,否则右转[7]。
中心算法把迷宫分为四个区域,迷宫机器人在每个区域根据当前所在位置进行选择行走策略。中心算法始终以趋向中心最近的方向前进,中心算法搜索策略如图8所示。
图8 中心算法搜索策略
中心算法可以达到最终搜索迷宫的目的,也能完成迷宫的路径规划,但中心算法规划的路径是局部最优路径,不一定是全局最优路径。
根据设计原则,通过中心算法来搜索迷宫,引入洪水算法进行迷宫最优路径规划。洪水算法的基本概念就好像洪水流动一样。假设迷宫的终点的距离值是0,每流过一个迷宫格相对于前一个迷宫格到终点的距离就加1,利用这个想法来计算每一个迷宫格与迷宫终点的距离值,持续到计算出迷宫起点与迷宫终点的距离值为止。根据每个迷宫格与终点的距离值,这样就构成了多组由大到小路径排列步数,比较大小就能找出一条最短的迷宫路径[13]。洪水算法用来从目的地到起点的冲刺最优路径算法,机器人将尝试通过那些未知的宫格并加以更新迷宫信息[14]。当机器人从目标点返回起点的过程中,算法将计算迷宫信息,从而执行一个最优的路线,完成从目标点到起点的最优搜索,并进入返程探索模式,这些位置的宫格墙将被当作有墙来求解。因此,迷宫机器人可以直接去目标,而不会陷入“死胡同”,有效地节约了迷宫的搜索时间。
3.1 迷宫设计实物
设计的迷宫机器人实物如图9所示,机器人长90 mm、宽50 mm。按迷宫每格180 mm计算,最大冲刺速度可达每秒11格。
图9 迷宫机器人实物图
3.2 仿真及分析
为了验证本次设计的可行性与时效性,设计了16×16的迷宫机器人搜索地图(图10(a))。对中心算法与本文算法进行仿真,仿真结果如图10(b)~图10(d)所示。
整个试验过程是从起点到目标点的搜索运行、返回到起点、以及冲刺到终点的整个过程中的搜索步数、搜索转弯次数、冲刺步数以及冲刺转弯次数对比[15]。试验结果见表1。
图10 算法仿真图
表1 搜索算法结果对比
从表1数据知,由于在冲刺阶段采用了洪水算法进行路径规划,相对于中心算法来说,本文算法具有更为优秀的路径规划能力,能够更快速地完成迷宫的冲刺,有效缩短了迷宫搜索冲刺时间。
本文介绍了一种基于STM32F407微处理器和L6207芯片组成的双核处理器的迷宫机器人系统设计,克服了国内单一处理器模式的不足。利用L6207芯片处理两轴电机伺服工作,减轻了单一处理器的负担,有利于系统的稳定性和快速性。在此基础上研究了基于中心算法与洪水填充算法相结合的迷宫搜索算法,利用中心算法进行迷宫搜索,克服了低级算法搜索时间慢或不能达到搜索目的的算法,节约了搜索时间。当搜索完成后利用洪水填充算法,进行返回起点搜索,直接按照全局最优路径直达“目标”,有效地节约了迷宫的冲刺时间。仿真结果表明,在搜索冲刺时间和机器人性能上都得到了一定的提升。
[1] 刘世泽.基于嵌入式系统的迷宫机器人路径规划算法研究[D].西安:西安建筑科技大学,2013.
[2] 张嘉夫,李迅波,余岷,等.基于ARM 的走迷宫电脑鼠的设计与实现[J].工业控制计算机,2013,26(11):136-138.
[3] 李龙,林桂泉.基于AVR ATmega128的迷宫电脑鼠软件设计与实现[J].电脑知识与技术,2014,10(11):2660-2663.
[4] 杨晶菁,张浩.基于AVR单片机的电脑鼠硬件设计与实现[J].福州大学学报:自然科学版,2014,42(6):876-882.
[5] ZHANG Rongrong,YANG Ming,WANG Fang.Design and implement of the complex maze shortest path simulation system based on improved ant colony optimization algorithm[C]//Proceeding of 2014 Fourth International Conference on Instrumentation and Measurement,Computer,Communication and Control, Harbin,September 18-20,2014:779-783.
[6] 刘世泽,段中兴.基于人工神经网络的迷宫路径策略问题研究[J].工业控制计算机,2013,26(6):104-105.
[7] 贺少波,孙克辉.基于向心法则的电脑鼠走迷宫算法设计与优化[J].计算机系统应用,2012,21(9):79-82.
[8] 郭长生,龚涛,李龙.一种电脑鼠走迷宫搜索算法[J].华中科技大学学报:自然科学版,2013,41(1):388-391.
[9] 宫兆俭.新型电脑鼠的设计开发[D].青岛:中国海洋大学,2013.
[10] 仇之,李昂,张文锦.基于ARM和FPGA的新型电脑鼠系统设计[J].仪器仪表与分析监测,2013(2):19-21.
[11] 付秀伟,邹刚.电脑鼠走迷宫算法仿真设计[J].吉林化工学院学报,2013,30(11):85-88.
[12] 王磊.基于IEEE电脑鼠走迷宫竞赛的迷宫算法分析与实现[D].济南:山东大学,2013.
[13] LUTVICA K,VELAGIC J,KADIC N,et al.Remote path planning and motion control of mobile robot within indoor maze environment[C]//Proceeding of 2014 IEEE International Symposium on Intelligent Control,Juan Les Pins,France,October 8-10,2014:1596-1601.
[14] HUANG H H,SU J H,LEE C S.A contest-oriented project for learning intelligent mobile robots[J].IEEE Transactions on Education,2013,56(1):88-97.
[15] 赵新华,白峻汀,马忠丽.VB中电脑鼠微型机器人走迷宫模拟仿真[J].智能系统学报,2014,9(4):485-490.
Design of a New Maze Robot System Based on STM32F407
FANXiancheng,SUNXinzhu,FANGWen,PENGCheng
(College of Electrical Engineering, Anhui Polytechnic University, Wuhu 241000, China)
According to the maze requirement for maze robot, a kind of system based on STM32F407 and L6207 dual four wheel maze robot is designed and implemented. In the process of solving mazes, frequent starting and breaking of the maze robot will increase burden on the single micro controller, and hence the introduction of chip L6207 will greatly reduce the load of STM32F407. The hardware was reset, and the design of the main module was detailed, which consisted of the micro controller, infrared sensor, power module, motor control module etc. A new algorithm for maze robots to solve mazes by combining center algorithm with the flood algorithm was used for software module. This algorithm is simple, modularized and easy to be transplanted, and greatly improves the performance of the maze robots in the timeliness and stability.
maze robot; STM32F407; central algorithm; flood algorithm
2015-12-21
安徽省高校自然科学研究重大项目(KJ2014ZD04)
范县成(1990-),男,安徽阜阳人,硕士生,主要从事运动控制系统方面的研究,(E-mail)2382493123@qq.com
1673-1549(2016)01-0048-06
10.11863/j.suse.2016.01.11
TP242.6
A