cartographer与karto的比较
来源:互联网 发布:初中生学电脑编程 编辑:程序博客网 时间:2024/06/11 09:27
cartographer与karto的都是2D激光SLAM算法,而且不是基于概率估计的SLAM框架
1. 两者采取的都是图优化框架
采取的优化库不一致, karto采取的是spa(karto_slam)或g2o(nav2d), cartographer采取的是google的ceres构建problem优化。 karto的前端与后端采取的是单线程进行,cartographer按paper说明,采取的是4线程后端优化,还在进一步确定。
2. 运动预测部分:tracker
karto利用的是odom进行初始位置的预测, cartographer部分利用imu构建预测模型,scanmatcher与odom(可选)构建观测模型,采取UKF进行运动预测, cartographer带有tracker的说法。
3. scanMatcher 部分
3.1 karto 采取的的是real-time correlative scan matcher(三维窗口遍历寻优)的方式进行的。 采取的是双分辨率的低分辨率和高分辨率的两次搜索。
3.2 cartoGrapher也是采取的双搜索的方式进行的, 先用一次real-time correlative scan matcher(三维窗口遍历寻优),再构建优化等式,利用ceres优化求解。(栅格概率, T的偏差,R的偏差)
4. submap的说明
4.1 karto没有submap的概念,全部以keyScan的形式存储在sensorManager。 无地图缓存,但每次计算地图有计算消耗。采取的是scan-map的匹配方式,每次keyScan进入主动的依据pose的距离窗口生成localMap进行匹配。 local 与 gloal的loop closure依据graph的结构和sensorManage顺序存储分配的ID信息,选择候选scans,生成localMap,进行匹配,依据score进一步确定闭环。
4.2 . cartographer采用了submap的概念, 依据一定数量的scan初始一个submap, 依据窗口大小, 插入newScan,更新submap. 有子图缓存,会占用内存。
5. Loop-Closure
5.1 karto 主要依据pose 和 distance信息创建localMap,scanMatcher(real-time correlative scan matcher)确定。
1) 依据当前的Vertex, 从Graph中找到与之相邻的所有vertex(一定距离范围内).2) 采取广度优先搜索的方式,将相邻(next)与相连(adjacentVertices)添加进nearLinkedScans.3) 从sensorManager中取从前到后,依据id序号挑选与当前在一定距离范围内,且不在nearLinkedScans中的candidateScans, 当数量达到一定size,返回。4)loopScanMatcher进行scanTomap的匹配,当匹配response 和covariance达到一定要求认为闭环检测到。得到调整的correct pose. 5)Add link to loop : 调整边(全局闭环)6) 触发correctPose: spa优化
5.2 cartogapher 类似((real-time correlative scan matcher)),引入了branch and bound的方式, 加快了闭环的查找。
依据多分辨率多层的树型结构,单枝生长的方式(branch),及时剪枝操作(bound),深度优先搜索(DFS)确定闭环。 (Intra-submap Inter-submap )
添加相应的闭环约束。构建优化问题,利用ceres优化。
- cartographer与karto的比较
- cartographer与move_base的故事
- cartographer的运行
- cartographer
- cartographer
- karto slam
- 2D激光SLAM算法比较+cartographer
- 2D激光SLAM算法比较+cartographer
- 2D激光SLAM算法比较+cartographer
- [ROS]Cartographer的初体验
- cartographer开源代码的理解
- karto-slam解析
- 谷歌开源SLAM库cartographer的学习
- cartographer对应论文的琢磨(2)
- 新手学习Cartographer(1)-安装与测试
- 谷歌Cartographer学习(2)-原理阐述与源码解析
- [SLAM]Karto SLAM算法学习
- Hector、Gmapping、Karto、CoreSLAM、LagoSLAM
- 字符串比较
- Spring-data-rest 和Spring-data-jpa
- android 详情页到购物车
- Python编程:从入门到实践 5.4.3 练习 5-10 检查用户名
- 【C++的探索路12】继承与派生之高级篇--派生类与赋值运算符=以及多重继承(未完待续)
- cartographer与karto的比较
- EA&UML日拱一卒-0基础学习微信小程序(1)- 开篇
- RevitAPI之深入了解组(Group)和应用组
- 初学者---Android 优秀博客集合
- Android 安卓RecyclerView显示本地视频并播放
- 学习笔记:C++primer 2.4 const限定符
- java可执行jar打包exe的简单实现方式
- redis 开发与运维 1
- Angularjs实现购物车功能(按钮增减数量、添加、全选、删除、批量删除、结算)