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

目录

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.mzph.cn/news/169670.shtml

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

相关文章

Can‘t find libdevice directory ${CUDA_DIR}/nvvm/libdevice

win10 Running deepxde 的时候出现问题: cuda-nvcc 安装后解决了。 # Install NVCC conda install -c nvidia cuda-nvcc11.3.58 -y # Configure the XLA cuda directory mkdir -p $CONDA_PREFIX/etc/conda/activate.d printf export LD_LIBRARY_PATH$LD_LIBRARY_P…

Python实现一箭穿心

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

【C++】内存管理(new与delete)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》 🌝每一个不曾起舞的日子,都是对生命的辜负 前言 本篇文章我们一起来学习C的内存管理方式&…

最新yolov8环境搭建、推理训练一站式超详细教学

1、获取yolov8源码 访问yolov8_github官网,网络不稳定时可能需要加速器。yolov8源码地址 获取方式:直接下载或者git工具克隆 我使用git操作进行演示,复制github上的地址(需提前关闭加速器)。 git clone https://github.com/ultralytics/ul…

【QML】Qt设置USB免驱相机曝光时间(Linux系统)UVC

1. 问题 使用QML的Camera组件创建相机。需要配置曝光时间,使用CameraExposure中的exposureCompensation,exposureMode配置无效果,原因可能是不支持USB相机。 有两种方法经测试有效果: 命令行调用v4l2-ctl命令的方法&#xff0c…

【XSLVGL2.0】如何做全局键功能和键值映射

XSLVGL2.0 开发手册 【XSLVGL2.0】如何做全局键功能和键值映射 1、概述1、概述 项目常见需要配置一个按键,并要求短按此按键回到首页, 长按此按键进行关机。 XSLVGL2.0在输入设备对接接口中,有一个回调,在此回调中可以直接收到输入设备上报的所有按键事件。 一般这个功能…

UI自动化(selenium+python)之元素定位的三种等待方式!

前言 在UI自动化过程中,常遇到元素未找到,代码报错的情况。这种情况下,需要用等待wait。 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverWait 一、固定等待(sleep) 导入time模块,设定固定的等待时间 缺…

计数问题+约瑟夫问题(map)

目录 一、计数问题 二、约瑟夫问题 一、计数问题 #include<iostream> #include<map> using namespace std; int main() {int n,x;cin>>n>>x;map<int,int>m;for(int i1;i<n;i){if(i>1 && i<10){m[i];}else{int temp i;while (…

解决github无法访问的办法

方法/步骤 1.问题描述&#xff1a;能联网但不能访问github.com 2.找到hosts文件。地址&#xff1a;C:\Windows\System32\drivers\etc &#xff08;一般是在这的&#xff09; 3.不要直接在这修改hosts文件&#xff0c;需要将hosts文件复制粘贴到桌面&#xff08;或其它地方自…

【仿写实现move函数】

仿写实现move函数 一、值的类型 1.左值 描述&#xff1a;能够取地址的值成为左值 int a 10; const int b 15; int *pa &a; const int *pb &b;2.纯右值 描述&#xff1a;赤裸裸的字面值 eg(false , 3 , 12.23等) int a 13; int *p &a; //取a的地址 int …

在线音频视频剪辑网站推荐

123apps: Online MP3 Cutter - Cut Songs, Make Ringtones

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

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

leaflet对线设置渐变色

效果展示&#xff1a; 引用leaflet-polycolor组件 npm install leaflet-polycolor .vue文件中使用 import leafletPolycolor from leaflet-polycolor; leafletPolycolor(L); const latLngs [[37.03, 111.92], [37.53444, 111.98555], [36.88, 112.12], [37.53444, 112.24], […

MT6893_天玑 1200芯片规格参数介绍_datasheet规格书

天玑 1200(MT6893)是一款专为旗舰级全新5G芯片&#xff0c;它融合了先进的AI、相机和多媒体技术&#xff0c;为用户带来令人惊叹的体验。采用先进的6纳米制程设计&#xff0c;内置各种先进技术。该芯片采用旗舰级的八核CPU架构设计&#xff0c;支持16GB强大的四通道内存以及双通…

CDN 加速 - 隐藏真实 IP - 复活 IP

CDN 一词相信很多朋友都不会陌生,网上也经常会看到相关报道。或许大部分人都知道 CDN 加速可以提升网站的打开速度及用户下载资源的速度,而同时也有不少朋友还不清楚 CDN 是什么?有什么用途?它是如何实现加速的呢?下面为大家整理了一些通俗易懂的知识点。 顺哥轻创 CDN …

每日一练:“打家劫舍“(House Robber)问题 II

有想要了解打家劫舍初级问题的&#xff0c;可以点击下面链接查看&#xff01; 每日一练&#xff1a;“打家劫舍“&#xff08;House Robber&#xff09;问题 I 1. 问题 假设有房屋形成一个环形&#xff0c;即第一个房屋和最后一个房屋也相邻&#xff0c;每个房屋里都存放着一定…

Leetcode—83.删除排序链表中的重复元素【简单】

2023每日刷题&#xff08;四十&#xff09; Leetcode—83.删除排序链表中的重复元素 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* deleteDuplicates(struct ListNode* head) {i…

c#处理SQLSERVER 中image数量类型为空

项目场景&#xff1a; DataRow dataRow dataTable.Rows[i]; var pxpicture dataRow ["pxImage"];if (pxpicture!null){byte[] pic (byte[])pxpicture;acs.Add("pxpicture", Convert.ToBase64String(pic));}问题描述 代码执行出现错误&#xff1a; 无…

MySQL 执行计划分析

MySQL执行计划最核心字段是 type 字段&#xff0c;用于描述优化器在执行查询时查找记录的方式。 其字段值较多&#xff0c;可分为 3 类加以理解&#xff1a;全表查询、范围查询、等值查询 全表查询 All&#xff1a;全表扫描&#xff0c;MySQL会扫描整个聚簇索引来找到匹配的行…

【Docker】Docker 仓库管理和Docker Dockerfile

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