配置环境
目标: 本教程将向您展示如何准备您的ROS 2环境。
教程级别: 初学者
时间: 5分钟
背景
ROS 2依赖于使用Shell环境组合工作空间的概念。"工作空间"是ROS中用于开发ROS 2的位置。核心ROS 2工作空间称为underlay。随后的本地工作空间称为overlays。在使用ROS 2进行开发时,通常会同时激活多个工作空间。
合并工作空间使得针对不同版本的ROS 2或不同包集进行开发更加容易。它还允许在同一台计算机上安装多个ROS 2发行版(或“distros”,如Dashing和Eloquent),并在它们之间进行切换。
这可以通过在每次打开新的Shell时源化设置文件,或者将source命令添加到Shell启动脚本中来实现。如果不源化设置文件,您将无法访问ROS 2命令,也无法找到或使用ROS 2包。换句话说,您将无法使用ROS 2。
先决条件
在开始这些教程之前,请按照ROS 2 :doc:`../../Installation`页面上的说明安装ROS 2。
本教程中使用的命令假设您按照操作系统的二进制包安装指南进行操作(Linux的Debian包)。如果您从源代码构建,仍然可以按照本教程进行操作,但是您的设置文件路径可能会不同。如果您从源代码安装,您还将无法使用“sudo apt install ros-<distro>-<package>”命令(在初学者级别教程中经常使用)。
如果您正在使用Linux或macOS,但尚未熟悉Shell,则`此教程 <http://www.ee.surrey.ac.uk/Teaching/Unix/>`__将有所帮助。
任务
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/humble/setup.bash
. ~/ros2_install/ros2-osx/setup.bash
call C:\dev\ros2\local_setup.bat
注解
确切的命令取决于您安装ROS 2的位置。如果遇到问题,请确保文件路径指向您的安装位置。
2 将源命令添加到您的shell启动脚本
如果您不想每次打开新的shell时都要进行源命令设置(跳过任务1),您可以将该命令添加到您的shell启动脚本中:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
要撤销此操作,请找到您系统的shell启动脚本,并删除附加的源命令。
echo "source ~/ros2_install/ros2-osx/setup.bash" >> ~/.bash_profile
要撤销此操作,请找到您系统的shell启动脚本,并删除附加的源命令。
仅适用于PowerShell用户,在'My Documents'中创建一个名为'WindowsPowerShell'的文件夹。在'WindowsPowerShell'文件夹中,创建名为'Microsoft.PowerShell_profile.ps1'的文件。在文件中粘贴以下内容:
C:\dev\ros2_humble\local_setup.ps1
每次打开新的shell时,PowerShell都会请求运行此脚本的权限。为了避免这个问题,您可以运行:
Unblock-File C:\dev\ros2_humble\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=humble
如果环境变量没有正确设置,请返回到您所遵循的安装指南的 ROS 2 包安装部分。如果您需要更具体的帮助(因为环境设置文件可能来自不同的地方),您可以从社区 获取答案。
3.1 ROS_DOMAIN_ID
变量
有关 ROS 域 ID 的详细信息,请参阅 域 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_LOCALHOST_ONLY
变量
默认情况下,ROS 2通信不限于本地主机。``ROS_LOCALHOST_ONLY``环境变量允许您将ROS 2通信限制为仅限本地主机。这意味着您的ROS 2系统及其主题、服务和操作将对本地网络上的其他计算机不可见。在某些情况下,使用``ROS_LOCALHOST_ONLY``非常有帮助,比如在教室中,多个机器人可能会向同一主题发布,从而导致奇怪的行为。您可以使用以下命令设置环境变量:
export ROS_LOCALHOST_ONLY=1
为了在不同的shell会话之间保持这个设置,可以将该命令添加到shell启动脚本中:
echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc
export ROS_LOCALHOST_ONLY=1
为了在不同的shell会话之间保持这个设置,可以将该命令添加到shell启动脚本中:
echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bash_profile
set ROS_LOCALHOST_ONLY=1
如果想要在不同的shell会话之间永久生效,还需要运行以下命令:
setx ROS_LOCALHOST_ONLY 1
总结
在使用之前,需要正确配置ROS 2开发环境。可以通过两种方式实现:要么在每次打开新的shell时使用源文件,要么将源命令添加到启动脚本中。
如果您在使用ROS 2时遇到任何定位或使用软件包的问题,首先应该检查您的环境变量,并确保其设置为您预期的版本和发行版。
下一步
现在您已经安装了可用的ROS 2,并且知道如何获取其设置文件,可以开始使用 turtlesim 工具 来深入了解ROS 2的内部工作原理。