多无人机任务自定义(基于ZJU-FAST-Lab / EGO-Planner-v2)

多无人机任务自定义

目标 :在不改动项目核心逻辑的前提下,实现

✅ 自定义无人机数量与初始位置

✅ 独立指派每架无人机的目标位置("谁去哪")

结论仅需修改以下两个文件,其余部分无需任何改动


一、需修改的两个文件(完整路径)

功能 文件完整路径 作用
1. 仿真启动配置 swarm-playground/main_ws/src/planner/plan_manage/launch/swarm.launch 定义启动多少架无人机、每架的初始位置
2. 任务分配逻辑 swarm-playground/main_ws/src/Utils/assign_goals/src/assign_goals_node.cpp 定义每架无人机飞往哪个目标点

✅ 这两个文件分别控制 "谁存在""谁去哪",覆盖全部需求。


二、每个文件的修改内容

1. 修改 swarm.launch

路径
swarm-playground/main_ws/src/planner/plan_manage/launch/swarm.launch

修改内容

  • 增减无人机数量 :添加或删除 <include> 块(每个块对应一架无人机)
  • 设置初始位置 :修改每个 <include> 中的 init_xinit_yinit_z 参数

示例(启动 3 架,三角形队形):

xml 复制代码
<include file="$(find ego_planner)/launch/include/run_in_sim.xml">
  <arg name="drone_id" value="0"/>
  <arg name="init_x" value="0.0"/>
  <arg name="init_y" value="0.0"/>
  <arg name="init_z" value="1.0"/>
  <!-- 其他参数... -->
</include>
<include file="$(find ego_planner)/launch/include/run_in_sim.xml">
  <arg name="drone_id" value="1"/>
  <arg name="init_x" value="5.0"/>
  <arg name="init_y" value="-3.0"/>
  <arg name="init_z" value="1.0"/>
  <!-- 其他参数... -->
</include>
<!-- 可继续添加更多 -->

🔍 效果 :启动后系统将有 N 架无人机,ID 为 0N-1,从指定位置起飞。


2. 修改 assign_goals_node.cpp

路径
swarm-playground/main_ws/src/Utils/assign_goals/src/assign_goals_node.cpp

修改内容

  • 保留 原有 RVIZ 交互回调函数(selected_drones_cb, user_goal_cb)------可选,用于兼容旧功能
  • 替换或扩展 main() 函数 ,使其支持:
    • 命令行参数 读取目标(推荐)

      bash 复制代码
      rosrun assign_goals assign_goals_node 0:1,2,3 1:4,5,6
    • 或从文件 读取目标(如 goals.txt

关键逻辑

cpp 复制代码
// 解析 "drone_id:x,y,z" 格式
// 为每个目标构造 quadrotor_msgs::GoalSet 消息
// 发布到 /goal_user2brig

🔍 效果:每架无人机将独立飞向你指定的目标,不再受"整体平移"限制。


三、为什么其他文件不用改?

模块 路径 原因
swarm_bridge planner/swarm_bridge/ 仅负责按 drone_id 路由消息,不关心目标内容
ego_planner planner/ego_planner/ 只需接收目标并规划路径,来源无关
uav_simulator uav_simulator/ 只执行底层控制,不参与任务分配
RVIZ / 地图等 --- 纯可视化或环境模块,与任务逻辑解耦

ROS 的"发布-订阅"机制保证了模块间松耦合

只要 assign_goals 发出合法的 GoalSet 消息,系统其余部分会自动正确响应。


四、修改后使用流程

bash 复制代码
# 1. 编译(仅当修改了 .cpp 时需要)
cd swarm-playground/main_ws
catkin_make

# 2. 启动仿真(自动加载 swarm.launch 中定义的 N 架无人机)
roslaunch plan_manage swarm.launch

# 3. 发布自定义任务(例如:drone_0 去 (5,0,2),drone_1 去 (5,5,2))
rosrun assign_goals assign_goals_node 0:5,0,2 1:5,5,2

✅ 总结

只需修改两个文件

  1. swarm-playground/main_ws/src/planner/plan_manage/launch/swarm.launch
    → 控制 无人机数量和初始位置
  2. swarm-playground/main_ws/src/Utils/assign_goals/src/assign_goals_node.cpp
    → 控制 每架无人机的目标位置

无需改动任何其他代码,即可实现完全自定义的多机任务。

相关推荐
24年生活经验_小旻12 天前
ROS2+Ardupilot+Gazebo通信仿真基本环境搭建
无人机
嘉子的秃头日记13 天前
TRO 2026|无人机能不能像积木一样,拼出不同形态?
无人机
YOLO数据集集合13 天前
无人机航拍地质灾害智能识别 山体滑坡实例分割数据集落地实战 | 泥石流监测 道路险情封堵 深度学习模型训练方案10296期
人工智能·深度学习·yolo·目标检测·无人机
海砥装备HardAus13 天前
大载重工业无人机高空风扰建模与ADRC自抗扰抗风控制实现
无人机·adrc·工业无人机
海砥装备HardAus13 天前
大载重工业无人机动力容错控制:单电机失效下的应急重构算法设计
算法·重构·嵌入式·无人机
中科固源13 天前
飞控里的“暗战”:无人机软件栈中的控制权风险
网络安全·无人机·低空经济
YOLO数据集集合13 天前
无人机风电设备智能巡检 风机叶片缺陷目标检测数据集实战 | 表面腐蚀漏油识别 工业视觉质检 深度学习模型训练落地10337期
人工智能·深度学习·目标检测·计算机视觉·无人机
hai31524754314 天前
九章编程法 · 猜数字游戏 (GW-BASIC 重构版) *
人工智能·microsoft·游戏引擎·游戏程序
飞手早知道14 天前
一站式选机服务落地 赋能无人机行业采购提质增效
无人机
心前阳光14 天前
Unity资源导入之自动化资源导入
unity·自动化·游戏引擎