配置环境
目标:本教程将向您展示如何准备 ROS 2 环境。
教程级别:初学者
时间:5 分钟
背景
ROS 2 依赖于使用 shell 环境组合工作区的概念。 “工作区”是 ROS 术语,指您使用 ROS 2 进行开发时系统上的位置。 核心 ROS 2 工作区称为底层。 后续本地工作区称为覆盖。 使用 ROS 2 进行开发时,通常会同时激活多个工作区。
组合工作区使针对不同版本的 ROS 2 或针对不同软件包集进行开发变得更加容易。 它还允许在同一台计算机上安装多个 ROS 2 发行版(或“发行版”,例如 Dashing 和 Eloquent)并在它们之间切换。
这是通过每次打开新 shell 时获取安装文件或将源命令添加到 shell 启动脚本一次来实现的。 如果不获取安装文件,您将无法访问 ROS 2 命令,也无法查找或使用 ROS 2 软件包。 换句话说,您将无法使用 ROS 2。
先决条件
在开始这些教程之前,请按照 ROS 2 安装 页面上的说明安装 ROS 2。
本教程中使用的命令假定您遵循了操作系统的二进制包安装指南(Linux 的 deb 包)。
如果您从源代码构建,您仍然可以继续,但安装文件的路径可能会有所不同。
如果您从源代码安装,您也无法使用 sudo apt install ros-<distro>-<package>
命令(在初学者级教程中经常使用)。
如果您使用的是 Linux 或 macOS,但还不熟悉 shell,本教程 会有所帮助。
任务
1 获取安装文件
您需要在打开的每个新 shell 上运行此命令才能访问 ROS 2 命令,如下所示:
# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/rolling/setup.bash
. ~/ros2_install/ros2-osx/setup.bash
call C:\dev\ros2\local_setup.bat
Note
具体命令取决于您安装 ROS 2 的位置。 如果您遇到问题,请确保文件路径指向您的安装。
2 将 source 添加到 shell 启动脚本
如果您不想每次打开新 shell 时都必须 source 安装文件(跳过任务 1),则可以将以下命令添加到 shell 启动脚本:
echo "source /opt/ros/rolling/setup.bash" >> ~/.bashrc
要撤消此操作,请找到系统的 shell 启动脚本并删除附加的源命令。
echo "source ~/ros2_install/ros2-osx/setup.bash" >> ~/.bash_profile
要撤消此操作,请找到系统的 shell 启动脚本并删除附加的源命令。
仅适用于 PowerShell 用户,在“我的文档”中创建一个名为“WindowsPowerShell”的文件夹。 在“WindowsPowerShell”中,创建文件“Microsoft.PowerShell_profile.ps1”。 在文件中粘贴:
C:\dev\ros2_rolling\local_setup.ps1
每次打开新 shell 时,PowerShell 都会请求运行此脚本的权限。 为了避免该问题,您可以运行:
Unblock-File C:\dev\ros2_rolling\local_setup.ps1
要撤消此操作,请删除新的“Microsoft.PowerShell_profile.ps1”文件。
3 检查环境变量
获取 ROS 2 安装文件将设置操作 ROS 2 所需的几个环境变量。 如果您在查找或使用 ROS 2 软件包时遇到问题,请使用以下命令确保您的环境已正确设置:
printenv | grep -i ROS
printenv | grep -i ROS
set | findstr -i ROS
检查“ROS_DISTRO”和“ROS_VERSION”等变量是否设置。
ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=rolling
如果环境变量设置不正确,请返回您遵循的安装指南的 ROS 2 包安装部分。 如果您需要更具体的帮助(因为环境设置文件可能来自不同的地方),您可以从社区“获取答案<https://robotics.stackexchange.com/>” 。
3.1 ROS_DOMAIN_ID
变量
有关 ROS 域 ID 的详细信息,请参阅 domain ID 文章。
为 ROS 2 节点组确定一个唯一整数后,您可以使用以下命令设置环境变量:
export ROS_DOMAIN_ID=<your_domain_id>
要在 shell 会话之间维护此设置,您可以将命令添加到 shell 启动脚本中:
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc
export ROS_DOMAIN_ID=<your_domain_id>
要在 shell 会话之间维护此设置,您可以将命令添加到 shell 启动脚本中:
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bash_profile
set ROS_DOMAIN_ID=<your_domain_id>
如果想要使其在 shell 会话之间永久存在,还可以运行:
setx ROS_DOMAIN_ID <your_domain_id>
3.2 ROS_AUTOMATIC_DISCOVERY_RANGE
变量
默认情况下,ROS 2 通信不限于本地主机。
ROS_AUTOMATIC_DISCOVERY_RANGE
环境变量允许您限制 ROS 2 发现范围。
使用 ROS_AUTOMATIC_DISCOVERY_RANGE
在某些环境中很有用,例如教室,其中多个机器人可能会发布到同一主题,从而导致奇怪的行为。
有关更多详细信息,请参阅:ref:改进的动态发现。
摘要
ROS 2 开发环境需要在使用前正确配置。 这可以通过两种方式完成:在您打开的每个新 shell 中获取安装文件,或将源命令添加到启动脚本中。
如果您在定位或使用 ROS 2 软件包时遇到任何问题,您应该做的第一件事就是检查您的环境变量并确保它们设置为您想要的版本和发行版。
后续步骤
现在您已经安装了可运行的 ROS 2,并且知道如何获取其安装文件,您可以开始使用 turtlesim 工具 了解 ROS 2 的来龙去脉。