0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于图搜索的基础知识

新机器视觉 来源:新机器视觉 2023-05-22 14:20 次阅读

配置空间

机器人规划的配置空间概念:一个空间包含所有机器人自由度的机器人配置,描述为C-space

机器人配置:表示对机器人上面所以点的位置的描述

机器人自由度:规划的时候用最少的坐标数量去表示机器人配置,例如无人机规划,在微分平坦中进行规划则是xyzyaw四个变量,所以对于无人机轨迹规划来说有四个自由度。

机器人配置空间:一个空间包含所有机器人自由度的机器人配置,描述为C-space

任何可能的机器人的位姿在C-space中描述为一个点

配置空间的意义:

在工作空间中进行规划,机器人有不同的形状和大小,比如有圆形的或方形的碰撞检测需要知道机器人的外形,然后再做检测,这样是费时费力的。

10975d36-f77e-11ed-90ce-dac502259ad0.png

在配置空间中做规划

机器人在C-space中表示一个点,例如位置就是一个点属于R3一个位姿属于SO(3)

在配置空间中,机器人表示成了一个点,那么在配置空间中,障碍物也需要特殊的处理,把工作空间中的障碍物变成配置空间中的障碍物,被称为 配置空间障碍物或者C-obstacle这个工作是在运动规划前完成的,一次完成的工作。

10a7bdf2-f77e-11ed-90ce-dac502259ad0.png

障碍物安照机器人尺寸进行膨胀,上面机器人被设置成了一个点,只要点在障碍物外面,就不会发生碰撞

C-space是C-obstacle 和C-free组成的

经过配置空间的处理,路径规划变成了在C-free 中找到起点和终点的路径寻找。

在工作空间中,机器人有尺寸有形状,对于运动规划会带来困难,在配置空间中,机器人用一个点来描述,方便做运动规划

经过上述配置空间的操作,碰撞检测就进行了简化,这就是配置空间的意义。

10af5f6c-f77e-11ed-90ce-dac502259ad0.png

机器人被看做是一个球体,半径为r

对障碍物安照半径r进行膨胀,蓝色就是膨胀后的障碍物,然后就可以进行路径规划和生成。

图和图搜索算法的基本概念

图的基础概念

图是有节点和边的一种表达方式

10bd437a-f77e-11ed-90ce-dac502259ad0.png

各节点由边连起来

边可以是有向的,也可以无向的

10ca9836-f77e-11ed-90ce-dac502259ad0.png

边也可以有权重,如果没有特殊说明,可以认为权重是一样的。

下面则是有权重的

10d1b7ba-f77e-11ed-90ce-dac502259ad0.png

图搜索基本概念

对于任何一个图搜索算法,首先要构造一个图

10de53d0-f77e-11ed-90ce-dac502259ad0.png

上图是抽象概念里的图

对于实际场景,我们需要人为构造一个图,以下是两种简单的例子

10e5723c-f77e-11ed-90ce-dac502259ad0.png

栅格地图的路径规划,里面的节点和相邻的节点是具有连接关系的,所以本身就是一个图了

10f34a60-f77e-11ed-90ce-dac502259ad0.png

基于采样的,没有天然的节点关系,需要人为构造一个图在里面,例如上面就是通过算法构造的有节点和边组成的图

图搜索算法

搜索总是从起始状态Xs开始,到Xg结束

对于搜索节点,可以构建一个搜索树

10ff0724-f77e-11ed-90ce-dac502259ad0.png

右边和左边是等价的,只是写成了树状的结构,这样看彼此关系更加清晰点

从起点搜索到终点后,回溯整个搜索过程,就可以得到希望的搜索路径

对于实际机器人来说,构建整个空间的搜索树,代价很大,所以需要尽可能快,但是不失搜索路径的算法。

图搜索算法框架

所有的图搜索算法都是按照下面的框架进行的:

1、维护一个容器,装载将来有可能访问的一个节点

2、容器初始化为空,放入的第一个节点就是起始状态Xs

3、循环:根据预先定义的一个指标或者目的,从容器中弹出一个节点 ,称之为访问一个节点,获取弹出节点所有的邻居节点—扩展,将这些邻居节点装入容器

4、结束循环:访问到了结束状态,或者自定义的一个指标,结束循环

1106fee8-f77e-11ed-90ce-dac502259ad0.png

有两个下面的问题需要注意:

什么时候结束循环?

一种可能就是容器空了,这代表没有了我们将来要访问的节点了,遍历完了所有节点

搜索到了结束节点

如果这个图本身是有回环的呢?

为了在图搜索中避免形成回环,永远走不出去,需要再维护一个新的容器,该容器装载着已经被访问过的节点,被访问过的节点不能再次被访问

图搜索优化的方向就是:

按照什么规则去访问节点,按照什么规则弹出节点,使我们尽可能快的找到终止节点。

图遍历算法:

广度优先搜索

深度优先搜索

广度优先搜索遵循先进先出的原则,维护的是一个队列

1110c8c4-f77e-11ed-90ce-dac502259ad0.png

弹出元素,总是从队列的头弹出的

深度优先搜索遵循的是后进先出的原则,维护的是一个堆栈

11171fb2-f77e-11ed-90ce-dac502259ad0.png

弹出从最上面弹出,最后进入容器的,最先被弹出来

广度优先搜索(BFS)

特点:每次弹出层级最浅的一个节点,维护的是一个队列的结构

所以搜索过程是一层一层进行的

1122482e-f77e-11ed-90ce-dac502259ad0.png

最直观的理解就是一层一层的进行

BFS步骤的拆分:

11308678-f77e-11ed-90ce-dac502259ad0.png

