Motion Planning学习笔记一:配置空间、图、图搜索、图遍历

news2024/11/18 22:34:50

        学习高飞博士的路径规划课程所总结的学习笔记。

目录

1、配置空间(Configuration Space, C-space)

2、图(Graphs)

3、图搜索(Graph Search Basis)

3.1、总体框架

3.2、两种基本的图遍历算法

3.3、启发式搜索(Heuristic search)

3.4、移动的代价


1、配置空间(Configuration Space, C-space)

        首先解释一下机器人的工作空间这个概念,机器人的工作空间是指机器人所能达到的空间点的集合,在此空间中,机器人是有大小和形状的,因此很难进行运动规划。

        配置空间是学习路径规划的基础,绝大多数路径规划算法都是基于配置空间提出的。如下图,配置空间中,机器人将变成一个质点,而机器人本身的大小和形状将会与障碍物做一个结合,以便进行碰撞检测。

图1-1. 圆形机器人的工作空间与配置空间

图1-2 方形机器人的工作空间与配置空间

       图1-1和图1-2是两种简单的机器人在配置空间中的表示。需要注意的是,因为机器人在工作空间中可能存在多个自由度,这时候将其转换到配置空间就会变得很复杂。因此,实际上经常采用近似的表示方法,即将机器人看作一个球体,然后再到配置空间中以球体半径为长度膨胀所有障碍物,如图1-3。

图1-3. 无人机的配置空间

2、图(Graphs

        图是有节点和边的表达方式,节点与节点之间的关系:

        1)无向:机器人可以在任意连接的节点之间移动。

图2-1. 无向示意图

        2)有向:节点与节点只能根据箭头方向移动,例如图中机器人可以从节点S移动到节点A,但不能从节点A移动到节点S。

图2-2. 有向示意图

        3)权重:机器人在节点间移动的代价,代价可以是机器人移动的距离,也可以是机器人移动需要消耗的能量、时间等,可以根据问题自定义。

图2-3. 权重示意图

       对于任何一个路径规划的问题,必须先人为构造一个图。以下为两种常用地图:图2-4(a)为栅格地图,栅格地图每个节点之间天然形成了连接,栅格地图是基于搜索的路径规划方法用的地图;图2-4(b)为基于采样生成的地图,本身是只有障碍物而不具备任何节点,需要基于采样生成节点然后连接生成地图,是基于采样的路径规划方法用的地图。

   

(a)                                                                   (b)

图2-4. 两种常用地图。(a)栅格地图,(b)基于采样生成的地图

3、图搜索(Graph Search Basis

3.1、总体框架

  1. 建立一个容器,这个容器用以包含所有要访问的节点;
  2. 容器由初始节点进行初始化;
  3. 循环过程:
    1. 根据预先设定好的目的或指标弹出一个节点(访问一个节点);
    2. 拓展:获取所有该节点的相邻节点;
    3. 将这些相邻节点储存到容器中。
  4. 结束循环。

     两个问题:

        1、什么时候结束循环?

        两种可能:a)当容器是空的时候会结束循环;b)得到目标路径。

        2、如果图是循环的那该怎么办?(两个节点互通)

        为了防止死循环,可以新建一个容器,这个容器会包含所有已经被访问过的节点,这些节点不会被再次访问。

3.2、两种基本的图遍历算法

1)深度优先搜索(Depth First Search,DFS):后进先出(LIFO)

图3-1. 深度优先搜索示意图

特点:每次访问都会优先访问容器中(如图3-1中的栈)最深(后)的节点。通俗地讲,深度优先搜索会一条路径搜索到底(深),没有找到目标则回溯再搜索其他路径。

图3-2. 搜索示意图

图3-3. 深度优先搜索流程

        举例:假设S为起始节点,G为目标节点。图3-2、图3-3中,容器首先由初始节点S初始化,随后弹出S进行拓展有A、V,按照某种规则将它们依次放入容器中(假设先入A),则容器中有V、A;弹出V,进一步拓展有C、F,按照某种规则依次放入容器中(假设先入C),则容器中现有F、C、A;下一步弹出F,无拓展则回溯;之后弹出C,拓展可得Z,放入容器中;弹出Z,Z拓展有G,G为目标节点,则循环结束,返回该路径SVCZG。事实上,可以看出SADG才是最短路径,因此,深度优先搜索找到的路径可能不是最优解

       动图展示:

2)广度优先搜索(Breadth First Search,BFS):先进先出(FIFO)

图3-4. 广度优先搜索示意图

特点:每次访问都会优先访问容器中(如图3-4中的队列)最先进入的节点。通俗地讲,广度优先搜索会如图3-5中的树状图一层一层地搜索完,直到找到目标。

图3-5. 搜索示意图

