基于 CBF 的多无人机编队动态避障路径规划研究,无人机及障碍物数量可以自定义修改,MATLAB代码

针对多无人机编队在动态障碍物环境下的协同飞行与安全避障问题,本文采用领航‑跟随编队控制与控制障碍函数(CBF) 相结合的方法,设计一种分布式多无人机避障控制框架。系统以集群几何中心为虚拟领航点实现稳定编队,通过控制障碍函数将避障约束转化为二次规划(QP)问题,实现无人机对动态障碍物的实时规避;同时引入无人机间安全距离约束,保证单机自主避障且不干扰其他无人机飞行。仿真结果表明,所提方法可实现动态障碍物无碰撞运动、多无人机编队保持、无人机间自主避障,满足复杂动态环境下多机安全协同飞行要求。

一、算法原理

1. 领航-跟随编队控制原理

设计思路 :以无人机集群几何中心为虚拟领航点,所有无人机作为跟随者保持相对位置。

  1. 计算集群中心位置:
    Pcenter=1N∑i=1NPuav,i\boldsymbol{P}{center} = \frac{1}{N}\sum{i=1}^N \boldsymbol{P}_{uav,i}Pcenter=N1i=1∑NPuav,i
  2. 每架无人机保持与中心的固定相对位置,实现队形稳定;
  3. 中心向总目标点匀速运动,带动整个编队移动。

2. 控制障碍函数(CBF)避障原理

CBF是实现安全避障的核心理论,保证无人机与障碍物/其他无人机始终大于安全距离:

  1. 定义安全函数:
    h(x)=d(x,xobs)−Dsafe≥0h(\boldsymbol{x}) = d(\boldsymbol{x},\boldsymbol{x}{obs}) - D{safe} \ge 0h(x)=d(x,xobs)−Dsafe≥0
    ddd为距离,DsafeD_{safe}Dsafe为安全距离,h≥0h \ge 0h≥0 表示无碰撞。
  2. 安全约束:h˙≥−αh\dot{h} \ge -\alpha hh˙≥−αh,保证系统渐进安全;
  3. 将避障需求转化为线性不等式约束,代入二次规划求解最优控制量。

3. 二次规划(QP)求解

目标:最小化控制量与期望速度的误差

约束:满足CBF避障安全条件
min⁡12vTv−vaimTv\min \frac{1}{2}\boldsymbol{v}^T\boldsymbol{v} - \boldsymbol{v}_{aim}^T\boldsymbol{v}min21vTv−vaimTv
s.t. Av≤bs.t. \ \boldsymbol{A}\boldsymbol{v} \le \boldsymbol{b}s.t. Av≤b

求解得到无碰撞、稳定平滑的无人机速度。

4. 动态障碍物运动原理

  1. 每个障碍物独立随机生成运动方向与速度;
  2. 到达边界自动速度反弹
  3. 实时检测与其他障碍物距离,小于安全距离则速度反向,实现无碰撞移动。

二、实现思路

MATLAB代码采用模块化设计,分为参数初始化、动态障碍物更新、无人机控制、可视化更新四大流程:

阶段1:初始化模块

  1. 配置无人机数量、初始位置、目标点;
  2. 配置动态障碍物数量、初始位置、运动参数;
  3. 定义安全距离、避障强度、速度限制等核心参数;
  4. 计算每架无人机的独立终点位置;
  5. 初始化图形界面,为不同无人机分配颜色+终点标记符号。

阶段2:动态障碍物更新(无碰撞移动)

循环遍历每个障碍物

  1. 独立计时,定时随机改变运动方向与速度;
  2. 预计算下一时刻位置,进行边界碰撞检测
  3. 与其他障碍物进行距离检测,小于安全距离则速度反向;
  4. 更新障碍物位置并刷新绘图。

