hector源码理解
参考网址:
大佬的分析,包含代码注释解析与源码重写,论文翻译
Hector_slam源码框架分析_翎风的博客-CSDN博客
Hector SLAM解读(1)原文翻译 - cyberniklee - 博客园 (cnblogs.com)
HectorSLAM论文解析・代码重写(2) - scomup - 博客园 (cnblogs.com)
zhangwenxiao/HectorSlamWithoutROS: 脱离ROS的hector slam算法 (github.com)
代码框架
该开源系统的主要代码在hector_mapping文件夹中,文件夹里有src文件夹和include文件夹,包含了算法所有的核心代码。
通过对源码的梳理,整理出了如下流程图:
大佬的图非常清晰的可以看到,整个代码分为地图匹配
与地图更新
地图匹配
主要采用非线性优化—-高斯牛顿法,实际上就是通过激光数据与现有地图的差距(双线性插补),通过最小二乘法,计算概率,从而更新位移增量,计算出机器人最可能存在位置
双线性插值计算栅格概率
一篇文章为你讲透双线性插值 - 知乎 (zhihu.com)
通过双线性插补得到一个位置,然后通过最小二乘法,更新位移增量
高斯牛顿法
【泡泡机器人公开课】第三十课:非线性优化与g2o-高翔_哔哩哔哩_bilibili
地图更新
用bresenham划线
算法计算激光途经栅格
(60条消息) Bresenham 算法原理_yzh1994414的博客-CSDN博客_bresenham
画线算法-Bresenham算法_天才樱木-CSDN博客_bresenham画线算法
优缺点
1.优点
(1)不需要使用里程计,可以用于地面不平坦区域及空中飞行器。
(2)使用多分辨率地图能避免局部最小值。
2.缺点
(1)要求雷达更新频率较高,测量噪声小;或者机器人运动速度低。
(2)无法利用精确的里程计信息。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 某飞行员的随笔!