无人驾驶学习笔记--路径规划(二)【Dubins曲线和Reeds-Shepp曲线】

路径规划(二) -- Dubins曲线和Reeds-Shepp曲线

  • I. Dubins 曲线
    • 1. 基本理论
    • 2. 曲线计算
      • 2.1 坐标转换
      • 2.2 LSL
      • 2.3 LRL
      • 2.4 RSR
      • 2.5 LSR
      • 2.6 RSL
      • 2.7 RLR
  • II. Reeds-Shepp曲线
    • 1. 基本理论
    • 2. 坐标转换
    • 3. 对称性
      • 3.1 timeflip 对称性
      • 3.2 reflect 对称性
      • 3.3 timeflip + reflect
      • 3.4 backwards
    • 4. 公式计算

在自动驾驶行驶过程中,包含Free space场景和停车场景,在这种不规则道路结构中,无人驾驶车辆可以使用不同的曲线来表示车辆的行驶轨迹,而常见且经典的曲线则就是Dubins曲线和Reeds-Shepp曲线。

I. Dubins 曲线

参考文章:Dubins曲线详细笔记
https://zhuanlan.zhihu.com/p/414753861

无人驾驶学习笔记--路径规划(二)【Dubins曲线和Reeds-Shepp曲线】_第1张图片

1. 基本理论

Dubins曲线限制车辆只能向前行驶,规划出的曲线由三段直线或圆弧组成,能够满足车辆的最小转弯半径、起点航向角、终点航向角和车辆动力学约束,但规划出的曲线在两段交点处曲率不连续
对于指定起点 q i q_i qi到终点 q g q_g qg 的最短路径,可以写成求解如下优化问题:
min ⁡ L ( q , u ) = min ⁡ ∫ 0 t F x ˙ ( t ) 2 + y ˙ ( t ) 2 d t \min L(q,u) = \min \int_0^{t_F} \sqrt{\dot{x}(t)^2 + \dot{y}(t)^2} \text{d}t minL(q,u)=min0tFx˙(t)2+y˙(t)2 dt
假设车辆运行速度恒定,那么,上式中的代价函数 L ( q , u ) L(q, u) L(q,u) 只与 t F t_F tF 相关。

已经证明,给定任意的起点和终点,Dubin car的最短路径总是可以表示为不超过三种的motion primitives.

Dubin car 的action 只有 u ∈ { − 1 , 0 , 1 } u\in\{-1, 0, 1\} u{1,0,1}. 并且可以证明,只有六种motion primitives 是最优的。
{ L α R β L γ , R α L β R γ , L α S d L γ , L α S d R γ , R α S d L γ , R α S d R γ } \{L_\alpha R_\beta L_\gamma, R_\alpha L_\beta R_\gamma,L_\alpha S_d L_\gamma,L_\alpha S_dR_\gamma,R_\alpha S_d L_\gamma,R_\alpha S_d R_\gamma\} {LαRβLγ,RαLβRγ,LαSdLγ,LαSdRγ,RαSdLγ,RαSdRγ}
其中 α ∈ [ 0 , 2 π ) , γ ∈ [ 0 , 2 π ) , β ∈ ( π , 2 π ) , d ≥ 0 \alpha\in [0, 2\pi), \gamma \in [0, 2\pi), \beta \in (\pi, 2\pi), d \geq 0 α[0,2π),γ[0,2π),β(π,2π),d0.
无人驾驶学习笔记--路径规划(二)【Dubins曲线和Reeds-Shepp曲线】_第2张图片

2. 曲线计算

2.1 坐标转换

设起点为 s ( x i , y i , α i ) s(x_i, y_i, \alpha _i) s(xi,yi,αi),终点为 g ( x g , y g , β g ) g(x_{g}, y_{g}, \beta _{g}) g(xg,yg,βg),通过坐标变换将起点和终点放置于x轴,则起点终点连线逆时针旋转 θ \theta θ角,此时起点坐标为 s ( 0 , 0 , α ) s(0,0,\alpha) s(0,0,α),终点坐标为 g ( d , 0 , β ) g(d, 0, \beta ) g(d,0,β),则

