Cartographer 代码阅读笔记(待完善)

Cartogapher_ros 部分

cartorgrapher_ros的入口函数:
cartographer_ros/cartographer_ros/cartographer_ros/node_main.cc。其中Run()接口启动所有的节点,包括
1.加载参数:节点参数,轨迹参数
2.定义map_builder 变量。
3.节点类。所有数据都在节点类中进行发布与订阅。
发布的主题:topic
kSubmapListTopic
kTrajectoryNodeListTopic
kLandmarkPosesListTopic
kConstraintListTopic
kScanMatchedPointCloudTopic (matched point cloud data)
服务:
kSubmapQueryServiceName (Query Submap)
kStartTrajectoryServiceName (start a trajectory)
kFinishTrajectoryServiceName (end a trajectory)
kWriteStateServiceName

Cartogapher 核心部分

cargtograper 源码主要包括:cloud, common, ground_truth, io, mapping, metrics, sensor, transform
Mapping:这是cartogapher算法的核心部分,包括ros 调用的接口,子图构建接口,姿态图优化接口。
common:基本的数据结构、工具接口
Sensor:传感器数据结构
transform:位姿数据数据,位姿的变换矩阵
io:数据以及日志的存储
cloud:点云前处理

Local SLAM

TrajectoryBuilder,PoseGraph。TrajectoryBuilder建立与维护局部子图。PoseGraph进行全局位姿的闭环检测。
Mapbuilderinterface为接口类,实际的实现在MapBuilder中。cartor-grapher算法的顶层实现类包括:
MapBuilder(目录:/mapping/map_builder.h)包含的了成员变量:
std::unique_ptr pose_graph_:指向位姿图的智能指针;
std::unique_ptrsensor::CollatorInterface sensor_collator_:指针指向收集的传感器数据
std::vector<std::unique_ptrmapping::TrajectoryBuilderInterface> trajectory_builders_:包含所有轨迹的管理向量
std::vectorproto::TrajectoryBuilderOptionsWithSensorIds all_trajectory_builder_options_:轨迹的配置向量
MapBuilder被TrajectoryBuilder调用,通过在轨迹上采集的数据来构建一个栅格地图,建图过程的误差会随着时间进行累积。
TrajectoryBuilder创建轨迹。
轨迹就是节点串,每一条轨迹上都有多个结点,在(/mapping/trajectory_builder_interface.h)InsertionResult{} 用来存储结点的结构数据。结点的数据包括:结点Id、TrajectoryNode::Data、submap
结点Id(NodeId):包括轨迹id,节点索引
轨迹结点(TrajectoryNode):包括时间,传感器数据,结点在Local Slam中的位姿,点云,结点在世界坐标系中的位姿。
submaps😦/mapping/submaps.h)距离数据持续不断的添加到子图中。数据达到一定阈值后,就完成子图,并建立约束以及比闭环检测。
LocalSlamResultCallback:回调函数。当local SLAM线程处理距离数据,插入姿态时进行调用。
AddSensorData():处理传感器数据的函数
CollatedTrajectoryBuilder继承TrajectoryBuilderInterface,继承与实现了特殊的方法
MapBuilder:相关类的调用关系,MapBuilderInterface->MapBuilder->TrajectoryBuilderInterface->CollatedTrajectoryBuilder->GlobalTrajectoryBuilder->CreatGlobalTrajectoryBuilder2D->LocalTrajectoryBuilder2D。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值