RHEL(源代码) [7571]

系统要求 [7573]

Humble Hawksbill 的当前目标 Red Hat 平台为: [7574]

  • 第二级:RHEL 8 64 位 [7575]

REP 2000 中所定义 [7576]

系统设置 [7577]

设置区域设置 [7578]

确保您拥有支持 UTF-8 的区域设置。如果您使用的是最小环境(如 Docker 容器),区域设置可能是一些最小化的设置,例如 C。我们使用以下设置进行测试。然而,如果您使用的是不同的 UTF-8 支持的区域设置,也应该没问题。 [7579]

locale  # check for UTF-8

sudo dnf install langpacks-en glibc-langpack-en
export LANG=en_US.UTF-8

locale  # verify settings

启用所需的软件仓库 [7580]

rosdep 数据库包含来自 EPEL 和 PowerTools 软件仓库的软件包,默认情况下这些仓库是禁用的。可以通过运行以下命令来启用它们: [7581]

sudo dnf install 'dnf-command(config-manager)' epel-release -y
sudo dnf config-manager --set-enabled powertools

注解

这一步根据你使用的发行版可能会有些不同。请查阅EPEL文档:https://docs.fedoraproject.org/en-US/epel/#_quickstart [7582]

安装开发工具和ROS工具 [7583]

sudo dnf install -y \
  cmake \
  gcc-c++ \
  git \
  make \
  patch \
  python3-colcon-common-extensions \
  python3-pip \
  python3-pydocstyle \
  python3-pytest \
  python3-pytest-repeat \
  python3-pytest-rerunfailures \
  python3-rosdep \
  python3-setuptools \
  python3-vcstool

# install some pip packages needed for testing and
# not available as RPMs
python3 -m pip install -U --user \
  flake8-blind-except==0.1.1 \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  mypy==0.931

获取ROS 2代码 [7584]

创建一个工作空间并克隆所有仓库: [7585]

mkdir -p ~/ros2_humble/src
cd ~/ros2_humble
vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src

使用rosdep安装依赖项 [7586]

ROS 2包是在经常更新的RHEL系统上构建的。在安装新包之前,建议确保系统已经更新到最新。 [7587]

sudo dnf update
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y --skip-keys "asio cyclonedds fastcdr fastrtps ignition-cmake2 ignition-math6 python3-babeltrace python3-mypy rti-connext-dds-6.0.1 urdfdom_headers"

安装额外的DDS实现(可选) [17694]

如果您想使用默认之外的其他DDS或RTPS供应商,您可以在这里找到说明:这里[7589]

在工作空间中构建代码 [7590]

如果您已经以其他方式安装了ROS 2(通过RPM或二进制分发),请确保在一个新环境中运行以下命令,该环境没有其他安装被引用。还要确保您的``.bashrc``中没有``source /opt/ros/${ROS_DISTRO}/setup.bash``。您可以使用命令``printenv | grep -i ROS``确保ROS 2没有被引用。输出应为空。 [7591]

有关在ROS工作空间中的操作的更多信息,请参阅:本教程[7592]

cd ~/ros2_humble/
colcon build --symlink-install --cmake-args -DTHIRDPARTY_Asio=ON --no-warn-unused-cli

注意:如果您在编译所有示例时遇到问题,这导致您无法成功构建,您可以像使用 CATKIN_IGNORE 中的``COLCON_IGNORE``一样,忽略子树或从工作空间中删除该文件夹。例如,假设您希望避免安装庞大的OpenCV库。那么只需在``cam2image``演示目录中运行``touch COLCON_IGNORE``,即可将其排除在构建过程之外。 [7593]

环境设置 [7594]

执行设置脚本 [7595]

通过源化以下文件来设置您的环境。 [7596]

# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
. ~/ros2_humble/install/local_setup.bash

尝试一些示例 [7597]

在一个终端中,先源化设置文件,然后运行C++的``talker``: [7598]

. ~/ros2_humble/install/local_setup.bash
ros2 run demo_nodes_cpp talker

在另一个终端中,先源化设置文件,然后运行Python的``listener``: [7599]

. ~/ros2_humble/install/local_setup.bash
ros2 run demo_nodes_py listener

你应该看到“talker”说它正在“发布”消息,而“listener”说“我听到了”这些消息。这验证了C++和Python API都正常工作。太棒了! [7600]

安装后的下一步 [7601]

继续进行:doc:教程和演示,以配置你的环境,创建自己的工作空间和包,并学习ROS 2的核心概念。 [7602]

其他RMW实现(可选) [7603]

ROS 2使用的默认中间件是“Fast DDS”,但是中间件(RMW)可以在运行时替换。请参阅:doc:指南 <../../How-To-Guides/Working-with-multiple-RMW-implementations>`以了解如何使用多个RMW。 `[7604]

备选编译器 [7605]

使用除gcc之外的其他编译器编译ROS 2很容易。如果你将环境变量``CC``和``CXX``分别设置为可执行的C和C++编译器,并重新触发CMake配置(通过使用``--force-cmake-config``或删除要受影响的软件包),CMake将重新配置并使用不同的编译器。 [7606]

Clang [7607]

配置CMake以检测并使用Clang的方法: [7608]

sudo dnf install clang
export CC=clang
export CXX=clang++
colcon build --cmake-force-configure

故障排除 [7611]

故障排除技术可以在此处找到:这里[7612]

卸载 [7613]

  1. 如果按照上述指示使用 colcon 安装了工作空间,则“卸载”可能只是打开新终端而不加载工作空间的“setup”文件。这样,您的环境将表现得好像系统中没有安装 Humble。 [7614]

  2. 如果您还想释放空间,可以使用以下命令删除整个工作空间目录: [7615]

    rm -rf ~/ros2_humble