机器人路径规划:基于Q-learning算法的移动机器人路径规划,可以自定义地图,修改起始点,提供MATLAB代码

一、Q-learning算法

Q-learning算法是强化学习算法中的一种,该算法主要包含:Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息,来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果,因此在Q-learning算法中更新Q表就是机器人与环境的交互过程。机器人在当前状态s(t)下,选择动作a,通过环境的作用,形成新的状态s(t+1),并产生回报或惩罚r(t+1),通过式(1)更新Q表后,若Q(s,a)值变小,则表明机器人处于当前位置时选择该动作不是最优的,当下次机器人再次处于该位置或状态时,机器人能够避免再次选择该动作action. 重复相同的步骤,机器人与环境之间不停地交互,就会获得到大量的数据,直至Q表收敛。QL算法使用得到的数据去修正自己的动作策略,然后继续同环境进行交互,进而获得新的数据并且使用该数据再次改良它的策略,在多次迭代后,Agent最终会获得最优动作。在一个时间步结束后,根据上个时间步的信息和产生的新信息更新Q表格,Q(s,a)更新方式如式(1):

式中:st为当前状态;r(t+1)为状态st的及时回报;a为状态st的动作空间;α为学习速率,α∈[0,1];γ为折扣速率,γ∈[0,1]。当α=0时,表明机器人只向过去状态学习,当α=1时,表明机器人只能学习接收到的信息。当γ=1时,机器人可以学习未来所有的奖励,当γ=0时,机器人只能接受当前的及时回报。

每个状态的最优动作通过式(2)产生:

Q-learning算法的搜索方向为上下左右四个方向,如下图所示:

Q-learning的训练过程如下:

1. 初始化Q值函数,将所有状态-动作对的Q值初始化为0。

2. 在每个时间步,根据当前状态选择一个动作。可以使用ε-greedy策略来平衡探索和利用。

3. 执行选择的动作,并观察环境返回的奖励和下一个状态。

4. 根据Q值函数的更新规则更新Q值。Q值的更新公式为:Q(s, a) = Q(s, a) + α * (r + γ * max(Q(s', a')) - Q(s, a)),其中α是学习率,γ是折扣因子,r是奖励,s是当前状态,a是选择的动作,s'是下一个状态,a'是在下一个状态下选择的动作。

5. 重复步骤2-4,直到达到停止条件。

Q-learning算法基本原理参考文献:

[1]王付宇,张康,谢昊轩等.基于改进Q-learning算法的移动机器人路径优化[J].系统工程,2022,40(04):100-109.

二、部分代码

close all
clear
clc
global maze2D;
global tempMaze2D;
NUM_ITERATIONS =500; % 最大训练次数(可以修改)
DISPLAY_FLAG = 0; % 是否显示(1 显示; 0 不显示)注意:设置为0运行速度更快
CurrentDirection = 4; % 当前机器人的朝向(1-4具体指向如下) 机器人只能上下左右移动,且每次只能移动一格,移动前需要判断是否转向
% 1 - means robot facing up
% 2 - means robot facing left
% 3 - means robot facing right
% 4 - means robot facing down

%% 起始点 坐标
startX=20;startY=1;
goalX=1;goalY=20;
%% 导入地图
data1=load('data.txt');
data1(find(data1==0))=50;
data1(find(data1==1))=0;
data1(startX,startY)=70;
data1(goalX,goalY)=100;
maze2D=data1;
orgMaze2D = maze2D;
tempMaze2D = orgMaze2D;
CorlorStr='gray';

三、部分结果

(1)第一次运行结果

白色栅格表示无障碍物,黑色栅格则表示有障碍物

机器人最终路径:
    20     1
    19     1
    19     2
    18     2
    17     2
    17     3
    17     4
    17     5
    16     5
    15     5
    14     5
    13     5
    13     6
    12     6
    11     6
    10     6
    10     7
     9     7
     9     8
     9     9
     9    10
     8    10
     7    10
     7    11
     7    12
     6    12
     5    12
     4    12
     3    12
     3    13
     2    13
     1    13
     1    14
     1    15
     1    16
     1    17
     1    18
     1    19
     1    20

