Ubuntu下google建图cartographer包移植

本文介绍如何将 Cartographer SLAM 系统从旧工作空间移植到新 Ubuntu 系统上,包括必要的依赖安装、配置及构建过程。通过简化官方安装流程,实现快速部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因团队需要,原本ubuntu14.04的操作系统要升级到ubuntu16.04,原本安装的ROS还有各种软件包都需要重新安装,普通得工作空间只需要复制src目录下的文件(也就是源代码文件)到一个新的src的下,然后catkin_make就能正常使用。

然而对于cartographer来说,由于其官方给出的安装方式,比较特别,所以移植的方式也稍微复杂一点。

一下代码为cartographer官方给出的安装代码:

# Install wstool and rosdep.

sudo apt-get update

sudo apt-get install -y python-wstool python-rosdep ninja-build

 

# Create a new workspace in 'catkin_ws'.

mkdir catkin_ws

cd catkin_ws

wstool init src

 

# Merge the cartographer_ros.rosinstall file and fetch code for dependencies.

wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall

wstool update -t src

 

# Install deb dependencies.

# The command 'sudo rosdep init' will print an error if you have already

# executed it since installing ROS. This error can be ignored.

sudo rosdep init

rosdep update

rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

 

# Build and install.

catkin_make_isolated --install --use-ninja

source install_isolated/setup.bash

 

    在移植平台的时候,    这两段命令还是需要进行的。

sudo apt-get update

sudo apt-get install -y python-wstool python-rosdep ninja-build

mkdir catkin_ws

cd catkin_ws

wstool init src

    进入这个步骤以后,就不需要进行wstool merge -t src https://raw.githubuserco……这个步骤了,这个步骤是从google的网站下在包,但是国内的情况并不是很好,既然你第一次下载好了,或者对之前的文件进行过一些修改,这时候,直接把原src下的文件复制过来,然后继续下边的步骤

sudo rosdep init

rosdep update

rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

 

# Build and install.

catkin_make_isolated --install --use-ninja

source install_isolated/setup.bash

 

这样基本能够达到跟以前的工作空间一样的效果

### 如何在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`供后续分析或者分享给其他用户查阅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值