目录

  • 一、车辆自行车运动学模型(kinematic bicycle model)
  • 1.基于车辆重心的运动学模型
  • 2. 以后轴中心为原点的运动学模型
  • 二、车辆自行车动力学模型(kinematic bicycle model)
  • 1、基本模型建立
  • 2、力的计算
  • 3、动力学模型总结



规划控制模块在整个自动驾驶领域占有相当重要的位置;对规划而言,能够规划出一条符合车辆运动规律的轨迹对底层的控制来说是至关重要。对于控制而言,其建立的模型越准确,则控制通常就会更加精准。因此建立比较精确的车辆数学模型对规划和控制都相当重要。本文以将车辆简化为自行车模型,然后分别建立运动学模型和动力学模型。

一、车辆自行车运动学模型(kinematic bicycle model)

运动学模型基于如下假设:

  1. 不考虑车辆在垂直方向(z轴方向上的运动),即假设车辆在一个二维平面上运动。
  2. 忽略车辆受力情况,只考虑车辆在运动中的几何关系;
  3. 两个前轮(后轮)合并成一个单独的轮胎(自行车模型的由来);
  4. 轮胎运动方向和轮胎平面水平.

1.基于车辆重心的运动学模型

车辆自行车模型示意如下 所示。

交通重力模型python_数学模型


点O为车辆旋转中心,A为前轮中心,B为后轮中心,C为重心(质心)。

其它符号含义入下:

符号

含义

符号

含义

前轮偏角

后轮偏角

后轮中心到重心之间的距离

前轮中心到重心的距离

重心速度

滑移角

航向角

车辆加速度

车辆x轴方向位置

y轴位置

其根据几何关系可以得到如下数学模型12
根据三角形正弦定理,对于OCA有:
交通重力模型python_程序人生_12
对OCB有:
交通重力模型python_程序人生_13
从(1.1)得到:
交通重力模型python_自动驾驶_14
从(1.2)得到:
交通重力模型python_交通重力模型python_15
(3)两边乘以交通重力模型python_控制模块_16得到:
交通重力模型python_控制模块_17
同理(4)两边乘以交通重力模型python_自动驾驶_18得到:
交通重力模型python_控制模块_19
将(5)(6)相加得:
交通重力模型python_程序人生_20
在上述假设条件下,很容易得到如下关系:
交通重力模型python_控制模块_21
代入(1.7)中,可以得到:
交通重力模型python_数学模型_22
综上,可得到自行车运动学模型:
交通重力模型python_数学模型_23

其中
交通重力模型python_自动驾驶_24

2. 以后轴中心为原点的运动学模型

交通重力模型python_程序人生_25


交通重力模型python_自动驾驶_26

根据几何关系可以的得到如下模型
交通重力模型python_数学模型_27
其中s为车速(后轴中心速度),u1 为加速度,基于该模型,当我们确定了某个控制输入交通重力模型python_交通重力模型python_28时,我们就可以估算下一时刻车辆的状态信息。

二、车辆自行车动力学模型(kinematic bicycle model)

上面介绍的运动学模型在速度较低时,能够较为准确的反映车辆运动状态,但在高速条件下,其车轮的侧滑角已经不能在忽略。下面将建立自行车的动力学模型。

1、基本模型建立

在建模之前我们作如下假设:

  1. 车辆所受的空气的力只会对车身坐标系x轴方向上的运动有影响,y轴方向和沿着z轴的旋转不会受到空气力的影响;
  2. 车辆运行在二维平面中,也就是z轴无速度。
  3. 车辆轮胎力运行在线性区间。

建立如下坐标系,X,Y表示全局坐标系,x,y则表示车身坐标系,x轴方向沿车辆中轴方向向前,y轴方向朝右,其原点在质心位置。

交通重力模型python_数学模型_29


根据牛顿运动定律有:

交通重力模型python_自动驾驶_30

其中交通重力模型python_交通重力模型python_31表示在y方向的质心加速度。

交通重力模型python_交通重力模型python_32

其中:交通重力模型python_控制模块_33表示在x方向的质心加速度。

交通重力模型python_自动驾驶_34交通重力模型python_程序人生_35分别表示车前轮和后轮所受到的力在y轴方向上的分量。

交通重力模型python_程序人生_36交通重力模型python_程序人生_37分别表示车前轮和后轮所受到的力在x轴方向上的分量。

交通重力模型python_交通重力模型python_38交通重力模型python_程序人生_37表示车在x轴方向受到的空气阻力。

其沿着x和y轴方向上的加速度包括两部分,一部分是沿着轴方向运行加速度,另一部分为离心加速度。
交通重力模型python_自动驾驶_40
另外,在z轴方向转动方程:
交通重力模型python_交通重力模型python_41

2、力的计算

车辆轮胎在y轴方向受到的力交通重力模型python_数学模型_42交通重力模型python_程序人生_35实验结果表明,其大小正比于轮胎的侧滑角。其侧滑角如下图所示:

交通重力模型python_交通重力模型python_44


可以得到,前轮侧滑角:

交通重力模型python_程序人生_45

后轮侧滑角:

交通重力模型python_控制模块_46

因此,有:

交通重力模型python_控制模块_47

交通重力模型python_交通重力模型python_48

其中交通重力模型python_交通重力模型python_49交通重力模型python_程序人生_50分别表示前后轮的转弯刚度(cornering stiffness)

根据运动关系可以得到:
交通重力模型python_程序人生_51
交通重力模型python_数学模型_52

车辆在x轴方向的力交通重力模型python_交通重力模型python_53交通重力模型python_程序人生_37与轮胎的滑比交通重力模型python_控制模块_55成正比。其定义为:
交通重力模型python_交通重力模型python_56
因此有:
交通重力模型python_控制模块_57
交通重力模型python_自动驾驶_58
其中交通重力模型python_程序人生_59为纵向的轮胎刚性参数(tire stiffness parameters)。

对于空气阻力2
交通重力模型python_数学模型_60
另外在全局坐标系下:
交通重力模型python_程序人生_61

3、动力学模型总结

总结上述建模过程,我们可以轻松得到如下车辆自行车动力学模型:
交通重力模型python_交通重力模型python_62


自动驾驶中的车辆运动学模型 ↩︎

Rajamani R. Vehicle Dynamics and Control[M]. Springer Science, 2006. ↩︎ ↩︎