机器人最终路径长度为 38
机器人在最终路径下的转向及移动次数为 71

(2)第二次运行结果

白色栅格表示无障碍物,黑色栅格则表示有障碍物

机器人最终路径:
    20     1
    19     1
    18     1
    18     2
    17     2
    17     3
    17     4
    17     5
    17     6
    16     6
    15     6
    15     7
    15     8
    15     9
    15    10
    14    10
    14    11
    14    12
    13    12
    12    12
    11    12
    10    12
     9    12
     9    13
     9    14
     9    15
     8    15
     8    16
     8    17
     8    18
     8    19
     7    19
     6    19
     5    19
     4    19
     4    20
     3    20
     2    20
     1    20

机器人最终路径长度为 38
机器人在最终路径下的转向及移动次数为 68

四、完整MATLAB代码

机器人路径规划:基于Q-learning算法的移动机器人路径规划的,可以自定义地图,修改起始点,提供MATLAB代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/557206.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式系列:适配器模式

简介 适配器模式(Adapter Pattern)又称为变压器模式,它是一种结构型设计模式。适配器模式的目的是将一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而不能一起工作的两个类能够一起工作。 适配器模式有两种…

润开鸿与蚂蚁数科达成战略合作,发布基于鸿蒙的mPaaS移动应用开发产品

4月18日,江苏润和软件股份有限公司(以下简称“润和软件”) 旗下专注鸿蒙方向的专业技术公司及终端操作系统发行版厂商江苏润开鸿数字科技有限公司(以下简称“润开鸿”)与蚂蚁数科举行战略合作签约仪式,并发…

腾讯后端一面:当 TCP 建立连接之后,TCP 和 UDP 的实时性是不是就差不多了?

更多大厂面试内容可见 -> http://11come.cn 腾讯后端一面:当 TCP 建立连接之后,TCP 和 UDP 的实时性是不是就差不多了? 项目相关 面试官可能是 Go 方向的,我面试的是 Java 方向的,所以面试官也没有问我简历上的项…

Uniswap丨justswap丨pancakeswap去中心化薄饼交易所系统开发

开发去中心化薄饼交易所系统(如Uniswap、JustSwap、PancakeSwap)是一个复杂而有挑战性的任务,需要综合考虑技术、安全、用户体验和合规等方面。以下是开发这样一个系统时需要考虑的关键方面: 1. 技术架构 智能合约开发&#xff1…

