深蓝 运动规划

2023-05-16

文章目录

  • 【CH1】 Introduction
    • 一. Motion Planning 概念
    • 二. Front-end:Path finding
      • 1. Search-based methods
      • 2. Sampling-based methods
      • 3. Kinodynamic Path Finding
    • 三. Back-end:Trajectory Optimization
      • 1. minimum-snap
      • 2. Hard constrained minimum-snap
      • 3. Soft constrained minimum-snap
    • 四. Map representation
      • 1. grid map
      • 2. octomap
      • 3. voxel hashing
      • 4. point cloud map
      • 5. TSDF map
      • 6. ESDF map
  • 【CH2】 Search-based path finding
    • 一. Configuration Space
    • 二. Graph and Search method
      • 1. overview
      • 2. graph traversal
    • 三. Heuristic search
      • 1. Greedy Best First Search
      • 2. Djikstra
      • 3. A *
      • 4. JPS
  • 【CH3】 Sample-based path finding
    • 一. PRM
    • 二. RRT
    • 三. Optimal sampling-based path planning methods
      • 1. RRT*
      • 2. Kinodynamic RRT*
      • 3. Anytime-RRT*
    • 四. Advanced Sampling-based Methods
      • 1. Informed RRT*
      • 2. Cross-entropy motion planning
  • 【CH4】Kinodynamic path finding
    • 一. State Lattice Planning
      • 1. sample in control space
      • 2. sample in state space
    • 二. Boundary Value Problem
      • 1.Optimal Boundary Value Problem
    • 三. Hybrid A*
    • 四. Kinodynamic RRT*

【CH1】 Introduction

一. Motion Planning 概念

机器人运动规划:

前端: path finding

  • search for an initial safe path
  • low dimensional
  • discrete space

path finding 找到一个 collision free 的运动路径。

后端: trajectory generation/optimization

  • search for an executable trajectory
  • high dimensional
  • continuous space

从前端得到一个低维,粗略的路径之后,使用优化的技巧,把它变成高维的,满足机器人动力学要求的,光滑连续,安全保证等要求的一个路径,称为轨迹 motion planning.

二. Front-end:Path finding

1. Search-based methods

2. Sampling-based methods

  • PRM
  • RRT
  • RRT*
  • Informed RRT*
    在这里插入图片描述

3. Kinodynamic Path Finding

  • State lattice seach
  • Hybrid A *
  • Kinodynamic RRT*
    在这里插入图片描述

三. Back-end:Trajectory Optimization

1. minimum-snap

在这里插入图片描述

2. Hard constrained minimum-snap

3. Soft constrained minimum-snap

四. Map representation

1. grid map

2. octomap

3. voxel hashing

在这里插入图片描述

4. point cloud map

5. TSDF map

Truncated Signed Distance Functions
体素存储的是传感器射线到测量物体表面的距离。具体:一个视锥的范围内,存储物体表面[-delta,delta]距离内的值。
在这里插入图片描述

6. ESDF map

Euclidean Signed Distance Functions

【CH2】 Search-based path finding

一. Configuration Space

机器人原来是在工作空间中,根据机器人的大小对障碍物进行膨胀,此时机器人可以看成一个点,都转到配置空间中。
在这里插入图片描述

二. Graph and Search method

1. overview

在这里插入图片描述

2. graph traversal

广度优先搜索(BFS)维护的容器是队列,深度优先搜索(DFS)维护的容器是堆栈
在这里插入图片描述

DFS:维护的是堆栈,节点先进后出。所以后加进来的节点会首先弹出来,然后扩展,再压进堆栈,不断循环,直观的理解就是会朝着某一个方向搜索,即深度优先。
在这里插入图片描述
BFS:维护的是队列,节点先进先出。先加进来的节点会首先弹出来,然后扩展,再压进堆栈,不断循环,直观的理解就是它是一层一层不断扩展搜索的,即广度优先。
在这里插入图片描述

三. Heuristic search

1. Greedy Best First Search

BFS 和 DFS 从容器中弹出节点是根据 " first in" 或者 “ last in ” 的规则。
贪心算法中,从容器中弹出节点的规则是自己定义的,叫做 heuristic

2. Djikstra

3. A *

4. JPS

Jump Point Search
核心:find symmetry and break them

【CH3】 Sample-based path finding

