Skip to content

配置 ROS2 环境

目标: 本教程将指导你配置 ROS 2 开发环境。

教程级别: 初学者

预计用时: 5 分钟

ROS 2 依赖”工作空间(workspace)“的概念。工作空间是 ROS 的术语,指你在系统上使用 ROS 2 进行开发的位置。在典型的 ROS 2 设置中,核心的 ROS 2 安装是底层工作空间(underlay),在此基础上 source 的本地工作空间称为叠加工作空间(overlay),因为它叠加在底层工作空间之上。同一个工作空间也可以作为稍后 source 的另一个工作空间的底层工作空间。在使用 ROS 2 进行开发时,你通常会同时拥有多个活动的工作空间。

通过组合工作空间,针对不同版本的 ROS 2 或不同的包集合进行开发变得更加容易。你还可以在同一台计算机上安装多个 ROS 2 发行版(简称 “distro”,例如 Dashing 和 Eloquent),并在它们之间自由切换。

实现方式是:每次打开新 shell 时手动 source setup 文件,或者一次性将 source 命令添加到 shell 启动脚本中。如果不 source setup 文件,你将无法访问 ROS 2 命令,也无法找到或使用 ROS 2 的包——换句话说,ROS 2 将无法使用。

在开始这些教程之前,请按照 ROS 2 安装页面上的说明安装 ROS 2。

本教程中使用的命令假设你按照操作系统的二进制包安装指南(Linux 上为 deb 包)完成了安装。如果你是从源码构建的,仍然可以跟随本教程,但 setup 文件的路径可能有所不同。此外,从源码安装时也无法使用 sudo apt install ros-<distro>-<package> 命令(该命令在初学者教程中经常使用)。

如果你使用的是 Linux 或 macOS,但还不熟悉 shell,可以参考 这个教程。

每次打开新 shell 时,你都需要运行此命令才能访问 ROS 2 命令:

Terminal window
source /opt/ros/{DISTRO}/setup.bash

如果你使用的不是 bash,请将 .bash 替换为你的 shell。可能的值为:setup.bash、setup.sh、setup.zsh。

Terminal window
. ~/ros2_install/ros2-osx/setup.bash
Terminal window
call C:\dev\ros2\local_setup.bat

注意: 具体命令取决于你安装 ROS 2 的位置。如果遇到问题,请确保文件路径指向你的安装位置。

2 将 sourcing 添加到 shell 启动脚本

Section titled “2 将 sourcing 添加到 shell 启动脚本”

如果你不想每次打开新 shell 时都手动 source setup 文件(即跳过任务 1),可以将命令添加到 shell 启动脚本中:

Terminal window
echo "source /opt/ros/{DISTRO}/setup.bash" >> ~/.bashrc

要撤销此操作,请找到系统的 shell 启动脚本并删除追加的 source 命令。

Terminal window
echo "source ~/ros2_install/ros2-osx/setup.bash" >> ~/.bash_profile

要撤销此操作,请找到系统的 shell 启动脚本并删除追加的 source 命令。

此方法仅适用于 PowerShell 用户。首先,在”我的文档”中创建一个名为 WindowsPowerShell 的文件夹。在 WindowsPowerShell 中,创建文件 Microsoft.PowerShell_profile.ps1。在该文件中,粘贴以下内容:

Terminal window
C:\dev\ros2_{DISTRO}\local_setup.ps1

每次打开新 shell 时,PowerShell 都会请求运行此脚本的权限。要避免此问题,你可以运行:

Terminal window
Unblock-File C:\dev\ros2_{DISTRO}\local_setup.ps1

要撤销此操作,请删除新创建的 Microsoft.PowerShell_profile.ps1 文件。

source ROS 2 setup 文件后,系统会设置运行 ROS 2 所需的一系列环境变量。如果你在查找或使用 ROS 2 包时遇到问题,可以用以下命令检查环境是否已正确配置:

Terminal window
printenv | grep -i ROS
Terminal window
printenv | grep -i ROS
Terminal window
set | findstr -i ROS

检查 ROS_DISTRO 和 ROS_VERSION 等变量是否已设置。

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO={DISTRO}

如果环境变量未正确设置,请返回安装指南中的 ROS 2 包安装部分,按步骤重新操作。如果需要更具体的帮助(因为环境 setup 文件可能位于不同位置),可以在 社区 中寻求解答。

有关 ROS domain ID 的详细信息,请参阅 domain ID 文章。

为你的 ROS 2 节点(node)组确定一个唯一的整数后,使用以下命令设置环境变量:

Terminal window
export ROS_DOMAIN_ID=<your_domain_id>

要将此设置在 shell 会话之间持久保留,可以将命令添加到 shell 启动脚本中:

Terminal window
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc
Terminal window
export ROS_DOMAIN_ID=<your_domain_id>

要将此设置在 shell 会话之间持久保留,可以将命令添加到 shell 启动脚本中:

Terminal window
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bash_profile
Terminal window
set ROS_DOMAIN_ID=<your_domain_id>

如果你想在 shell 会话之间永久保持此设置,还可以运行:

Terminal window
setx ROS_DOMAIN_ID <your_domain_id>

默认情况下,ROS 2 通信不限于 localhost。ROS_AUTOMATIC_DISCOVERY_RANGE 环境变量允许你限制 ROS 2 的发现范围。在某些场景(如教室)中,多台机器人可能会发布到同一话题(topic),从而导致异常行为,此时使用 ROS_AUTOMATIC_DISCOVERY_RANGE 就非常有用。更多详情请参阅”改进的动态发现(Improved Dynamic Discovery)”。

ROS 2 开发环境在使用前需要正确配置。配置方式有两种:每次打开新 shell 时手动 source setup 文件,或者将 source 命令添加到 shell 启动脚本中一劳永逸。

如果你在使用 ROS 2 查找或使用包时遇到问题,首先应该检查环境变量,确保它们设置为你预期的版本和发行版。

现在你已经有了一个可用的 ROS 2 安装,并且知道如何 source setup 文件,接下来可以通过 turtlesim 工具来学习 ROS 2 的方方面面。