横向控制车辆模型

想控制车辆的运动,首先要对车辆的运动建立一个数据化的模型。模型建立的越准确,对车辆运动的描述就越准确,对车辆的追踪轨迹的控制效果也就会更好。除了要真实的反映车辆特性以外,建立的模型也应该尽可能的简单易用。

车辆模型有两种:

  • 根据几何关系建立运动学模型
  • 根据牛顿力学建立动力学模型

  这两个模型的区别在于运动学模型认为轮胎是刚性轮胎,不会变形;而牛顿力学会充分考虑轮胎变形。

  所以一般动力学模型要比运动学模型更加精确,但动力学模型考虑轮胎变形就很复杂,因为轮胎它是橡胶和空气混在一起的,这样的东西很难去精确地去描述轮胎的变形到底是怎样的,所以动力学模型的参数很难给做到非常准确,但是运动学模型就没有这样的缺点,它就是纯粹的几何关系,不考虑轮胎变形。

  因此,运动型模型相对较为简单,其代价在于不考虑轮胎的变形。这种简化的模型适用于轮胎变形较小的特定情况,例如在低速行驶、大转弯半径和频繁规划轨迹的情况下。然而,对于一些更激烈的驾驶情况,运动学模型可能不再适用,因为在这种情况下,轮胎的变形可能变得显著,从而导致较大的误差。

本篇文章主要讲解运动学模型,从几何的角度研究车辆的运动规律,包括在空间上的位置,速度随时间而产生的变化。最常见的运动学模型是二自由度自行车模型,这个模型很简单,但是却能够很准确的描述车辆运动关系之间的约束。

1.自行车模型

假设条件:

  1. 车辆的运动仅限于X-Y平面,即不考虑“上下”方向的运动。

  2. 左右车轮的转向运动相同,左右车轮被合并为单个车轮。

  3. 忽略车轮的侧偏角(滑移角),即点A(前轮)和点B(后轮)处的速度矢量方向分别与前轮和后轮的朝向一致。

  4. 忽略载荷转移(负载转移);

  5. 假设车辆轮胎为刚体轮胎(无变形)

其中:

  • \beta质心侧偏角(侧滑角),质心速度与\underset{x}{\rightarrow}的夹角。
  • \varphi横摆角(偏航角),车的轴线与\underset{X}{\rightarrow}的夹角。
  • \beta+\varphi航向角,质心速度与\underset{X}{\rightarrow}的夹角。
  • \delta _f:前轮转角。
  • \delta r:后轮转角。
  • l_f:质心到前轮中心的距离。
  • l_r:质心到后轮中心的距离。

在实际情况下,车辆并不完全符合简化模型中的假设。车辆轮胎的材料是橡胶,虽然相对普通材料较硬,但与钢铁相比仍然是一种相对柔软的材料。因此,当轮胎受到力的作用时,会发生变形,这种变形是不能被忽略的。

  由于轮胎的这种变形特性,自行车模型的前轮转角与实际车辆的前轮转角并不完全相同。由于前轮转角与方向盘转角之间存在一一对应的关系,例如,如果传动比是
10,那么当方向盘转角为 30 度时,理论上前轮转角应为 3 度。但是由于轮胎的变形,实际的前轮转角可能并非完全按照这一比例变化。

  因此,在考虑车辆的实际操作时,需要考虑轮胎变形对前轮转角的影响,这可能会导致方向盘转角与前轮转角之间的实际比例与理论比例存在差异。

2.车辆运动学模型的建立与推导

在三角形OCB和OCA中分别运用正弦定理:

                                                \frac{\sin(\delta_f - \beta)}{l_f} = \frac{\sin\left(\frac{\pi}{2} - \delta_f\right)}{R}                       

                                                 \frac{\sin(\beta - \delta_r)}{l_r} = \frac{\sin\left(\frac{\pi}{2} + \delta_r\right)}{R}

