动手学运动规划:1.2 车辆运动学:阿克曼转向模型
你见过凌晨三点的洛杉矶吗 —科比 布莱恩特
🏰代码及环境配置 :请参考0.2 环境配置和代码 | 动手学运动规划!
1.2.1 阿克曼转向模型(Ackermann steering geometry)
阿克曼转向模型 是一种为了解决交通工具转弯时,内外转向轮路径指向的圆心不同的几何学,
这个想法是由德国车辆工程师“Lankensperger”于1817年提出的,之后由他的英国代理商Rudolph Ackermann于1818年提出专利。

依据阿克曼转向几何设计的车辆在转弯时,两个前轮是转向角不一样.内侧轮比外侧轮的转向角大;两个后轮不转向;四个轮子路径的圆心会交汇到同一个点,也就是瞬时转向中心.

(1) 基本参数
- v:车辆速度。
- (X,Y):车辆后轴中心位置.
- O:车辆瞬时转向中心.
- R:车辆瞬时转向半径.
- \theta:航向角,车辆当前位置与横坐标的夹角,即车辆的行驶方向。
- \omega:车辆绕瞬时转向中心旋转的角速度。
- \delta_i,\delta_o:内侧前轮转角,外侧前轮转角。
- L:轴距,前后轮之间的距离。
- W:车辆宽度
- \Delta t:时间步长
(2) 前轮偏角的几何关系
由于阿克曼模型的两前轮转角不同,可以分别得到
内侧前轮转角,外侧前轮转角,平均前轮转角:
\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}
将1,2式取倒并相减可得:
\frac{1}{\tan \delta_o}-\frac{1}{\tan \delta_i}=\frac{r+w / 2}{l}-\frac{r-w / 2}{l}=\frac{w}{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}
整理可得内,外侧前轮转角与平均前轮转角的关系:
\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) 状态转移方程
完整的状态转移方程与自行车模型类似,代入相关参数即可
\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*}
在规划算法中,一般不需要这么复杂的运动学模型,阿克曼转向模型应用不多. 大部分情况下,自行车模型即可.后续我们会在控制专题中详细介绍,因此这里不提供相关代码.
🏎️自动驾驶小白说官网:https://www.helloxiaobai.cn
🐮GitHub 代码仓:https://github.com/Hello-Xiao-Bai/Planning-XiaoBai!
🌠代码配合官网教程食用更佳!
🚀知乎,微信,知识星球全平台同号!
