ros:cartographer(二)整体介绍

在这里插入图片描述
cartographer的doc中给出了这个图。
现在我还没看过源码,所以只能猜测一些内容。
待看完源码后,再详细介绍这个图。

直观地说,左侧的是输入的数据,包括测距数据、码盘里程计和IMU数据。左下方的固定的姿态应该是作为整个sparse pose的锚点。

pose extrapolator的输入包括:里程计姿态、imu估计的姿态和扫描匹配输出的姿态。既然有三种关于姿态的信息(实际中可以配置,如没有IMU),那么可以通过滤波方法获得更准确的位姿估计。这里我的感觉还应该有其他的功能,如作为扫描匹配的初值。
这里的一个问题是:scan-matching是采用哪种方式?图中就有距离数据和位姿进入scan matching,感觉少一部分内容。

扫描匹配的姿态传递给运动滤波蒸馏(位姿变化或时间变化),也就是如果机器人一直静止不动的话,新来的数据是没有太大意义的,所以把这些数据扔掉。

如果运动了或者经过了一段时间,则把姿态和滤波后的激光数据加入到sub map中。
并插入结果(时间、姿态、数据和submaps)

然后传递给后端线程,创建位姿图。这里包括回环检测。

大体上从这个图中,若没有看过源码,很多细节还是不清楚。

由于我的下一步工作是做相关内容,所以我将重点关注:
采用里程计和2D激光雷达传感器,构建栅格地图。所以在后续的文章中,主要分析与之相关的源码内容。

这里我的问题:
1 扫描匹配采用何种方式?scan-scan,scan-map,map-map?
2 位姿图是如何构建的?
3 如何进行的回环检测?
4 里程计和扫描匹配的姿态融合采用何种方法?
5 …

cartographer 用到的库:

Boost:准标准的C++库。

Eigen3: 准标准的线性代数库。

Lua:非常轻量的脚本

### 安装和配置 Cartographer 的方法 #### 1. 系统环境准备 在安装 Cartographer 前,需确保系统已正确设置 ROS 和其他必要的开发工具。对于 Ubuntu 18.04 或更高版本以及 ROS Melodic/Noetic 用户,可以按照以下方式完成基础环境搭建。 - 更新系统的包管理器索引并安装 `git` 工具: ```bash sudo apt update && sudo apt upgrade -y sudo apt install git -y ``` 此操作为后续克隆源码仓库提供支持[^1]。 --- #### 2. 创建 Catkin 工作空间 如果尚未创建 Catkin 工作空间,则可以通过以下命令初始化一个新的工作目录: ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash ``` 上述步骤用于构建一个标准的 ROS 开发环境,并加载自定义路径中的软件包[^4]。 --- #### 3. 获取 Cartographer 源码 通过 Git 将官方发布Cartographer 和其对应的 ROS 接口库下载到本地工作区中: ```bash cd ~/catkin_ws/src git clone https://github.com/cartographer-project/cartographer.git git clone https://github.com/cartographer-project/cartographer_ros.git ``` 注意:确保分支与当前使用的 ROS 版本匹配(Melodic 对应于较旧版本标签;而 Noetic 则可能需要更新至最新稳定版)。具体可查阅项目文档说明页面获取更多信息。 --- #### 4. 解决依赖项问题 执行脚本来自动检测缺失组件并尝试解决它们。这一步骤非常重要,因为缺少某些关键库可能导致编译失败或者运行异常情况发生。 - 执行 Abseil-C++ 库安装脚本: ```bash ./cartographer/scripts/install_abseil.sh ``` - 使用 Rosdep 处理剩余部分需求清单: ```bash sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src --rosdistro=$ROS_DISTRO -y ``` 这里 `$ROS_DISTRO` 变量代表所采用的具体发行代号名称(melodic 或 noetic),它会动态调整适配相应平台上的资源位置链接地址列表。 --- #### 5. 编译与验证 当所有前置条件都满足之后,就可以正式开始构建整个工程项目了。回到顶层文件夹下重新触发一次完整的增量式组装流程即可完成最终产物生成过程。 ```bash cd ~/catkin_ws/ catkin_make_isolated --install --use-ninja source install_isolated/setup.bash ``` 最后确认一切正常运作无误后,可通过简单的测试例子来检验成果效果如何。例如启动 TurtleBot3 示例场景地图绘制功能模块如下所示: ```bash roslaunch cartographer_ros demo_backpack_2d.launch ``` 如果有任何错误提示类似于“无法找到节点类型”的情形,请参照先前提到过的排查办法逐一核实各项参数设定是否准确合理[^2][^3]。 --- ### 总结 以上便是针对 ROS1 平台环境下部署 Cartographer 软件栈的整体实施方案概述。遵循这些指导方针应该能够顺利实现目标应用案例的实际落地实践价值最大化! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值