Gmapping、hector、Cartographer三种激光SLAM算法简单对比
来源:互联网 发布:js 判断对象类型 兼容 编辑:程序博客网 时间:2024/05/20 02:26
一、Gmapping是基于粒子滤波的算法。
缺点:严重依赖里程计,无法适应无人机及地面不平坦的区域,无回环(激光SLAM很难做回环检测),大的场景,粒子较多的情况下,特别消耗资源。
源码的核心函数:processScan()
算法框架:
① drawFromMotion()运动模型(因为有这步,所以特别依赖里程计信息)
② scanMatch()扫描匹配
这里面有很多模型常用的
坐标变换之后,雷达数据映射到地图上,计算其距离最近障碍物的距离。
③ updateTreeWeights()权值更新
④ resample()重采样,为了降低退化现象,权重大的粒子多生成一些,很像遗传算法。
⑤ 地图更新updateMap()得到最优的粒子,按照他的扫描数据,利用占据栅格地图算法,更新地图。
二、Hector SLAM
基于优化的算法(解最小二乘问题),优缺点:不需要里程计,但对于雷达帧率要求很高40Hz,估计6自由度位姿,可以适应空中或者地面不平坦的情况。初值的选择对结果影响很大,所以要求雷达帧率较高。
核心函数:update()
① Matchdate()利用上一帧位置和此帧雷达扫描,运用构造的最小二乘问题,估计此帧位姿。
② UpdateByScan根据此帧位姿,雷达数据,利用占据栅格地图算法,更新地图。
扫描匹配算法:利用g2o解公式7,泰勒展开,运用双线性插值计算微分,雅克比矩阵。
函数M()该点是障碍物的概率。
三、Cartographer
累计误差较前两种算法低,能天然的输出协方差矩阵,后端优化的输入项。成本较低的雷达也能跑出不错的效果。
先有一定数量的laser scan构建submap,由submap拼接成地图,所谓的回环检测,就是间隔一定数量的扫描进行一次所有submap的图优化(SPA,运用了分支定界原理进行加速),但这种用有误差的估计量去作为约束去优化估计量,总有种自己估计优化自己的嫌疑,跟喜欢视觉SLAM运用词袋模型检测是否回到之前来过的地方的算法。
位姿估计:先用相关性扫描匹配(CSM)给一个初值,然后构造一个最小二乘问题(与Hector超不多),求解精确的位置。
CSM:简单来说大概是:用激光末端点匹配取到占据栅格地图中的值,获得得分,取得分最高的作为初值。加上多分辨率计算可以加速,并且获得分辨率意义下的最优解。
用分支定界原理加速求解过程(相对于暴力求解),进行深度有限优先搜索,CSM计算得到初始最高分数,确定深度,分支就是进行拓展,定界就是剪枝。提高运算效率。
如有错误请指出
- Gmapping、hector、Cartographer三种激光SLAM算法简单对比
- Gmapping hector cartogarpher 三种激光雷达算法的比对
- 2D激光SLAM算法比较+cartographer
- 2D激光SLAM算法比较+cartographer
- 2D激光SLAM算法比较+cartographer
- 用数据集跑激光slam,gmapping/karto
- gmapping和rtab-map slam对比
- Hector SLAM算法学习与代码解析
- 2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM
- 2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM
- 2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM
- SLAM cartographer
- Hector、Gmapping、Karto、CoreSLAM、LagoSLAM
- rplidar进行hector-slam
- ROS hector slam
- 3D激光slam,cartographer的使用,第一视角点云
- 基于粒子滤波的SLAM(GMapping)算法分析
- 三种简单排序算法及其对比
- SQL开发技巧(二)
- 浮点三分模板
- 二叉搜索树的后序遍历序列
- 初探Java源码之ArrayList
- 一句话了解++i和i++的区别
- Gmapping、hector、Cartographer三种激光SLAM算法简单对比
- listView多条目加载_listView适配器
- 二叉树中和为某一值的路径
- Hessian入门实例
- 设计模式之观察者模式
- MySQL交叉表:纵向数据显示为横向
- oracle数据库----关系视图
- 异步线程设置网络图片
- 复杂链表的复制