2.5 Dubins曲线

type
status
slug
date
summary
tags
category
password
icon
你的人生刚开始,没有到头。 —狂飙 高启强
🏰代码及环境配置:请参考0.2 环境配置和代码运行 | 动手学运动规划!

Dubins曲线是在满足曲率约束, 始末点(x, y, theta)约束, 只能前向 的约束下,一组连接始末点的几何线条的组合.
notion image

2.5.1 Dubins曲线定义

Dubins曲线通常由圆弧段, 直线段组合而成, 有如下约束:
  • 前向: 沿着Dubins曲线行驶的车辆只能向前行驶
  • 曲率约束:Dubins曲线的圆弧段满足特定的曲率约束
  • 切线方向:在起始点和终点,Dubins曲线的切线方向与给定的方向一致
Dubins曲线定义了这几种运动基元:右转弧线(Right)、左转弧线(Left)或直线行驶(Straight). 他们可以组合成六种基本类型:RSR、RSL、LSR、LSL、RLR、LRL。
假设A点是起点, B点是终点. Dubins曲线会在起点和终点画两个圆, 然后寻找中间线连接这两个圆.
RSL
RSL
RSR
RSR
  • 寻找这两个圆的公切线. 对应了RSR、RSL、LSR、LSL这四种 圆弧-直线-圆弧 的组合
LRL
LRL
  • 或者是构造一个新的中间圆来连接这两个圆, 对应了 RLR、LRL 这两种 圆弧-圆弧-圆弧 的组合
起点和终点的圆的半价, 可以简单设定为最小转弯半径. 因为半价越小, 越容易有解. 但是对于车辆来说, 一直采用最大转角显然不太合理. 所以也可以通过对转弯半价采样的方式, 尝试能不能找到曲率较小的结果.
Dubins曲线会在这些组合中, 挑选一个路径总长度最小的组合作为最优解, 当然也可以根据需求自行确定最优解.
了解了Dubins曲线的定义之后, 接下来的问题就是如何计算这几个中间点.

2.5.2 不同运动基元的状态转移

我们首先计算这些不同的运动基元的状态转移方程.
初始状态是, 终点状态是

2.5.2.1 直行S状态转移方程

直线段的长度为p
notion image

2.5.2.2 左转L状态转移方程

转过的角度是
notion image

2.5.2.3 右转R状态转移方程

notion image

2.5.3 组合不同运动基元

我们组合不同的运动基元, 以LSL为例:
(1)第1步: L. 设第一步L的结束状态是, L转过的角度是. 代入初始状态得:
(2)第2步: S. 设第2步S的结束状态是, 代入得:
(3)第3步: L. 第3步L的结束状态就是终点状态, 代入得:
(4)第4步:联立求解上面的式子, 可以计算出未知项: 转过的角度, 直线段长度, 总长度
其中是指将角度转换到的区间内, 其他的组合诸如LSR,RSL可以类似的方式进行推导.

2.5.4 简洁的计算方式

如果我们将坐标系原点放在起始点, 以始末点的连线作为坐标系的x轴方向. 仍然以LSL为例, 如下图:
notion image
新的坐标系下, 起始点状态是, 终点状态是. 这里是为了正则化R,这样每个圆的半径都为1,由角度计算弧长时更方便,弧长即等于角度的弧度.
与2.5.3 类似, 可以组合式的调用运动基元状态状态方程, 最终得到出如下方程
比2.5.3简洁很多, 联立求解可得:
其他的组合也是类似的推导.
下一节, 我们会解析和运行代码.

参考链接

动手学运动规划(Motion Planning)动手学运动规划(Motion Planning)
Loading...
目录
文章列表