基于ROS无人驾驶车算法优化的研究
作者:张伟民 户肖剑 贾喜
来源:《现代信息科技》2020年第23期
        摘 要:借助ROS机器人操作系统,通过实验分析并比较三种建图算法,使用Gmapping算法并结合RPLIDAR生成二维地图效果最佳。在原有AMCL算法的基础上,添加了动态参数,使其粒子收敛速度根据车体速度的改变而改变,对于无人驾驶车的实时定位会更加精确。创新性的使用路径曲率控制方案,相较与纯路径追踪控制,方便且更易编程实现。最后使用Move_base功能包实时规划出最优的全局与局部路径,使无人驾驶车实现自主导航与避障的功能。
        关键词:Gmapping算法;AMCL算法;Move_base功能包;自主导航
        中图分类号:TP277 文献标识码:A 文章编号:2096-4706(2020)23-0080-04
        Research on Algorithm Optimization of Autonomous Vehicle Based on ROS
        ZHANG Weimin,HU Xiaojian,JIA Qunxi
        (Luoyang Institute of Science and Technology,Luoyang 471023,China)
        Abstract:With the help of the ROS robot operating system,the three mapping algorithms are analyzed and compared through experiments,and the Gmapping algorithm combined with RPLIDAR to generate a two-dimensional map has the best effect. On the basis of the original AMCL algorithm,the dynamic parameters are added to make the convergence speed of particle swarm change according to the change of vehicle speed,so that the real-time positioning of the autonomous vehicle will be more accurate. The innovative path curvature control scheme is more convenient and easier to program than pure path tracking control. Finally,the Move_base function package is used to plan the optimal global and local paths in real time,so that the autonomous vehicle can realize the function of autonomous navigation and obstacle avoidance.
        Keywords:Gmapping algorithm;AMCL algorithm;Move_base function pack;autonomous navigation
        0 引 言
        無人驾驶汽车的出现,带来了新的经济增长点,而且更加的贴合共享经济,使残疾人也能拥有私家车。但是在无人驾驶汽车迅速发展的同时,也存在着很多问题:如很多地区定位不精确,就无法正常导航;而且,部分道路临时维护时,也不会即时更新到地图;部分道路路况复杂,无人驾驶汽车可能不会顺利通过;最重要的是相关交通事故法规,也未完全完善。因此作者以参加全国大学生智能车大赛和机器人竞赛的经验为基础,自主搭建了无人驾驶车车体,利用ROS中开源的功能包,并不断地创新优化算法,使无人驾驶汽车能够自主行驶。
        1 ROS无人驾驶车各模块算法研究
        1.1 ROS无人驾驶车建图算法研究
        二维环境地图是ROS无人驾驶车通过传感器对周围环境进行采集分析后形成的数据信息,是确保导航定位的标准。ROS无人驾驶车将激光雷达、姿态传感器和里程计信息相互融合,搭建完善的二维栅格地图,为无人驾驶提供导航定位相关的数据消息。
        1.1.1 建图算法比较
        二维地图的建立算法基本上都是基于概率估计的,比如Gmapping、Hector-SLAM、谷歌Cartographer算法等。Gmapping算法是研究最普遍的SLAM算法,因此,该算法目前有非常高的成熟度。而且,该算法建图效果精准,地图也无漏隙。Hector-SLAM建图算法则对激光雷达的扫描频率要求特别高,使用此算法必须借助价格昂贵的雷达。而且Hector-SLAM算法在ROS无人驾驶车快速转向的时候容易发生错误匹配,导致搭建的地图发生错位。谷歌Cartographer算法结合RPLIDAR数据、底盘odom数据、IMU数据,再通过相应的建图优化算法,构造出一个几乎没有缺陷的二维地图。
        结合以上分析,Gmapping建图算法原理相较于其他算法比较简单,而且使用该算法构建出的地图也非常精确,因而本文研究采用该算法构建地图。
        1.1.2 Gmapping建图算法分析
无人驾驶汽车价格
        Gmapping建图其实使用的是基于2D激光雷达的RBPF算法完成二维栅格地图构建的SLAM算法。可以使用一个条件联合概率分布公式来描述:
        p(x1:t,m|u1:t,z1:t) (1)
        其中,p为概率,z1:t为ROS无人驾驶车从初始时刻到时间t时刻通过激光雷达和IMU传感器获得的数据。u1:t为ROS无人驾驶车从初始时刻到时间t时刻所走过的位移,m为地图中的栅格点,x1:t为当前ROS无人驾驶车的轨迹状态。
        利用通用公式分布律:
        p(A,B|Z)=p(A|Z)p(B|A,Z) (2)
        其中,A,B,Z为3种不同的随机变量,对式(2)进行化简得:
        p(x1:t,m|u1:t,z1:t)=p(x1:t|u1:t,z1:t)p(m|x1:t,z1:t)
        (3)
        则进一步可以使用p(x1:t|u1:t,z1:t)表示ROS智能机器人的路径状态概率,使用p(m|x1:t,z1:t)表示在已知路径状态和传感器数据时,计算地图构建概率点。
        由于Gmapping建图算法使用粒子滤波来估计当前ROS无人驾驶车位置,同时将粒子集合一起组建成栅格地图,所以每一个粒子就包含了位置姿态信息和地图信息,利用贝叶斯准则对p(x1:t|u1:t,z1:t)进行化简。
        先进行转换:
        p(x1:t|u1:t,z1:t)=p(x1:t|x1:t|zt,u1:t,z1:t-1) (4)
        再将zt消掉,并利用贝叶斯公式化简,最后得到: