Robot Motion Planning(运动规划)

来自《planning_algorithm》一书的笔记

1.Configure Space

可以理解为机器人的空间大小,称作为”C-space”,在空间中移动的时候将障碍物膨胀一个机器人的半径
Robot Motion Planning(运动规划)_第1张图片
如上图所示,中间和右边的图中,存在两个原型机器人,所以我们需要将障碍物膨胀一个半径,这样我们在之后的运动中可以把一个有体积的机器人看做是一个空间点的移动


2.forward search and backward search

forward search

BFS
DFS
Dijkstra
A*
Best First
Iterative deepening(The iterative deepening approach is usually preferable if
the search tree has a large branching factor, i.e., there are many more vertices in
the next level than in the current level)

backward search
D*

Bidirectional search
双向广度优先搜索


3.Sampling-based planning

Probabilistic road maps (PRM)
Robot Motion Planning(运动规划)_第2张图片
我个人理解这个就是在无障碍区域选择节点(根据具体的半径或者k-nearest neighbors)然后连接起来,直到整个空间足够密(dense enough)
这里补上一个来源wikipedia的动图
Robot Motion Planning(运动规划)_第3张图片

Rapidly Exploring Random Trees
俗称RRT,这里有一个我写的例子github,但不是可视化的。。

Combinatorial Motion Planning

把这一段放在这里主要是想对比一下它和上面Sampling-based Planning。
对比最明显的一点就是Combinatorial Motion Planningg 可以找出确定的解。the algorithm will either find a solution or will correctly report that no solution exists。而Sampling-based Planning 并不能保证一定有解 have the drawback that
they result in weaker guarantees that the problem will be solved。
这两者的区别也就是notion of completeness
Combinatorial Motion Planning利用Voronoi Diagram,cell decomposition等方法对整个状态空间进行划分,想象一下栅格地图,所以它在有没有解上面有保障,要么有解,要不告诉你有限时间内没有解
Sampling-based Planning是在不冲突(obstacle-avoid)的前提下,在free区域一直搜索,所以并不能保证一定有解,但是效率会高很多(more efficient)


4.Potential Field Methods

之前讨论的方法都是连接空白区域的方法(也就是把无障碍区域进行连接来寻路)
而这里讨论的方法是基于人工势场的方法,简单来说想象一下,在一个空间内有一个机器人,空间内的障碍物会对机器人施加斥力,目标点会对机器人施加引力,那么我们看看机器人会怎么运动?


5.Robot Motion Planning

首先我们这里做个寻路算法的大致总结
(a) informed search
特点就是考虑来自周围环境的信息,并且运用代价函数来进行寻路,有一些还带有启发式的搜索,主要包括
Greedy Best-First-Search,A*,D*

(b). uninformed search
相反的这个就是不考虑来自周围环境的信息,盲目搜索(blind search),主要包括
BFS
DFS


6.Collision Avoidance(obstacle avoidance)

我们现在考虑即使在前面的步骤中我们规划好了起点到终点的路径,但是我们忽略了在动态环境下的情况和机器人的运动
所以这里讨论的关于Trajectory(维基百科有介绍)的优化。总结来说是这样的

An approximate global planner computes paths ignoring the kinematic and dynamic vehicle constraints

An accurate local planner accounts for the constraints and generates (sets of) feasible local trajectories (“collision avoidance”)
我做过ROS里面,选择的global_planner是dijkstra,local_planner是trajectory rollout


这里插多一个关于value iteration的(也就是值迭代?),可以考虑一下水面丢下去一个石头,就会泛起波,向远处延伸去。
这个value iteration就是从初始点扩散开去从而计算代价值,比如上下左右就是+1,斜方向是+2或者是√2。要么可以类比一下马尔科夫链,一直左乘上一个概率转移矩阵

这里有一个我实现的exploration transform算法的代码github,本质思想就类似value iteration

你可能感兴趣的:(机器人,ROS,globalplanner,localplanner,路径规划)