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

news2024/12/23 10:57:57

一、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代码

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(十八)C++自制植物大战僵尸游戏的游戏暂停实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/uzrnw 游戏暂停 当玩家遇到突发事件,可以通过暂停功能暂停游戏,以便及时处理问题。在激烈的游戏中,玩家可能需要暂停游戏来进行策略调整。此外,长时间的游戏对战可能会让玩…

开源相机管理库Aravis例程学习(二)——连续采集multiple-acquisition-main-thread

开源相机管理库Aravis例程学习(二)——连续采集multiple-acquisition-main-thread 简介例程代码函数说明arv_camera_set_acquisition_modearv_camera_create_streamarv_camera_get_payloadarv_buffer_newarv_stream_push_bufferarv_camera_start_acquisi…

一周IT资讯

又降了?运维4月平均月薪1W6? 薪资作为大部分人的主要收入来源,是每个人最关注的话题之一。 最近,小编搜索了近半年的运维薪资趋势,看看你的钱包缩水了没? *数据来自看准网 据了解,运维2024年…

【6】DongshanPI-Seven 应用开发_多线程编程记录

目录 1、多线程编程1.1 测试程序 1.2 测试结果 1、多线程编程 在Linux系统中,调度是以线程为单位的,资源分配是以进程为单位的。多进程是指多个main()函数的程序,多线程,只有1个main()函数。进程和线程是多任务操作系统中的两种不…

Linux 基于 UDP 协议的简单服务器-客户端应用

目录 一、socket编程接口 1、socket 常见API socket():创建套接字 bind():将用户设置的ip和port在内核中和我们的当前进程关联 listen() accept() 2、sockaddr结构 3、inet系列函数 二、UDP网络程序—发送消息 1、服务器udp_server.hpp initS…

【Flutter】自动生成图片资源索引插件一:FlutterAssetRefGenerator

介绍 FlutterAssetRefGenerator 插件:windows上 点击生成图片索引按钮后,pubspec.yaml 会出现中文乱码,需要手动改乱码;mac上没问题。 优点:点击图标自动生成。 目录 介绍一、安装二、使用 一、安装 安装FlutterAsset…

ubunt18.04安装ROS2

本文无废话,实现了ubunt18.04 下ros2的安装,并且同时兼容ros和ros2 如果想完ros(1)的,请参考我的前一篇文章:ubunt18.04安装ROS避坑指南 参考: https://blog.csdn.net/cau_weiyuhu/article/deta…

2024年【A特种设备相关管理(锅炉压力容器压力管道)】考试内容及A特种设备相关管理(锅炉压力容器压力管道)操作证考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年A特种设备相关管理(锅炉压力容器压力管道)考试内容为正在备考A特种设备相关管理(锅炉压力容器压力管道)操作证的学员准备的理论考试专题,每个月更新的…

5.Godot节点和功能及Node节点属性分析

1. 节点和功能的关系 节点 Node ,用于实现一种功能,例如,Sprite 节点,用于图片的显示一个节点的功能取决于它挂载了哪些子节点,它包含了哪些功能的子节点,就包含了对应子节点表示的功能节点是可选的&#…

Dota2 参议院

题目链接 Dota2 参议院 题目描述 注意点 senate[i] 为 ‘R’ 或 ‘D’假设每一位参议员都足够聪明,会为自己的政党做出最好的策略 解答思路 对于任意一位参议员,如果其有权利,当他后面没有另一方参议员,其会投票,…

小红书笔记写作方法和技巧分享,纯干货!

很多小伙伴感叹小红书笔记流量就是一个玄学,有时精心撰写的笔记却没有人看,自己随便写的笔记却轻轻松松上热门。实际上你还是欠点火候,小红书笔记写作是有一套方法和技巧的,总归是有套路的,如果你不知道,请…

C++ 数据结构 linux 【第一天】

1.命名空间 在C/C中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作 用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字…

【MIT6.824】lab3 Fault-tolerant Key/Value Service 实现笔记

引言 lab3A的实验要求如下: Your first task is to implement a solution that works when there are no dropped messages, and no failed servers. You’ll need to add RPC-sending code to the Clerk Put/Append/Get methods in client.go, and implement Pu…

✌粤嵌—2024/4/12—插入区间✌

代码实现: 解题思路:先将数组 newInterval 插入到数组 intervals 的末尾,再转换成合并区间 /*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returne…

组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测

组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测 目录 组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测预测效果基本介绍程序设计参考资料预测效果 基本…

两个查国内产业信息新闻数据的必备网站

产业经济信息网:产业经济信息网由报业协会主管主办,成立于1997年,是由报业行业报委员会发起,几十家权威行业媒体共同组建的、国内最大的行业信息发布网站之一。网站所拥有的“产经数据库”容纳了54家行业媒体的信息数据200多万条&…

Nextjs学习入门 - 创建第一个项目

1 通过npx创建一个nextjs项目 通过命令创建: npx create-next-applatest 得到如下项目结构图: my-app- src //源代码目录- app //引用目录- favicon.ico //网站图标- globals.css //全局css- layout.tsx //布局文件- page.tsx //页面 路径"…

C语言C/S架构PACS影像归档和通信系统源码 医院PACS系统源码

C语言C/S架构PACS影像归档和通信系统源码 医院PACS系统源码 医院影像科PACS系统,意为影像归档和通信系统。它是应用在医院影像科室的系统,主要的任务是把日常产生的各种医学影像(包括核磁、CT、超声、各种X光机、各种红外仪、显微…

YOLO-World——S(cvpr2024)

文章目录 Abstract成果 MethodPre-training Formulation: Region-Text PairsModel ArchitectureYOLO DetectorText EncoderText Contrastive HeadTraining with Online VocabularyInference with Offline Vocabulary Re-parameterizable Vision-Language PANText-guided CSPLay…

JavaSE 有这一篇就够(呕心狂敲41k字,只为博君一点赞!)

目录 一. 基础语法 1. 数据类型 2. 基本数据类型转换 3. 运算符 3. 循环语句 5. 定义方法 6. 数组 二. 面向对象 1. 类和对象 2. 构造方法 3. 方法的重载 4. this关键字 5. static关键字 6. 代码块 7. 访问权限修饰符 8. 面向对象的三大特征 封装 继承…