Cartographer_ros编译

本文档详细介绍了如何在Ubuntu Focal系统中,使用ROS Noetic构建和安装Cartographer_ros。首先,需要安装必要的工具如wstool、rosdep和ninja-build。然后,在catkin工作区中拉取Cartographer_ros源码,并通过rosdep安装依赖。对于Ubuntu 16及ROS Kinetic,还需特别处理protobuf和abseil-cpp的安装。最后,使用catkin_make_isolated进行编译和安装。整个过程涵盖了从获取源码到成功构建Cartographer_ros的全部步骤。

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

Cartographer_ros编译

参考Cartographer_ros官方教程

系统要求

Cartographer_ros的安装依赖项与Cartographer相同

目前支持以下的ROS发行版本:

  • Kinetic
  • Melodic
  • Noetic

编译和安装

为了构建 Cartographer ROS,推荐使用 wstoolrosdep。 为了更快的构建,还建议使用 Ninja

在装有 ROS Noetic 的 Ubuntu Focal 上,使用这些命令来安装上述工具:

sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow

在之前的发行版上,使用以下命令:

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

在上述工作安装后,需要为Cartographer_ros创建一个工作空间并拉取代码:

mkdir catkin_ws
cd catkin_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src

现在需要安装 cartographer_ros 的依赖项。 首先,使用 rosdep 来安装所需的包。 如果在安装 ROS 后已经执行过‘sudo rosdep init’命令,则会打印错误信息。 这个错误可以忽略。

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

# 对于Ubuntu 16 / ROS Kinetic还需要执行这个脚本来安装protobuf: 
# src/cartographer/scripts/install_proto3.sh

Cartographer 使用 abseil-cpp 库,需要使用此脚本手动安装:

src/cartographer/scripts/install_abseil.sh

由于版本冲突,可能需要使用以下命令卸载 ROS abseil-cpp

sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp

之后执行编译和安装命令:

catkin_make_isolated --install --use-ninja

这将从 master 分支的最新 HEAD 构建 Cartographer。 如果需要特定版本,则需要更改 cartographer_ros.rosinstall 中的版本。

### ROS2 Galactic 中 cartographer_ros 的使用指南 #### 安装与配置 在 ROS2 Galactic 下安装 `cartographer_ros` 可通过源码编译完成。以下是具体操作方法: 1. 创建一个新的工作空间并克隆仓库: ```bash mkdir -p ~/ros2_galactic_ws/src cd ~/ros2_galctic_ws/src git clone https://github.com/ros2/cartographer_ros.git -b galactic-devel ``` 2. 编译依赖项并构建项目: ```bash vcs import < cartographer_ros/cartographer_ros.repos --recursive colcon build --symlink-install --packages-up-to cartographer_ros source install/setup.bash ``` 上述命令会下载必要的依赖包,并针对银河版 (Galactic) 进行适配[^1]。 3. 验证安装成功与否可以通过运行示例文件来测试: ```bash ros2 launch cartographer_ros demo_backpack_2d.launch.py ``` 此外,也可以启动 Rviz 查看效果: ```bash ros2 run rviz2 rviz2 -d ~/ros2_galactic_ws/src/cartographer_ros/cartographer_ros/configuration_files/demo_2d.rviz ``` 以上步骤展示了如何基于官方文档设置环境以及验证功能正常运作的情况[^4]。 #### 动态地图与导航集成 对于希望直接利用由 `cartographer_ros` 所产生的 SLAM 地图来进行路径规划的应用场景而言,无需额外转换至 PGM 文件再加载到 map_server 。而是可以直接订阅 `/map` 主题消息作为输入给全局或者局部成本映射器使用[^3]。 例如,在 AMCL 或者其他粒子滤波定位算法中,只需修改参数文件中的静态地图来源即可切换为实时更新的地图数据流: ```yaml global_costmap: static_layer: map_topic: /map ``` 这样做的好处在于能够即时反映环境中变化的部分,从而提高机器人应对复杂情况的能力。 #### 示例代码展示 下面给出一段简单的 Python 脚本例子说明怎样获取来自 Cartographer 发布的地图信息: ```python import rclpy from nav_msgs.msg import OccupancyGrid def callback(msg): print(f"Received new map with resolution {msg.info.resolution}") def main(args=None): rclpy.init(args=args) node = rclpy.create_node('map_subscriber') subscription = node.create_subscription( OccupancyGrid, '/map', callback, 10) while rclpy.ok(): rclpy.spin_once(node) if __name__ == '__main__': main() ``` 此脚本创建了一个节点用来监听 `/map` 主题上的新消息到达事件,并打印其分辨率属性值[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值