你见过凌晨三点的洛杉矶吗 —科比 布莱恩特
🏰代码及环境配置:请参考0.2 环境配置和代码运行 | 动手学运动规划!
1.2.1 阿克曼转向模型(Ackermann steering geometry)
阿克曼转向模型是一种为了解决交通工具转弯时,内外转向轮路径指向的圆心不同的几何学,
这个想法是由德国车辆工程师“Lankensperger”于1817年提出的,之后由他的英国代理商Rudolph Ackermann于1818年提出专利。
依据阿克曼转向几何设计的车辆在转弯时,两个前轮是转向角不一样.内侧轮比外侧轮的转向角大;两个后轮不转向;四个轮子路径的圆心会交汇到同一个点,也就是瞬时转向中心.
(1) 基本参数
- v : v: v:车辆速度。
- ( X , Y ) : (X,Y): (X,Y):车辆后轴中心位置.
- O : O: O:车辆瞬时转向中心.
- R : R: R:车辆瞬时转向半径.
- θ : \theta: θ:航向角,车辆当前位置与横坐标的夹角,即车辆的行驶方向。
- ω : \omega: ω:车辆绕瞬时转向中心旋转的角速度。
- δ i , δ o : \delta_i,\delta_o: δi,δo:内侧前轮转角,外侧前轮转角。
- L : L: L:轴距,前后轮之间的距离。
- W : W: W:车辆宽度
- Δ t \Delta t Δt:时间步长
(2) 前轮偏角的几何关系
由于阿克曼模型的两前轮转角不同,可以分别得到
内侧前轮转角,外侧前轮转角,平均前轮转角:
t a n ( δ o ) = L R + W 2 t a n ( δ i ) = L R − W 2 t a n ( δ ) = δ o + δ i 2 ≅ L R \begin{aligned}tan(\delta_o) &=\frac{L}{R+\frac{W}{2}} \\ tan(\delta_i) & =\frac{L}{R-\frac{W}{2}}\\ tan(\delta) &= \frac{\delta_o+\delta_i}{2} \\ &\cong \frac{L}{R}\end{aligned} tan(δo)tan(δi)tan(δ)=R+2WL=R−2WL=2δo+δi≅RL
将1,2式取倒并相减可得:
1 tan δ o − 1 tan δ i = r + w / 2 l − r − w / 2 l = w l \frac{1}{\tan \delta_o}-\frac{1}{\tan \delta_i}=\frac{r+w / 2}{l}-\frac{r-w / 2}{l}=\frac{w}{l} tanδo1−tanδi1=lr+w/2−lr−w/2=lw
同样的方式,减去平均前轮转角可得:
cot δ i − cot δ = R − W / 2 L − R L = − W 2 L ⇔ cot δ i = cot δ − W 2 L cot δ o − cot δ = R + W / 2 L − R L = + W 2 L ⇔ cot δ o = cot δ + W 2 L \begin{aligned}\cot \delta_i-\cot \delta & =\frac{R-W / 2}{L}-\frac{R}{L}=-\frac{W}{2 L} \Leftrightarrow \cot \delta_i=\cot \delta-\frac{W}{2 L} \\\cot \delta_o-\cot \delta & =\frac{R+W / 2}{L}-\frac{R}{L}=+\frac{W}{2 L} \Leftrightarrow \cot \delta_o=\cot \delta+\frac{W}{2 L}\end{aligned} cotδi−cotδcotδo−cotδ=LR−W/2−LR=−2LW⇔cotδi=cotδ−2LW=LR+W/2−LR=+2LW⇔cotδo=cotδ+2LW
整理可得内,外侧前轮转角与平均前轮转角的关系:
$$
\begin{aligned} \delta_i&=\tan ^{-1}\left(\frac{2 L \sin \delta}{2 L \cos \delta-W \sin \delta}\right) \ \delta_o&=\tan ^{-1}\left(\frac{2 L \sin \delta}{2 L \cos \delta+W \sin \delta}\right)\
\delta&=tan ^{-1}\left(
\frac{2 L \sin \delta_i}
{2 L \cos\delta_i+W\sin \delta_i}
\right) \
&=tan ^{-1}\left(
\frac{2 L \sin \delta_o}
{2 L \cos\delta_o-W\sin \delta_o}
\right)
\end{aligned}
$$
(3) 状态转移方程
完整的状态转移方程与自行车模型类似,代入相关参数即可
x ˙ = v x i Δ t y ˙ = v y i Δ t θ ˙ ≈ ω = v R = v L tan ( δ ) = 2 v sin δ i 2 L cos δ i + W sin δ i = 2 v sin δ o 2 L cos δ o − W sin δ o \begin{align*} \dot{x}&=v_{x_i} \Delta t \\ \dot{y}&=v_{y_i}\Delta t \\ \dot{\theta}&\approx{\omega} \\ &=\frac{v}R \\ &= \frac{v}{L} \tan(\delta)\\ &=\frac{2 v \sin \delta_i} {2 L \cos\delta_i+W\sin \delta_i} \\ &=\frac{2 v \sin \delta_o} {2 L \cos\delta_o-W\sin \delta_o} \end{align*} x˙y˙θ˙=vxiΔt=vyiΔt≈ω=Rv=Lvtan(δ)=2Lcosδi+Wsinδi2vsinδi=2Lcosδo−Wsinδo2vsinδo
在规划算法中,一般不需要这么复杂的运动学模型,阿克曼转向模型应用不多. 大部分情况下,自行车模型即可.后续我们会在控制专题中详细介绍,因此这里不提供相关代码.
🏎️自动驾驶小白说官网:https://www.helloxiaobai.cn
🐮GitHub代码仓:https://github.com/Hello-Xiao-Bai/Planning-XiaoBai!
🌠代码配合官网教程食用更佳!
🚀知乎,微信,知识星球全平台同号!