摘自:https://www.yuque.com/xtdrone/manual_cn/udp_matching
UDP端口匹配
图显示了对于任何支持的仿真器典型软件在回路(SITL) 仿真环境,系统的不同部分通过 UDP 端口连接,并且可以在同一台电脑或者同一网络上的不同电脑上运行。
在多机仿真环境的配置中,具体要从这几个文件入手:
SITL 启动脚本:
/Firmware/ROMFS/px4fmu_common/init.d-posix/rcS #v1.9之后的PX4固件版本
多机 launch 文件:
/Firmware/launch/multi_uav_mavros_sitl.launch
以一架 UAV 为例,具体需要配置的参数如下(/Firmware/ROMFS/px4fmu_common/init.d-posix/rcS):
(1)多机 launch 文件需要配置的参数为:
<!-- UAV0 -->
<group ns="uav0">
<arg name="ID" value="0"/>
<arg name="fcu_url" default="udp://:14540@localhost:14580"/>
-------------------------------------------------------------------------
------------------------------------------------------------------------
<arg name="mavlink_udp_port" value="14560"/>
<arg name="mavlink_tcp_port" value="4560"/>
</group>
(2)multi_uav_mavros_sitl.launch调用rcS脚本设置不同的ID和端口号
(此步骤由脚本自动完成,不需要手动更改)
param set MAV_SYS_ID 1
为每一个 UAV 设置一个 ID 号用来标识。
Param set SITL_UDP_PRT 14560
用于与 Gazebo 仿真器通信。
mavlink start -x -u 14556 -r 4000000
mavlink start -x -u 14557 -r 4000000 -m onboard -o 14540
mavlink stream -r 50 -s POSITION_TARGET_LOCAL_NED -u 14556 mavlink stream -r 50 -s LOCAL_POSITION_NED -u 14556
······
关于 Mavlink 流的一系列端口设置(14556,14557,14540 等)可以使我们利用外部控制程序来控制 UAV 模型。
在 sdf 文件中要修改的 Gazebo 模型参数如下:
<mavlink_udp_port>14560</mavlink_udp_port>