移动机器人路径规划(七)--- 基于MDP的路径规划MDP-Based Planning

news2024/12/23 3:11:17

目录

1 什么是MDP-Based Planning

2  worst-case analysis for nondeterministic model

3 Expected Cost Planning

4  Real Time Dynamic Programming(RTDP)


1 什么是MDP-Based Planning

        之前我们从起点到终点存在很多可执行路径,我们可以通过执行的时候根据环境的变化去选择最优的路径。

        到目前为止,我们假设机器人是在理想情况下进行的planning(机器人的执行是完美的、机器人的估计是完美的)。

        用上面两幅图说,我们规划一个地点到另一个地点的路线,我们假设让机器人走一个格子它就走一个格子。右图的话我们假设精准的反映环境的情况,估计好位姿以后,假设机器人精准的到了终点的位姿不存在意外情况。

        实际并非如此:

        当在实际应用中,执行和状态估计都不是完美的。

         • 执行不确定性:打滑、崎岖地形、风、空气阻力、控制误差等。

         • 状态估计不确定性:传感器噪声、校准误差、不完美估计、部分可观测性等。

        不确定性可以从机器人的视角分为两类,这表明机器人可以利用多少信息。

        不确定性模型

        • 非确定性:机器人不知道会有什么类型的不确定性或干扰被添加到其行为(下一步动作)中。(偏移目标点非常远受自然环境影响)

         • 概率性:机器人通过观察和收集统计数据对不确定性有一定估计。(运行一部分后直到自己受干扰程度)

        为了正式描述这个概念,我们首先引入两个决策者来模拟不确定性的产生,然后是带有不确定性的规划类型。

        决策者(游戏参与者):

         • 机器人是主要的决策者,根据完全已知的状态和完美执行进行规划。

         • 自然界向机器人制定的计划添加不确定性,这对机器人来说是不可预测的。

        Formalization-7.1:与自然界的博弈(独立博弈)
• 非空集合 U 称为机器人行动空间(robot action space)。每个 u ∈ U 被称为机器人行动。
• 非空集合 Θ 称为自然界行动空间(nature action space)。每个 θ ∈ Θ 被称为自然界行动。
• 函数 L:U × Θ → R ∪ {∞},称为成本函数(cost function)或负奖励函数。

        Formalization-7.2:自然界了解机器人行动(依赖博弈)
        • 非空集合 U 称为机器人行动空间。每个 u ∈ U 被称为机器人行动。
        • 对于每个 u ∈ U,有一个非空集合 Θ(u) 称为自然界行动空间。
        • 函数 L:U × Θ → R ∪ {∞},称为成本函数或负奖励函数。
        在机器人与自然界进行博弈时,对机器人来说什么是最佳决策?

        一步最坏情况分析(One-step Worst-Case Analysis)
        • 在非确定性(Nondeterministic)模型下,独立博弈中的 P(θ) 和依赖博弈中的 P(θ|u_k) 是未知的;
        • 机器人无法预测自然界的行为,并假设它恶意地选择会使成本尽可能高的行动;
        • 因此,假设最坏情况下做出决策是合理的。

        我们穷举所有的nature action space,从中筛选出最不利的这种情况让机器人执行这个动作将最不利降到最低。

        • 在概率模型下,独立博弈中的 P(θ) 和依赖博弈中的 P(θ|u_k) 是已知的;
        • 假设已经观察到了应用的自然界行动,并且自然界在选择行动时采用了随机化策略。
        • 因此,我们优化获得平均成本(average cost to be received)。

        机器人每执行一个动作,环境会对齐施加各种影响,我们去求一下各种影响的期望选择让期望值最小的一个动作。

        多步的情况下呢?

        Formalization-7.2:带有自然界的离散规划
1. 具有初始状态 x_s 和目标集合 X_F ⊂ X 的非空状态空间 X。
2. 对于每个状态 x ∈ X,有一个有限且非空的机器人行动空间 U(x)。对于每个 x ∈ X 和 u ∈ U(x),有一个有限且非空的自然界行动空间 Θ(x, u)。

 3.状态转移函数 f (x, u, θ) 对于每个 x ∈ X, u ∈ U,和 θ ∈ Θ(x, u):

4.一组阶段(机器人不由但一阶段表示),每个阶段用 k 表示,从 k = 1 开始并无限持续,或者在最大阶段 k = K + 1 = F 结束。

