跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
MATLAB / OctaveAI算法

基于 Q-learning 的无人机三维路径规划原理及 MATLAB 实现

综述由AI生成Q-learning 强化学习算法应用于无人机三维栅格环境下的无碰撞路径规划。通过构建包含移动、悬停等 54 种动作的状态空间,设计融合距离缩短、步数惩罚及终点奖励的复合奖励函数,引导智能体收敛至最优策略。结合动态衰减的探索率与折扣因子,在 MATLAB 中实现了从训练到路径可视化的完整流程,确保无人机以最短距离和最少步数安全抵达目标。

abccba发布于 2026/4/12更新于 2026/4/266 浏览
基于 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)$ 为空间位置,$X_{max},Y_{max},Z_{max}$ 为地图边界(示例中设为 $10\times10\times10$)。

2. 动作空间

系统共定义54 种动作,涵盖轴向与斜向的 1 格/2 格移动,以及悬停:

  • 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},\ \text{非全零} } \cup { (0,0,0) }$$

3. 约束条件

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

Q-learning 核心数学原理

1. Q 值函数更新

Q 值函数 $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]$$ 参数说明:

  • $\alpha$:学习率,控制更新步长(代码中动态衰减:$0.25 \to 0.05$)。
  • $\gamma$:折扣因子,权衡远期奖励(代码中 $\gamma=0.99$)。
  • $R(s,a)$:即时奖励。
  • $s'$:执行动作后的新状态。

2. 动作选择策略

采用ε-贪心策略配合动态衰减,平衡探索与利用: $$\pi(a|s)= \begin{cases} \arg\max_a Q(s,a) & \text{概率 } 1-\varepsilon \text{(利用最优策略)} \ \text{随机合法动作} & \text{概率 } \varepsilon \text{(探索未知环境)} \end{cases}$$ $\varepsilon$ 随训练轮次指数衰减:$\varepsilon = \max(\varepsilon_{min},\ \varepsilon_0 \cdot e^{-0.007 \cdot \text{episode}})$。

奖励函数 Reward 设计

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

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. 设计意图

  • 到达终点:给予高额基础奖励(+3500),同时根据单步距离和总步数进行惩罚,强制引导最短路径。
  • 碰撞/越界:施加最高惩罚(-1500),确保智能体彻底学会避障。
  • 悬停:额外惩罚(-10),避免无效停留,提升效率。
  • 正常飞行:靠近终点时给予正向启发式奖励,远离则产生负奖励;飞行距离越长、步数越多,惩罚越高。

算法实现流程

初始化阶段

首先构建三维地图、设定起点终点及障碍物坐标,定义包含 54 种移动加 1 种悬停的动作集。初始化四维 Q 表 $Q(X_{max},Y_{max},Z_{max},A)$ 为零矩阵,并配置超参数如学习率、折扣因子、探索率及训练轮数。

训练迭代

在每一轮训练中,动态衰减学习率和探索率。无人机重置至起点后,循环执行以下步骤:

  1. 动作剪枝:剔除越界或碰撞障碍物的无效动作。
  2. 策略选择:依据 ε-贪心策略选取最优或随机动作。
  3. 状态转移:执行动作获取新状态 $s'$。
  4. 奖励计算:根据当前位置与目标关系计算即时奖励。
  5. Q 值更新:应用贝尔曼方程更新 Q 表。
  6. 终止判断:若到达终点、发生碰撞或超出最大步长则结束当前回合。

路径规划与可视化

训练完成后加载 Q 表,从起点出发每一步选择 Q 值最大的动作,严格校验边界与障碍物,直至抵达终点。最终输出最优路径、总步数及总距离,并绘制奖励收敛曲线、路径距离曲线及三维飞行轨迹图。

关键代码片段

以下是训练结束后计算最终指标及可视化的部分逻辑,展示了如何统计步数、距离并生成对比图表:

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

通过上述流程,我们成功实现了在复杂三维环境中无人机的自主路径规划,验证了 Q-learning 算法在处理此类多约束优化问题上的有效性。

目录

  1. 算法概述
  2. 环境与核心建模
  3. 1. 三维状态空间
  4. 2. 动作空间
  5. 3. 约束条件
  6. Q-learning 核心数学原理
  7. 1. Q 值函数更新
  8. 2. 动作选择策略
  9. 奖励函数 Reward 设计
  10. 1. 数学表达式
  11. 2. 设计意图
  12. 算法实现流程
  13. 初始化阶段
  14. 训练迭代
  15. 路径规划与可视化
  16. 关键代码片段
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Llama-Factory 实现模型蒸馏:Teacher-Student 架构探索
  • 协作机器人拖动示教控制方法实现原理
  • 滑动窗口算法:无重复字符的最长子串(数组模拟哈希表)
  • AIGC 产品经理:定义、核心职责与 AI 产品经理的区别
  • 基于 FPGA 的神经网络模型设计与实现:手写数字识别
  • Mission Planner 无人机地面站软件操作手册:快速配置指南
  • UV Python 包管理工具使用教程(Ubuntu 24.04)
  • 无人机数据采集中的C语言优化技巧与性能调优
  • Python 与前端集成:构建全栈应用
  • Spring AI 核心亮点拆解与实战指南
  • Whisper 语音识别本地化部署实战指南
  • CIC滤波器FPGA设计:位宽扩展与溢出控制实战
  • C++ 红黑树详解:原理、操作与代码实现
  • Docker 运行 hello-world 镜像失败或超时问题排查
  • Spring Boot 结合 jQuery 实现前后端分离图书管理实战
  • Stable Diffusion API 本地部署与实战调用指南
  • Nginx 常见安全攻击原理与防御配置详解
  • 如何确认 Windows 下是否安装 C++ 开发工具
  • Dify 基于知识库搭建智能客服问答应用详解
  • 利用云端 AI 模型快速生成个人响应式网页

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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