1. Nodes

每个节点应负责单个模块用途(例如,一个节点用于控制车轮电机,一个用于控制激光测距仪等)
可以通过话题、服务、操作或参数向其他节点发送和接收数据

启动海龟及其遥控节点:

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

现在查阅

ros2 node list

将看到两个活动节点的名称:/teleop_turtle  /turtlesim

指令 功能
ros2 node list 列出当前活动的节点
ros2 node info 列出当前节点的通信信息

2. 重映射

重映射允许将默认节点属性(如节点名称、话题名称、服务名称等)重新分配给自定义值

现在来对turtlesim_node的重映射来更改默认海龟节点名称

ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle


现在将看到三个节点名称:/my_turtle/teleop_turtle  /turtlesim


3. 环境设置

可以使用以下命令正确查阅ROS2相关的环境变量:

printenv | grep -i ROS

可以看到

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=humble


3.1. ROS_DOMAIN_ID

正如其他地方所解释的,ROS2用于通信的默认中间件是DDS
在DDS中,使不同逻辑网络共享物理网络的主要机制称为域ID
同一域上的ROS2节点可以自由地发现并向彼此发送消息,而不同域上的ROS 2节点则不能
默认情况下,所有ROS2节点都使用域ID 0
为了避免同一网络上运行ROS 2的不同计算机组之间的干扰,应为每个组设置不同的域ID

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


3.2. ROS_LOCALHOST_ONLY

默认情况下,ROS2通信不限于本地主机
ROS_LOCALHOST_ONLY环境变量允许您将ROS 2通信仅限于本地主机
这意味着您的ROS 2系统及其主题、服务和操作对本地网络上的其他计算机不可见

例如在教室中,多个机器人可能会发布同一主题,从而导致奇怪的行为

可以使用以下命令设置环境变量:

echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc


谢谢