5.一个阶段叠加的成本函数 L。让 x̃ F,ũ k,θ̃ K 表示截止到第 K 阶段的状态历史、机器人行动和自然界行动:

        马尔可夫决策过程(MDP)
        在学习领域,MDP 是一个 4 元组 (S, A, P, R),在规划领域则是 (X, U, P, L):
        • S 或 X 是状态空间,
        • A 或 U 是(机器人)动作空间,
        • P(x_k+1 |x_k, u_k) 是概率模型下的状态转移函数,在非确定性模型下退化为一个集合 X_k+1 (x_k, u_k),
        • R(x_k, x_k+1) 是即时奖励,或者是由于 u、θ 从 x_k 过渡到 x_k+1 的负一步成本 −l(x_k, u_k, θ_k)。
        面对不确定性进行规划的第一个难题在于用 MDP 模型适当地形式化我们的问题。

        机器人从x_I移动到x_G,状态空间就是布满黑点的区域。动作空间就是五种(停留在原地、上下左右)。

        nature的动作空间:

        1.我们假定机器人在x_k这个位置执行了u_k动作含一个随机的高斯误差。(连续)

        2.对nature的动作空间进行离散化的定义,机器人在x_k这个位置执行了u_k动作加上一个额外的动作。(离散)

        代价函数l:下一个状态与当前状态的距离差。

        我们希望找一个路径(以最小的代价移动到目标位置)。

        \pi是状态空间到动作空间的一个映射,它规定了在什么状态下我应该执行一个什么样的动作,是一个离散集合的形式。

        定义衡量policy好坏的变量:

33

2  worst-case analysis for nondeterministic model

        我们拿一个具体的例子:

        第K+1步最优的cost to go已经知道了,我们现在在当前状态x_k机器人执行了特征的动作u_k,机器人能从这个x_k转移到具体的哪个x_{k+1}是由\theta _k决定的。我们找一个\theta _k使得单步的cost加上K+1的cost to go和最大的\theta _k,我们再去选择cost最小的u_k

        我们假设终点处的cost to go是0,其他地方未知。S3来说,cost to go为0+1。s1来说,只有一个u,但是有两个\theta,一个是单步2 + 终点0,另一个分支的话 2 + s2的cost to go(还未计算)。

        从终点到起点迭代求解。

        举一个例子:

        首先我们将G(x_F) \leftarrow 0,其他的设置为无穷,将openlist初始化为S_g

        下一次待扩展状态为S_g。下一步找其前继节点。

        对于s_3,计算G(x_k = s_3) = 1 + G(x_{k+1} = s_g),openlist添加s_3

        对于s_1G^{*}_{k}(x_k=s_1) = min \{max \{2+0,2+inf \} \}(inf.....不能更新,无法放入openlist),G^{*}_{k}(x_k=s_3) = min\{ 1+0 \}

        对于s4,相同的。

        对于s2,也是相同的。不过它有两个前继节点S_s,s_1。先对S1进行处理:

        最后更新Ss:

        优点、缺点:

 

3 Expected Cost Planning

        那么问题来了?

        我们来看算法描述:

        举个例子把:

        首先我们把G \ value初始化为0。选择一个迭代顺序s_1 -> s_2 ->s_3->s_4->s_5。       

        先来看s_1的更新:

        在来看s_2的更新:

        在来看s_3的更新:

        在来看s_4的更新:

        最后对s_s的更新:

        经过一轮之后我们有了G。我们接着进行第二轮迭代:

        。。。。第三次迭代

        如何判断收敛?边界条件??如何改进??迭代次序怎么来改进??

        优点&缺点:

        1.反映的是平均的水平

        2.不一定是最优

4  Real Time Dynamic Programming(RTDP)

        看看实际例子吧:

        根据每个节点到s_g的数量进行更新。

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

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

相关文章

可验证随机函数(VRF)

文章目录 一、背景以及场景共识发展第一代 POW “以力取胜”第二代 POS/DPOS “民主投票”第三代 VRF “运气抽签” 二、可验证随机函数(VRF)快速开始1. VRF是什么?2. MD5 hash函数和VRF(Verifiable Random Function)区别3. VRF-…

日历视图,轻松解决时间管理难题丨三叠云

日历组件 路径 仪表盘设计 >> 组件 功能简介 仪表盘新增「日历」组件。日历组件是以日历图的形式去呈现数据的一种方式,支持【列表模式】和【面板模式】。 【列表模式】: 通过日历方式筛选数据,数据将会以列表的方式呈现。 【面…

视频图片提取秘籍:从指定时长中提取想要的视频封面

在如今的内容丰富的互联网世界中,视频已经成为大家获取信息、娱乐和交流的重要方式之一。而视频的封面或图片,作为视频内容的“名片”,往往决定了观众是否愿意点击和进一步了解视频内容。视频图片提取,通常也被称为视频封面提取&a…

Python实现一箭穿心

文章目录 🎄效果🏳️‍🌈Turtle模块🌹代码🌺代码讲解 🎄效果 🏳️‍🌈Turtle模块 Turtle是一个绘图工具,是Python标准库中的一个模块。它提供了一种简单而直观的方式来创…