一. PRM

Probabilistic Road Map

第一个阶段:Learning phase

  • Sample N points in C-space
  • Delete points that are not collision-free
  • Connect to nearest points and get collision-free segments.
  • Delete segments that are not collision free

如下图所示:采样N个点,删除那些在障碍物内的点。然后把点与点连接起来,但是连接时对距离做一定的限制,如果连线超过一定的距离,就不连了。此外连线中经过障碍的也要删去。
在这里插入图片描述
第二个阶段:Query phase

  • Search on the road map to find a path from the start to the goal (using Dijkstra’s algorithm or the A* algorithm).
    在这里插入图片描述

此外:Lazy collision-checking

在learning 阶段判断采样点落入障碍物中比较费时,这里就不考虑采样点落入障碍物中。

具体过程: 这种 lazy 的方式,只采样点,然后生成连线,但是不考虑采样点碰到障碍物。首先搜索一条路径不考虑障碍物,搜索到路径之后把碰到障碍物的边和障碍物内的采样点删去,再重新搜索。
在这里插入图片描述

二. RRT

Rapidly-exploring Random Tree

实现步骤:首先得到一个采样点(蓝色的点),从起点向采样点移动一定的距离 δ \delta δ ,得到一个新的红色点,如若这个点是 collision free 的,就把这个点个这条边加入树中。
在这里插入图片描述
然后再采样得到一个点 X r a n d X_{rand} Xrand, 找到树上距离 X r a n d X_{rand} Xrand 最近的一个点 X n e a r X_{near} Xnear,然后 X r a n d X_{rand} Xrand 移动一定的距离得到 X n e w X_{new} Xnew, 如果 X n e w X_{new} Xnewcollision free 的就把 X n e w X_{new} Xnew E i E_{i} Ei 添加到树中。
在这里插入图片描述

三. Optimal sampling-based path planning methods

1. RRT*

2. Kinodynamic RRT*

3. Anytime-RRT*

四. Advanced Sampling-based Methods

1. Informed RRT*

最左边是路径轨迹的生成部分,但是生成之后不是在整个空间中进行随机点的采样了。把采样范围限制在一个椭圆内。以起点和终点做为椭圆的焦点,生成的路径做为椭圆的常数。随着在限制范围内采样,路径变的优化,同时随着路径变短,椭圆也会变扁,采样范围变小。
在这里插入图片描述

2. Cross-entropy motion planning

【CH4】Kinodynamic path finding

希望每两个节点之前是 feasible motion connections

两种方法:

  • forward direction :discrete in control space
    把控制空间离散

  • reverse direction :discrete in state space
    把机器人周围的状态离散,再找一条当前状态到周围状态的连接

两种方法比较:

在这里插入图片描述

一. State Lattice Planning

1. sample in control space

问题:离散出来的状态有一条碰到障碍物,其他的几条也很有可能碰到,如何让离散的状态尽量分得开。

在这里插入图片描述

2. sample in state space

直接把周围的状态离散出来,反算这条边是怎么连接上的。

二. Boundary Value Problem

通过边界条件(0时刻和T时刻)来解,会得到很多组解,不知道哪一个才是最优的。

1.Optimal Boundary Value Problem

(…一些上学期学的最优控制里的东西)。

三. Hybrid A*

实现的步骤: 和 A * 类似

在这里插入图片描述
启发函数的选择:
在这里插入图片描述
和 A * 的不同点:

  1. 启发函数的选择
  2. 根据离散状态,寻找临近的点,不像A * 直接找上下左右相邻的点
  3. 不仅需要记录代价,还要记录和更新状态

四. Kinodynamic RRT*

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深蓝 运动规划 的相关文章