【智能算法】鸡群优化算法(CSO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2014年,X Meng等人受到鸡群社会行为启发,提出了鸡群优化算法(Chicken Swarm Optimization, CSO)。 2.算法原理 2.1算法思想 CSO算法的思想是基于对…

RIP小实验配置及缺省路由下发

配置如下: IP配置: IP配置完先查看RIP协议学习到的路由表,没有内容则代表没有开启RIP 启用RIP:这里的rip后跟的ID只具有本地意义,可以在1-65535之间随便取,不同路由器之间都可以取用不同的,为了…

PHP 基础

初识PHP 了解PHP 语言 PHP 语言标记 <h1>My Name is 123!</h1> <script>console.log("This message is from info.php!") </script> <?php // PHP 的开始标记&#xff0c;表示从此标记开始&#xff0c;进入PHP 模式。phpin…

SpringBoot 项目Docker部署三种方式

一种&#xff1a;直接拷贝jar到服务器部署 1.增加docker配置文件 新建Dockerfile文件&#xff0c;负责Docker的配置 FROM openjdk:21#ENV timezone RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo Asia/Shanghai >/etc/timezone# WORKD…

TCP和UDP协议的区别

1、定义 TCP协议的全称是Transmission Control Protocol&#xff08;传输控制协议&#xff09;&#xff0c;是一种面向连接的点对点的传输层协议。 UDP协议的全称是User Datagram Protocal&#xff08;用户数据报协议&#xff09;&#xff0c;为应用程序提供一种无需建立连接…

OpenHarmony音频和音乐编码格式—vorbis

简介 一种通用音频和音乐编码格式。 Vorbis编解码器规范属于公共领域。所有技术细节都已发布并记录&#xff0c;任何软件实体都可以充分利用该格式&#xff0c;而无需支付许可费、版税或专利问题。 下载安装 直接在OpenHarmony-SIG仓中搜索vorbis并下载。 使用说明 以OpenHa…

Qt6之QScopedPointer——智能指针

手动管理堆分配的对象困难且容易出错&#xff0c;当指针场景复杂时&#xff0c;手动delete难免出错&#xff0c;常见的结果是代码泄漏内存并且难以维护。是时候使用现代和安全的一些方法了&#xff0c;那就是使用智能指针&#xff0c;比如 QScopedPointer 或 std::unique_ptr&a…

idea新建一个springboot项目

本文分为几个部分&#xff0c; 首先是在idea中新建项目&#xff0c; 然后是配置 项目的目录&#xff08;新建controller、service、dao等&#xff09;&#xff0c; 然后是自定义的一些工具类&#xff08;比如启动后打印地址等&#xff09;。 1.、创建篇 新建项目&#xff0…

分享|视频号带货如何运营才能实现盈利?

在当今数字化时代&#xff0c;视频号带货已经不仅仅是一种商业手段&#xff0c;更是一种生活方式和社交体验。运营视频号带货并实现盈利&#xff0c;需要我们从多个角度进行深入思考和创新实践。 首先&#xff0c;从用户体验的角度出发 我们需要关注观众的观看体验和购物体验。…

游戏登录界面制作

登录界面制作 1.导入模块和初始化窗口 import subprocessimport tkinter as tkimport picklefrom tkinter import messageboxwindow tk.Tk()window.title(Welcome)window.geometry(450x300) 导入必要的模块&#xff0c;并初始化了主窗口window&#xff0c;设置了窗口的标题和…

STM32完成软件I2C通讯

今天的重点是利用STM32的软件方案和MPU60506轴姿态传感器建立通讯&#xff0c;今天只完成了简单的发送地址和接收应答的部分&#xff0c;特此记录一下过程&#xff0c;以后忘记可以随时翻出来看看。 先介绍最基本的I2C通讯的最基本的6个时序&#xff1a; 一&#xff1a;起始条…

【Yolov系列】Yolov5学习(一)补充2:自适应锚框计算详解+代码注释

一、自适应锚框计算详解 自适应锚框计算的具体过程&#xff1a; ①获取数据集中所有目标的宽和高。 ②将每张图片中按照等比例缩放的方式到 resize 指定大小&#xff0c;这里保证宽高中的最大值符合指定大小。 ③将 bboxes 从相对坐标改成绝对坐标&#xff0c;这里…

预印本仓库ArXiv——防止论文录用前被别人剽窃

文章目录 一、什么是预印本二、什么是ArXiv2.1 ArXiv的领域2.2 如何使用 一、什么是预印本 预印本&#xff08;Preprint&#xff09;是指科研工作者的研究成果还未在正式出版物上发表&#xff0c;而出于和同行交流目的自愿先在学术会议上或通过互联网发布的科研论文、科技报告…

SQL Server 2022 安装及使用

SQL Server 2022 前言一、安装SQL Server 2022下载SQL Server 2022安装SQL Server 2022配置SQL Server 2022 二、安装SQL Server Management Studio下载SQL Server Management Studio安装SSMS-Setup-CHS 三、使用SQL Server 2022四、解决连接到服务器报错问题 前言 SQL Serve…

轻松get!分享4种关于iPhone通话记录怎么查询的方法

想要轻松了解你的iPhone通话记录&#xff1f;通话记录怎么查询&#xff1f;不用担心&#xff0c;我们在这篇文章中将分享四种简单有效的方法&#xff0c;帮助你查询iPhone上的通话记录。 无论是查看最近的通话记录还是检索特定日期范围内的通话历史&#xff0c;这些方法都能帮…

AI:162-如何使用Python进行图像识别与处理深度学习与卷积神经网络的应用

本文收录于专栏&#xff1a;精通AI实战千例专栏合集 从基础到实践&#xff0c;深入学习。无论你是初学者还是经验丰富的老手&#xff0c;对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码&#xff0c;详细讲解供大家学习&#xff0c;希望可以帮到大家。正…