这个算法背景是用于 无人机群避障并让一架“补位/加入”的无人机安全并入编队。整体有两条思路:
-
加入者主动规避(当前已实现)
- 已知信息:原编队的运动轨迹 F(x, y, z, t)(编队中每架飞机给出随时间的三维位置)。
- 输入:编队每架飞机在各时间帧的对应位置集合,即 F(x, y, z, t|per-plane)。
- 输出:补位无人机的一条可行且安全的规划路径。
- 算法思想:采用 三维 A* + 分段局部规划
- 算法核心思想是把动态障碍物转换为静态障碍物的连通域,短时局部规划以应对集群编队的时变障碍约束,本库算是一种A*算法的三维改写和工程应用实现。
-
编队微调避让(后续可能会实现第二种)
- 目标:在不偏离原始轨迹太多的前提下,让编队为加入者让出“通道”。
- 边界条件:编队内每架无人机的规避机动限制在其原轨迹周围(例如“规避机动范围 < Δv 球”)。
- 输出:需要进行避碰机动的原编队中每架无人机在每个时刻的机动向量(使加入者能穿越空隙到达目标位置)。
🔴 在线演示(GitHub Pages):https://agathazhang.github.io/Drone-swarm-avoidance-cooperative-target/
一些过程:
- 体素扩增预览图 && 单架次全局路径图:
体素扩增预览图 |
单架次全局路径图 |
- 参数仿真:
Unity刚体碰撞检测 修正体素扩增半径 |
Matlab下三维 A* 搜索尺度调参 |
仓库中的三个主要目录:
- 初期仿真:用于在 Unity 中验证思路与做 Demo,记录早期的设计与灵感启发。
- PC实现:基于地面站一次性计算多架次路径,生成综合路径(包含多补位飞机间的路径互斥约束);后续将加入并行计算优化。
- Linux实现:按项目需求使用 Mavlink 通信,在机载模块 RV1103 上做嵌入式计算,实现算法的跨平台迁移与部署。
- 鸣谢:本文的A* 库是发展自Damian Barczyński的二维平面A* 算法https://github.com/daancode/a-star 本人将原作的2D平面A* 改写为了3D空间A* 这个部分的脚本欢迎大家复用 至此再次鸣谢Barczyński。
后续将部署带飞机间通信的集群编队算法,采用一种基于闵可夫斯基空间中时空事件F(x, y, z, t)的最优化思想,做最短电池能耗的控制优化;并把动力学模型纳入为子优化目标。