θ = arctan ⁡ ( y g − y i x g − x i ) D = ( x i − x g ) 2 + ( y i − y g ) 2 d = D R α = m o d ( α i − θ , 2 π ) β = m o d ( β g − θ , 2 π ) \theta =\arctan (\tfrac{y_g-y_i}{x_g-x_i}) \\ D=\sqrt{(x_i-x_g)^{2}+(y_i-y_g)^{2}} \\ d=\frac{D}{R} \\ \alpha =mod(\alpha_i-\theta,2\pi) \\ \beta=mod(\beta_g-\theta,2\pi) \\ θ=arctan(xgxiygyi)D=(xixg)2+(yiyg)2 d=RDα=mod(αiθ,2π)β=mod(βgθ,2π)
θ \theta θ为起点和终点的航向差,以上角度的取值均在 [ 0 , 2 π ] [0,2\pi] [0,2π]之间。上述第三式是为了将半径归一化,在后续的计算中将转弯半径都作为1,便于从角度计算弧长,简化计算。

2.2 LSL

无人驾驶学习笔记--路径规划(二)【Dubins曲线和Reeds-Shepp曲线】_第3张图片
t l s l = − α + arctan ⁡ ( cos ⁡ β − cos ⁡ α d + sin ⁡ α − sin ⁡ β ) [ m o d 2 π ] p l s l = 2 + d 2 − 2 cos ⁡ ( α − β ) + 2 d ( sin ⁡ α − sin ⁡ β ) q l s l = β − arctan ⁡ cos ⁡ β − cos ⁡ α d + sin ⁡ α − sin ⁡ β [ m o d 2 π ] t_{lsl}=-\alpha+\arctan(\frac{\cos\beta-\cos\alpha}{d+\sin\alpha-\sin\beta})[mod2\pi] \\ p_{lsl}=\sqrt{2+d^2-2\cos(\alpha-\beta)+2d(\sin\alpha-\sin\beta)} \\ q_{lsl}=\beta-\arctan{\frac{\cos\beta-\cos\alpha}{d+\sin\alpha-\sin\beta}}[mod2\pi] tlsl=α+arctan(d+sinαsinβcosβcosα)[mod2π]plsl=2+d22cos(αβ)+2d(sinαsinβ) qlsl=βarctand+sinαsinβcosβcosα[mod2π]
总长度等于:
L l s l = t l s l + p l s l + q l s l = − α + β + p l s l L_{lsl}=t_{lsl}+p_{lsl}+q_{lsl}=-\alpha+\beta+p_{lsl} Llsl=tlsl+plsl+qlsl=α+β+plsl

2.3 LRL

t l r l = ( − α + arctan ⁡ ( cos ⁡ β − cos ⁡ α d + sin ⁡ α − sin ⁡ β ) + p l r l 2 ) [ m o d 2 π ] p l r l = arccos ⁡ 1 8 ( 6 − d 2 + 2 cos ⁡ ( α − β ) + 2 d ( sin ⁡ α − sin ⁡ β ) ) [ m o d 2 π ] q l r l = β [ m o d 2 π ] − α + 2 p l r l [ m o d 2 π ] L l r l = t l r l + p l r l + q l r l = − α + β + 2 p l r l t_{lrl}=(-\alpha+\arctan(\frac{\cos\beta-\cos\alpha}{d+\sin\alpha-\sin\beta})+\frac{p_{lrl}}{2})[mod2\pi] \\ p_{lrl}=\arccos\frac{1}{8}(6-d^2+2\cos(\alpha-\beta)+2d(\sin\alpha-\sin\beta))[mod 2\pi] \\ q_{lrl}=\beta[mod 2\pi]-\alpha+2p_{lrl}[mod 2\pi] \\ L_{lrl}=t_{lrl}+p_{lrl}+q_{lrl}=-\alpha+\beta+2p_{lrl} tlrl=(α+arctan(d+sinαsinβcosβcosα)+2plrl)[mod2π]plrl=arccos81(6d2+2cos(αβ)+2d(sinαsinβ))[mod2π]qlrl=β[mod2π]α+2plrl[mod2π]Llrl=tlrl+plrl+qlrl=α+β+2plrl

2.4 RSR