图3-6. 广度优先搜索流程

        举例:图3-5、图3-6中,可以看出,与深度优先搜索从容器顶部弹出节点不同,广度优先搜索是从容器底部弹出节点的。容器首先由初始节点S初始化,弹出S进行拓展有A、V,按照某种规则将它们依次放入容器中(假设A先入容器),则容器中有V、A;弹出A,拓展有C、D,按照某种规则依次放入容器中(假设C先放入),则此时容器中有D、C、V;下一步弹出V拓展可得C、F,按照某种规则依次放入容器中(假设C先放入),此时容器中有F、C、D、C;弹出节点C,……。如此循环直至搜索到目标G这一层则结束循环返回路径。按图3-5来,则会在ZGZ这一层结束循环,返回路径为SADG,该路径为最短路径。广度优先搜索会找到全局最优路径。

       动图展示:

        以上可以看出,深度优先搜索和广度优先搜索都是遵循3.1中的总体框架进行的。

3)广度优先搜索VS.深度优先搜索:使用哪一种?

        上述动画展示可以看出,按照两种搜索方式的特点,广度优先搜索更有利于找到最短路径,因此将广度优先搜索作为图搜索的基础。

3.3、启发式搜索(Heuristic search

       前面提到的深度优先搜索和广度优先搜索是按照FIFO或者LIFO的方式将节点弹出容器。启发式搜索(贪心算法)与这两种不同的是,它弹出节点的方式是靠自定义的规则弹出的,这种规则称为启发(Heuristic)。启发的本质是猜测目标节点与当前节点有多近。注意这里说的是猜测,因为搜索过程中无法知道目标节点与当前节点的距离。如图3-7,一般合理的猜测有:1)欧式距离(Euclidean Distance),即两个节点间的距离(忽略障碍物);2)曼哈顿距离(Manhattan Distance),即两个点在标准坐标系上的绝对轴距总和。启发会引导节点到正确的方向,但必须容易计算,否则反而降低搜索效率。

图3-7. 欧式距离与曼哈顿距离的示意图

       动图展示(无障碍物):

       

 Greedy Best-First Search                    Breadth First Search

       动图展示(有障碍物):

      

 Greedy Best-First Search                    Breadth First Search

       总结:启发式搜索(贪心算法)在无障碍物的情况下可以快速地得到最优全局路径,具有很强的目的性,会优先拓展离终点更近的节点;相对应地,广度优先搜索算法是层层递进地找最优全局路径。然而,实际中是有很多障碍物的,在这种情况下,广度优先搜索算法虽然花了更多的时间找到路径,但所找到的路径是最优的;启发式算法快速地找到了路径,但所找到的路径确是次优的(局部最优)。这是因为启发式算法在估计当前点到终点的距离时是忽略障碍物的。

3.4、移动的代价

图3-8. 深度优先搜索/广度优先搜索地图

        事实上,深度优先搜索与广度优先搜索使用的地图节点间的边是有权重的,且所有边的权重是相同的,如图3-8。在这种地图上,深度优先搜索与广度优先搜索才能成功实施。然而,对于一个机器人搜索问题,地图上节点间的边权重通常都是不同的。对于这种情况,则需要其他算法来进行搜索,例如:Dijkstra和A*等,在下篇笔记中会分析。

 此处给出两个路径规划算法可视化的网址,以便理解:

1、PathFinding.js

2、Pathfinding Visualizer

注:以上部分图片截取自高飞博士课件,高飞博士的教学视频(Motion Planning for Mobile Robots)可在深蓝学院中找到。

(转载请标明源地址)

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

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

相关文章

漫谈大数据 - HiveSQL总结(二)查询操作

导语:HiveSQL各关键字详解,hive函数大全,类似于个人记录工具书,后续遇到其他的也会继续加进来。 有关hive库表操作请见上篇:漫谈大数据 - HiveSQL总结(一)库表操作_昊昊该干饭了的博客-CSDN博客…

一条SQL如何被MySQL架构中的各个组件操作执行的?

文章目录 1. 单表查询SQL在MySQL架构中的各个组件的执行过程2. SELECT的各个关键字在哪里执行?3. 表关联查询SQL在MySQL架构中的各个组件的执行过程4. LEFT JOIN将过滤条件放在子查询中再关联和放在WHERE子句上有什么区别?5. 聚集索引和全表扫描有什么区…

推动开发者平台本土化,高通加速中国XR内容生态发展

随着VR和AR技术快速发展,产品不断成熟,体验也变得越来越优秀。据悉,Meta Quest系列VR头显出货量超2000万台,基本证明了VR开始在消费类电子产品中占据一席之地。与此同时,近两年AR眼镜也在逐渐升温,成为了创…

day17_异常

今日内容 零、 复习昨日 一、作业 二、异常 三、自定义异常 零、 复习昨日 见晨考,重点是String类的方法 StringBuffer和StringBuiler面试问 日期解析和格式化 int i Integer.parseInt(“111”); 一、作业 略,见答案二、异常 2.1 介绍 异常,就是程序出现的不正常的情况. 2.2…

RPA流程自动化技术在金融机构的落地方案详解

金融机构在面向数字化运营的转型过程中,需将智能流程自动化技术整合到数字化转型战略中,规划建设统一的企业流程自动化处理平台,作为数字化运营的辅助支撑类系统,明确流程治理方法和运营模式,确保足够的规模弹性&#…

【深度学习】Softmax回归及前馈神经网络

