基于Raspberry Pi的轮式移动机器人设计及运动控制
2017-07-05王小宇李彩虹朱宝艳
王小宇,李彩虹,宋 莉,朱宝艳
(山东理工大学 计算机科学与技术学院,山东 淄博 255049)
基于Raspberry Pi的轮式移动机器人设计及运动控制
王小宇,李彩虹,宋 莉,朱宝艳
(山东理工大学 计算机科学与技术学院,山东 淄博 255049)
基于卡片电脑Raspberry Pi 完成了移动机器人从硬件搭建到运动控制的工作.通过Raspberry Pi与传感器的配合对机器人运动环境进行检测.采用模糊控制算法,根据不同环境设计了不同的运动机制,保障移动机器人运动的安全性.利用实验检验并完善了机器人的避障性能,实现了机器人在复杂环境中的运动控制,包括机器人的遥控以及自主漫游运动.
卡片电脑;Raspberry Pi;移动机器人;运动控制
移动机器人的特点是集环境感知、动态决策和规划、行为控制与执行等多种功能于一体[1].在移动机器人研究领域中,机器人如何感知并理解周边的环境是机器人运动控制的难点和热点,适应不同领域需求的机器人系统被深入研究和开发[2-4].传统的移动机器人基本上都采用专用处理器和专用操作系统,轮式移动机器人的控制器往往采用单片机作为微处理器,因为它有制作简单,硬件开发周期短等优点.随着嵌入式系统的发展,移动机器人正向经济化、小型化、智能化和通用型方向发展.自主避障是移动机器人安全行驶的重要保障,也是移动机器人研究的重要内容.本文选用卡片电脑Raspberry Pi,配合电机驱动模块、红外线避障模块、超声波测距模块搭建了轮式机器人.以所搭建的机器人为平台实现了基于超声波传感器、红外传感器的多传感器信息融合的机器人运动展示.对环境分析和控制算法等相关问题进行了研究,通过对机器人运动环境的分析提出了解决方案并给出了系统整体运行流程.针对机器人运动路径的特点,提出基于模糊控制的算法,根据所得到的周边环境信息,提出新的模糊规则,将环境信息模糊化和解模糊,转换为机器人能够识别指令信息,实现机器人的智能控制.
1 硬件部分的选择与设计
移动机器人整体采用四轮驱动,以Raspberry Pi[5]为控制主体,使用L298N模块控制4个直流电机的运转,Raspberry Pi与直流电机分别单独供电,这样不仅保证了移动机器人的动力,也提高了移动机器人的续航时间,更能提升整个移动机器人系统的稳定性,同时为移动机器人后续模块的添加创造了先决条件.
1.1 移动机器人的外观
移动机器人的动力采用四轮驱动.四轮驱动有比二轮驱动更优异的发动机驱动力应用效率,达到更好的轮胎牵引力与转向力的有效发挥,可以使移动机器人的移动更具稳定性以及循迹性.图1为机器人的整体设计图.机器人传感器模块接受Raspberry Pi的控制并将检测到的信息反馈给Raspberry Pi,通过执行指令控制电机以及车轮,实现机器人的运动.
图1 移动机器人的整体设计图
1.2 移动机器人的控制部分
机器人的控制部分采用Raspberry Pi.Raspberry Pi是一款基于ARM的微型电脑主板,可以执行类似PC上的诸多功能.在硬件方面Raspberry Pi 开发板配备了 64 位 1.2GHz 的四核芯片以及 1GB 内存,性能可以满足机器人的各种需求,最新的Raspberry Pi提供了40个针脚,可以用来连接各种传感器.
1.3 移动机器人的驱动部分
驱动部分由四个直流减速电机以及电机驱动模块L298N组成.模块L298N内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作,可以外接检测电阻,将变化量反馈给控制电路.
直流电机与L298N的连接,由OUT1和OUT2接口控制机器人左侧电机,机器人的右侧电机由接口OUT3和OUT4控制,具体连接如图2所示.
图2 L298N与电机的连接
电机驱动模块L298N作为使能端接收Raspberry Pi的控制. L298N与Raspberry Pi的连接方式如图3, IN1~IN4为逻辑输入端分别与Raspberry Pi的四个GPIO输入/输出接口相连, L298N的+5V端口与Raspberry Pi的+5V端口连接.
图3 L298N与Raspberry Pi的连接
1.4 移动机器人的感知部分
移动机器人在实际运动中环境复杂,传感器对环境的检测尤为重要.随着移动机器人应用的不断拓展,单个传感器往往难以感知周边的环境信息,因此多传感器技术应用而生[6].与单个传感器相比,多传感器可以进行信息的互补和融合,提高机器人对周边环境的感知能力,获取信息更全面和准确,从而提高机器人自主运动的鲁棒性.
所制作的机器人使用了超声波测距模块(HC-SR04)以及红外线避障模块两种传感器.红外避障模块的覆盖面较大且模块自身体积较小,因此在侧面检测选用了四个红外线传感模块.在机器人的正面使用超声波传感模块,可以有效地检测到障碍物的信息,并通过检测距离来控制机器人的速度,避免机器人行驶过快撞上障碍物.两种模块的配合基本可以检测到机器人行进过程中所遇到的障碍物,有效的保护了机器人并保证了运动的顺利进行.
超声波测距模块有四个引脚,其中TRIG 为触发控制信号输入,ECHO 为回响信号输出.红外线避障模块有三个接口,各模块与Raspberry Pi具体连接如图4所示.
图4 Raspberry Pi 与避障模块的连接示意图
2 移动机器人的运动控制
根据机器人的运动环境,分析机器人可能遇到的各种问题.对可能出现的各种情况进行研究并给出解决方案,保证机器人的运动安全,使机器人平滑、鲁棒地运行.
2.1 移动机器人的感知结果
设定机器人与前方障碍物的临界距离为Dmin.当机器人与障碍物的距离大于Dmin时,可认为机器人前方没有障碍物,否则表示机器人前面有障碍物.启动机器人后,传感器检测周围环境并返回以下检测结果:前方有(无)障碍物、机器人左边有(无)障碍物、机器人右边有(无)障碍物.接下来分析一下这些不同情况的处理方法,并制定相应的控制策略.
2.2 移动机器人控制策略设计
根据人工驾驶经验和模糊控制原理,设计机器人小车的运动控制规则.将传感器分为左、前、右三组,分别用sgl、sgf、sgr表示.其中sgl包括左边两个红外线传感器,sgf代表超声波传感器,sgr包括机器人右边两个红外线传感器.
将sgl、sgf、sgr传感器中探测到的障碍物的最小距离分别表示为dl、df、dr.将dl、df、dr作为模糊控制器的输入.机器人的左转、右转、前进、后退分别用Turn_left、Turn_right、Forward和Retreat表示,并作为模糊控制器的输出.输入变量dl、df、dr划分为两个模糊语言变量组成的模糊集合{near,far},t1、t2、t3为输出动作的运行时间.
则移动机器人的模糊控制规则设计如下:
(1)If dfis far and dlis near and dris far then Turn_right t2;
(2)If dfis far and dlis far and dris near then Turn_left t3;
(3)If dfis far and dlis far and dris far then Forward t1;
(4)If dfis far and dlis near and dris near then Retreat t1;
(5)If dfis near and dlis near and dris far then Turn_right t2;
(6)If dfis near and dlis far and dris far then Turn_right t2;
(7)If dfis near and dlis far and dris near then Turn_left t3;
(8)If dfis near and dlis near and dris near then Retreat t1;
2.3 控制策略的完善
上述控制规则考虑到了机器人运动过程中通常会遇到的情况. 但机器人在实际运动过程中有时会出现一些漏洞,这些漏洞可能导致机器人陷入死锁,下文就这些问题进行分析.
(1) 机器人陷入前、后死循环
在图5所示的情况中,位置1中的机器人正前方没有障碍物而左右两边有障碍物,机器人后退到位置2,到达位置2后机器人前方以及左右两边的传感器都不会检测到障碍物,机器人又将前进到位置1,如此机器人陷入死循环.
出现上述情况是因为之前的控制策略只考虑了机器人当前的一步,没有规划机器人接下来的路线.解决它只需要让机器人退出后再转动一定的角度,改变机器人的运动方向,使其从死循环中走出来.
如图6所示,位置1中的机器人为陷入死锁时的情况,位置2中的机器人为改进控制策略后的状况,机器人的位姿与之前相比发生了变化,问题顺利解决.
图5 移动机器人陷入前进后退死循环的位置示意图 图6 解决移动机器人进退死循环问题的示意图
(2)机器人陷入左、右死循环
当机器人与左边障碍物的距离稍微大于两者之间的临界距离,而右边的红外线传感器刚好检测到了障碍物,按照之前的设定,机器人左转.但是由于左边也有障碍物,机器人转动很小的距离后传感器就检测到了左侧障碍物的存在,而此时右边障碍物与机器人的距离刚好大于临界距离,那么此时机器人又将右转,出现“对称无法确定”现象[7-9],如此机器人陷入死循环.图7为上述情况导致机器人死循环的位置图示.
图7 机器人陷入左右死循环的情景示意图(一)
当机器人的正前方和右边都有障碍物,机器人左转直到右边传感器检测到无障碍物时,由于前边依然有障碍物,按照之前的设定,机器人此时将右转,如此机器人将一直重复左转右转,陷入死循环.具体情况如图8所示.
图8 机器人陷入左右死循环的情景示意图(二)
要解决这个问题需要考虑如何让机器人判断自身是否陷入死循环.引入两个参数a和b.初始化a和b都为0,设定当机器人左转后a变为1,右转后b变为1,也就是分别用a、b来检测机器人的上一个动作.当机器人前进或者后退的时候,a和b同时清零.由于机器人陷入左、右死循环的时候并没有前进或者后退,那么我们可以用前进或者后退来判断机器人是否陷入死循环,那么机器只需检测a+b的值N为多少便可知道当前自身的状态.当N为0的时候,机器人刚刚完成前进或者后退的动作;当N为1的时候,机器人刚刚完成左转或者右转;当N的值为2的时候,那么机器人已经死锁,那么此时需要让机器人退出循环.
由于机器人陷入锁的时候,向左、向右或是向前都已经不可能,只能让机器人后退,如果只是后退,机器人又将陷入向前、向后的死循环,依照之前的解决方法,在机器人退回到安全区域后再向左转一定的角度,使机器人之后的路线与先前不同,那么机器人便顺利的摆脱了死循环.
机器人的运动控制流程如图9所示.设定机器人与前方障碍物的临界距离Dmin=30cm,引入a和b两个参数分别用来监控机器人的左转和右转.设t1=0.1s、t2=0.18s、t3=0.23s为机器人的三个移动时间.GPIO 1、GPIO 2、GPIO 3、GPIO 4为Raspberry Pi控制红外线避障模块的端口.其中GPIO 1、GPIO 2控制机器人右边的传感器,GPIO 3、GPIO 4控制机器人左边的传感器,当传感器的返回值为0表示传感器检测到有障碍物存在.Forward表示前进,Retreat表示后退,Turn_left表示左转,Turn_right表示右转.
图9 移动机器人运动控制流程图
归纳运动控制策略设计如下:
(1)If dfis far and dlis near and dris far then Turn_right t2;
(2)If dfis far and dlis far and dris near then Turn_left t3;
(3)If dfis far and dlis far and dris far then Forward t1;
(4)If dfis far and dlis near and dris near then Retreat t1and Turn_right t1;
(5)If dfis near and dlis near and dris far then Turn_right t2;
(6)If dfis near and dlis far and dris far then Turn_right t2;
(7)If dfis near and dlis far and dris near then Turn_left t3;
(8)If dfis near and dlis near and dris near then Retreat t1and Turn_right t2;
(9)if a is 1 and b is 1 then Retreat t1and Turn_right t2;
3 移动机器人及其运动控制算法的实验验证
在真实的室内办公环境下,测试了所设计的移动机器人的硬件性能、运动控制性能以及控制算法的有效性.障碍物为室内的一些固定的办公物品,以及人为设计的在运动过程中可能遇到的各种障碍.着重测试了可能导致机器人锁死的情况,旨在检验算法的可靠性及鲁棒性.
在机器人上安装GPS装置以记录机器人的运动轨迹,通过kml文件将路径信息导出,然后在地图上显示.图10为机器人在实验环境中的一次运动轨迹,其中①标记为机器人的起点,②标记为路径的终点,中间连线为机器人的运动轨迹.
图10 机器人的运动轨迹
从实验过程中,移动机器人可以较好实现在实验环境下的漫游,在躲避障碍的同时能够自适应的调节前进方向,证明了机器人的运动控制方法切实有效.
4 结束语
本文利用Raspberry Pi与传感器的配合设计了机器人的运动控制机制,并通过实验检验并完善了机器人性能.系统实验结果表明, 所设计的移动机器人能够有效地躲避复杂路况上的障碍物并选择出一条合理的路径,初步满足了机器人漫游的应用需求.不过由于红外线传感器自身的一些缺点,机器人遇到细小的障碍物时有可能会碰到障碍物,这点还需要继续完善.在未来的研究中, 可以考虑在机器人的控制器中加入定位机制,实现机器人的路径规划、路径追踪、导航等,并将其推广到动态环境中.还可以将摄像头引入机器人,实现机器人的监控作用.
[1]蔡自兴.21世纪机器人技术的发展趋势[J]. 南京化工大学学报(自然科学版),2000,22 (4):73-78.
[2]STEPHAN K D, MICHAEL K, MICHAEL M G, et al. Social implications of technology: the past, the present, and the future[J]. Proceedings of the IEEE, 2012, 100:1 752-1 781.
[3]孙洪涛,宋光明,张军,等. 一种具有弹跳功能的翻滚式机器人设计与实现[J]. 机器人,2013(6):672-677.
[4]黄永安, 熊蔡华, 熊有伦. 智能机器人与应用的现状与发展趋势[J]. 国际学术动态, 2009 (4): 38-39
[5] UPTON E, HALFACREE G.Raspberry Pi User Guide [M]. USA: Wiley, 2012.
[6]彭梦.基于多传感器融合的移动机器人障碍物检测研究[D]. 长沙:中南大学,2007.
[7]胡海燕,王鹏飞,孙立宁,等. 线驱动连续型机器人的运动学分析与仿真[J]. 机械工程学报,2010,46 (19):1-8.
[8]宋颖丽. 基于行为的移动机器人局部路径规划方法研究[D]. 淄博:山东理工大学,20011.
[9] CHAKRABORTY N, GHOSAL A. Kinematics of wheeled mobile robots on uneven terrain[J]. Mechanism and Machine Theory,2004,39(12):1 273-1 287.
(编辑:刘宝江)
Design and motion control of the wheeled mobile robot based on Raspberry Pi
WANG Xiao-yu , LI Cai-hong, SONG Li, ZHU Bao-yan
(School of Computer Science and Technology, Shandong University of Technology, Zibo 255049, China)
In this paper, based on the card computer Raspberry Pi and various sensors, a mobile robot is designed from the hardware building to motion controlling. Fuzzy control method is used to drawn up a set of different motion controlling rules according to various environments to ensure the safety of mobile robot. At last, the designed robot and the controlling methods has been tested in an office environment. The experimental results show that the robot's obstacle avoidance performance is improved, and the motion control of the robot in complex environment is realized. The robot can roam fluently in the environment and run by remote control.
card computer; Raspberry Pi; mobile robot; motion control
2016-11-01
王小宇,男,wxyzqz@sina.cn; 通信作者: 李彩虹,女,lich@sdut.edu.cn
1672-6197(2017)05-0055-05
TP242
A