赞
踩
在比赛或者科研项目中,在封闭室内环境中,机器人需要建图来了解自身位置,从而进行轨迹规划等等。在选择2dslam算法的时候,我们不但要考虑机器人底盘的运行速度,也要考虑地图的精度。HectorSLAM和GMapping都是用于实时环境建图和定位的算法,我们先用一张表格大概区别一下两种算法:
一、hector-slam
HectorSLAM适用于具有高速扫描频率的激光雷达并解决scan-matching问题。它不需要里程计信息,因此在不平坦地区进行建图的空中无人机和地面小车上具有可行性。该算法利用已获得的地图来优化激光束点云,估计激光点在地图中的表示和占用网格的概率,从而获得激光点集映射到现有地图的刚体变换。为了避免陷入局部最小值而不是全局最优解,HectorSLAM使用多分辨率地图。
然而,HectorSLAM对传感器的要求较高,需要具有高更新频率和小测量噪音的激光扫描仪。在建图过程中,机器人的速度需要控制在较低水平,才能获得较理想的建图效果。由于优化算法容易陷入局部最小值,HectorSLAM没有闭环检测,这可能导致在机器人快速转弯时出现误差。
我们的一个项目中就应用到了这个算法,下面是他的大概的结构图:
在实际应用中,通过实验证明,如果控制小车转速(角速度)太大,很容易造成地图的畸变与丢失,导致机器人丢失精确度。在对机器人转向要求比较大的项目中不适用,大范围的旋转会导致机器人死机、坐标丢失等情况发生。
二、Gmapping
GMapping算法主要使用激光雷达数据采集环境信息。激光雷达通过扫描周围环境,产生激光束的距离和角度信息。
这边翻译一下:众所周知,SLAM需要解决的基本问题是同时完成机器人的定位和构建周围环境的地图。这个问题使用概率论中的联合概率分布模型来描述:
其中x1:t表示机器人在时间1:t的姿势序列;m表示机器人周围环境的地图;z1:t表示机器人在时间1:t的传感器测量数据;u1:t−1表示机器人在时间1:t-1的控制数据。
也就是说,在当前机器人传感器测量值z1:t和机器人控制数据u1:t−1的前提下,机器人姿态状态x1:t和机器人的周围环境图m可以由上式get表示。根据概率论的相关知识,推导出上述公式如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。