阶段3:无人机编队+自主避障(核心)

  1. 虚拟领航点控制:计算集群中心向目标点的期望速度;
  2. 全局避障:CBF构建障碍物安全约束,QP求解中心速度;
  3. 单机独立避障 (新增功能):
    • 每架无人机单独检测其他无人机距离;
    • 构建无人机间防碰撞约束,独立QP求解速度;
    • 保证无人机互不干扰、无碰撞;
  4. 龙格-库塔法更新无人机位置,保证运动平滑。

阶段4:可视化与数据存储

  1. 实时更新无人机、障碍物位置图形;
  2. 绘制无人机轨迹,用不同标记显示各无人机终点;
  3. 绘制速度、编队误差、目标距离曲线;
  4. 存储无人机飞行轨迹数据。

三、约束条件

1. 移动障碍物不碰撞实现

  • 为每个障碍物设置独立运动逻辑,互不影响;
  • 移动前预检测与所有障碍物的距离;
  • 距离 < 安全距离 → 速度立即反向,从根源避免碰撞;
  • 边界触碰反弹,防止飞出仿真区域。

2. 无人机独立自主避障

  • 保留原编队结构,不改变整体协同逻辑
  • 为每架无人机增加单机避障层
    1. 检测周围其他无人机位置;
    2. 构建独立安全约束;
    3. 单独求解二次规划,获得自身无碰撞速度;
  • 实现:编队不乱、无人机不撞、自主绕避。

四、部分MATLAB代码及效果

bash 复制代码
clc; clear all; close all; warning off;

% 1. 无人机配置
UAV_NUM = 6;                  % 无人机数量
car_position = [-2, -3, -2, -1, -3,-1; 
                -2, -2, -3, -2.5, -0.5,0; 
                0, 0, 0, 0, 0,0];  

% 2. 障碍物初始配置(独立随机移动)
OBSTACLE_NUM = 6;             % 障碍物数量
obstacle_position = [0, 2, 2, 4, 1, 3; 
                     -1, 2, 4, 4, -2, 2.5];  
       for k = 1:UAV_NUM
            % 基础编队速度
            v_base = center_v - 10*(car_position(1:2,k)-center_position-relative_center_position(:,k));
            
            % 构建单机独立避障约束:避开其他无人机
            A_uav = []; b_uav = [];
            for m = 1:UAV_NUM
                if m == k, continue; end
                dx = car_position(1,k) - car_position(1,m);
                dy = car_position(2,k) - car_position(2,m);
                d = norm([dx; dy]);
                safe_d = uav_safe_dist;
                if d < safe_d * 1.8  % 近距离才触发避障
                    A_uav = [A_uav; dx/d, dy/d];
                    b_uav = [b_uav; alpha*(d - safe_d)];
                end
            end
            
            % 单机独立求解速度(自主避障)
            if ~isempty(A_uav)
                v_opt = quadprog(eye(2), -v_base, -A_uav, b_uav, [], [], [], [], [], opt);
            else
                v_opt = v_base;
            end
            
            car_v(:,k) = max(min(v_opt, speed_limit), -speed_limit);
        end



五、完整MATLAB代码见下方名片

相关推荐
feng_you_ying_li21 小时前
C++11,{}的初始化情况与左右值及其引用
开发语言·数据结构·c++
xiaotao13121 小时前
JS new 操作符完整执行过程
开发语言·前端·javascript·原型模式
TE-茶叶蛋21 小时前
结合登录页-PHP基础知识点解析
android·开发语言·php
无巧不成书021821 小时前
Java包(package)全解:从定义、使用到避坑,新手零基础入门到实战
java·开发语言·package·java包
WangJunXiang61 天前
Python网络编程
开发语言·网络·python
guhy fighting1 天前
new Map,Array.from,Object.entries的作用以及使用方法
开发语言·前端·javascript
lsx2024061 天前
操作系统统计
开发语言
_下雨天.1 天前
Python 网络编程
开发语言·网络·python
小樱花的樱花1 天前
打造高效记事本:UI设计到功能实现
开发语言·c++·qt·ui
Bigemap1 天前
Bigemap Pro软件生态应急制图培训课程表
无人机·大疆·kml·bigemap pro·无人机kml