参考资料: http://planning.cs.uiuc.edu/node821.html

一般常见的路径规划算法, 如 Dijkstra, A*, BFS算法, 重点关注可达性, 搜索速度和效率上等问题, 这些轨迹或以栅格或以图的形式给出路径, 事实上还没有考虑到,实际机器人的运动特征, 这里就要介绍到两种路径规划中常用到的曲线, Dubins曲线和 Reeds-Shepp 曲线, 最大的区别 Dubins曲线适用于只能前向行驶的车, 而Reeds-Shepp曲线适用于既可以向前也可以后退的车

Dubins 曲线

Dubins曲线通常用于机器人和控制理论领域,作为规划轮式机器人、飞机和水下车辆路径的一种方式。Dubins曲线给出了两个有向点之间的最短路径, 这样的路径是实际上可以去实际跟随执行的.
简单的运动模型如下,
python用于路径规划的库 python可以进行路径规划吗_最短路径
python用于路径规划的库 python可以进行路径规划吗_Dubins 曲线_02
python用于路径规划的库 python可以进行路径规划吗_Dubins 曲线_03

python用于路径规划的库 python可以进行路径规划吗_最短路径_04

其中(x,y) 是汽车的位置, python用于路径规划的库 python可以进行路径规划吗_python用于路径规划的库_05 是航向, python用于路径规划的库 python可以进行路径规划吗_python用于路径规划的库_06为转弯速度. 这样的条件下, 对于规划路径有几个限制.

  1. 机器人最大的速度 python用于路径规划的库 python可以进行路径规划吗_最短路径_07
  2. 最大的转弯角度python用于路径规划的库 python可以进行路径规划吗_Reese-Shepp曲线_08, 也对应这最小的转弯半径.

Dubins曲线可以用常用的三种运动描述, python用于路径规划的库 python可以进行路径规划吗_python用于路径规划的库_09 直线行驶, python用于路径规划的库 python可以进行路径规划吗_python用于路径规划的库_10左转, python用于路径规划的库 python可以进行路径规划吗_Reese-Shepp曲线_11 右转. 所以常用的集中运动可以总结如下:
python用于路径规划的库 python可以进行路径规划吗_python用于路径规划的库_12

这样的轨迹就被称为 Dubins路径, 两个有向点的最短路径可以如下如所示:

python用于路径规划的库 python可以进行路径规划吗_Reese-Shepp曲线_13


观察上图, python用于路径规划的库 python可以进行路径规划吗_Dubins 曲线_14 由两个相切圆和一段直线组成, 而 python用于路径规划的库 python可以进行路径规划吗_路径规划_15 , 所以现在的问题变成了 那种路径方式有最小时间消耗., 我们可以尝试编程解决.

(1) RSL 路径方程举例:

最小转弯半径为 python用于路径规划的库 python可以进行路径规划吗_python用于路径规划的库_16, python用于路径规划的库 python可以进行路径规划吗_python用于路径规划的库_17, python用于路径规划的库 python可以进行路径规划吗_Dubins 曲线_18

  • 添加约束
  • $y轴约束: y_G - y_l $
  • $x轴约束: x_G - x_l $
  • python用于路径规划的库 python可以进行路径规划吗_最短路径_19
  • python用于路径规划的库 python可以进行路径规划吗_Reese-Shepp曲线_20
    具体细节就先不展示了, 方程应该很好列出来, 总之当最小转弯半径python用于路径规划的库 python可以进行路径规划吗_最短路径_21确定之后, python用于路径规划的库 python可以进行路径规划吗_Dubins 曲线_22, python用于路径规划的库 python可以进行路径规划吗_python用于路径规划的库_23, python用于路径规划的库 python可以进行路径规划吗_路径规划_24, 就能解出来了.

Reeds-Shepp 曲线

现在来考虑 Reeds-Shepp 型的车, 与Dubins车型唯一区别就是. 它可以向后走

python用于路径规划的库 python可以进行路径规划吗_Reese-Shepp曲线_25


同理, Reeds-Shepp 曲线加入了后退的逻辑, 可能的路径类型就扩大很多, 可以规划为9类, 一共有48种

python用于路径规划的库 python可以进行路径规划吗_Reese-Shepp曲线_26


应该也是可以根据约束列方程求解; 我将继续探索, 来日完善…

Python 待完善