ubuntu20.04cartographer建图怎么保存
时间: 2025-06-12 07:32:20 浏览: 16
### 如何在Ubuntu 20.04上使用Cartographer进行建图并保存
#### 下载和安装必要的软件包
为了确保能够成功构建地图,在开始之前需确认已经按照官方指南完成Cartographer及其依赖项的安装[^1]。这通常涉及设置ROS环境以及通过apt-get命令获取额外所需的开发库文件,例如`liblapack-dev`, `libsuitesparse-dev`, `libcxsparse3`, `libgflags-dev`, `libgoogle-glog-dev`, 和 `libgtest-dev`等[^4]。
#### 配置工作空间与环境变量
进入预先创建的工作目录(如catkin_ws),并通过执行如下bash脚本来加载相应的环境配置:
```bash
cd catkin_ws
source install_isolated/setup.bash
```
此操作会使得当前shell session识别新编译好的Cartographer节点和服务[^3]。
#### 启动Cartographer并记录数据
启动Cartographer ROS节点来收集传感器读数用于建立二维或三维的地图模型。对于测试目的来说,可以从预录的数据集入手;实际部署时则连接真实硬件设备作为输入源。当运行演示bag文件时,可以通过指定参数控制是否开启SLAM算法自动保存功能[^2]。
#### 自定义Lua配置文件以支持地图导出
编辑对应的`.lua`配置文件加入特定选项允许最终成果被序列化成pbstream格式存储于磁盘之中。下面给出了一段Python风格伪代码表示如何修改这些设置:
```python
options = {
'map_builder': MapBuilderOptions(),
'trajectory_builder_2d': TrajectoryBuilderOptions2D(),
}
...
options['map_builder'].use_trajectory_builder_2d = True
options['map_builder'].num_background_threads = 7
options['map_builder'].collate_by_time_slice_seconds = 60 * 5 # Save every five minutes of data into one file.
options['map_builder'].force_serialization'] = True # Ensure all map updates are written out immediately.
```
上述代码片段展示了怎样调整一些关键属性以便更好地适应不同应用场景下的需求,比如定时切片保存或是强制即时写入更新后的地图信息至外部介质中去。
#### 使用rosrun命令触发地图保存动作
一旦完成了实时定位与制图流程之后,可通过调用专门设计的服务接口实现手动存档操作。具体做法是在终端里键入类似于这样的指令:
```bash
rosrun cartographer_ros cartographer_pbstream_exporter \
-bag_filename input_data.bag \
-load_state_filename existing_map.pbstream \
-export_file_name final_output_map.pbs
```
这里假设有一个名为`input_data.bag`的日志文件包含了整个探索过程中积累下来的观测资料,并且存在先前已有的地图状态快照叫做`existing_map.pbstream`。最后生成的新版完整地图将会另存为`final_output_map.pbs`供后续分析或者分享给其他用户查阅。
阅读全文
相关推荐

















