在 Ubuntu 22.04 上将“ros1_bridge”与上游 ROS 结合使用

ROS 2 Humble(和 Rolling)在 Ubuntu 22.04 Jammy Jellyfish 上的发布标志着 ROS 2 首次在没有官方 ROS 1 版本的平台上发布。 虽然 ROS 1 Noetic 将在其“长期支持窗口<https://www.ros.org/reps/rep-0003.html#noetic-ninjemys-may-2020-may-2025>”期间继续受到支持,但它仅针对 Ubuntu 20.04。 或者,Debian 和 Ubuntu 中存在“ROS 1 软件包的上游变体<https://packages.ubuntu.com/jammy/ros-desktop>” ,但 ROS 维护者并未将其作为官方发行版进行维护。

本指南概述了在 Ubuntu 22.04 Jammy Jellyfish 上将 ROS 2 版本与这些上游软件包进行桥接的当前机制。 这为仍然依赖 ROS 1 但希望迁移到较新的 ROS 2 和 Ubuntu 版本的用户提供了迁移路径。

通过 deb 包安装 ROS 2

目前,在 Ubuntu Jammy 上安装 ROS 2 时,从 deb 包 <../Installation/Ubuntu-Install-Debs> 安装 ROS 2 不起作用。 Ubuntu 存储库中可用的 catkin-pkg-modules 版本与 ROS 2 包存储库中的版本冲突。

如果 ROS 2 apt 存储库位于可用的 apt 存储库(“/etc/apt/sources.list.d”)中,则无法安装任何 ROS 1 包。 错误将是:

$ apt install ros-core-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 ros-core-dev : Depends: catkin but it is not installable
E: Unable to correct problems, you have held broken packages.

要更正此问题,请从“sources.list”中删除 packages.ros.org。 如果您遵循 ROS 2 安装指南,只需删除“/etc/apt/sources.list.d/ros2.list”

目前,要支持“ros1_bridge”,请按照以下说明从源代码构建 ROS 2。

来自源代码的 ROS 2

安装 ROS 2 从源代码 是唯一适用于 Ubuntu Jammy 上的 ROS 2 的配置。

以下是从源代码构建说明中总结的必要说明。 实质性偏差是我们跳过使用 ROS 2 apt 存储库,因为存在冲突的软件包。

安装开发工具和 ROS 工具

由于我们没有使用 ROS 2 apt 存储库,因此必须通过“pip”安装“colcon”。

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  python3-flake8 \
  python3-flake8-blind-except \
  python3-flake8-builtins \
  python3-flake8-class-newline \
  python3-flake8-comprehensions \
  python3-flake8-deprecated \
  python3-flake8-docstrings \
  python3-flake8-import-order \
  python3-flake8-quotes \
  python3-pip \
  python3-pytest \
  python3-pytest-cov \
  python3-pytest-repeat \
  python3-pytest-rerunfailures \
  python3-rosdep \
  python3-setuptools \
  wget

# Install colcon from PyPI, rather than apt packages
python3 -m pip install -U colcon-common-extensions vcstool

从这里继续按照 source install guide 构建 ROS 2。

从 Ubuntu 软件包安装 ROS 1

sudo apt update && sudo apt install -y ros-core-dev

构建“ros1_bridge”

# Create a workspace for the ros1_bridge
mkdir -p ~/ros1_bridge/src
cd ~/ros1_bridge/src
git clone https://github.com/ros2/ros1_bridge
cd ~/ros1_bridge

# Source the ROS 2 workspace
. ~/ros2_humble/install/local_setup.bash

# Build
colcon build

在构建完所有 ros1_bridge 后,其余的 ros1_bridge 示例 应该可以与你的新安装一起使用