基于 Q-learning 的无人机三维路径规划算法原理与 MATLAB 实现
介绍基于 Q-learning 强化学习的无人机三维路径规划方法。在三维栅格环境中,定义 54 种移动动作及悬停,通过奖励函数引导无人机避障并最短到达终点。采用ε-贪心策略动态衰减探索率,结合 MATLAB 实现训练迭代与路径可视化。实验表明算法能有效收敛,输出无碰撞最优飞行路径。

介绍基于 Q-learning 强化学习的无人机三维路径规划方法。在三维栅格环境中,定义 54 种移动动作及悬停,通过奖励函数引导无人机避障并最短到达终点。采用ε-贪心策略动态衰减探索率,结合 MATLAB 实现训练迭代与路径可视化。实验表明算法能有效收敛,输出无碰撞最优飞行路径。

本文基于Q-learning 离线强化学习,实现三维栅格环境下无人机无碰撞、最短路径、最少步数路径规划。无人机具备1 格/2 格三维全向移动、对角线飞行、悬停能力,通过与环境交互迭代学习最优策略,以到达终点、路径距离、移动步数、避障为核心目标,输出满足约束的最优飞行路径。
将无人机飞行空间离散化为三维栅格地图,状态定义为无人机坐标: S={(x,y,z) | 1≤x≤Xmax, 1≤y≤Ymax, 1≤z≤Zmax}
共54 种动作,包含:
动作集合: A={(Δx,Δy,Δz) | Δx,Δy,Δz∈{-2,-1,0,1,2}, 非全零} ∪ {(0,0,0)}
Q(s,a) 表示状态 s 下执行动作 a 的长期累积奖励期望,是算法核心决策依据: Q(s,a) ← Q(s,a) + α · [R(s,a) + γ · max_a' Q(s',a') - Q(s,a)]
参数定义:
采用ε-贪心策略+动态衰减,平衡探索与利用: π(a|s) = { argmax_a Q(s,a) 概率 1-ε(利用最优策略); 随机合法动作 概率 ε(探索未知环境) }
ε 随训练指数衰减:ε=max(εmin, ε0·e^(-0.007·episode))
本算法以路径最短、无碰撞、必达终点、步数最少为目标,奖励函数分 4 类场景设计:
R(s,a) = { 3500 - 15·d_step - 5·N_step & 到达终点 -1500 & 碰撞障碍物/越界 30·(d_cur-d_next) -10·d_step -2·N_step -10 & 悬停 30·(d_cur-d_next) -10·d_step -2·N_step & 正常飞行 }
✅ 无人机必须到达终点 ✅ 无人机绝对不碰撞障碍物 ✅ 飞行路径欧氏距离最小 ✅ 飞行移动步数最少 ✅ 禁止无效悬停,提升飞行效率
for 每一轮训练 episode = 1:max_episode
动态衰减学习率α和探索率ε
无人机重置到起点,清空路径、奖励、步数
for 每一步飞行 step = 1:max_step
1. 动作剪枝:剔除越界、碰撞障碍物的无效动作
2. ε-贪心策略选择最优/随机动作
3. 执行动作,得到新状态 s'
4. 计算即时奖励 R(核心:避障 + 距离 + 步数 + 终点)
5. 更新 Q 值:Q(s,a) ← Q(s,a)+α[R+γ·maxQ(s',a')−Q(s,a)]
6. 判断终止:到达终点/碰撞/越界
7. 更新状态、累计奖励、飞行路径
end
计算本轮总距离、总步数、总奖励并保存
end
% 最终结果
final_steps = size(path,1)-1;
final_dist = 0;
for i = 1:final_steps
final_dist = final_dist + norm(path(i+1,:)-path(i,:));
end
fprintf('\n=========================================\n');
fprintf(' 最优步数:%d 步\n', final_steps);
fprintf(' 最短距离:%.4f\n', final_dist);
fprintf(' 避障状态:无碰撞\n');
fprintf('=========================================\n');
%% 绘图
figure('Color','w','Position',[80,80,1200,380]);
subplot(1,3,1);
plot(1:max_episode, reward_curve, 'b-','LineWidth',1.6);
xlabel('训练轮数');
ylabel('总奖励');
title('奖励收敛曲线');
grid on;
subplot(1,3,2);
plot(1:max_episode, episode_path_distance, 'r-','LineWidth',1.6);
xlabel('训练轮数');
ylabel('路径总距离');
title('距离收敛曲线');
grid on;
subplot(1,3,3);
hold on;
grid on;
axis equal;
view(3);
xlabel('X');
ylabel('Y');
zlabel('Z');
title(sprintf('最优路径 | 步数:%d | 距离:%.2f | 无碰撞',final_steps,final_dist));
xlim([1 x_max]);
ylim([1 y_max]);
zlim([1 z_max]);
plot3(start_state(1),start_state(2),start_state(3),'rs','MarkerSize',11,'LineWidth',2);
plot3(end_state(1),end_state(2),end_state(3),'gd','MarkerSize',11,'LineWidth',2);
scatter3(obstacle(:,1),obstacle(:,2),obstacle(:,3),100,'k','filled');
plot3(path(:,1),path(:,2),path(:,3),'m-','LineWidth',2.8,'MarkerSize',5);
legend('起点','终点','障碍物','最优路径','Location','best');

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online