Motion Planning
What is motion planning?
规划的本质是:
- 搜索问题
- “好”的规划就是一个目标函数:,求最优解
Motion Planning的三个领域
- Robotic Fields
- 生成轨迹寻找目标
- RRT, A*, D* ,D* Lite
- Control Theory
- 动态系统理论实现目标状态
- MPC模型预测控制, LQR线性二次型
- AI:状态到action的映射
- 强化学习,模仿学习等
http://planning.cs.uiuc.edu/http://planning.cs.uiuc.edu/par1.pdf
如何解决一个Motion Planning问题?
我们需要找到一个简单的突破口,首先是一个path finding 问题,也就是路径选择问题。在这个问题中,我们不关心速度,不关心机器人如何运动,我们只关心路径的生成。
什么样的Path才是最好的path?
PathFinding.jshttps://qiao.github.io/PathFinding.js/visual/
- 路径最短
- BFS & DFS
- Dijkstra
- 基于启发式的搜索方法:A*
- 大概知道了终点的位置
- Heuristic function
- Introduction to the A* Algorithm
https://www.redblobgames.com/pathfinding/a-star/introduction.html
无人驾驶中的规划和A* search有什么区别?
- 无人驾驶场景下是部分感知
- 有动态障碍物
- 复杂环境:交通约束、碰瓷
- 而A* 是一个global algorithm
- Partial observed situation
- 贪心算法
increamental search:目前状态求解到最优
- 贪心算法
- D*
- 部分环境信息的一种搜索算法,经典的apollo登月小车上就采用了这种算法。
- D* Lite
- 使用D*算法进行路径搜索不一定能够搜索到全局最优解,但是经过统计学的分析,是能够逼近全局最优解的。
Stentz Anthony, "Optimal and Efficient Path Planning for Partially-Known Environments", 1994
至此,我们已经有了如下几个方法:
- 构造目标函数并且结合了平滑性和目标cost
- 使用通用的search方法来最小化Cost从而找到一个最优解
- 通过Partial observed information 来做局部planning
路径规划还需要什么?
- 处理动态障碍物,动态环境
- 遵守交通规则,公共安全
- 实时计算
- 计算时间100ms-150ms
- 人的一般反应时间300ms-500ms
- 酒驾 1000ms
- 有限时间内找到最优解
这就是为什么很多大公司使用C++而不用python的原因,因为C++能够对代码进行更多的优化。
motion planning定义
- Safely
- Smootly
- Achieve to destination (能够到达目的地)
- 输出三维的轨迹 X,Y,Time :3D trajectory optimization problem
- 无人车硬件系统
- 定位设备
- 感知设备</