基于强化学习Q-learning的无人机三维路径规划原理与MATLAB实现
介绍基于Q-learning强化学习的无人机三维路径规划方法。在离散栅格环境中,定义状态空间、动作空间及约束条件。通过设计包含终点奖励、碰撞惩罚、距离引导的奖励函数,结合ε-贪心策略进行训练。最终利用MATLAB实现算法,输出无碰撞最短路径,并展示收敛曲线与三维可视化结果。

介绍基于Q-learning强化学习的无人机三维路径规划方法。在离散栅格环境中,定义状态空间、动作空间及约束条件。通过设计包含终点奖励、碰撞惩罚、距离引导的奖励函数,结合ε-贪心策略进行训练。最终利用MATLAB实现算法,输出无碰撞最短路径,并展示收敛曲线与三维可视化结果。

本文基于Q-learning离线强化学习,实现三维栅格环境下无人机无碰撞、最短路径、最少步数路径规划。无人机具备1格/2格三维全向移动、对角线飞行、悬停能力,通过与环境交互迭代学习最优策略,以到达终点、路径距离、移动步数、避障为核心目标,输出满足约束的最优飞行路径。
将无人机飞行空间离散化为三维栅格地图,状态定义为无人机坐标: $$ S = \left{ (x,y,z) \mid 1 \le x \le X_{max},\ 1 \le y \le Y_{max},\ 1 \le z \le Z_{max} \right} $$
(x,y,z):无人机空间位置Xmax,Ymax,Zmax:地图边界(代码中为 10×10×10)共54种动作,包含:
(0,0,0)动作集合: $$ A = { (\Delta x,\Delta y,\Delta z) \mid \Delta x,\Delta y,\Delta z \in {-2,-1,0,1,2},\ 非全零 } \cup { (0,0,0) } $$
(2,2,2)到达终点(9,9,8)Q(s,a) 表示状态s下执行动作a的长期累积奖励期望,是算法核心决策依据:
$$ Q(s,a) \leftarrow Q(s,a) + \alpha \cdot \left[ R(s,a) + \gamma \cdot \max_{a'} Q(s',a') - Q(s,a) \right] $$
参数定义:
α:学习率,控制更新步长(代码中动态衰减:0.25→0.05)γ:折扣因子,权衡远期奖励(代码中 γ=0.99)R(s,a):即时奖励s':执行动作后的新状态max Q(s',a'):下一状态最优动作价值采用ε-贪心策略+动态衰减,平衡探索与利用: $$ \pi(a|s)= \begin{cases} \arg\max_a Q(s,a) & \text{概率 } 1-\varepsilon(利用最优策略)\ \text{随机合法动作} & \text{概率 } \varepsilon(探索未知环境) \end{cases} $$
ε 随训练指数衰减:ε = max(ε_min, ε_0 · e^(-0.007 · episode))
本算法以路径最短、无碰撞、必达终点、步数最少为目标,奖励函数分4类场景设计:
$$ R(s,a)= \begin{cases} 3500 - 15 \cdot d_{step} - 5 \cdot N_{step} & \text{到达终点}\ -1500 & \text{碰撞障碍物/越界}\ 30 \cdot (d_{cur}-d_{next}) -10 \cdot d_{step} -2 \cdot N_{step} -10 & \text{悬停}\ 30 \cdot (d_{cur}-d_{next}) -10 \cdot d_{step} -2 \cdot N_{step} & \text{正常飞行} \end{cases} $$
✅ 无人机必须到达终点
✅ 无人机绝对不碰撞障碍物
✅ 飞行路径欧氏距离最小
✅ 飞行移动步数最少
✅ 禁止无效悬停,提升飞行效率
Q(X_max,Y_max,Z_max,A) = 0for 每一轮训练 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
Q(s,a)最大的动作% 最终结果
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