随机推荐

  • c++ #define 用法

    1 用于表示将两个参数连在一起 xff0c 其中宏的 前后空格会被省略 define CONNA a b a b define CONNB a b a b int main string a 61 CONNA 34 one 34 34 tw
  • MySQL第五课 Table has no partition for value

    场景 MySQL由于安全性要求 xff0c 版本升级之后 xff0c 执行插入数据出现Table has no partition for value 错误 已有版本5 7 20 log升级到5 7 26 log 说明 建表过程中 xff0
  • DSP数据安全平台

    数据安全平台 xff08 DSP xff0c Data Security Platforms xff09 的概念来源于Gartner的 2021数据安全技术成熟度曲线 xff0c DSP定义为以数据安全为中心的产品和服务 xff0c 旨在跨
  • c++ 数学库

    链接 link
  • vscode使用restClient实现各种http请求

    vscode使用restClient实现各种http请求 一 xff0c 安装插件 首先 xff0c 我们要在vscode的扩展中 xff0c 搜索rest Client xff0c 然后安装它 xff0c 这里我已经安装过了 安装后 xf
  • K210和STM32串口通信(亲测有效)

    声明 最近想做一个K210数字识别和寻迹 xff0c 方便完成2021年电赛F题 xff0c 完成了数字训练和脱机运行就想赶紧进行一次通信 xff0c 调了好几天 郁闷 xff0b 自闭几天 按照官方的历程看 xff0c 配置的没问题但是会
  • 简单Rabbitmq 发送消息和接收消息

    简单Rabbitmq 发送消息和接收消息 1 先在Rabbitmq配置文件中预先创建好交换器 xff0c 队列 xff0c 路由等信息 2 创建生产者发送消息 64 Autowired private RabbitTemplate rabb
  • Elasticsearch(ES6)------(4) ES设置用户名密码访问

    Elasticsearch ES xff08 1 xff09 下载 安装 43 kibana 下载 xff08 2 xff09 本机多节点启动 43 ElasticSearch head插件使用 xff08 3 xff09 索引 文档概念和
  • Elasticsearch(ES6) --根据条件修改字段值

    POST index name doc update by query 34 query 34 34 match 34 34 version 34 34 12 22 34 34 script 34 34 inline 34 34 ctx s
  • redis限流使用lua脚本

    lua脚本 xff0c 计数器限流 5秒内限流10次 64 param key 64 return public boolean acquire String key long now 61 System currentTimeMillis
  • ES6分页from+size、search_after两种查询

    1 from 43 size 分页查询 64 RequestMapping value 61 34 get 34 method 61 RequestMethod GET public BaseResponse lt List lt Obje
  • 使用activiti总结--bpmn画流程图

    假期结束 xff0c 赶紧总结一下前几天使用的Activiti工作流的一些方法 简单介绍一下Activiti Activiti一套完整的方便的业务流程管理 xff08 BPM xff09 框架 xff0c 它是覆盖了业务流程管理 工作流 服
  • clock函数 使用以及问题

    使用 clock 函数是一个计算程序运行时间 xff08 其实简略的理解为占用CPU的使用时间 xff09 其实如果使用sleep函数 xff0c 程序是放弃CPU的使用权 xff0c 直到某个时间的到来 xff0c 当然就不会存在占用CP
  • 使用activiti总结--发布,办理,查询

    接上一篇文章 xff0c 使用创建好的流程图 xff0c 总结一下activiti发布到查询使用的方法和测试代码 流程图 1 引用配置文件 activiti cfg xml xff0c 不引用或者引用失败的话在创建流引擎的时候会报空指针异常
  • Could not open JDBC Connection for transaction

    操做 xff1a 访问20次数据库没问题 xff0c 超过20次调用后报如下错误 详细报错 xff1a org springframework transaction CannotCreateTransactionException Cou
  • 【可信计算】第八次课:可信软件栈编程开发

    TPM2开源软件包 目前在github上TPM2开源软件一共包含六个项目tpm2 tools tpm2 tss tpm2 pkcs11 tpm2 tss engine tpm2 abrmd tpm2 totp 1 tpm2 tools 这一
  • 国赛----可见光室内定位

    初期试探 拿到题目后 xff0c 反复读了题目 首先队内结合网上资料形成了两种方案 xff0c 原理相同就是利用光信号到达的强度来定位 两者差距在于算法不同而已 xff0c 一种利用计算得出位置 xff0c 另一种就是经过测量得到一种位置与
  • 各种Arduino外部中断程序

    一 中断 Interrupt 的基本概念 中断 xff08 Interrupt xff09 是计算机的一个重要概念 xff0c 现代计算机普遍采用中断技术 什么是中断呢 xff1f CPU执行时原本是按程序指令一条一条向下顺序执行的 但如果
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • 深蓝 运动规划

    文章目录 CH1 Introduction一 Motion Planning 概念二 Front end xff1a Path finding1 Search based methods2 Sampling based methods3 K