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

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

相关推荐
妙为13 小时前
unreal engine5(UE5)中使用Rider
ue5·游戏引擎·虚幻·rider
诙_16 小时前
unity——C#
unity·c#·游戏引擎
晓131317 小时前
【Cocos Creator 3.x】篇——第一章 简介
前端·javascript·游戏引擎
晓131317 小时前
【Cocos Creator 2.x】篇——第五章 游戏常用关键技术
前端·javascript·vue.js·游戏引擎
caimouse18 小时前
2D 与 3D 跨平台游戏引擎
游戏引擎
YOLO数据集集合19 小时前
无人机电力巡检图像数据集 | 输电线路故障智能识别 深度学习目标检测数据集实战
人工智能·深度学习·目标检测·计算机视觉·无人机
游乐码20 小时前
Unity基础(十三)资源卸载
unity·游戏引擎
冰糖橘子ABC20 小时前
Unity 动作重定向
unity·游戏引擎
动物园猫20 小时前
无人机战场侦察6类军事目标检测数据集分享(适用于YOLO系列深度学习分类检测任务)
yolo·目标检测·无人机
GIS数据转换器1 天前
无人机车载巡检系统
大数据·数据库·人工智能·数据挖掘·数据分析·无人机