Cartographer目录结构

一、cartographer源码总体介绍

cartographer 整个源码分为两部分 cartographer cartographer_ros 两部分。

cartographer主要负责处理来自Laser、IMU、Odometry等传感器的数据并基于这些数据进行地图的构建。所以这一部分应该说是cartographer代码的核心部分(这里涉及到我们的优化算法,想要优化地图构建,就需要在这里设计算法)

cartographer_ros是基于ros的通信机制获取传感器的数据并将他们转换成cartographer中定义的格式传递给cartographer处理,与此同时也将cartographer的处理发布用于显示或保存。是基于cartographer的上层应用。所以,cartographer_ros相当于是对cartographer进行了一层ROS接口的封装(这里不涉及到地图构建相关的算法,仅仅是基于ROS发布/订阅机制进行通信)。

二、cartographer源码详细介绍

2.1 src/cartographer目录
  • bazel: 第三方库的构建包括eigen、ceres等;

  • cartographer: 源码部分,(重点)

  • cmake: 包括了cmake模块的FindXXX.make文件以及相关的函数;

  • configuration_files: cartographer的lua配置文件;

  • docs: cartographer相关的一些指导文档;

  • scripts: 一些工具与库的安装脚本,如abseil、proto3等工具的安装脚本;

2.1.1 src/cartographer/cartographer目录

cartographer 部分源码分为以下几个文件夹 cloud, common, ground_truth, io, mapping, metrics, sensor, transform

位置:/src/cartographer/cartographer

  • cloud:云服务相关功能,grpc进行远程调用,与多机协同有关;

  • common:定义基本的数据结构以及一些工具的使用接口,通用的函数包括:任务,线程池,lua文件解析,数学库等;

  • ground_truth:slam开发过程中评估用的工具;

  • io:定义一些与io相关的工具,存读取数据,记录日志;

  • mapping:cartographer核心代码区,定义上层调用接口以及局部submap 构建和基于闭环检测cd位姿优化等接口,里面的2d和3d是对mapping接口的不同实现;

  • metrics:cartographer过程数据的各种输出格式;

  • sensor:定义雷达和点云的数据结构,传感器处理相关的函数imu、里程计、点云、压缩等;

  • transform:定义位姿的相关结构和相关转换,包含一些时间戳转换、坐标系转换;

2.1.2 src/cartographer/cartographer/mapping目录

该文件夹位cartographer的核心代码区,里面包含了2d,3d建图的函数map_builder、pose_grapher、constraint、optimization、scan_match等相关类封装。

2.2 src/cartographer_ros目录

cartographer_ros 部分目录分为以下几个文件夹

  • cartographer_ros:核心代码(与cartographer相关)

  • cartographer_ros_msgs:定义了msg和srv 文件,它们为cartographer定义了各种消息类型(与cartographer相关)

  • cartogpher_rviz :可视化相关工程cartographer相关)

  • docs :相关的文档

  • script:与安装相关的自动化脚本

2.2.1 src/cartographer_ros/cartographer_ros目录
  • launch:存放的是各个launch脚本文件,有之前运行过的demo脚本"demo_backpack_2d.launch"

  • configuration_files:cartographer的TF树,定义了map_builder,pose_graph,trajectory_builder的配置信息。

  • urdf :用URDF文件描述的机器人模型,(也就是配置机器人的各个节点,如几个关节、几个轮子、几个IMU)

  • script:自动化安装程序

2.2.1 src/cartographer_ros/cartographer_ros/cartographer_ros目录

该目录下定义了所有与cartographer相关的函数实现,如node_main.cc入口文件。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值