【无人机控制例程】(3)多无人机队形变换控制代码,仿真程序。附MATLAB源代码

5架无人机在60秒内完成一字形 → 楔形 → 菱形两次队形切换的全过程仿真,采用**虚拟领机(Virtual Leader)**结构解耦编队控制问题:各跟随无人机独立跟踪各自相对领机的期望偏置位置,无需无人机之间直接通信。
原创代码,请勿翻卖,包运行成功
如需帮助,或有导航、定位滤波相关的代码定制需求,请点击上方卡片联系作者

文章目录

程序简介

队形偏置矩阵

三种队形均以 2 × n 2 \times n 2×n 矩阵描述每架无人机相对虚拟领机的期望偏置 ( Δ x i ,   Δ y i ) (\Delta x_i,\, \Delta y_i) (Δxi,Δyi):

队形 几何特征 典型应用场景
一字形 5机横向等间距排列,间距 d = 3 d=3 d=3 m 广域扫描/侦察
楔形 V字形,前尖后宽,纵横双向偏置 突防/气动减阻
菱形 前后左右四角+中心,纵向拉伸 目标包围/协同探测

仿真流程

复制代码
初始化 → 设置队形偏置 → 虚拟领机匀速飞行
    ↓
主循环(每步 dt = 0.05 s):
    计算当前/下一步期望偏置
    → 计算位置/速度误差
    → PD控制 + 饱和限幅
    → 欧拉积分更新速度、位置
    ↓
后处理:计算跟踪误差 → 绘图 → 动画演示 → 控制台统计输出

关键参数说明

参数 符号 取值 说明
无人机数量 n n n 5 1架领机(虚拟)+ 4架跟随
仿真步长 d t dt dt 0.05 s 满足控制带宽要求
比例增益 K p K_p Kp 3.5 位置误差收敛速度
微分增益 K d K_d Kd 2.5 阻尼,抑制超调
控制饱和 u max ⁡ u_{\max} umax 8 m/s² 模拟执行机构物理限制
基础间距 d d d 3.0 m 队形几何缩放基准
领机速度 v L v_L vL 1.5 m/s 匀速直线飞行
过渡时间 T r T_r Tr 5 s 余弦插值窗口宽度

运行结果

仿真程序运行后将自动生成以下六张图表:

  1. 无人机飞行轨迹(俯视图):展示5架无人机在整个60秒仿真过程中的完整飞行轨迹,并在关键时刻标注队形快照(一字形/楔形/菱形),红色虚线标记队形切换时刻,蓝色虚线标记平滑过渡完成时刻。
  1. 各无人机队形跟踪误差曲线 :显示每架无人机实际位置与期望位置之间的偏差随时间的变化,直观体现PD控制器在队形切换过渡期间的调节性能。

  2. 各跟随无人机控制输入变化 :以子图形式分别绘制4架跟随无人机在X轴与Y轴方向的控制加速度输出,展示控制量饱和约束(±8 m/s²)的限制效果。

  3. 队形快照(相对领机坐标系) :在领机相对坐标系下,分别呈现t=8 s、t=25 s、t=52 s三个典型时刻的一字形、楔形、菱形队形几何构型。

  4. 各阶段平均跟踪误差统计柱状图:对三个飞行阶段的平均跟踪误差进行分组统计,定量评估每架无人机在不同队形下的控制精度。

  1. 编队切换动态演示(绝对坐标系) :以动画形式实时演示编队在绝对坐标系下的飞行过程,视窗跟随虚拟领机滑动,动态显示当前所处阶段及过渡进度百分比。

同时,命令窗口将输出仿真参数摘要及各阶段平均误差、全局最大误差、两次切换峰值误差等关键性能指标。

MATLAB源代码

部分代码如下:

matlab 复制代码
%%  多无人机队形切换控制仿真
% 一字形 → 楔形 → 菱形
% 方法: 虚拟领机 + PD控制 + 余弦平滑过渡函数
% 输出: 轨迹图 | 误差曲线 | 控制输入 | 队形快照 | 误差统计
% 需求: MATLAB R2018b+
% 作者:matlabfilter
% 2026-05-07
clear; clc; close all;
rng(0);
fprintf('正在初始化仿真...\n');


% 仿真参数

n    = 5;           % 无人机数量
dt   = 0.05;        % 仿真步长 [s]
T    = 60;          % 总仿真时间 [s]
t    = (0:dt:T)';   % 时间向量 [N×1]
N    = numel(t);

% 队形切换时刻
t1   = 15;          % 一字形 → 楔形 切换开始 [s]
t2   = 35;          % 楔形   → 菱形 切换开始 [s]
Tr   = 5;           % 平滑过渡持续时间 [s]

% PD控制器参数
Kp   = 3.5;         % 比例增益
Kd   = 2.5;         % 微分增益
umax = 8.0;         % 控制输入饱和限制 [m/s²]

% 编队几何参数
d    = 3.0;         % 基础间距 [m]
vL   = 1.5;         % 虚拟领机速度 [m/s]


%  2. 队形偏置矩阵定义

%  一字形
F_line = [
     0,    0,     0,    0,    0 ;
     0,   -d,  -2*d,   d,  2*d
];

% 楔形
F_wedge = [
     0,   -d,  -2*d,   -d,  -2*d ;
     0,   -d,  -2*d,    d,   2*d
];

% 菱形
F_diamond = [
     d,    0,   -d,    0,    0 ;
     0,   -d,    0,    d,    0
];
%  领机轨迹

完整代码:https://download.csdn.net/download/callmeup/92863885

相关推荐
小许同学记录成长1 小时前
基于 QxOrm 的 Qt 持久化层技术指南
开发语言·数据库·qt
csbysj20201 小时前
Python 列表(List)
开发语言
辞旧 lekkk9 小时前
【Qt】信号和槽
linux·开发语言·数据库·qt·学习·mysql·萌新
2zcode10 小时前
运动模糊图像复原的MATLAB仿真与优化
开发语言·matlab
袁雅倩199710 小时前
当吸尘器、筋膜枪都用上Type-C,供电方案该怎么选?浅谈PD取电芯片ECP5702的应用
c语言·开发语言·支持向量机·动态规划·推荐算法·最小二乘法·图搜索算法
Aaswk11 小时前
Java Lambda 表达式与流处理
java·开发语言·python
万邦科技Lafite11 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
Cyber4K12 小时前
【Python专项】进阶语法-系统资源监控与数据采集(1)
开发语言·python·php
salipopl12 小时前
基于STM32平台的多旋翼无人机系统设计与实现
stm32·嵌入式硬件·无人机