cartographer安装配置及相关原理
2021/10/12 6:16:15
本文主要是介绍cartographer安装配置及相关原理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 硬件配置要求
a. 64位现代CPU(例如第三代i7)
b. 16 GB RAM
c. Ubuntu 16.04(Xenial),18.04(Bionic),20.04(Focal)
d. gcc版本4.8.4、5.4.0、7.5.0、9.3.0 - 系统框图(代码逻辑与结构)
Cartographer主要理论是通过闭环检测来消除构图过程中产生的累积误差[1]。用于闭环检测的基本单元是submap。一个submap是由一定数量的laser scan构成。将一个laser scan插入其对应的submap时,会基于submap已有的laser scan及其它传感器数据估计其在该submap中的最佳位置。submap的创建在短时间内的误差累积被认为是足够小的。然而随着时间推移,越来越多的submap被创建后,submap间的误差累积则会越来越大。因此需要通过闭环检测适当的优化这些submap的位姿进而消除这些累积误差,这就将问题转化成一个位姿优化问题。当一个submap的构建完成时,也就是不会再有新的laser scan插入到该submap时,该submap就会加入到闭环检测中。闭环检测会考虑所有的已完成创建的submap。当一个新的laser scan加入到地图中时,如果该laser scan的估计位姿与地图中某个submap的某个laser scan的位姿比较接近的话,那么通过某种 scan match策略就会找到该闭环。Cartographer中的scan match策略通过在新加入地图的laser scan的估计位姿附近取一个窗口,进而在该窗口内寻找该laser scan的一个可能的匹配,如果找到了一个足够好的匹配,则会将该匹配的闭环约束加入到位姿优化问题中。Cartographer的重点内容就是融合多传感器数据的局部submap创建以及用于闭环检测的scan match策略的实现。
3.安装教程
a. 官方ROS版安装
b. 博客简单安装
4.参数配置含义
5.评价方式(将回环轨迹作为地面真值,假设相邻轨迹节点的位姿关系在完全优化的轨迹中是局部正确的,和激光里程计轨迹进行对比,评价激光里程计的精度)
a.进行评估是开发SLAM系统的重要组成部分。为此,Cartographer提供了内置工具,可以帮助调优过程,也可以用于质量保证。这些工具可以用来评估SLAM的结果,即使没有专用的地面真值可用。
b.这个过程包括两个步骤:
- 自动生成“地面真值”关系,
- 根据生成的地面真实情况评估测试数据。
c.该评价基于[Rainer Kümmerle, Bastian Steder, Christian Dornhege, Michael Ruhnke, Giorgio Grisetti, Cyrill Stachniss and Alexander Kleiner. On measuring the accuracy of SLAM algorithms. Autonomous Robots 27(4), pp.387-407, 2009.]中提出的位姿关系度量。它不是直接将一个轨迹节点的位姿与对应的地面真值位姿进行比较,而是将探测数据中两个轨迹节点的相对位姿与地面真值轨迹中两个轨迹节点的对应关系进行比较。
d.在Cartographer中,我们可以从带闭环的轨迹中生成这样的地面真值关系。让一个带闭环的优化轨迹作为ground truth生成的输入。我们从满足以下条件的环闭包约束中选择地面真值关系:
- min_covered_distance:环路闭合前的最小覆盖距离,单位为米。
- outlier_threshold_meters:以米为单位的距离,超过这个距离,限制就被认为是异常值。
- outlier_threshold_radians:以弧度为单位的距离,超过这个距离,限制就被认为是离群值。
e.我们可以假设满足这些要求的相邻轨迹节点的位姿关系在完全优化的轨迹中是局部正确的。虽然从另一个来源的独立输入的意义上来说,这不是一个ground truth,但我们现在可以使用它来评估未经过回环优化而生成的局部SLAM结果的质量。
f.局限:这种类型的自评价方法并不适合评估启用所有优化的全SLAM系统的精度(需提供真实的地面真值)。此外,不能考虑闭环区域外的轨迹节点。
6.代价函数
a.Relative Transform Error 2D
b.Landmark Cost Function
.
这篇关于cartographer安装配置及相关原理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享