一种自动规划路径AGV机器人的设计
2021-11-30赵连强柳国良李鹏远
赵连强 柳国良 李鹏远
摘要:本文以在室内环境工作的移动机器人自主导航为应用背景,构建基于ROS平台并具有自动规划路径功能的AGV机器人。在建立机器人导航用环境地图方面,对只依赖激光雷达数据的Hector SLAM地图创建进行了改进,将激光雷达、里程计及惯导(IMU)等多个传感器数据进行融合,通过里程计辅助的方式改进ICP配准精度,有效降低了HectorSLAM建图打滑现象产生的影响,并进行基于A*算法和行为动力学的路径规划研究。实验结果表明,本AGV机器人能够完成室内环境的路径自动规划。
关键词:AGV;路径规划;建图;环境
本系统采用树莓派4B处理器为主控制芯片,利用惯性测量单元(IMU)、轮式编码器以及激光雷达作为导航数据源,进行了相关的硬件设计。软件部分基于机器人开源操作系统(Robot Operating System,ROS)平台,对机器人的环境建模和路径规划进行了研究。主要完成基于ROS的移动机器人平台构建、基于多传感器信息融合的HectorSLAM环境地图创建、基于A*算法和行为动力学方法的路径规划研究、基于ROS的移动机器人导航实验等。
一、硬件结构
(一)控制器
机器人控制器采用树莓派4B,运行Ubuntu Mate或Raspbian系统,安装ROS机器人操作系统,作为机器人端ROS节点控制器。硬件组成框架图如下:
树莓派4B对比3B+升级明显,主要功能包括高性能Cortex-A72 64位四核处理器,2路micro-HDMI端口支持分辨率高达4K的双显示屏,高达4KP60的硬件视频解码及4GB的RAM,双频2.4/5.0GHz无线局域网,蓝牙5.0,千兆以太网,USB3.0和POE功能(通过单独的POE HAT插件)。
树莓派主要负责获取激光雷达、IMU等传感器数据并发布相应话题来供虚拟机订阅,并订阅虚拟机发出的速度信号控制小车移动。
(二)电源供电
该机器人的电源为电池模块,由两块锂离子电池组成,内置电池保护板。一块8.4V 2400mAh给树莓派、激光雷达、IMU、编码器供电,一块12V 6000mAh给减速电机供电。
(三)通信链路
Ros机器人主机以50ms为周期发布速度、位置等控制信息,树莓派接收速度控制信号并将采集到减速电机的位置信息发布出去。
(四)电机参数
工作电压:12V。
额定功率:4W。
额定电流:0.36A。
堵转电流:3.2A。
减速比:1:30。
减速后空载转速:366±26RPM。
额定扭矩:1KG·CM。
该电机全金属减速箱,可靠性更高。
(五)传感器
激光雷达:激光雷达是以发射激光束来探测目标位置、速度等特征参数的雷达系统。雷达向目标发射激光束,将接收到的目标回波与发射信号进行比较,作适当处理后,可获得目标的相关参数,如目标方位、距离、高度、速度、姿态以及形状等,从而对周围的物体进行识别。
机器人上的激光雷达可以感知环境二维平面的深度信息。程序可以通过环境深度信息来判断障碍物距离小车的远近借此来达到避障的目的。Ros中的slam开源包gmapping可以通过获取激光雷达的数据对周围环境建立地图。通过对激光雷达数据的处理,可以实现对机器人的定位、计算机器人所在二维平面的姿态、计算机器人的速度等。
本机器人用的LDS1.5激光雷达是地面移动机器人常用的一种传感器,其工作原理是用一个高速旋转的激光测距探头将周围360。的障碍物分布状况测量出来,形成障碍物轮廓的俯视二维点阵输入ROS系统里。
供电电压:5V。
测量距离:120~3500mm。
扫描频率:1.8kHZ。
扫描角度:360°。
分辨率:1°。
陀螺仪和加速度计:IMU MPU6050分别为陀螺仪和加速度计提供了三个16位的ADC,将被检测的模拟量转化为可输出数字量。传感器的测量范围是用户可控的,陀螺仪的可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计的可测范围为±2,±4,±8,±16g,可以精确跟踪快速和慢速的运动。通过对加速度计积分可以计算车速,对角速度积分可以计算小车的欧拉角。角速度积分算出的俯仰角、翻滚角可以通过重力加速度在车模x,y,z轴的分量来辅助校正。IMU在小车上可以比较精确地感知小车当前的状态。
二、建图导航算法
(一)ROS的通信机制
ROS系统中的通信方式有三种,分别为话题(msg)、服务(srv)和动作(action),其中话题属于基本的发布/订阅通信方式,适用于单个节点发布消息,一个或多个节点接受消息的情况;服务属于实时获取结果的情况,应用于请求/响应式的应用环境,适用于基本功能的调用或者状态的查看。
ROS是一种分布式软件框架,节点可以运行在不同的计算平台上,节点之间以松耦合的方式进行组合,通过Topic、Service进行通信。ROS的分布式十分强大,在不同计算机上运行不同的节点就如同在一台计算机上运行。
(二)SLAM建图
SlAM按传感器分类可以分为两大类:视觉SLAM和激光SLAM。视觉SLAM对环境有较高要求,需要环境有丰富的纹理,且计算量大。视觉SLAM在重定位和场景区分上有着极大优势。激光SLAM对环境要求较低,计算量小,且激光雷达本身带有几何信息,建立出来的地图更直观精确。本次我们采用的是激光SLAM。
Gmapping是应用最为广泛的2D slam方法,主要是利用RBPF(Rao-Blackwellized Particle Filters)方法,所以需要了解粒子滤波的方法(利用统计特性描述物理表达式下的结果)。Gmapping在RBPF算法上做了提议分布和选择性重采样的改进,可以实时构建室内环境地图,所需计算量较小且精度较高。相比Hector SLAM,其对激光雷达的频率要求低、鲁棒性高(在机器人快速转向时Hector容易发生错误匹配,地图发生错位,主要原因是优化算法容易陷入局部最小值);而相比Cartographer,在小场景地图构建时,不需要太多粒子且没有回环检测,计算量小且精度相差不大。随着场景的增大所需粒子增加,每个粒子都会携带一幅地图,所需的内存和计算量都會增加,不适合构建大场景地图。因为没有回环检测,回环闭合时可能会造成地图错位,虽然增加粒子数目可以使地图闭合但要以增加计算量和内存为代价。所以Gmapping不能像cartographer那样构建大的地图。优点:在长廊及低特征场景中建图效果好;缺点:依赖里程计(odometry),无法适用不平坦区域;无回环。综合以上考虑,本机器人采用gmapping算法。
(三)机器人的定位
里程计是机器人定位的重要组成部分。以小车的起始点建立坐标系(odom坐标系),记录小车移动的里程,可以得到小车在odom坐标系下的坐标,以此来推算出小车的位置。
1.激光里程计(rf20)
编码器里程计和视觉里程计是自控中应用较多的两种里程计类型。电机编码的里程计在低速情况下比较可靠,但不可避免地会出现因为轮子打滑等因素造成的漂移问题;而视觉里程计对于运动估计问题来说是一个比较灵活的解决方案,能适用不同的机器人,缺点在于计算量大,占用较大资源空间,对传感器要求较高。激光里程计吸收了上述两种方法的优点,能快速而精确地从连续范围扫描中估计激光雷达的平面运动,且运算成本低。表现取决于激光的分辨率和环境因素,转换评估准确。
rf20是一种快速而精确的方法,用于从连续范围扫描中估计激光雷达的平面运动。对于每个扫描点,根据传感器速度制定范围流约束方程,并最小化所得几何约束的鲁棒函数以获得运动估计。与传统方法相反,该方法不搜索对应关系,而是以密集测距法的方式基于扫描梯度执行密集扫描对准。最小化问题以粗到精的方案解决以应对大位移。
实际测试中,激光里程计在小车做直线运动时比较准确,但是在遇到长直道,激光雷达采集不到任何特征点的时候无法准确地测量小车移动。由于激光雷达本身是在旋转的,所以当小车在做快速旋转运动的时候激光里程计测量出来的旋转数据也有较大的误差。
当小车做在做直线运动的时候,激光里程计是比较准确的,但是当小车在做旋转运动的时候,由于激光雷達自身的旋转,会导致激光里程计的旋转不准确。所以使用ekf功能包来将激光里程计的数据与IMU的数据融合出一个较为准确的数据。
这个包用于评估机器人的3D位姿,使用了来自不同源的位姿测量信息,它使用带有6D(3D position and 3D ori-entation)模型信息的扩展卡尔曼滤波器来整合来自轮子里程计,IMU传感器和视觉里程计的数据信息。基本思路就是用松耦合方式融合不同传感器信息实现位姿估计。
实际测试中,在小车低速运行时可以比较准确地得到小车的位姿态,但是由于IMU计算出来的速度受车模加速度的影响,在车模做频繁的加减速运动时,融合后的里程计消息还是有一定程度的漂移。
2.编码里程计
为了精确地控制车模的速度,我们根据采集到的编码器数据测量车子的速度,并且对这个速度积分可以得出车模运行的里程。在通过IMU传感器便可以计算出车模的里程。在实际应用中更多的还是通过轮式里程计来进行测量小车的位移。我们经过测试,这样计算出来的里程计信息有着较高的精度,使得车模在运行时的定位精度有着很大的提升。
通过对里程计信息的推算可以得出小车在地图上的位置,但是里程计定位会带来很多误差。amcl是根据已知地图配合激光雷达的数据进行定位,不存在误差累计的问题,所以我们在里程计定位的基础上引入了amcl功能包来进行机器人在地图上的辅助定位,可以消除里程计在运动过程中的累计误差。
三、路径规划
机器人在得到目标点后,同样会以传感器作为眼睛,来获取道路信息,并思考分析如何行走才不会与其他物体相撞,并用较少的时间正确到达目的地。这就称之为路径规划。路径规划主要涉及了三大问题:明确起点与终点,规避障碍物,尽可能做到路径优化。而我们根据对环境信息掌握的程度的不同,将机器人的路径分为了两个部分:全局路径规划与局部路径规划。
(一)全局路径规划
global_planner与navfn;两种全局路径规划都拥有自己的插件,在move_base调用时只需要将插件名字以参数的形式传人便可以直接调用。全局路径规划的算法主要包括A*与Dijkstra算法。
Dijkstra算法是典型的最短路径算法,用于计算一个节点到其他所有节点问的最短路径。其特点是以起始点为中心向外层层扩展,直到终点为止。
A*算法是Dijkstra算法的升级版。f(n)=g(n)+h(n),其中估价值h(n)的选取是保证找到最优解的条件。估价值≤实际值的情况,搜索的点数多,范围大,效率低,但能得到最优解。估价值>实际值的情况,搜索的点数少,范围小,效率高,但不能保证得到最优解。估价值与实际值越接近,估价函数取得就越好。
(二)局部路径规划
机器人在获得目的地信息后,先经过“全局路径规划”规划出一条大致可行的路线;再调用局部路径规划器,根据costmap的信息及路线规划出在局部时做出的具体行动策略。
DWA(Dynamic Window Approach)算法:其原理是在速度空间(v,w)中采样多组速度,并模拟出这些速度在一定时间内的运动轨迹,再通过评价函数对这些轨迹打分,选择出最优的速度发送给下位机。ROS中主要使用了DWA算法。每当move_base处于规划状态时,就调用DWA算法,选择出最优的速度指令,发送给机器人底盘执行。
四、结论
本文研究了基于ROS平台上的室内环境下的一种自动规划路径的AGV仓储运输小车的设计。通过对算法的改进,能够满足一般环境下的运输要求。
作者简介:赵连强(1982— ),男,汉族,河南新乡人,本科,讲师,研究方向:汽车传感器。