跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
MATLAB / OctaveAI算法

基于强化学习Q-learning的无人机三维路径规划原理与MATLAB实现

基于强化学习Q-learning算法的无人机三维路径规划方法。通过离散化三维栅格环境,定义状态空间、动作空间及约束条件。设计包含终点奖励、避障惩罚及距离引导的奖励函数,采用ε-贪心策略平衡探索与利用。利用MATLAB仿真验证算法在最短路径、最少步数及无碰撞方面的有效性,输出收敛曲线与最优飞行轨迹。

星落发布于 2026/4/11更新于 2026/5/2320 浏览
基于强化学习Q-learning的无人机三维路径规划原理与MATLAB实现

一、算法概述

本文基于Q-learning离线强化学习,实现三维栅格环境下无人机无碰撞、最短路径、最少步数路径规划。无人机具备1格/2格三维全向移动、对角线飞行、悬停能力,通过与环境交互迭代学习最优策略,以到达终点、路径距离、移动步数、避障为核心目标,输出满足约束的最优飞行路径。

二、环境与核心建模

1. 三维状态空间

将无人机飞行空间离散化为三维栅格地图,状态定义为无人机坐标: $$ S = {(x,y,z) \mid 1 \le x \le X_{max},\ 1 \le y \le Y_{max},\ 1 \le z \le Z_{max}} $$

  • (x,y,z):无人机空间位置
  • Xmax,Ymax,Zmax:地图边界(代码中为 10×10×10)

2. 动作空间(代码实现)

共54种动作,包含:

  • 6个轴向1格移动、12个平面斜向1格移动、8个空间斜向1格移动
  • 6个轴向2格移动、12个平面斜向2格移动、8个空间斜向2格移动
  • 1个悬停动作 (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)} $$

3. 约束条件

  1. 边界约束:坐标必须在地图范围内
  2. 避障约束:禁止进入障碍物坐标
  3. 目标约束:从起点 (2,2,2) 到达终点 (9,9,8)

三、Q-learning核心数学原理

1. Q值函数

Q(s,a) 表示状态 s 下执行动作 a 的长期累积奖励期望,是算法核心决策依据: $$ Q(s,a) \leftarrow Q(s,a) + \alpha \cdot [R(s,a) + \gamma \cdot \max_{a'} Q(s',a') - Q(s,a)] $$

参数定义:

  • α:学习率,控制更新步长(代码中动态衰减:0.25→0.05)
  • γ:折扣因子,权衡远期奖励(代码中 γ=0.99)
  • R(s,a):即时奖励
  • s':执行动作后的新状态
  • max Q(s',a'):下一状态最优动作价值

2. 动作选择策略

采用ε-贪心策略+动态衰减,平衡探索与利用: $$ \pi(a|s)= \begin{cases} \arg\max_a Q(s,a) & 概率\ 1-\varepsilon(利用最优策略)\ 随机合法动作 & 概率\ \varepsilon(探索未知环境) \end{cases} $$

ε 随训练指数衰减:ε = max(ε_min, ε_0 · e^(-0.007·episode))

四、奖励函数Reward设计

本算法以路径最短、无碰撞、必达终点、步数最少为目标,奖励函数分 4 类场景设计:

1. 奖励函数数学表达式

$$ 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} $$

2. 奖励项详细介绍

  1. 到达终点(最高奖励)
    • 基础奖励:+3500,保证无人机优先到达目标
    • 惩罚项:单步距离越长、总步数越多,奖励越低,强制最短路径 + 最少步数
  2. 碰撞障碍物/越界(最高惩罚)
    • 惩罚:−1500,让无人机彻底学会避障,杜绝碰撞
  3. 悬停动作(额外惩罚)
    • 惩罚:−10,避免无人机无效停留,提升飞行效率
  4. 正常飞行(启发式引导)
    • 靠近终点:+30·(d_cur−d_next),距离缩短越多奖励越高
    • 远离终点:自动产生负奖励,引导无人机向目标飞行
    • 距离惩罚:−10·d_step,飞行距离越长惩罚越高
    • 步数惩罚:−2·N_step,步数越多惩罚越高

3. 奖励设计核心目标

✅ 无人机必须到达终点
✅ 无人机绝对不碰撞障碍物
✅ 飞行路径欧氏距离最小
✅ 飞行移动步数最少
✅ 禁止无效悬停,提升飞行效率

五、算法步骤

阶段 1:参数初始化

  1. 初始化三维地图、起点、终点、障碍物坐标
  2. 定义 54 种移动动作 +1 种悬停动作
  3. 初始化四维 Q 表:Q(X_max,Y_max,Z_max,A) = 0
  4. 设置超参数:α,γ,ε、训练轮数、最大步长

阶段 2:Q-learning 训练迭代

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

阶段 3:最优路径规划

  1. 加载训练完成的 Q 表
  2. 从起点出发,每一步选择 Q(s,a) 最大的动作
  3. 严格校验边界与障碍物,保证无碰撞
  4. 到达终点后,输出最优路径、总步数、总距离

阶段 4:结果可视化

  1. 绘制奖励收敛曲线
  2. 绘制路径距离收敛曲线
  3. 绘制三维最优路径、起点、终点、障碍物

六、部分MATLAB代码及结果

% 最终结果
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');

目录

  1. 一、算法概述
  2. 二、环境与核心建模
  3. 1. 三维状态空间
  4. 2. 动作空间(代码实现)
  5. 3. 约束条件
  6. 三、Q-learning核心数学原理
  7. 1. Q值函数
  8. 2. 动作选择策略
  9. 四、奖励函数Reward设计
  10. 1. 奖励函数数学表达式
  11. 2. 奖励项详细介绍
  12. 3. 奖励设计核心目标
  13. 五、算法步骤
  14. 阶段 1:参数初始化
  15. 阶段 2:Q-learning 训练迭代
  16. 阶段 3:最优路径规划
  17. 阶段 4:结果可视化
  18. 六、部分MATLAB代码及结果
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 拆解机器人底盘 DDSM400 钕强磁外转子 65mm 伺服轮毂电机
  • 基于 Fofa 与 Rad 的自动化漏洞扫描实战流程
  • 油气行业人工智能大模型应用研究现状及展望
  • HTTP 请求方式详解:GET、POST 及其他常用方法
  • VSCode AI Copilot 配置指南:提升补全准确率的实战技巧
C++26 std::execution 设计内幕与并行算法性能优化
  • VS Code + Go 插件配置指南,搭建高效 IDE 开发环境
  • 微软 365 发布同声翻译智能体:Teams 会议实现实时跨语言交流
  • AI 产品经理必知技术:大模型微调原理与方法
  • Llama.cpp 低配置电脑部署大模型指南
  • Python 版本选择指南:演进历史与项目决策建议
  • 基于 AI 大模型的培训题库自动生成方案与实践
  • ComfyUI 本地部署及 Stable Diffusion 使用指南
  • Linux 快捷键与系统实用技巧
  • 开源智能家居平台核心技术解析与部署指南
  • Maxar Open Data:开源卫星影像数据集完整指南
  • Visual Studio 2022 禁用 Copilot 自动补全设置
  • vkedit:Vue3 Web 图形编辑器 npm 包,支持标签/票据/二维码设计
  • 6 款实测有效的论文降 AI 工具评测
  • STL 文件预览工具 stl-thumb 的安装与集成指南
  • 相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • RSA密钥对生成器

      生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

    • Mermaid 预览与可视化编辑

      基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

    • 随机西班牙地址生成器

      随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online