当前位置: 首页 > news >正文

使用mavros启动多机SITL仿真

使用mavros启动多机SITL仿真

  • 方式1:使用roslaunch一键启动
    • Step1:创建一个新的 ROS 包或放到现有包里
    • Step2:编辑 `multi_mavros.launch`
    • Step3:构建工作空间并 source 环境
    • Step4:构建工作空间并 source 环境
  • 方式2:启动单架无人机 MAVROS

为多个PX4 SITL无人机分别启动各自的 mavros 实例进行通信。每架无人机都用一组不同的 UDP 和 TCP 端口进行连接。我们只需要为每架无人机配置一组唯一的 fcu_url 来启动多个 mavros 节点。

方式1:使用roslaunch一键启动

Step1:创建一个新的 ROS 包或放到现有包里

cd ~/catkin_ws/src
catkin_create_pkg my_multi_mavros
mkdir -p my_multi_mavros/launch
cd ~/catkin_ws/src/my_multi_mavros/launch
touch multi_mavros.launch

Step2:编辑 multi_mavros.launch

<launch><!-- UAV1 --><group ns="uav1"><include file="$(find mavros)/launch/px4.launch"><arg name="fcu_url" value="udp://:20101@127.0.0.1:20100"/><arg name="gcs_url" value=""/><arg name="tgt_system" value="1"/></include></group><!-- UAV2 --><group ns="uav2"><include file="$(find mavros)/launch/px4.launch"><arg name="fcu_url" value="udp://:20103@127.0.0.1:20102"/><arg name="gcs_url" value=""/><arg name="tgt_system" value="2"/></include></group><!-- UAV3 --><group ns="uav3"><include file="$(find mavros)/launch/px4.launch"><arg name="fcu_url" value="udp://:20105@127.0.0.1:20104"/><arg name="gcs_url" value=""/><arg name="tgt_system" value="3"/></include></group><!-- UAV4 --><group ns="uav4"><include file="$(find mavros)/launch/px4.launch"><arg name="fcu_url" value="udp://:20107@127.0.0.1:20106"/><arg name="gcs_url" value=""/><arg name="tgt_system" value="4"/></include></group>
</launch>

Step3:构建工作空间并 source 环境

cd ~/catkin_ws
catkin_make
source devel/setup.bash

Step4:构建工作空间并 source 环境

roslaunch my_multi_mavros multi_mavros.launch

在这里插入图片描述

方式2:启动单架无人机 MAVROS

也可以单独启动 MAVROS 实例,比如:

roslaunch mavros px4.launch fcu_url:=udp://:20101@127.0.0.1:20100 \__ns:=uav1 tgt_system:=1roslaunch mavros px4.launch fcu_url:=udp://:20103@127.0.0.1:20102 \__ns:=uav2 tgt_system:=2roslaunch mavros px4.launch fcu_url:=udp://:20105@127.0.0.1:20104 \__ns:=uav3 tgt_system:=3roslaunch mavros px4.launch fcu_url:=udp://:20107@127.0.0.1:20106 \__ns:=uav4 tgt_system:=4

问题1: PX4 SITL 启动时日志里写的是 17541/16541,那为什么 mavrosfcu_url 要用 20100/20101 而不是 17541/16541

2010020101 是你自己在仿真系统(例如Gazebo )中 人为分配给 MAVROS 与 PX4 通信的中间桥接端口对,它们并不等于 PX4 SITL 启动时用的 17541/16541 内部端口

问题2: 为什么 uav1 用的是 20101/20100,而 uav2 用的是 20103/20102?为什么不是 20101/2010020102/20101

启动时已经为每架 MAVROS 与 PX4 的通信创建了一对端口:一个接收端(MAVROS本地端口)+一个发送端(PX4目标端口)。
端口增加“2”其实是人为设计的一种“互不冲突 + 成对编号”的方式 —— 每架无人机占用两个连续端口,一个作为收,一个作为发。

✅ MAVROS 与 PX4 通信是双向的:需要两个端口

fcu_url:=udp://:20101@127.0.0.1:20100

含义是:

  • MAVROS 接收数据:监听 20101(MAVROS本地UDP接收端)
  • MAVROS 发送数据:发到 PX4 的 127.0.0.1:20100

所以:

  • PX4 要配置为 将 MAVLink 数据发到 20101
  • PX4 要监听 20100 来接收来自 MAVROS 的数据

这对端口从 MAVROS 视角是:本地:20101 ← PX4:20100

http://www.lqws.cn/news/590491.html

相关文章:

  • WPF学习笔记(17)样式Style
  • Coze(扣子):基础学习
  • 利用视觉-语言模型搭建机器人灵巧操作的支架
  • 【Docker基础】Docker数据卷:数据卷的作用与使用场景
  • 算法-每日一题(DAY12)最长和谐子序列
  • Salesforce Accountアクションボタン実装ガイド
  • 简单聊聊 Flutter 在鸿蒙上为什么可以 hotload ?
  • 飞算JavaAI—AI编程助手 | 编程领域的‘高科技指南针’,精准导航开发!
  • 具身多模态大模型在感知与交互方面的综述
  • sqlmap学习ing(2.[第一章 web入门]SQL注入-2(报错,时间,布尔))
  • rocketmq 之 阿里云转本地部署实践总结
  • Vue3 中 Excel 导出的性能优化与实战指南
  • 创建和连接Vue应用程序实例
  • 缓存系统-淘汰策略
  • 强化学习系列--dpo损失函数
  • 齿轮的齿厚极限偏差如何确定?一起学习一下
  • C++基础
  • 目前最火的agent方向-A2A快速实战构建(二): AutoGen模型集成指南:从OpenAI到本地部署的全场景LLM解决方案
  • 《Python 架构之美:三大设计模式实战指南》
  • 【FR801xH】富芮坤FR801xH之UART
  • 【javaAI】SpringAI快速入门
  • 【C#】如果有一个数值如 168.0000100,如何去除末尾的无效零,只显示有效的小数位数,让DeepSeek给我们解答
  • 半加器和全加器
  • Disruptor架构哲学
  • 【机器学习2】正则化regularizaiton(降低模型过拟合)
  • 设备管理的11个指标、七大误区、六大特征
  • muduo
  • 数据结构——线性表的链式存储
  • QT笔记---环境和编译出现的问题
  • Golang的代码结构设计原则与实践与模式应用