t r s r = α − arctan ⁡ cos ⁡ α − cos ⁡ β d − sin ⁡ α + sin ⁡ β [ m o d 2 π ] p r s r = 2 + d 2 − 2 cos ⁡ ( α − β ) + 2 d ( sin ⁡ β − sin ⁡ α ) q r s r = − β [ m o d 2 π ] + arctan ⁡ ( cos ⁡ α − cos ⁡ β d − sin ⁡ α + sin ⁡ β ) [ m o d 2 π ] L r s r = t r s r + p r s r + q r s r = α − β + p r s r t_{rsr}=\alpha-\arctan\frac{\cos\alpha-\cos\beta}{d-\sin\alpha+\sin\beta}[mod 2\pi] \\ p_{rsr}=\sqrt{2+d^2-2\cos(\alpha-\beta)+2d(\sin\beta-\sin\alpha)} \\ q_{rsr}=-\beta[mod 2\pi]+\arctan(\frac{\cos\alpha-\cos\beta}{d-\sin\alpha+\sin\beta})[mod 2\pi] \\ L_{rsr}=t_{rsr}+p_{rsr}+q_{rsr}=\alpha-\beta+p_{rsr} trsr=αarctandsinα+sinβcosαcosβ[mod2π]prsr=2+d22cos(αβ)+2d(sinβsinα) qrsr=β[mod2π]+arctan(dsinα+sinβcosαcosβ)[mod2π]Lrsr=trsr+prsr+qrsr=αβ+prsr

2.5 LSR

t l s r = ( − α + arctan ⁡ ( − cos ⁡ α − cos ⁡ β d + sin ⁡ α + sin ⁡ β ) − arctan ⁡ ( − 2 p l s r ) ) [ m o d 2 π ] p l s r = − 2 + d 2 + 2 cos ⁡ ( α − β ) + 2 d ( sin ⁡ α + sin ⁡ β ) q l s r = − β [ m o d 2 π ] + arctan ⁡ ( − cos ⁡ α − cos ⁡ β d + sin ⁡ α + sin ⁡ β ) − arctan ⁡ ( − 2 p l s r ) [ m o d 2 π ] L l s r = t l s r + p l s r + q l s r = α − β + 2 t l s r + p l s r t_{lsr}=(-\alpha+\arctan(\frac{-\cos\alpha-\cos\beta}{d+\sin\alpha+\sin\beta})-\arctan(\frac{-2}{p_{lsr}}))[mod 2\pi] \\ p_{lsr}=\sqrt{-2+d^2+2\cos(\alpha-\beta)+2d(\sin\alpha+\sin\beta)} \\ q_{lsr}=-\beta[mod 2\pi]+\arctan(\frac{-\cos\alpha-\cos\beta}{d+\sin\alpha+\sin\beta})-\arctan(\frac{-2}{p_{lsr}})[mod 2\pi] \\ L_{lsr}=t_{lsr}+p_{lsr}+q_{lsr}=\alpha-\beta+2t_{lsr}+p_{lsr} tlsr=(α+arctan(d+sinα+sinβcosαcosβ)arctan(plsr2))[mod2π]plsr=2+d2+2cos(αβ)+2d(sinα+sinβ) qlsr=β[mod2π]+arctan(d+sinα+sinβcosαcosβ)arctan(plsr2)[mod2π]Llsr=tlsr+plsr+qlsr=αβ+2tlsr+plsr

2.6 RSL

t r s l = α − arctan ⁡ ( cos ⁡ α + cos ⁡ β d − sin ⁡ α − sin ⁡ β ) + arctan ⁡ ( 2 p r s l ) [ m o d 2 π ] p r s l = d 2 − 2 + 2 cos ⁡ ( α − β ) − 2 d ( sin ⁡ α + sin ⁡ β ) q r s l = β [ m o d 2 π ] − arctan ⁡ ( cos ⁡ α + cos ⁡ β d − sin ⁡ α − sin ⁡ β ) + arctan ⁡ ( 2 p r s l ) [ m o d 2 π ] L r s l = t r s l + p r s l + q r s l = − α + β + 2 t r s l + p r s l t_{rsl}=\alpha-\arctan(\frac{\cos\alpha+\cos\beta}{d-\sin\alpha-\sin\beta})+\arctan(\frac{2}{p_{rsl}})[mod 2\pi] \\ p_{rsl}=\sqrt{d^2-2+2\cos(\alpha-\beta)-2d(\sin\alpha+\sin\beta)} \\ q_{rsl}=\beta[mod 2\pi]-\arctan(\frac{\cos\alpha+\cos\beta}{d-\sin\alpha-\sin\beta})+\arctan(\frac{2}{p_{rsl}})[mod2\pi] \\ L_{rsl}=t_{rsl}+p_{rsl}+q_{rsl}=-\alpha+\beta+2t_{rsl}+p_{rsl} trsl=αarctan(dsinαsinβcosα+cosβ)+arctan(prsl2)[mod2π]prsl=d22+2cos(αβ)2d(sinα+sinβ) qrsl=β[mod2π]arctan(dsinαsinβcosα+cosβ)+arctan(prsl2)[mod2π]Lrsl=trsl+prsl+qrsl=α+β+2trsl+prsl

2.7 RLR

