基于CNN-BiLSTM的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码

路径规划是移动机器人领域主要研究内容之一,移动机器人路径规划即机器人在所处环境下选择一条从起点到终点的无碰撞路径。传统路径规划方法过分依赖环境地图,随着深度学习(Deep Learning,DL)和强化学习(Reinforcement Learning,RL)的快速发展,深度强化学习(Deep Reinforcement Learning,DRL)算法广泛应用于移动机器人路径规划和避障。

一、网络建立

1. 输入层 (input)

  • 输入尺寸:10×10×1 图像,表示输入是一个 10×10 的灰度图像。
  • 归一化:使用 "zerocenter" 归一化,即将输入数据的均值调整为零,通常用于加速训练和提高模型性能。

2. 卷积层 (con1)

  • 卷积核:16 个 3×3 的卷积核,步幅为 [1, 1],填充为 [0, 0, 0, 0]。
  • 输出尺寸:8×8×16。
  • 可学习参数
    • 权重:3×3×1×16(每个卷积核有 3×3×1 个参数,共 16 个卷积核)。
    • 偏置:1×1×16(每个卷积核有一个偏置)。
  • 作用:提取图像的局部特征,如边缘、纹理等。

3. ReLU 激活函数 (relu1)

  • 激活函数:ReLU(Rectified Linear Unit),将负值置零,保留正值。
  • 输出尺寸:8×8×16。
  • 作用:引入非线性特性,避免梯度消失问题。

4. 全连接层 (fc1)

  • 输出尺寸:1×1×64。
  • 可学习参数
    • 权重:64×1024(将 8×8×16 的特征映射到 64 个神经元)。
    • 偏置:64×1。
  • 作用:将卷积层提取的特征映射到更高维度的空间,用于更复杂的特征表示。

5. ReLU 激活函数 (relu3)

  • 激活函数:ReLU。
  • 输出尺寸:1×1×64。
  • 作用:引入非线性特性。

6. 扁平化层 (flatten)

  • 输出尺寸:64×1。
  • 作用:将多维数据展平为一维,以便输入到后续的 BiLSTM 层。

7. 双向 LSTM 层 (BiLSTM)

  • 隐藏单元:20 个隐藏单元。
  • 输出尺寸:40×1。
  • 可学习参数
    • 输入权重:160×...(具体取决于输入和隐藏单元的维度)。
    • 循环权重:160×...(用于处理时间序列的循环连接)。
    • 偏置:160×...。
  • 作用:处理序列数据,捕捉时间序列的前后依赖关系。双向 LSTM 可以同时利用过去和未来的上下文信息。

8. ReLU 激活函数 (relu)

  • 激活函数:ReLU。
  • 输出尺寸:40×1。
  • 作用:引入非线性特性。

9. 全连接层 (fc2)

  • 输出尺寸:8×1。
  • 可学习参数
    • 权重:8×40(将 40 个特征映射到 8 个输出)。
    • 偏置:8×1。
  • 作用:将 BiLSTM 的输出映射到最终的预测结果。

10. 输出层 (output)

  • 输出类型:回归输出。
  • 损失函数:均方误差(Mean Squared Error, MSE),响应为 "Response"。
  • 输出尺寸:8×1。
  • 作用:输出最终的回归结果,通常用于预测连续值。

这个网络结构结合了卷积神经网络(CNN)和双向 LSTM(BiLSTM),共包含79.6k个学习参数,用于近似Q值函数。网络输入是地图状态,输出是8个方向动作的Q值,用于指导机器人选择最优动作。

二、部分MATLAB代码及结果

bash 复制代码
close all
clear all;
clc;
%% 地图map
global map;
map=[0	0	0	0	0	0	1	0	0	0;
0	0	0	0	0	0	1	0	0	1;
0	0	0	0	0	0	0	0	0	1;
0	1	1	0	0	0	0	0	0	0;
0	1	0	0	0	1	0	0	0	0;
0	0	0	0	0	1	1	0	0	1;
1	0	0	0	0	0	1	0	0	1;
0	0	0	0	0	0	0	0	0	0;
0	0	0	0	0	0	0	0	0	0
0	1	1	1	0	0	0	0	0	0];

%% 画图
analyzeNetwork(dqn_net)

figure
plot(curve,'r-',LineWidth=2);
saveas(gca,'11.jpg')

figure
imagesc(~map)
hold on
plot(state_mark(:,2),state_mark(:,1),'c-',LineWidth=2);
colormap('gray')
scatter(start_state_pos(2) ,start_state_pos(1),'MarkerEdgeColor',[0 0 1],'MarkerFaceColor',[0 0 1], 'LineWidth',1);%start point
scatter(target_state_pos(2),target_state_pos(1),'MarkerEdgeColor',[0 1 0],'MarkerFaceColor',[0 1 0], 'LineWidth',1);%goal point
text(start_state_pos(2),start_state_pos(1),'起点','Color','red','FontSize',10);%显示start字符
text(target_state_pos(2),target_state_pos(1),'终点','Color','red','FontSize',10);%显示goal字符
title('基于DQN的机器人路径规划')
saveas(gca,'12.jpg')


三、完整MATLAB代码见下方名片

相关推荐
数据与人工智能律师8 分钟前
互联网法院在NFT、元宇宙等新兴领域的规则创新
大数据·网络·人工智能·算法·区块链
一颗星星辰1 小时前
网络安全专题 | 第十章 | 防火墙基础配置 | 安全策略
服务器·网络·web安全
mit6.8241 小时前
[Linux_69] 数据链路层 | Mac帧格式 | 局域网转发 | MTU & MSS
网络·智能路由器
a康康康2 小时前
华为策略路由
网络
XuX033 小时前
MATLAB制作折线图:从入门到精通(上)
开发语言·matlab
久绊A3 小时前
HTTP/HTTPS协议(请求响应模型、状态码)
网络
鸡哥爱技术4 小时前
网工实验——静态路由与BFD联动
网络
一袋米扛几楼984 小时前
【网络】什么是串口链路(Serial Link)?
网络·智能路由器
zzr9155 小时前
多线程网络编程:粘包问题、多线程/多进程服务器实战与常见问题解析
linux·运维·服务器·网络·ubuntu
passionSnail5 小时前
《MATLAB实战训练营:从入门到工业级应用》高阶挑战篇-《5G通信速成:MATLAB毫米波信道建模仿真指南》
开发语言·5g·matlab