基于动态窗口法的移动机器人自动避障导航研究
2020-11-13彭育强黄泽龙李少伟
彭育强,黄泽龙,李少伟
(广东交通职业技术学院轨道交通学院,广东 广州 510650)
0 引言
随着人工智能技术的不断发展,机器人技术及其应用已从局部的工业场景延伸至人们的日常生活之中。从机器人技术的发展趋势可以看出,机器人显得越来越智能化,将来能够更好地为人类社会发展提供服务。移动机器人的自动避障技术是机器人技术及应用的研究重点内容之一。其目的是在障碍物环境下,机器人能够自主避开障碍物并规划最佳运动路径运行至目标点,主要涉及机器人自身定位、路径规划以及移动控制等[1-3]。
本文研究的主要内容是在树莓派平台的基础上,采用STM32控制器以及通过动态窗口法,结合机器人操作系统(robot operating system,ROS)平台,实现对机器人的在线自动避障控制;通过MATLAB仿真以及搭建移动机器人系统平台进行试验测试,验证了该移动机器人自动避障方案的正确性、有效性等。
1 机器人系统总体方案设计
控制方案采用目前热门的ROS作为机器人开发平台。该平台可以方便、快速地为机器人控制系统提供相应的控制服务,包括硬件抽象描述、底层设备应用控制、公共功能的操作以及发包管理和程序传递等[4]。本文所设计的机器人控制系统总体框图如图1所示。
图1 机器人控制系统总体框图Fig.1 Block diagram of robot control system
系统可以通过应用层,包括手机应用(application,APP)、PS3手柄或者机器人可视化(robot visnalization,RVIZ)等,输入控制信息;在导航层,通过自适应蒙特卡罗定位(adaptive Monte Coarlo location,AMCL)定位技术实现对机器人在地图中的位置跟踪,采用动态窗口法实现局部路径中的避障规划,控制机器人硬件平台中的差速电机实现避障控制。
2 机器人平台搭建
本机器人系统主要由上位机和下位机组成。上位机由工控机组成,负责机器人的所有控制。下位机由STM32作为主控芯片,负责机器人差速电机的速度和角度控制,涉及机器人运动控制、定位导航等功能。除此之外,系统还包括激光雷达、陀螺仪等传感器,用于机器人周围环境检测。为保证上位机与下位机之间数据传输的准确性与实时性,采用RS-485总线方式进行通信连接。
2.1 上位机
由于目前系统只支持在Linux系统上安装部署,在此选用具有体积小、功能丰富、成本低等特点的树莓派3B作为主控器。在平台上安装Ubuntu MATE系统。Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,可实现ROS在树莓派上的稳定运行,并通过串口和硬件层连接实现数据采集和通信[5-6]。
2.2 STM32控制器
选用STM32F103RCT6作为机器人底层硬件系统的控制器。该芯片拥有的资源非常丰富,如72 MHz速度、256 KB程序存储器容量以及丰富的外围设备接口和通信方式。该控制器除了对机器人进行运动控制之外,还对陀螺仪传感器数据进行解算,得出机器人运行角速度;对编码器进行解算,得出机器人运行线速度等。通过对传感器数据采集和角速度、线速度的积分运算处理,得到机器人的里程计信息,并将该里程信息通过串口发送至ROS。STM32控制系统结构如图2所示。ROS发送相关控制指令至STM32,从而控制机器人驱动电机,实现对机器人的运动控制。
图2 STM32控制系统结构图Fig.2 STM32 control system structure diagram
2.3 激光雷达
考虑到机器人运行的现场环境、性价比以及系统集成度等因素,本系统选用Lidar x2系列激光雷达C0602作为机器人感知环境的传感器。该雷达系统采用三角测距原理,激光测距采样能力能够达到2 000次/s,可以实现在二维平面的8 m半径范围内进行360°全方位的激光测距扫描,并产生所在空间的平面点云地图信息;可以方便地用于地图测绘、机器人定位导航、物体/环境建模等。STM32通过串口提取C0602激光雷达发送过来有效数据,并解析得到激光雷达的实测信息,即机器人的状态信息。激光传感器C0602通信协议如表1所示[7]。
表1 激光传感器C0602通信协议Tab.1 Laser sensor C0602 communication protocol
3 路径导航算法
路径导航技术是移动机器人技术的核心关键技术。其目的是使机器人按照预定的路径导航信息自主运动控制,或者依据传感器获取外部环境进行相应的引导,从而规划出一条机器人能够顺利达到目标点的路径。在本系统中,研究机器人在全局路径规划导航中需要具备避障能力,即局部路径规划能力。导航过程首先通过激光雷达传感器获得相关的地图信息,然后进行路径规划计算,最后发送路径信息给机器人系统,通过相应的决策层使其实现自主导航控制功能[8]。移动机器人导航框架结构如图3所示。
图3 移动机器人导航框架结构图Fig.3 Mobile robot navigation frame structure diagram
本系统中,机器人系统采用差速轮作为移动控制电机,研究采用动态窗口法进行机器人路径规划导航控制。动态窗口法由D.Fox提出,是一种直接在控制指令空间内搜索使得目标函数取得最大值的最佳控制指令自主壁障算法[9]。动态窗口法研究中需要着重考虑机器人的动力学性能,其核心是在机器人的速度(v,w)空间采样多组速度,并模拟机器人在这些速度下一定时间(sim_period)内的移动轨迹。得到多组轨迹后,使用评价函数选出最优的一组速度(含角速度、线速度)来驱动机器人运动[10]。因此,如需模拟机器人的运动轨迹,则先要建立机器人的运动模型。根据两轮差速机器人运动学模型结构,假设机器人线速度为v、角速度为ω、某一时刻(k)在世界坐标系中的姿态角为θ(k)、在时间间隔Δk内机器人作直线运动。机器人的轨迹在世界坐标系的位置可以推算为:
(1)
根据机器人运动轨迹模型采样机器人运动速度,即可推算出机器人的运动轨迹。在二维空间中,机器人速度(v、ω)存在着无穷多组速度。但机器人自身运动又受到相关条件的制约[11],如电机性能、周围环境、机器人自身结构等。因此,需要依靠机器人的自身条件和环境等客观因素,将采样速度控制在一定范围内。以下为对机器人运动控制影响较大的约束因素。
①机器人自身最大、最小速度约束。
vm={v∈[vmin,vmax],ω∈[ωmin,ωmax]}
(2)
机器人运动控制中的速度受到自身线速度、角速度的最小、最大速度约束,因此需要将机器人的速度空间vm限制在约束范围内。
②机器人驱动机电性能约束。
(3)
③安全制度距离约束。
为了保证机器人在碰到障碍物之前能够及时停止,机器人的速度必须控制在一定范围内。假设机器人在速度(v、ω)时刻遇到障碍物的距离为dist(v、ω),则机器人的速度范围为:
(4)
④评价函数。
通过式(2)~式(4)可知,在约束条件下,机器人速度空间中的不同速度(v,ω)有着不同运行轨迹。因此,需要建立评价函数选出最优轨迹。最优运行轨迹对应的速度组(v,ω)则选定为机器人控制指令。其评价函数如下:
G(v,ω)=σ](αheading(v,ω)+βdist(v,ω)+
γvelocity(v,ω)]
(5)
heading为方位角评价函数,表示机器人在速度(v,ω)时,运行至模拟轨迹终端时机器人与目标点之间的角度差距。控制过程中,要使机器人的运行方向与目标点之间的角度尽量小,朝着目标点运动。dist表示机器人在速度(v,ω)时,与障碍物之间的最近距离。如果该轨迹下无障碍物,则将其设为一常数。velocity为机器人在速度(v,ω)时的速度大小评价函数,使机器人速度尽量高速运动。为了解决各评价函数的评价标准不同导致评价函数不连续的问题,需要对各评价函数进行归一化处理,σ为平滑函数α、β、γ为权重系数。其最终目的是使机器人朝着目标点避开障碍物,从而以最快的速度运行[12]。
4 仿真验证及机器人调试
4.1 仿真验证
通过MATLAB仿真验证上述算法的有效性。设置机器人的初期状态x(m)、y(m)、ayaw(Rad)、v(m/s)、w(rad/s),分别为0、0、0.5pi、0、0。目标点位置为:ggoal=[10,9]。随机设置障碍物位置点:oobstacle=[0,2;1,3;2,4;5,4;5,5;5,6;5,9;8,8;8,9;7,9;6,5;6,3;6,8;6,7;7,4;9,8;9,11;9,6] 冲突判定用的障碍物半径oobstacleR=0.2。机器人运动学模型参数为:最高速度,m/s;最高旋转速度,rad/s;加速度,m/ss;旋转加速度,rad/ss;速度分辨率,m/s;转速分辨率,rad/s。转速分辨率为:KKinematic= [1.0,toRadian(20.0),0.2,toRadian(50.0), 0.01,toRadian(1)]。评价函数参数[heading,dist,velocity,predictDT]为:eevalParam= [0.05,0.2,0.1,3.0]。MATLAB仿真运行结果如图4所示。
图4 MATLAB仿真运行结果图Fig.4 MATLAB simulation running result
通过仿真验证,该方法可以控制机器人顺利地避开各障碍物到达目标点,且生成的路径平滑。由此证明,该机器人路径规划方法是有效的。
4.2 机器人调试
机器人平台由两个差速电机和万向轮组成,控制模块主要由上位机、STM32运动控制模块以及激光传感器等组成,采用锂电池直流电源供电。STM32运动控制模块主要实现对机器人电机的调速控制、里程计算等;激光传感器用于机器人感知现在周围环境信息;上位机采用在Ubuntu中的安装ROS作为软件开发平台,采用AMCL技术进行即时定位与地图构建,并通过动态窗口算法实现局部区域导航。试验过程在有多个障碍物的实验室内进行。在RVIZ界面中,可随机设定机器人目的点。
5 结论
本文通过动态窗口算法模拟仿真验证算法的有效性,并采用上位机系统、STM32运动控制模块以及激光传感器等搭建机器人系统,实现了该算法在实际机器人硬件平台上的运用。试验结果表明,该方案能够实现机器人在未知环境中的地图构建,以及自动壁障自主导航等功能。但在机器人靠近障碍物时,速度角容易出现较大波动的现象。因此,对于该算法在机器人控制系统中的实际应用还需作进一步改进研究。