论文部分内容阅读
随着人工智能领域的飞速发展,高度的自动化为人们的生活带来了各种便捷。其中,移动机器人领域由于其广泛的应用场景更是得到了空前的发展。自主导航是移动机器人执行复杂环境下各种任务的前提条件,而同时定位与地图构建(Simultaneous Localization and Mapping,SLAM)被认为是使机器人具备空间探索能力的关键技术。在实际的应用场景中,由于随机噪声的干扰和传感器观测模型的非线性等原因,使得系统需要能够鲁棒的跟踪非线性随机动态系统的状态。因此如何为SLAM设计核心的状态估计框架,使其能正确传播估计不确定性,对于SLAM的性能有很大影响。目前主要所采用的数学框架可以分为非线性优化和滤波这两类。相比于非线性优化的方法,滤波在系统可扩展性和鲁棒性方面有一定的优势。在一些更好的设计中,相同精度下基于局部信息融合的滤波算法还具有实时性的优势。其中,采用粒子滤波进行定位的方法在降低系统模型化误差、提高估计精度方面体现出不俗的性能,已经被广泛的应用于移动机器人导航中。但是基于粒子滤波的SLAM方法也存在由粒子滤波带来的缺陷,其中粒子退化和贫化问题严重的影响了SLAM的性能。为了缓解这个问题,本文采用引力场机制改善算法在重采样过程中的粒子分布。引力场算法(Gravitational field algorithm,GFA)是一种启发式的搜索算法,它将粒子群看作宇宙灰尘系统,在优化过程中,将状态空间中适应度最高的粒子类比为中心灰尘,中心灰尘通过引力和斥力对其余灰尘产生作用。当周围灰尘与中心灰尘之间的距离大于算法预先设定的阈值时,灰尘受到中心灰尘的单向引力作用,而每个灰尘都受到中心灰尘因自转而产生的排斥作用,通过融合这两者更新系统中每个灰尘的位置。改进后的算法利用移动因子驱动粒子向高似然区域移动,同时通过自转因子的作用又能使粒子在一定程度上保持距离,这在保证了算法的估计精度的基础上又扩大了粒子的局部搜索空间,增强了在状态突变情况下算法跟踪的鲁棒性。相比于传统框架下的Fast SLAM算法,改善后的算法在实时性和估计一致性方面都有明显改善。Matlab仿真结果表明,在同等噪声干扰下,GFA-Fast SLAM2.0算法的估计精度也优于EKF-SLAM和Fast SLAM2.0。为了能够进一步测试算法性能,通过机器人操作系统(Robot Operating System,ROS)搭建激光雷达机器人的URDF模型,并将改进的算法部署到ROS通信系统中,最后在具备物理属性的Gazebo模拟环境中进行测试,验证了改进算法的实际可行性。