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

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

相关推荐
Q_21932764551 天前
车灯控制与报警系统设计
人工智能·嵌入式硬件·无人机
Deepoch1 天前
Deepoc具身模型外拓板:重塑无人机作业逻辑,开启行业智能新范式
科技·机器人·无人机·开发板·黑科技·具身模型·deepoc
Yuroo zhou1 天前
IMU如何成为机器人自主移动的核心传感器
人工智能·机器人·无人机·导航·传感器·飞行器
淡海水1 天前
【节点】[Houndstooth节点]原理解析与实际应用
unity·游戏引擎·shadergraph·图形·houndstooth
xqqxqxxq1 天前
《智能仿真无人机平台(多线程 V4.0)技术笔记》(集群进阶:多无人机任务分配与碰撞规避)
笔记·无人机·cocos2d
GIS数据转换器2 天前
基于GIS的康养旅游适宜性分析决策系统
大数据·网络·人工智能·安全·无人机·旅游
DoomGT2 天前
Physics Simulation - Hit Event的触发机制
ue5·游戏引擎·虚幻·虚幻引擎·unreal engine
EriccoShaanxi2 天前
从千米油井到万米高空:MEMS陀螺仪如何成为精准世界的“方向之锚”?
机器人·无人机
Dymc2 天前
【无人机是如何“看见误差”的?——视觉闭环让精准空投真正可控】
无人机·视觉定位·低空经济
华普微HOPERF2 天前
数字气压传感器,如何精准助力UAV的高度控制?
无人机·气压传感器