1 实验内容简介 1.1 实验目的 (1)熟练掌握tensor相关各种操作; (2)掌握广义线性回归模型(logistic模型、sofmax模型)、前馈神经网络模型的原理; (3)熟练掌…

第一章: uniapp引入axios异步框架

第一章: uniapp引入axios异步框架 在学习uniapp的过程中,发现uniapp框架默认集成request请求框架存在问题,发送请求时在header中塞入token值,而后台接收不到,也就是说uniapp默认的request请求框架,不支持在…

巨烽数字化采购项目启动,甄云助力医疗影像显示领军企业数智化升级

近日,医疗影像显示行业的领军者深圳市巨烽显示科技有限公司(以下简称“巨烽”)联合甄云科技举办数字化采购管理项目启动会,双方相关部门负责人及项目组成员参加了此次会议。 会上,就巨烽的数字化采购管理系统建设升级…

AI写作机器人-ai文章生成器在线

使用AI续写生成器,让内容创作事半功倍! 随着人工智能技术的不断进步和应用,AI续写生成器的出现为内容创作带来了全新的革命。这种技术可以让你的写作事半功倍,让你轻松生成高质量的文章和内容。在这篇文章中,我们将介绍…

如何伪原创-自媒体伪原创软件

批量文字伪原创的作用 批量文字伪原创是指通过对原文进行修改、改写、调整等方式,生成大量新的类似原文的文本。其作用主要包括以下几个方面: 提高文本的独创性:批量伪原创可以有效地避免大量相似内容的出现,从而提高文本的独创性…

我如何学习使用 Jetpack Compose 开发 Android 应用程序

我如何学习使用 Jetpack Compose 开发 Android 应用程序 Jetpack Compose 和 Android 开发简介 2021 年 7 月,Google 发布了用于为 Android 应用构建原生 UI 的全新工具包 1.0 版。Jetpack Compose 是 Android 开发人员的游戏规则改变者,因为它从通过 X…

C#如何解决项目打开问题 error : 找不到指定的 SDK“Microsoft.NET.Sdk.WindowsDesktop”

错误提示,问题描述 后来发现,直接安装rider还是不能解决解决(会自动配置关联(path等),甚至自动下载的,官方的visual studio反而不会,之后再详细看怎么弄了) VS2022项目…

IDEA 用上这款免费 GPT4 插件,生产力爆表了

大家好,我是一航! 早前给大家分享过GPT的一些玩法,但是依旧有很多铁子没有掌握魔法的奥秘,始终没有用上;前两天,一兄台分享给我一款 IDE 插件:Bito-ChatGPT ,安装就能直接在IDE中使…

如何选择合适的网络自动化工具

通过网络自动化工具实现网络自动化是所有网络组织的关键。如果没有合适的网络自动化工具,拥有由许多设备组成的大型网络环境的组织将无法执行重要操作,例如按时备份配置、实时跟踪不需要的更改以及遵守行业法规。当组织未能使用正确的网络自动化工具来执…

yolov8训练自己的数据集遇到的问题

训练分类模型 1.如何更改模型的类别数nc 根据本地模型配置文件.yaml可以设置nc 但是,这里无法用到预训练模型.pt模型文件,预训练模型的权重参数是在大数据集上训练得到的,泛化性能可能比较好,所以,下载了官方的分类…

Flink+Kafka、Pulsar实现端到端的exactly-once语义

End-to-End Exactly-Once Processing in Apache Flink with Apache Kafka 2017年12月Apache Flink社区发布了1.4版本。该版本正式引入了一个里程碑式的功能:两阶段提交Sink,即TwoPhaseCommitSinkFunction。该SinkFunction提取并封装了两阶段提交协议中的…

【离散数学】测试五 图论

1. n层正则m叉树一共有()片树叶。 A. nm B. mn C. mn 正确答案: B 2. 下图是一棵最优二叉树 A. 对 B. 错 正确答案: B 3. 要构造权为1,4,9,16,25,36,49,64,81,100一棵最优二叉树,则必须先构造权为5,9,16,25,36,49,64,81,100一棵最优二叉树. A. 对 B. 错 …

视频剪辑必备,这6个网站承包你一年的音效素材

视频剪辑中需要用到各种声音、音效素材,这些音效不仅能让你的视频更丰富,还能更好的表达视频内容,传递情绪让观者感到共鸣。很多朋友剪辑过程中为了找到好的配乐、音效,往往会花费大量的时间,找到了还有可能受版权限制…

装机必备(二补充)--Win10系统盘,装Win10系统(无法引导启动问题-找不到任务设备驱动程序。请确保安装介质包含正确的驱动程序)

对于联想的thinkpad,开机时候按F1来更改bios设置,F12是选择U盘引导启动 thinkpad如何进入bios界面_thinkpad怎么进入u盘启动-系统城 1 F1界面1.按→方向键移动到Security,将secure boot改成disabled,关闭安全启动&…

【数据结构】简单快速过一遍红黑树

文章目录 红黑树1 红黑树的概念2 红黑树的性质3 红黑树节点的定义4 红黑树的插入操作5 红黑树的验证6 红黑树与AVL树的比较7.C实现红黑树 红黑树 1 红黑树的概念 ​ 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,…