t r l r = α − arctan ⁡ ( cos ⁡ α − cos ⁡ β d − sin ⁡ α + sin ⁡ β ) + p r l r 2 [ m o d 2 π ] p r l r = arccos ⁡ 1 8 ( 6 − d 2 + 2 cos ⁡ ( α − β ) + 2 d ( sin ⁡ α − sin ⁡ β ) ) q r l r = α − β − t r l r + p r l r [ m o d 2 π ] L r l r = t r l r + p r l r + q r l r = α − β + 2 p r l r t_{rlr}=\alpha-\arctan(\frac{\cos\alpha-\cos\beta}{d-\sin\alpha+\sin\beta})+\frac{p_{rlr}}{2}[mod2\pi] \\ p_{rlr}=\arccos\frac{1}{8}(6-d^2+2\cos(\alpha-\beta)+2d(\sin\alpha-\sin\beta)) \\ q_{rlr}=\alpha-\beta-t_{rlr}+p_{rlr}[mod2\pi] \\ L_{rlr}=t_{rlr}+p_{rlr}+q_{rlr}=\alpha-\beta+2p_{rlr} trlr=αarctan(dsinα+sinβcosαcosβ)+2prlr[mod2π]prlr=arccos81(6d2+2cos(αβ)+2d(sinαsinβ))qrlr=αβtrlr+prlr[mod2π]Lrlr=trlr+prlr+qrlr=αβ+2prlr

II. Reeds-Shepp曲线

参考文章:自动驾驶运动规划-Reeds Shepp曲线
https://zhuanlan.zhihu.com/p/122544884

无人驾驶学习笔记--路径规划(二)【Dubins曲线和Reeds-Shepp曲线】_第4张图片

1. 基本理论

Reeds-Shepp曲线允许车辆向前或向后行驶,对于指定起点 q i q_i qi到终点 q g q_g qg 的最短路径,一定是由下面的状态表示的:
{ C ∣ C ∣ C , C C ∣ C , C ∣ C C , C S C , C C β ∣ C β C , C ∣ C β C β ∣ C , C ∣ C π / 2 S C , C S C π / 2 ∣ C , C ∣ C π / 2 S C π / 2 ∣ C } \{C|C|C, CC|C, C|CC, CSC, CC_\beta|C_\beta C, C|C_\beta C_\beta|C, C|C_{\pi /2} SC, CSC_{\pi /2}|C, C|C_{\pi /2}SC_{\pi /2}|C\} {CCC,CCC,CCC,CSC,CCβCβC,CCβCβC,CCπ/2SC,CSCπ/2C,CCπ/2SCπ/2C}
其中,“|” 表示转向。Reeds-Shepp 曲线的word组合通过一一枚举可以表示为:
无人驾驶学习笔记--路径规划(二)【Dubins曲线和Reeds-Shepp曲线】_第5张图片其中, L + L^+ L+ 表示车辆左转前进, L − L^- L表示车辆左转后退, R + R^+ R+表示右转前进, R − R^- R表示右转后退, S + S^+ S+表示直行前进, S − S^- S表示直行后退。

2. 坐标转换

起始姿态: q I = ( 0 , 0 , 0 ) q_I = (0, 0, 0) qI=(0,0,0)
目标姿态: q G = ( x , y , ϕ ) q_G = (x, y, \phi) qG=(x,y,ϕ);其中, ϕ = θ 2 − θ 1 \phi = \theta_2 - \theta_1 ϕ=θ2θ1
车辆的转弯半径: r = 1;

假设车辆的初始姿态为 q I = ( x 1 , y 1 , θ 1 ) q_I = (x_1, y_1, \theta_1) qI=(x1,y1,θ1),目标姿态 q G = ( x 2 , y 2 , θ 2 ) q_G = (x_2, y_2, \theta_2) qG=(x2,y2,θ2),车辆的转向半径为r = ρ \rho ρ

通过旋转平移后即可得到目标姿态:
G = [ x y ϕ ] = [ ( d x c o s θ 1 + d y s i n θ 1 ) / ρ ( − d x s i n θ 1 + d y c o s θ 1 ) / ρ θ 2 − θ 1 ] G = \begin{bmatrix} x \\ y \\ \phi \end{bmatrix} \quad = \begin{bmatrix} (d_xcos\theta_1+d_ysin\theta_1)/\rho \\ (-d_xsin\theta_1+d_ycos\theta_1)/\rho \\ \theta_2-\theta_1 \end{bmatrix} \quad G= xyϕ = (dxcosθ1+dysinθ1)/ρ(dxsinθ1+dycosθ1)/ρθ2θ1

