深蓝学院-运动规划重点笔记

感觉课程讲的非常有条理,从算法的大分类到细节技术。

基于图搜索的方法

配置空间:维度等于机器人的自由度,可以理解为一个点可以表示一个机器人的位姿。例如小车4自由度(x,y,z, θ \theta θ)。在配置空间中,机器人表示为点。

在3维空间中,要做碰撞检测,就很麻烦。所以在配置空间中做规划,要对障碍物按照机器人的尺寸做膨胀。

基于图搜索的算法框架:
在这里插入图片描述
关键问题:
如果一个结点被弹出容器,就不再会被加入到容器中

BFS使用的容器是队列,DFS使用的是栈。在边的权重都为1的情况下,BFS能保证路径最短,所以搜索算法是基于BFS的。

Dijkstra

与BFS相比,Dijkstra从容器中弹出的规则不同。Dijkstra弹出的是从起点到某点的走过的距离最短的点。也就是说,容器不再使用队列,而是优先队列,弹出的总是走过路径最短的点。

优点:完备的,能保证最优解
缺点:没有启发,就是暴力搜

A*

相比于Dijkstra,A*的容器对元素的排序依赖的是(走过的路径的距离+启发距离)。某节点启发距离是指预测的从该节点到终点的距离。

当启发距离小于真实距离的时候,A*能找到最优解。

工程改进:
1)使用Diagonal Heuristic:用norm做的启发函数都过分的低估了实际距离,使得搜索的区域很大
2)Tie Breaker:可能存在很多条路都是最优解。打破路径的对称性,使得搜索更偏向于一条路

JPS(Jump Point Search)

Look Ahead Rule + Jumping Rule
相比于A*,visit一个结点后,使用Jumping Rule来扩展该节点,把从该节点jumping的后继结点加入到容器中

对于复杂环境,JPS总的来说要比A*好
JPS只能用于uniform grid使用

基于采样的方法

比较高效

三种完备性

  • Complete Planner: always answers a path planning query correctly in bounded time.
  • Probabilistic Complete Planner: if a solution exists, planner will eventually find it, using random sampling (e.g. Monte Carlo sampling)
  • Resolution Complete Planner: same as above but based on a deterministic sampling (e.g sampling on a fixed grid).

概率路图

Learning Phase
先在空间中撒点,去掉与障碍物碰撞的点
然后构建kNN的图,图中的节点包括起始点、终止点和保留下来的撒点。然后去掉边长超出一定阈值的边、去掉与障碍物碰撞的边

Query Phase
使用图搜索的方法,就可以找到一条可行驶路径。

优点:概率完备的,相比于图搜索的比较高效
缺点:边界值问题,不够有效率

优化效率:
碰撞检测:lazy collision-checking
在撒点和构建图的时候,不管碰撞问题。在搜索到轨迹之后,再删去碰撞部分的轨迹,重新搜索部分轨迹。

RRT

Pros:
· Aims to find a path from the start to the goal
· More target-oriented than PRM
Cons:
· Not optimal solution
· Not efficient(leave room for improvement)
· Sample in the whole space

改进:
kd-tree做最近点搜索
Bidirectional RRT/Connect RRT:通过一次采样,完成两颗树的构建。

Note: 这里没讲是怎么构建kd-tree的。按照RRT的思路,采样点是逐渐加进去的,但加进去的过程要使用kd-tree找最近邻。所以,kd-tree也是增量式的构建吗?kd-tree其实本身是针对静态数据集的,在网上我也基本没有搜到kd-tree的增量式的构建方式。问题在于,插入一个点会影响整棵树的结构。所以我查到的方式是使用替罪羊树这种方法来完成增量式构建。或者kd-tree不是增量式构建,就是每一次查找都构建一棵树?这样子是不是有点太慢了。

RRT*

解决生成路径不最优的问题

通过撒点找到的新点 x n e w x_{new} xnew不是直接连接到最近点上,而是先找一个领域内的点,选择一个连接使得 x n e w x_{new} xnew到起始点最近,连接上去。然后更新领域内的点到起始点的距离。

RRT*在生成路径之后,继续采样可以优化路径

Kinodynamic-RRT*

连接 x n e w x_{new} xnew与父节点不用直线,而是用曲线,使得更符合机器人的运动学约束

Anytime-RRT*

在机器人运动过程中,一直在更新RRT*

Advanced Sampling-based Methods

Informed RRT*

当路径生成之后,将采样的范围限定在与生成路径有关的椭圆内,从而完成路径的优化。

Cross-entropy motion planning

首先得到一个路径
然后以路径中的每个点作为一个高斯模型的中心,在多高斯模型中采样,得到多条路径。
然后对多条路径做均值,重新构建多高斯模型。

Note:具体的如何做均值的,可以使用k-means这种方式。但具体的还得看论文

在这里插入图片描述

Kinodynamic Path Finding

State Lattice Planning

对空间采样的两种方法:
前向模拟:通过采样控制量,推算下一步车的位置。优点是容易实现,缺点是非任务导向的、效率低
反向计算:通过采样空间中的位置,反算两点之间的控制量,反算边,有点是任务导向,缺点是难实现

在反向计算中,给出采样空间的位置,如何生成一条满足动力学要求的边呢?这就是个Boundary Value Problem

BVP

如何获得一个BVP最好的解

使用经典套路,Pontryain

  • 29
    点赞
  • 206
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值