基于 DDPG 的无人机三维路径规划在 MATLAB 中的实现
使用深度强化学习(DRL)进行无人机智能导航,是当前自主系统研究中的热点方向。在 MATLAB R2023a 及以上版本中,借助强化学习工具箱,可以高效构建基于 DDPG(Deep Deterministic Policy Gradient)算法的三维路径规划系统。相较于传统的 Q-Learning 方法,DDPG 能够有效处理连续动作空间问题,如飞行器的姿态角与推力控制,因此特别适用于无人机这类高动态系统的建模与决策。
系统架构设计要点
在编码实现前,需明确整个强化学习框架的核心组成部分:环境模型、智能体结构以及奖励机制的设计。
状态空间(State)
状态信息由一个包含 6 维数据的向量表示,涵盖无人机当前位置、速度以及目标点的相对坐标。该观测输入将作为智能体决策的基础依据。
动作空间(Action)
动作输出为 4 维连续向量,分别对应飞行器的滚转(Roll)、俯仰(Pitch)、偏航(Yaw)及油门(Throttle)的变化量。由于 DDPG 支持连续控制信号输出,非常适合此类需要精细调控的应用场景。
奖励函数设计(Reward Function)
奖励机制是驱动智能体学习的关键因素:
- 正向奖励:每接近目标点 1 米,给予 +1 奖励;
- 负向惩罚:若发生障碍物碰撞,则施加 -100 惩罚;同时,对能量消耗过高的行为每次扣除 -0.1 分。
matlab
Copy
环境建模与仿真设置
采用 rlFunctionEnv 封装自定义的环境逻辑函数,构建三维网格化仿真空间。
% 定义环境参数
envParams.GridSize = [50, 50, 50]; % 设置三维空间大小
envParams.Obstacles = randi([0, 1], [10, 3]); % 随机生成10个障碍物位置
envParams.Goal = [45, 45, 45]; % 设定目标终点坐标
% 创建环境实例
env = rlFunctionEnv(@myUAVStep, @myUAVReset, envParams);
% 定义观测空间属性
obsInfo = rlNumericSpec([6 1]);
obsInfo.Name = 'Observation';
obsInfo.Description = {'Position', 'Velocity', 'Target'};
obsInfo.SignalMean = [0; 0; 0; 0; 0; 0];
obsInfo.SignalMax = [100; 100; 100; 100; 100; 100];
obsInfo.SignalMin = [-100; -100; -100; -100; -100; -100];
% 定义动作空间规范
actInfo = rlContinuousActionSpec([4 1]);
actInfo.Name = 'Action';
actInfo.Description = {'Roll', 'Pitch', 'Yaw', 'Throttle'};
智能体构建:DDPG 网络结构
DDPG 智能体由两个核心神经网络组成:Actor 网络用于生成动作策略,Critic 网络则评估当前状态-动作对的 Q 值。
matlab
Copy
% 构建 Critic 网络(Q 值评估)
numObservations = 6;
numActions = 4;
criticNetwork = [
featureInputLayer(numObservations, 'Normalization', 'none', 'Name', 'Obs');
fullyConnectedLayer(64, 'Name', 'FC1');
reluLayer('Name', 'ReLU1');
fullyConnectedLayer(64, 'Name', 'FC2');
reluLayer('Name', 'ReLU2');
fullyConnectedLayer(1, 'Name', 'QValue')];
% 配置 Critic 表征选项
criticOpts = rlRepresentationOptions('LearnRate', 1e-3, 'GradientClippingValue', 1);
criticRepr = rlDQNCriticRepresentation(criticNetwork, obsInfo, actInfo, criticOpts);
上述代码段实现了 Critic 网络的搭建,其输入为状态和动作联合特征,输出为对应的 Q 值估计。后续可进一步结合 Actor 网络完成完整智能体的训练配置。
% 2. 构建 Actor 网络(用于生成动作)
actorNetwork = [
featureInputLayer(numObservations, 'Normalization', 'none', 'Name', 'Obs');
fullyConnectedLayer(64, 'Name', 'FC1');
reluLayer('Name', 'ReLU1');
fullyConnectedLayer(64, 'Name', 'FC2');
reluLayer('Name', 'ReLU2');
fullyConnectedLayer(numActions, 'Name', 'Action')
];
actorOpts = rlRepresentationOptions('LearnRate', 1e-4, 'GradientClippingValue', 1);
actorRepr = rlDeterministicActorRepresentation(actorNetwork, obsInfo, actInfo, actorOpts);
matlab
Copy
% 3. 配置 DDPG 智能体
agent = rlDDPGAgent(actorRepr, criticRepr);
训练与可视化
设定训练参数并执行训练流程。由于 DDPG 算法收敛速度较慢,推荐启用 GPU 加速以提升训练效率。
% 配置训练选项
trainOpts = rlTrainingOptions(
'MaxEpisodes', 1000,
'StopTrainingAtMaxEpisodes', true,
'Plots', {'training-progress'},
'Verbose', false,
'UseParallel', false,
'UseGPU', true
);
% 开启训练
doTraining = true;
if doTraining
trainingStats = train(agent, env, trainOpts);
else
% 载入已训练好的模型
load('trainedDDPG.mat');
end
奖励变化趋势
95.2
最终平均奖励值
进阶优化建议
结合当前前沿研究方向,可对基础实现进行如下增强:
0/3 已完成
- 集成 LSTM 结构:采用基于 LSTM 的深度强化学习架构,增强模型对时序数据的处理能力,有效缓解无人机在复杂地形中因记忆缺失导致的决策偏差问题。
- 多智能体协同控制:若应用场景涉及飞行编队,应将单智能体架构升级为 rlMultiAgentDDPGAgent,以支持多个无人机之间的协作与通信。
- 构建数字孪生仿真环境:将现有环境替换为 Unity3D 或 Isaac Gym 等高保真仿真平台,从而获得更精确的物理交互和碰撞响应,提升策略迁移至真实系统时的稳定性与可靠性。


雷达卡


京公网安备 11010802022788号