3. 对称性

相较于Dubins曲线,Reeds-Shepp曲线有48种组合,为了降低求解的工作量,可以利用其对称性进行求解。

以转向不同的CSC类型为例,它包含4种曲线类型: L + S + R + L^+S^+R^+ L+S+R+ L − S − R − L^-S^-R^- LSR R + S + L + R^+S^+L^+ R+S+L+ R − S − R − R^-S^-R^- RSR,我们只需要编码推导得到 L + S + R + L^+S^+R^+ L+S+R+的计算过程,其它几种直接可以通过对称性关系得到车辆运动路径。

给定车辆起始姿态 q I = ( 160 , 160 , 0 ) q_I = (160, 160, 0) qI=(160,160,0),目标姿态 q G = ( 190 , 180 , 30 ) q_G = (190, 180, 30) qG=(190,180,30),可以得到 L + S + R + L^+S^+R^+ L+S+R+的运动路径如下:

{ Steering: left			Gear: forward	distance: 0.63 }
{ Steering: straight		Gear: forward	distance: 4.02 }
{ Steering: right			Gear: forward	distance: 0.11 }

3.1 timeflip 对称性

时间变换通过交换字母上标符号+和−,即车取反向的行进方向。也就是说, L − R + S + L + L^-R^+S^+L^+ LR+S+L+ 表达式可以通过 L + R − S − L − L^+R^- S^-L^- L+RSL 表达式通过时间变换获得。其中+,-交换。

如果原始路径从(0,0,0)到 ( x , y , ψ ) (x,y,ψ) (x,y,ψ) ,显而易见时间变换的路径将从 ( 0 , 0 , 0 ) (0,0,0) (0,0,0) ( − x , y , − ψ ) (−x,y,−ψ) (x,y,ψ) 。因此,如果一个路径表达式 L + t R − S − u L v − L^+tR^-S^-uL^-_v L+tRSuLv 从点 ( 0 , 0 , 0 ) (0,0,0) (0,0,0) ( − x , y , − ψ ) (−x,y,−ψ) (x,y,ψ) ,查找的合适弧长为t、u、v。这就等效于路径表达式 L t − R + S u + L v + L^-_tR^+S^+_uL^+_v LtR+Su+Lv+ 从点 ( 0 , 0 , 0 ) (0,0,0) (0,0,0) ( x , y , ψ ) (x,y,ψ) (x,y,ψ) 查找相应的弧长。

所以,通过时间变换将上述列表中第一个字母符号为”−“的字段消除。

假设我们推导出从起始姿态 q I = ( x 1 , y 1 , θ 1 ) q_I = (x_1, y_1, \theta_1) qI=(x1,y1,θ1)达到目标姿态 q G = ( x 2 , y 2 , θ 2 ) q_G = (x_2, y_2, \theta_2) qG=(x2,y2,θ2)的路径计算方法:

p a t h = c a l c P a t h ( x 1 , y 1 , θ 1 , x 2 , y 2 , θ 2 ) path = calcPath(x_1, y_1, \theta_1, x_2, y_2, \theta_2) path=calcPath(x1,y1,θ1,x2,y2,θ2)

利用对称性,将目标Pose修改为 q G = ( − x 2 , y 2 , − θ 2 ) q_G = (-x_2, y_2, -\theta_2) qG=(x2,y2,θ2),代入同样的Path计算函数:

p a t h = c a l c P a t h ( x 1 , y 1 , θ 1 , − x 2 , y 2 , − θ 2 ) path = calcPath(x_1, y_1, \theta_1, -x_2, y_2, -\theta_2) path=calcPath(x1,y1,θ1,x2,y2,θ2)

就得到从 q I = ( x 1 , y 1 , θ 1 ) q_I = (x_1, y_1, \theta_1) qI=(x1,y1,θ1) q G = ( x 2 , y 2 , θ 2 ) q_G = (x_2, y_2, \theta_2) qG=(x2,y2,θ2) L − S − R − L^-S^-R^- LSR类型的运动路径。

计算出的 L − S − R − L^-S^-R^- LSR的车辆运动路径如下:

{ Steering: left	    Gear: backward	distance: -2.85 }
{ Steering: straight	Gear: backward	distance: 4.02 }
{ Steering: right	    Gear: backward	distance: -2.32 }

3.2 reflect 对称性