对这两个式子化简:

                                        \frac{\sin(\delta_f)\cos(\beta) - \sin(\beta)\cos(\delta_f)}{l_f} = \frac{\cos(\delta_f)}{R}

                                        \quad \frac{\cos(\delta_r)\sin(\beta) - \cos(\beta)\sin(\delta_r)}{l_r} = \frac{\cos(\delta_r)}{R}

因为质心会随着车的重量改变,所以想办法用轴距l_f+l_r表示:

                                        \tan(\delta_f)\cos(\beta) - \sin(\beta) = \frac{l_f}{R}

                                        \quad \sin(\beta) - \tan(\delta_r)\cos(\beta) = \frac{l_r}{R}

                                        \left( \tan(\delta_f) - \tan(\delta_r) \right) \cos(\beta) = \frac{l_f + l_r}{R}

对于低速运动,车辆的方向变化速率等于车辆的角速度:

                        \dot{\psi} \approx \frac{V}{R}=V \cdot \frac{1}{R}=V \cdot \frac{\left(\tan \left(\delta_f\right)-\tan \left(\delta_r\right)\right) \cos (\beta)}{l_f+l_r}

                                                      = \frac{V \cos(\beta)}{l_f + l_r} \left( \tan(\delta_f) - \tan(\delta_r) \right)

得到运动学微分方程:

车辆沿全局 X 轴的速度分量:

                                                \dot{X} = V \cos(\psi + \beta)

车辆沿全局 Y 轴的速度分量:

                                                \dot{Y} = V \sin(\psi + \beta)

车辆的横摆角:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \psi = \frac{V \cos(\beta)}{l_f + l_r} \left( \tan(\delta_f) - \tan(\delta_r) \right)

车辆质心侧偏角:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \beta = \tan^{-1} \left( \frac{l_f \tan(\delta_r) + l_r \tan(\delta_f)}{l_f + l_r} \right)

运动学方程的前提是低速条件,在低速条件下认为车不会发生侧向滑动,即车不会漂移,所以v_y \approx 0

根据定义,质心侧偏角:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \beta=\arctan \frac{v_y}{v_x}=0

横摆角:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                \dot{\psi}=\frac{V}{R} \approx V\tan \frac{\delta_f}{L}

轴距:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        L=l_f+l_r

前轮转角与轴距,转弯半径关系(很重要,后面要用):

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \tan \delta_f=\frac{L}{R}

最终运动学方程如下:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                \left\{\begin{array}{l} \dot{X}=V \cos \varphi \\ \dot{Y}=V \sin \varphi \\ \dot{\psi}=\frac{V \tan \delta_f}{L} \end{array}\right.

注意:在阿克曼模型中,前轮左侧和右侧转角其实并不相同:

外侧转向角:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \delta_o = \frac{L}{R + \frac{l_w}{2}}

内侧转向角:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \delta_i = \frac{L}{R - \frac{l_w}{2}}

平均转向角:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \delta_f = \frac{(\delta_i + \delta_o)}{2}

内外转向角之差:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \delta_i - \delta_o = \frac{L l_w}{R^2 - \frac{l_w^2}{4}}\approx \frac{L \cdot l_w}{R^2} = \delta^2 \frac{l_w}{L}

由此我们就得到了关于阿克曼的运动学模型。

轨迹跟踪算法(持续更新中)

目前主流的轨迹跟踪方法有两类:基于几何模型的跟踪方法和基于动力学模型的跟踪方法。

基于几何模型的跟踪方法:

Pure Pursuit

详见博客:【自动驾驶】基于几何模型的跟踪方法——Pure Pursuit算法-CSDN博客

Stanley

详见博客:​​​​​​【自动驾驶】基于几何模型的跟踪方法——Stanley算法-CSDN博客

基于动力学模型的跟踪方法:

LQR

MPC

Logo

分享最新的 NVIDIA AI Software 资源以及活动/会议信息,精选收录AI相关技术内容,欢迎大家加入社区并参与讨论。

更多推荐