第一章:车辆动力学基础

各位同学好,我是老张。今天咱们聊聊车辆动力学基础。说实话,这章是整个控制算法设计的根基。你想想看,连车怎么动都搞不清楚,还谈什么控制?

我在做ADAS项目时,就吃过这个亏。一开始觉得动力学模型差不多就行,结果实车测试时,控制效果一塌糊涂。后来老老实实把基础补上,才把问题解决。所以,这一章咱们得认真过一遍。

1.1 车辆坐标系定义

搞车辆控制,第一件事就是定坐标系。我个人习惯用ISO标准坐标系,也就是大家常说的车辆坐标系。

  • X轴:车辆前进方向为正。说白了,就是车头指向的方向。
  • Y轴:车辆左侧为正。嗯,这里要注意,有些教材用右侧为正,但ISO标准是左侧。
  • Z轴:垂直向上为正。这个一般没啥争议。

为什么要这么定义?因为后面所有的运动方程、控制律推导,都基于这个坐标系。你如果自己另搞一套,后面推导公式时很容易乱套。

重要提示:坐标系定义是基础中的基础。我建议你把这个坐标系画在纸上,贴在工位上。每次写代码前看一眼,能避免很多低级错误。

1.2 轮胎模型——魔术公式

轮胎模型,说白了就是描述轮胎和地面之间那点事儿。你想想看,车能加速、能转弯、能刹车,全靠轮胎和地面的摩擦力。所以轮胎模型准不准,直接决定了控制算法的上限。

魔术公式(Magic Formula)是Pacejka老爷子提出的。为什么叫魔术公式?因为它用一个公式就能拟合出轮胎在各种工况下的特性曲线,确实很神奇。

公式长这样:

Y(x) = D * sin(C * arctan(B * x - E * (B * x - arctan(B * x))))

其中:

  • Y:输出量,可以是纵向力、侧向力或回正力矩
  • x:输入量,可以是滑移率或侧偏角
  • B:刚度因子,决定曲线初始斜率
  • C:形状因子,决定曲线形状
  • D:峰值因子,决定曲线最大值
  • E:曲率因子,决定曲线顶部形状

我在项目中遇到过一个问题:直接用魔术公式算出来的力,和实际测试数据对不上。后来发现是参数没标定好。魔术公式的参数需要根据轮胎实测数据去拟合,不能随便用默认值。

个人经验:如果你手头没有轮胎实测数据,可以用CarSim或TireSim里的标准轮胎参数。但记住,那只是近似值,实车调试时一定要重新标定。

1.3 车辆纵向动力学

纵向动力学,就是研究车怎么加速、怎么减速。说白了,就是沿着X轴方向的运动。

纵向动力学方程:

m * a_x = F_xf + F_xr - F_resistance

其中:

  • m:整车质量
  • a_x:纵向加速度
  • F_xf:前轮纵向力
  • F_xr:后轮纵向力
  • F_resistance:总阻力(包括滚动阻力、空气阻力、坡度阻力)

这里有个坑,我踩过。空气阻力是和速度平方成正比的。很多初学者把它当成常数,结果高速工况下控制误差特别大。你想想看,车速从60km/h到120km/h,空气阻力翻了4倍,能一样吗?

避坑指南:我曾经在ACC(自适应巡航)项目中,忽略了坡度阻力的影响。结果在山区道路上,控制效果时好时坏。后来加上坡度补偿,问题才解决。所以,纵向动力学模型一定要考虑坡度。

1.4 车辆横向动力学

横向动力学,研究的是车怎么转弯。这个比纵向复杂一些,因为涉及到侧偏、横摆等概念。

简化后的二自由度横向动力学方程:

m * v * (β_dot + r) = F_yf + F_yr
I_z * r_dot = a * F_yf - b * F_yr

其中:

  • v:车速
  • β:质心侧偏角
  • r:横摆角速度
  • F_yf, F_yr:前后轮侧向力
  • a, b:质心到前后轴的距离
  • I_z:横摆转动惯量

嗯,这里要注意。二自由度模型假设前轮转角很小,且忽略了悬架的影响。实际车辆在极限工况下,这个模型就不太准了。但作为控制算法设计的基础,它完全够用。

我记得有一次做车道保持控制,用二自由度模型设计控制器,仿真效果很好。但实车测试时,发现车辆在高速过弯时控制不稳定。后来排查发现,是轮胎侧偏刚度随载荷变化导致的。所以,模型参数一定要考虑工况变化。

1.5 纵向与横向的耦合

最后说一个容易被忽略的点:纵向和横向是耦合的。你想想看,急刹车时转弯,和匀速时转弯,车辆的响应能一样吗?

耦合主要体现在:

  • 纵向加速度会影响轮胎的垂直载荷,进而影响侧向力
  • 侧向加速度也会影响纵向力的传递
  • 轮胎的摩擦椭圆(Friction Ellipse)限制了纵向力和侧向力的合力

我在做ESP(电子稳定程序)项目时,就深刻体会到了这一点。如果不考虑耦合,控制算法在极限工况下很容易失效。所以,高级的控制算法一定要考虑纵横向耦合。

核心总结:车辆动力学基础,说白了就是搞清楚车怎么动。坐标系是骨架,轮胎模型是肌肉,纵横向方程是神经。这三者缺一不可。后面章节的控制算法设计,都建立在这个基础之上。所以,这一章的内容,我建议你反复看,直到能闭着眼睛推导出来为止。

好了,第一章就到这里。下一章咱们聊聊控制算法设计的基本框架。有什么问题,欢迎随时交流。