自己手绘了一张,图糙理不糙

其实里面还有大量细节没有展示
这里简单介绍一下:
我们都知道运行cartographer的ros程序有2个包一个是cartographer自己的库文件,还有一个是接收ros话题然后传给cartographer的node包。
而cartographer在代码架构上是如何处理数据并显示的呢?这里展开叙述一下:
1-数据先传递给GlobalTrajectory类,然后GlobalTrajectory类传递给LocalTrajectory类,
2-LocalTrajectory类中使用ScanMacher来处理激光及IMU及odom数据,获得2个重要的数据类型,分别是submap和node,这两个数据代表了位姿图中的node节点和submap节点,
3-接着将这两个数据传入PoseGraph的线程池中进行处理,处理什么呢?就是找到node和submap之间的约束(constraints),这一步业界叫做回环检测,
4-再接着把找到的约束传入Oprimization中进行优化,就可以得到优化后的node和submap的位姿了,
5-把正确的
cartographer架构设计图
最新推荐文章于 2024-10-19 01:13:43 发布
本文简述了Cartographer的架构设计,重点介绍了数据如何从接收ROS话题传递到GlobalTrajectory,通过LocalTrajectory进行扫描匹配,形成submap和node,经过PoseGraph的回环检测和ThreadPool的并行处理,最终在Optimization中优化得到位姿,并在rviz中显示。主要涉及GlobalTrajectory、LocalTrajectory、PoseGraph、ThreadPool和Optimization等关键组件。
订阅专栏 解锁全文
5387

被折叠的 条评论
为什么被折叠?