反射变换通过交换字母L和R,即取反车辆转向。也就是说,一个路径表达式 R + L − S − R − R^+L^−S^−R^− R+LSR 的解可以通过反射变换从路径表达式 L + R − S − L − L^+R^−S^−L^− L+RSL 的解中获得,即沿着该路径交换L和R。相应的参考路径由 ( x , y , ψ ) (x,y,ψ) (x,y,ψ) 变为 ( x , − y , − ψ ) (x,−y,−ψ) (x,y,ψ)

假设已知路径 L + t R − S u − L v − L^+tR^-S^-_uL^-_v L+tRSuLv 解的表达式,从点 ( 0 , 0 , 0 ) → ( x , − y , − ψ ) (0,0,0) \to (x,-y,-\psi) (0,0,0)(x,y,ψ) 的最优弧长为t、u、v。

则从点 ( 0 , 0 , 0 ) → ( x , y , ψ ) (0,0,0) \to (x,y,\psi) (0,0,0)(x,y,ψ) 的最优弧长为t、u、v,对应路径 R + t L − S u − R v − R^+tL^-S^-_uR^-_v R+tLSuRv 的解, 所以,通过反射变换可以将上述列表中以 L + L^+ L+ 开头的字段消除。

将目标姿态修改为 q G = ( x 2 , − y 2 , − θ 2 ) q_G = (x_2, -y_2, -\theta_2) qG=(x2,y2,θ2),代入同样的Path计算函数:
p a t h = c a l c P a t h ( x 1 , y 1 , θ 1 , x 2 , − y 2 , − θ 2 ) path = calcPath(x_1, y_1, \theta_1, x_2, -y_2, -\theta_2) path=calcPath(x1,y1,θ1,x2,y2,θ2)

就得到从 q I = ( x 1 , y 1 , θ 1 ) q_I = (x_1, y_1, \theta_1) qI=(x1,y1,θ1) q G = ( x 2 , y 2 , θ 2 ) q_G = (x_2, y_2, \theta_2) qG=(x2,y2,θ2) R + S + L + R^+S^+L^+ R+S+L+类型的运动路径。

计算出的 R + S + L + R^+S^+L^+ R+S+L+的车辆运动路径如下:

{ Steering: right	    Gear: forward	distance: -0.56 }
{ Steering: straight	Gear: forward	distance: 5.28 }
{ Steering: left	    Gear: forward	distance: -0.03 }

3.3 timeflip + reflect

结合timeflip对称性和reflect对称性,将目标姿态修改为 q G = ( − x 2 , − y 2 , θ 2 ) q_G = (-x_2, -y_2, \theta_2) qG=(x2,y2,θ2),代入同样的Path计算函数:
p a t h = c a l c P a t h ( x 1 , y 1 , θ 1 , − x 2 , − y 2 , θ 2 ) path = calcPath(x_1, y_1, \theta_1, -x_2, -y_2, \theta_2) path=calcPath(x1,y1,θ1,x2,y2,θ2)

就得到从 q I = ( x 1 , y 1 , θ 1 ) q_I = (x_1, y_1, \theta_1) qI=(x1,y1,θ1) q G = ( x 2 , y 2 , θ 2 ) q_G = (x_2, y_2, \theta_2) qG=(x2,y2,θ2)的[公式]类型的运动路径。

计算出的 R − S − L − R^-S^-L^- RSL的车辆运动路径如下:

{ Steering: right		Gear: backward	distance: -1.86 }
{ Steering: straight	Gear: backward	distance: 5.28 }
{ Steering: left		Gear: backward	distance: -2.38 }

通过对称性,48种不同的Reeds Shepp曲线通过不超过12个函数就可以得到全部运动路径。

3.4 backwards

逆向变换通过将原路径按照相反方向行走。也就是说,路径 L − S − R − L + L^-S^-R^-L^+ LSRL+ 的公式可以使用逆向变换从路径 L + R − S − L − L^+R^-S^-L^- L+RSL 的公式中获得,即按照相反的顺序运动。逆向变换将目标点 ( x , y , ψ ) (x,y,\psi) (x,y,ψ) 转化为
x ′ = ( x cos ⁡ ( ψ ) + y sin ⁡ ( ψ ) , x sin ⁡ ( ψ ) − y cos ⁡ ( ψ ) , ψ ) x' = \bigl(x\cos(\psi)+y\sin(\psi),x\sin(\psi)-y\cos(\psi),\psi\bigr) x=(xcos(ψ)+ysin(ψ),xsin(ψ)ycos(ψ),ψ)
所以可以通过公式 L + R − S − L − L^+R^-S^-L^- L+RSL 到达点 x ′ x' x,从而获得 L − S − R − L + L^-S^-R^-L^+ LSRL+ 到达点 ( x , y , ψ ) (x,y,\psi) (x,y,ψ) 的解。通过这个变换可以消除上述列表中一些字段