【教学类-06-10】20231125(55格版)X-Y之间“乘法*题”(以1-9乘法口诀表为例)(0-9乘法口诀表 最大81)

图片展示 (随机打乱排序) 正序 背景需求: 2023年11月24日,准备了一些题目,分别给大4班孩子介绍“5以内加法、5以内减法、5以内加减混合”““10以内加法、10以内减法、10以内加减混合”“”20以内加减混合“七款学具…

Datax安装部署及读取MYSQL写入HDFS

一.DataX简介 1.DataX概述 DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 源码地址:https://github.com/alibaba/Data…

openpnp - 丝杠安装调整的总结

文章目录 openpnp - 丝杠安装调整的总结概述笔记发现的问题 - X轴有回差发现的问题 - 丝杠两边的轴承座中心有高差(不同轴)备注END openpnp - 丝杠安装调整的总结 概述 设备定制回来后, 丝杠没敢动(开始是小白, 也没发现丝杠的相关问题. 因为看到同学自己安装丝杠那么痛苦, 最…

【刷题宝典NO.5】

有效的括号 https://leetcode.cn/problems/valid-parentheses/ 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必…

数仓中数据清洗的方法

在数据采集的过程中,需要从不同渠道获取数据并汇集在数仓中,采集的原始数据首先需要进行解析,然后对不准确、不完整、不合理、格式、字符等不规范数据进行过滤清洗,清洗过的数据才能更加符合需求,从而使后续的数据分析…

5、LED流水灯

LED流水灯 思路&#xff1a;每次LED灯熄灭后&#xff0c;下一个LED灯亮 #include <REGX52.H> #include <INTRINS.H>void Delay500ms() //12.000MHz {unsigned char i, j, k;_nop_();i 4;j 205;k 187;do{do{while (--k);} while (--j);} while (--i); }void m…

3.读取字符串【2023.11.25】

1.问题描述 请使用 input 函数读取一串字符串&#xff0c;然后将其输出。 2.解决思路 输入一行字符串。 将读入的变量输出。 3.代码实现 strinput("请输入一个字符串") print(str)4.运行结果

brat文本标注工具——安装

目录 一、Linux系统安装 1. centOS系统 2. Ubuntu系统 3. macOS系统 4.说明 二、Google Chrome安装 1. 打开命令行&#xff0c;切换到管理者权限 2. 安装依赖 3. 下载Google浏览器的安装包 4. 安装Google Chrome 三、yum更新 四、Apache安装 安装Apache 启动Apac…

【Python百宝箱】Python轻松操控邮件:SMTP、POP3和IMAP的魅力

前言 在数字时代&#xff0c;电子邮件作为信息传递的主要手段&#xff0c;对个人和企业的日常工作至关重要。Python提供了多个强大的库&#xff0c;使得电子邮件的发送和接收变得轻松而灵活。本文将深入介绍Python中与电子邮件相关的主要库&#xff0c;为读者提供从基础到高级…

局域网的网络ip不稳定问题

在局域网的多个设备&#xff0c;互相通信时好时坏&#xff0c;不稳定。 遭遇过的情况如下&#xff1a; 用两个开发板&#xff1a;972开发板1和2&#xff0c;网口同时互相ping&#xff0c;出现1ping 2通--此时2ping 1不通&#xff0c;过段时间&#xff0c;1ping2不通--但2ping又…

数据结构——堆的实现(详解)

呀哈喽&#xff0c;我是结衣。 堆的介绍 如果有一个关键码的集合K {k0,k1,k2,…,kn-1},把它的所有元素按照完全二叉树的顺序储存方式储存在一个一维数组中&#xff0c;并满足&#xff1a;Ki<K2i1且ki<K2i2(Ki>K2i1且Ki>-K2i2)i 1,2,3…,则称为小堆&#xff08;或…

Linux的基本指令(二)

目录 前言 学前补充 touch指令 mkdir指令 rmdir指令 rm指令 通配符* man指令 cp指令 mv指令(重要) 补充内容&#xff1a; 1、如何快速在Linux中写出代码 2、如何看待如此多的Linux指令 cat指令 前言 关于Linux的基本指令我们会分三到四篇文章进行分析&#xff0c…

【Docker】Docker 仓库管理和Docker Dockerfile

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

js无法请求后端接口,别的都可以?

在每个接口的控制器中加入以下代码即可&#xff1a; header(Access-Control-Allow-Methods:*); header("Access-Control-Allow-Origin:*"); 如果嫌麻烦可以添加在api初始函数里面

jpom学习

jpom学习 整理jpom 一键安装 部署会需要 mvn跟jdk环境 # 安装服务端和 jdk、maven 环境 yum install -y wget && \ wget -O install.sh https://jpom.top/docs/install.sh && \ bash install.sh Server jdkmvndocker安装 安装docker挂载方式安装 docker …