多无人机任务自定义(基于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
    → 控制 每架无人机的目标位置

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

相关推荐
YOLO数据集集合1 天前
小目标无人机、飞机、直升机检测数据集 | 小目标检测 无人机检测 空中目标识别 低空安防 反无人机9090期
深度学习·yolo·目标检测·无人机·飞机·小目标·直升机
林川~011 天前
Unity 常用 API 与核心类全解:从生命周期到协程,附性能避坑清单(Unity 6 适配)
unity·游戏引擎·常用api
PascalXie1 天前
无人机视觉模组算力选型:端侧AI集成方案对比
计算机视觉·无人机
YOLO数据集集合1 天前
全球无人机航拍树冠覆盖数据集 | 树冠分割 语义分割 无人机航拍 全球森林监测 GeoTIFF 生态恢复9083期
深度学习·yolo·目标检测·无人机·无人机视角·全球森林
haishikeji696_1 天前
飞控管理平台源码|无人机智慧巡查系统私有化部署 低空一网统管巡检平台选型指南
架构·无人机·低空经济·无人机巡检·无人机管理系统·一网统飞·飞控管理平台
Zentceh1 天前
海洋牧场夜间监测:AI全彩夜视+水下成像集成方案
图像处理·人工智能·科技·计算机视觉·车载系统·无人机·智能家居
YOLO数据集集合1 天前
无人机树木识别检测数据集 | 树木检测 树种分类 无人机航拍 林业调查9082期
深度学习·yolo·目标检测·无人机·无人机视角·树冠识别·树冠
An独行者1 天前
物理引导机器学习:精准估算单木地上生物量新方法
无人机
XBWRJ2 天前
低空经济产业园观察:《无人机装调维修师》与维保生态构建
无人机
LONGZETECH2 天前
深入拆解无人机组装四大技术难关:焊接、接线、调参、转向校验
大数据·人工智能·系统架构·无人机