利用 ROS 2 进行多车模拟
XRCE-DDS 允许多个客户端通过 UDP 连接到同一个代理。这在模拟中特别有用,因为只需启动一个代理。
设置和要求
唯一的要求是
- 能够运行 多载具模拟 在不使用 ROS 2 的情况下,使用所需的模拟器 (仿真场景Gazebo, 经典仿真场景Gazebo, FlightGear 和 JMAVSim).
- 能够使用 ROS 2 在单车模拟中。
运行原理
在模拟过程中,每个 PX4 实例都会收到一个唯一的 px4_instance
从 0
.该值用于为 UXRCE_DDS_KEY:
吁
停止 设置 UXRCE_DDS_KEY $((px4_instance+1))
信息
这样做 UXRCE_DDS_KEY
总是与 MAV_SYS_ID.
此外,当 px4_instance
大于零,则唯一的 ROS 2 命名空间前缀 形式 px4_$px4_instance
已添加:
吁
uxrce_dds_ns="-n px4_$px4_instance";
信息
环境变量 px4_uxrce_dds_ns
的设置将覆盖上述命名空间行为。
第一例 (px4_instance=0
的默认行为保持一致。 xrce-dds
在真实载具上的客户端。这种不匹配可以通过手动使用 px4_uxrce_dds_ns
或从索引开始添加载具。 1
而不是 0
(的默认行为)(这是 sitl_multiple_run.sh 用于 Gazebo Classic)。
模拟中的默认客户端配置概述如下:
px4_uxrce_dds_ns | px4_instance | UXRCE_DDS_KEY | 客户端命名空间 |
---|---|---|---|
未提供 | 0 | px4_instance+1 | 无 |
只要 | 0 | px4_instance+1 | px4_uxrce_dds_ns |
未提供 | >0 | px4_instance+1 | px4_${px4_instance} |
只要 | >0 | px4_instance+1 | px4_uxrce_dds_ns |
调整 目标系统
价值
PX4 接受 载具指令 只有当其 目标系统
字段为零(广播通信)或与 MAV_SYS_ID
.在所有其他情况下,信息都会被忽略。因此,当 ROS 2 节点要发送 载具指令
他们必须确保信息中填写了适当的 目标系统
价值。
例如,如果您想向您的第三辆车发送命令,该车有 px4_instance=2
,您需要设置 target_system=3
在你所有的 载具指令
留言