这样的一个图结构,BFS的步骤是下面这样的

初始化容器是空的,首先放入开始节点S

113a22f0-f77e-11ed-90ce-dac502259ad0.png

弹出(访问)S节点,容器就再次变为空的

1140bbce-f77e-11ed-90ce-dac502259ad0.png

对S进行扩展,从图上上可以看出,S可以扩展的是dep

11480ee2-f77e-11ed-90ce-dac502259ad0.png

安照定义的规则,将扩展的节点以规则顺序放入容器中

1151ca86-f77e-11ed-90ce-dac502259ad0.png

与DFS区别就是,从下面弹出节点,先弹出p节点

115902b0-f77e-11ed-90ce-dac502259ad0.png

然后再进行循环

1160bb68-f77e-11ed-90ce-dac502259ad0.png

最终找到终止节点,结束循环,完成图搜索。

深度优先搜索(DFS)

特点:每次弹出的节点是最深层级的一个节点,维护的是一个堆栈

116b66f8-f77e-11ed-90ce-dac502259ad0.png

直观的理解就是没次把一个分支走到底

DFS步骤的拆分:

注意—维护的是一个栈的结构

117475cc-f77e-11ed-90ce-dac502259ad0.png

这样的一个图结构,DFS的步骤是下面这样的

初始化容器是空的,首先放入开始节点S

11806cf6-f77e-11ed-90ce-dac502259ad0.png

弹出(访问)S节点,容器就再次变为空的

11893368-f77e-11ed-90ce-dac502259ad0.png

对S进行扩展,从图上上可以看出,S可以扩展的是dep

11954de2-f77e-11ed-90ce-dac502259ad0.png

安照定义的规则,将扩展的节点以规则顺序放入容器中

119d281e-f77e-11ed-90ce-dac502259ad0.png

然后深度优先搜索是弹出容器中的,后入的节点(层级最深的),即d节点

然后再扩展d节点,将扩展节点放入容器,再弹出该弹出的节点,再扩展,再放入的循环操作

11a71220-f77e-11ed-90ce-dac502259ad0.png

最终找到终止节点,结束循环,完成图搜索。

BFS vs DFS

从最终的遍历结果图中,可以看到两者的区别

11b0ce8c-f77e-11ed-90ce-dac502259ad0.png

BFS是从开始节点一层一层的去向外扩展,直到扩展到了目标节点,然后回溯去找到最短路径。

DFS是从开始节点一条路走到头,去找到目标节点。

由结果来看,BFS 找到的路径是最短的

所以对应移动机器人,在做路径规划找最短路径时,做好的方法就是BFS。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    27044

    浏览量

    201426
  • 无人机
    +关注

    关注

    224

    文章

    9886

    浏览量

    174825

原文标题:移动机器人运动规划—基于图搜索的基础知识

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言基础知识科普

    C语言是单片机开发中的必备基础知识,本文列举了部分STM32学习中比较常见的一些C语言基础知识
    发表于 07-21 10:58 1701次阅读

    运放-2. 基础知识

    运放基础知识
    的头像 发表于 08-18 10:59 1838次阅读
    运放-2. <b class='flag-5'>基础知识</b>

    汽车电路识读基础知识

    汽车电路识读基础知识
    发表于 08-04 20:23

    labview基础知识

    labview基础知识labview基础知识labview基础知识labview基础知识
    发表于 03-08 17:56

    EMC基础知识

    EMC基础知识EMC基础知识---华为.pdf (440.74 KB )
    发表于 06-06 04:36

    鸿蒙移植必备的基础知识

    1. 基础知识移植内核对技术的要求比较高、比较细。1.1 单片机相关的知识栈的作用加载地址、链接地址重定位几个简单的硬件知识串口定时器中断的概念1.2 Linux操作相关的知识Linu
    发表于 07-01 06:35

    示波器基础知识

    第1章 示波器基础知识本章的内容整理自网络,主要讲解示波器的基础知识。如果初学的话非常有必要对这部分知识有一个了解。因为示波器是硬件调试必不可少的设备。1.1 什么是示波器1.2 示波器的发展史1.3 示波器的基础概念1.4 触
    发表于 08-09 07:21

    通信基础知识教程

    通信基础知识 1、电信基础知识2、通信电源技术3、配线设备结构、原理与防护4、防雷基础知识5、EMC基础知识6、防腐蚀原理与技术7、产品安
    发表于 03-04 16:48 33次下载

    电池基础知识(集全版)

    电池基础知识(集全版)  电池基础知识
    发表于 11-10 14:19 2175次阅读

    计算机基础知识介绍

    计算机基础知识计算机基础知识计算机基础知识
    发表于 12-03 16:13 0次下载

    使用Eclipse基础知识

    使用Eclipse 基础知识 使用Eclipse 基础知识 适合初学者学习使用
    发表于 02-26 10:30 0次下载

    嵌入式系统基础知识

    关于嵌入式系统基础知识关于嵌入式系统基础知识关于嵌入式系统基础知识
    发表于 03-03 16:58 5次下载

    第1讲 集成运放的基础知识

    运放的基础知识
    发表于 08-02 14:29 21次下载

    电源管理基础知识电源管理基础知识电源管理基础知识

    电源管理基础知识电源管理基础知识电源管理基础知识
    发表于 09-15 14:36 75次下载
    电源管理<b class='flag-5'>基础知识</b>电源管理<b class='flag-5'>基础知识</b>电源管理<b class='flag-5'>基础知识</b>

    优质LDO基础知识分享

    本节分享下LDO的基础知识,主要来源于Ti的文档《LDO基础知识》。
    的头像 发表于 03-26 11:03 990次阅读