4. 公式计算

参考论文:Optimal paths for a car that goes both forwards and backwards, J Reeds, L Shepp - Pacific journal of mathematics, 1990

论文中将不同的状态,按照Base word分类为了以下几种:

(8.1) L + S + L + L^+S^+L^+ L+S+L+
( u , t ) = R ( x − s i n ϕ , y − 1 + c o s ϕ ) v = M ( ϕ − t ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ (u, t) = R(x - sin\phi, y - 1 + cos\phi) \\ v = M(\phi - t) \\ L = |t| + |u| + |v| (u,t)=R(xsinϕ,y1+cosϕ)v=M(ϕt)L=t+u+v

(8.2) L + S + R + L^+S^+R^+ L+S+R+
( u 1 , t ) = R ( x + s i n ϕ , y − 1 − c o s ϕ ) (u_1, t) = R(x+sin\phi, y-1-cos\phi) (u1,t)=R(x+sinϕ,y1cosϕ)
if u 1 2 < 4 u_1^2 < 4 u12<4, L = ∞ L = \infin L=, else:
u = s q r t ( u 1 2 − 4 ) ( T , θ ) = R ( u , 2 ) t = M ( t 1 + θ ) v = M ( t − ϕ ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ u = sqrt(u_1^2 - 4) \\ (T, \theta) = R(u,2) \\ t = M(t_1+\theta) \\ v = M(t - \phi) \\ L = |t| + |u| + |v| u=sqrt(u124)(T,θ)=R(u,2)t=M(t1+θ)v=M(tϕ)L=t+u+v

(8.3) L + R − L L^+R^-L L+RL
ξ = x − s i n ϕ η = y − 1 + c o s ϕ ( u 1 , θ ) = R ( ξ , η ) \xi = x-sin\phi \\ \eta = y-1 + cos\phi \\ (u_1, \theta) = R(\xi, \eta) ξ=xsinϕη=y1+cosϕ(u1,θ)=R(ξ,η)
if u 1 2 < 4 u_1^2 < 4 u12<4, L = ∞ L = \infin L=, else:
A = a r c s i n ( u 1 2 / 4 ) , π / 2 ≤ A ≤ π u = M ( A + θ ) ( T , v ) = R ( 2 − ξ s i n u + η c o s u , ξ c o s u + η s i n u ) w = M ( ϕ + v − u ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ A = arcsin(u_1^2/4), \pi/2 \leq A \leq \pi \\ u = M(A + \theta) \\ (T, v) = R(2 - \xi sin u + \eta cos u, \xi cos u + \eta sin u) \\ w = M(\phi + v -u) \\ L = |t| + |u| + |v| A=arcsin(u12/4),π/2Aπu=M(A+θ)(T,v)=R(2ξsinu+ηcosu,ξcosu+ηsinu)w=M(ϕ+vu)L=t+u+v

(8.7) L + R u + L u − R − L^+R_u^+L_u^-R^- L+Ru+LuR
ρ = 2 + ξ 2 + η 2 4 \rho = \frac{2+\sqrt{\xi^2 + \eta ^2}}{4} ρ=42+ξ2+η2
if 0 ≤ ρ ≤ 1 0 \leq \rho \leq 1 0ρ1,
u = a r c c o s ( ρ ) , 0 ≤ u ≤ π / 2 t = τ ( u , − u ) u = w ( u , − u ) L = ∣ t ∣ + 2 ∣ u ∣ + ∣ v ∣ u = arccos(\rho) , 0 \leq u \leq \pi/2 \\ t = \tau(u, -u) \\ u = w(u, -u) \\ L = |t| + 2|u| + |v| u=arccos(ρ),0uπ/2t=τ(u,u)u=w(u,u)L=t+2∣u+v
else: L = ∞ L = \infin L=

(8.8) L + R u − L u − R + L^+R_u^-L_u^-R^+ L+RuLuR+
ρ = ( 20 − ξ 2 − η 2 ) / 16 \rho = (20 - \xi^2 - \eta^2)/16 ρ=(20ξ2η2)/16
if 0 ≤ ρ ≤ 1 0 \leq \rho \leq 1 0ρ1,
u = − a r c c o s ( ρ ) , 0 ≤ u ≤ π / 2 t = τ ( u , u ) v = w ( u , u ) u = -arccos(\rho), 0 \leq u \leq \pi/2 \\ t = \tau(u, u) \\ v = w(u, u) \\ u=arccos(ρ),0uπ/2t=τ(u,u)v=w(u,u)
else: L = ∞ L = \infin L=

(8.9) L + R − π / 2 − S − L − L^+R_{-\pi /2}^-S^-L^- L+Rπ/2SL
ξ = x + s i n ϕ η = y − 1 − c o s ϕ ( ρ , θ ) = R ( − η , ξ ) \xi = x+sin\phi \\ \eta = y - 1 - cos\phi \\ (\rho, \theta) = R(-\eta, \xi) ξ=x+sinϕη=y1cosϕ(ρ,θ)=R(η,ξ)
if ρ < 2 \rho< 2 ρ<2, L = ∞ L = \infin L=, else:
( T , θ 1 ) = R ( ρ 2 − 4 − 2 ) t = M ( θ − θ 1 ) u = 2 − θ 1 v = M ( ϕ − π / 2 − t ) L = ∣ t ∣ + π / 2 + ∣ u ∣ + ∣ v ∣ (T, \theta_1) = R(\sqrt{\rho^2-4}-2) \\ t = M(\theta - \theta_1) \\ u = 2 - \theta_1 \\ v = M(\phi - \pi/2 - t) \\ L = |t| + \pi/2 + |u| + |v| (T,θ1)=R(ρ24 2)t=M(θθ1)u=2θ1v=M(ϕπ/2t)L=t+π/2+u+v

(8.10) L + R − π / 2 − S − R − L^+R_{-\pi /2}^-S^-R^- L+Rπ/2SR
t = θ u = 2 − ρ v = M ( t + π / 2 − ϕ ) L = ∣ t ∣ + π / 2 + ∣ u ∣ + ∣ v ∣ t = \theta \\ u = 2 - \rho \\ v = M(t + \pi/2 - \phi) \\ L = |t| + \pi/2 + |u| + |v| t=θu=2ρv=M(t+π/2ϕ)L=t+π/2+u+v

(8.11) L + R − π / 2 − L − π / 2 − R + L^+R_{-\pi /2}^-L_{-\pi /2}^-R^+ L+Rπ/2Lπ/2R+
ξ = x + s i n ϕ η = y − 1 − c o s ϕ ( ρ , θ ) = R ( ξ , η ) \xi = x + sin\phi \\ \eta = y - 1 - cos\phi \\ (\rho, \theta) = R(\xi, \eta) ξ=x+sinϕη=y1cosϕ(ρ,θ)=R(ξ,η)
if ρ < 2 \rho< 2 ρ<2, L = ∞ L = \infin L=, else:
t = M ( θ − a r c c o s ( − 2 / ρ ) ) , − π / 2 ≤ t ≤ π / 2 t = M(\theta - arccos(-2/\rho)), -\pi/2 \leq t \leq \pi/2 \\ t=M(θarccos(2/ρ)),π/2tπ/2
if t ≤ 0 t \leq 0 t0, L = ∞ L = \infin L=, else:
u = 4 − ( ξ + 2 c o s t ) / s i n t w = M ( t − ϕ ) u = 4 - (\xi + 2cost)/sint \\ w = M(t - \phi) u=4(ξ+2cost)/sintw=M(tϕ)

疑似论文印刷错误? 代码中公式如下:
ξ = x + s i n ϕ η = y − 1 − c o s ϕ ( ρ , θ ) = R ( ξ , η ) \xi = x + sin\phi \\ \eta = y - 1 - cos\phi \\ (\rho, \theta) = R(\xi, \eta) ξ=x+sinϕη=y1cosϕ(ρ,θ)=R(ξ,η)
if ρ < 2 \rho< 2 ρ<2, L = ∞ L = \infin L=, else:
u = 4 − ρ 2 − 4 u = 4 - \sqrt{\rho^2 - 4} \\ u=4ρ24
if u < 0 u < 0 u<0, L = ∞ L = \infin L=, else:
t = M ( a r c t a n ( ( 4 − u ) ξ − 2 η − 2 ξ + ( u − 4 ) η ) ) v = M ( t − ϕ ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ t = M(arctan(\frac{(4 - u)\xi - 2 \eta}{-2\xi + (u-4)\eta})) \\ v = M(t - \phi) \\ L = |t| + |u| + |v| t=M(arctan(2ξ+(u4)η(4u)ξ2η))v=M(tϕ)L=t+u+v

你可能感兴趣的:(自动驾驶,学习)