本代码实现了UAV集群协作雷达跟踪动态目标的完整仿真,结合扩展卡尔曼滤波(EKF),通过多架动态移动的无人机(作为锚点)协作,融合距离测量和径向速度信息对移动目标进行定位与速度估计。
代码简介
本代码用于仿真多无人机(UAV)协作跟踪动态目标的过程。无人机集群在二维平面上执行各自的复杂路径飞行,同时通过自身搭载的雷达传感器对目标进行连续观测,测量内容包括目标与各无人机之间的距离及相对径向速度。
目标按照预设的加速度和缓慢转向等动态运动规律移动,路径非线性且不断变化。无人机锚点的轨迹各不相同,涵盖螺旋、变速圆周、椭圆及复合运动等形式,确保观测信息具备丰富的几何多样性,提升对目标的覆盖与感知能力。
在整个仿真周期内,系统通过估计算法动态融合所有无人机的测量信息,对目标的实时位置与速度进行递推更新。算法在每个时刻对目标的估计误差状态与不确定性进行修正,逐步提高跟踪精度与稳定性。
代码集成了多种性能评估与可视化工具,包括:
- 实时绘制目标真实轨迹与估计轨迹的对比。
- 展示位置与速度的估计误差随时间的变化。
- 分析测量过程中出现的距离与径向速度的残差。
- 跟踪误差状态与协方差的演化,评估估计的收敛性与可靠性。
本仿真框架适合研究动态网络协作感知与多平台目标跟踪的整体流程,为进一步开发与优化多无人机协同定位与跟踪技术提供了仿真基础。
运行结果
定位结果示意图:
误差曲线:
各轴误差曲线:
测量误差曲线:
命令行输出的误差结果:
MATLAB源代码
部分代码如下:
% UAV集群雷达跟踪移动目标,EKF融合距离和径向速度
% 作者:matlabfilter
% 2025-07-19/Ver1
clc; clear; close all;
rng(0);
%% 仿真参数设置
dt = 0.1; % 采样时间间隔 (s)
T_sim = 50; % 仿真时间 (s)
N_steps = T_sim / dt;
%% 锚点设置 (4个动态锚点)
% 锚点初始位置 [x, y]
anchors_init = [0, 0; 100, 0; 100, 100; 0, 100];
N_anchors = size(anchors_init, 1);
% 锚点运动参数 (每个锚点设置不同的运动模式)
anchor_params(1).v0 = [5, 2];
anchor_params(1).w = 0.05;
anchor_params(1).a = [0.2, -0.1]; % 锚点1: 螺旋运动
anchor_params(2).v0 = [-3, 4];
anchor_params(2).w = -0.03;
anchor_params(2).a = [0.1, 0.2]; % 锚点2: 变速圆周
anchor_params(3).v0 = [2, -5];
anchor_params(3).w = 0.08;
anchor_params(3).a = [-0.15, 0.1]; % 锚点3: 椭圆轨迹
anchor_params(4).v0 = [-4, -2];
anchor_params(4).w = -0.06;
anchor_params(4).a = [0.1, -0.2]; % 锚点4: 复合运动
%% 目标真实运动参数 (动态目标)
target_init_pos = [50, 50]; % 初始位置
target_init_vel = [3, -2]; % 初始速度
target_accel = [0.5, 0.3]; % 加速度
target_omega = 0.02; % 转弯角速度
%% 噪声参数
sigma_range = 2.0; % 距离测量标准差 (m)
sigma_radial_vel = 0.5; % 径向速度测量标准差 (m/s)
%% EKF初始化
% 状态向量: [dx, dy, dvx, dvy] (位置和速度的估计误差)
x_error = [5; -3; 0.5; -0.2]; % 初始误差状态
% 初始估计
target_pos_est = target_init_pos + x_error(1:2)'; % 初始位置估计
target_vel_est = target_init_vel + x_error(3:4)'; % 初始速度估计
% 初始协方差矩阵
P = diag([10^2, 10^2, 2^2, 2^2]); % 位置误差方差较大,速度误差方差较小
% 过程噪声协方差 (动态目标,考虑模型不确定性)
完整代码的下载链接:https://download.csdn.net/download/callmeup/91420277
如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者