概述 :ROS2环境配置,主要参考官方文档 ROS2 Configuring environmen
https://docs.ros.org/en/iron/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.html
,
同步记录个自己的实践及思考
使用环境 : ubuntu 22.04, ros2-iron
ROS 2依赖于使用shell环境组合工作空间的概念。 “Workspace” 是一个ROS术语,表示使用ROS 2进行开发的系统位置。核心ROS 2工作空间被称为underlay。后续本地工作空间被称为overlays。使用ROS 2进行开发时,通常会同时激活多个工作空间。
组合工作空间使针对不同版本的ROS 2或针对不同包的开发变得更加容易。它还允许在同一台计算机上安装多个ROS 2发行版 (或 “distros”,例如Dashing和Eloquent) 并在它们之间切换。
这是通过每次打开新shell终端时source安装程序文件或将source命令添加到shell启动脚本一次来完成的。如果不source安装文件,您将无法访问ROS 2命令,也无法查找或使用ROS 2包。换句话说,您将无法使用ROS 2。
思考及疑问: 组合工作空间,可以同时运行不同发行版本的ROS吗,还是可只能切换?
在开始这些教程之前,请按照ROS2 安装页面https://docs.ros.org/en/iron/Installation.html
上的说明安装ROS 2。
本教程中使用的命令是假设你跟着二进制包安装指南为操作系统完成ros2的安装 (Linux系统下安装Debian包)。如果你由源文件编译安装你也继续学习,但安装文件的路径可能会不同。如果你是从源码安装,您也无需使用 sudo apt install ros-- 命令 (常用初学者级别教程) 。
如果您使用的是Linux或macOS,但还不熟悉shell终端, 此教程http://www.ee.surrey.ac.uk/Teaching/Unix/
将会有所帮助。
备注: 可在终端通过 sudo apt install ros-
直接安装; 默认路径:opt/ros/
您需要在打开的每个新shell终端上运行此命令才能访问ROS 2命令,如下所示:
Linux:
# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/iron/setup.bash
注意:
该指令的准确(与否)取决于ros2安装位置.如果(运行上面指令)碰到问题,请确认文件路径对应(ros2)安装位置.
如果您不想每次打开新shell终端时都必source安装文件 (即跳过任务1),则可以将命令添加到shell启动脚本中:
Linux:
echo "source /opt/ros/iron/setup.bash" >> ~/.bashrc
要撤消此操作,需要找到系统的shell启动脚本并删除附加的source命令。
思考及疑问: 如果同时安装并需要切换ROS2版本,是否只能使用方式1 ?
source ROS 2的配置文件将设置一些运行ROS 2所需的环境变量。如果您在查找或使用ROS 2包时遇到问题,请确保使用以下命令正确设置了环境:
Linux:
printenv | grep -i ROS
检查是否设置了像 ROS_DISTRO
和 ROS_VERSION
这样的变量。例如,如果你正在使用Iron:
ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=iron
如果环境变量没有设置正确,返回你所使用的ros2包安装章节教程(检查).如果需要更多的特殊帮助(由于环境变量设置文件可来自不同的地方),你可从社区https://answers.ros.org/questions/
获取解决方式.
有关ROS_DOMAIN_ID 的详细信息,请参阅 domain ID 文章https://docs.ros.org/en/iron/Concepts/Intermediate/About-Domain-ID.html
。
确定ROS 2代理组的唯一整数后,可以使用以下命令设置环境变量:
Linux:
export ROS_DOMAIN_ID=<your_domain_id>
为了保证该设置在多个shell终端都生效,可以把该指令添加到shell启动脚本文件(.bashrc) 中:
echo "export ROS_DOMAIN_ID=" >> ~/.bashrc
思考及疑问: 如何查看DOMAIN_ID
默认情况下,ROS 2 的通信范围不限于本地主机。ROS_AUTOMATIC_DISCOVERY_RANGE 环境变量允许你限制 ROS 2 的发现范围。使用 ROS_AUTOMATIC_DISCOVERY_RANGE 在某些情况下很有帮助,比如在教室里,多个机器人可能会发布到同一个主题,从而导致异常行为。更多详情,请参阅https://docs.ros.org/en/iron/Tutorials/Advanced/Improved-Dynamic-Discovery.html#improveddynamicdiscovery
。
ROS 2 开发环境在使用前需要正确配置。有两种方法可以做到这一点:每新开一个终端文件都source一次,或者直接把source的指令放到启动脚本文件(.bashrc)中。
如果在查找或使用 ROS 2 软件包时遇到任何问题,首先要做的就是检查环境变量,并确保设置的版本与你预期的版本一致。
现在,你已经安装了可正常运行的 ROS 2,并知道如何配置文件,可以开始使用 turtlesim 工具学习 ROS 2 的使用方法了。