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

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

相关推荐
harrain4 小时前
拟合模型与虚幻引擎
游戏引擎·数字孪生·虚幻
DaLiangChen19 小时前
Unity 精准 Mesh 点击检测:穿透遮挡 + 单击双击识别
unity·游戏引擎
IT猿手19 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
迪普阳光开朗很健康1 天前
Unity中new() 和实例化有什么区别?
unity·游戏引擎
mxwin1 天前
Unity Shader 极坐标特效 从数学原理到实战案例
unity·游戏引擎·shader·uv
IT猿手1 天前
基于 ZOH 离散化与增量 PID 的四旋翼无人机轨迹跟踪控制研究,MATLAB代码
开发语言·算法·matlab·无人机·动态路径规划·openclaw
IT猿手1 天前
基于控制障碍函数(Control Barrier Function, CBF)的无人机编队三维动态避障路径规划,MATLAB代码
开发语言·matlab·无人机·动态路径规划·无人机编队
IT猿手1 天前
基于 CBF 的多无人机编队动态避障路径规划研究,无人机及障碍物数量可以自定义修改,MATLAB代码
开发语言·matlab·无人机·动态路径规划
IT猿手1 天前
基于强化学习Q-learning算法的无人机三维路径规划算法原理与实现,MATLAB代码
算法·matlab·无人机·路径规划·动态路径规划
GIS数据转换器1 天前
洪水时空大数据分析与评估系统
大数据·人工智能·机器学习·数据挖掘·数据分析·无人机·宠物