一、纵向控制概述
大家好,我是老张。在自动驾驶这个行当摸爬滚打了十来年,今天咱们来聊聊纵向控制。说白了,纵向控制就是管着车怎么「走」和怎么「停」的那套逻辑。你想想看,油门踩多深、刹车什么时候介入、跟车距离保持多少——这些都属于纵向控制的范畴。
我记得刚入行那会儿,带我的师傅说过一句话:「横向控制决定你能不能开到目的地,纵向控制决定你能不能活着到目的地。」话糙理不糙,纵向控制直接关系到行车安全,半点马虎不得。
1.1 车辆纵向动力学模型
要搞纵向控制,首先得明白车是怎么动起来的。这里我给大家拆解一下最基本的纵向动力学模型。
车辆在纵向方向上,主要受这几个力的作用:
- 驱动力:发动机或电机通过传动系统传到车轮上的力
- 制动力:刹车系统施加的阻力
- 滚动阻力:轮胎与地面摩擦产生的阻力
- 空气阻力:车速越快,这个力越大
- 坡度阻力:上坡时重力沿坡道的分量
根据牛顿第二定律,我们可以写出纵向运动方程:
m * a = F_drive - F_brake - F_roll - F_aero - F_grade
其中:
- m 是车辆质量
- a 是纵向加速度
- F_drive 是驱动力
- F_brake 是制动力
- F_roll 是滚动阻力
- F_aero 是空气阻力
- F_grade 是坡度阻力
实际项目中的坑: 我曾经在标定一辆重型卡车时,发现模型预测的加速能力和实际差了将近20%。查了半天,原来是忽略了载重变化对滚动阻力的影响。空车和满载,滚动阻力系数能差出30%以上。所以做纵向控制,千万别把车辆质量当成常数。
空气阻力的计算公式大家应该都熟悉:
F_aero = 0.5 * ρ * Cd * A * v²
ρ是空气密度,Cd是风阻系数,A是迎风面积,v是车速。注意这里速度是平方关系——车速翻倍,空气阻力变成四倍。高速巡航时,空气阻力是主要的能耗来源。
1.2 控制目标与性能指标
纵向控制到底要达成什么目标?我个人习惯把它归纳为三个层次:
| 层次 | 目标 | 具体表现 |
|---|---|---|
| 安全层 | 避免碰撞 | 跟车距离保持、紧急制动响应 |
| 舒适层 | 平顺加减速 | 加速度变化率(jerk)控制 |
| 效率层 | 经济性 | 能量回收、减少不必要的加减速 |
评价纵向控制做得好不好,我一般看这几个指标:
- 跟踪精度:实际车速和目标车速的偏差,通常要求控制在±1km/h以内
- 响应时间:从发出指令到实际执行到位的时间,一般要求小于200ms
- 超调量:加速或减速过程中超过目标值的程度,超调大了乘客会晕车
- 稳态误差:系统稳定后与目标的偏差,这个必须趋近于零
避坑指南: 我曾经在一个项目中,过分追求跟踪精度,把PID参数调得特别激进。结果精度是上去了,但车开起来一窜一窜的,乘客投诉说像新手司机。后来我学乖了——纵向控制的第一优先级是舒适性,精度排第二。你想想看,谁愿意坐一辆精确但让人晕车的车?
1.3 纵向控制与横向控制的区别
很多刚入行的朋友容易把纵向和横向搞混。我打个比方你就明白了:
- 纵向控制:管的是「油门和刹车」,决定车跑多快、什么时候停
- 横向控制:管的是「方向盘」,决定车往哪个方向拐
从控制理论的角度看,两者的区别更明显:
| 对比项 | 纵向控制 | 横向控制 |
|---|---|---|
| 执行器 | 油门、刹车 | 方向盘 |
| 被控量 | 车速、加速度、距离 | 航向角、横向偏差 |
| 动力学特性 | 一阶惯性为主 | 二阶振荡特性 |
| 主要干扰 | 坡度、风阻、载重 | 路面侧倾、轮胎侧偏 |
| 控制周期 | 通常10-50ms | 通常50-100ms |
嗯,这里要注意一点:纵向控制的执行器(油门和刹车)是非线性的。油门开度和加速度之间不是简单的线性关系,刹车更是如此。我见过不少新手直接用线性模型去设计控制器,结果实车测试时一塌糊涂。
横向控制相对好处理一些,因为方向盘转角到横摆角速度的传递函数,在中等车速下近似线性。但纵向控制就没这么幸运了——发动机特性、变速箱传动比、制动液压力响应,这些环节都有明显的非线性。
重要提醒: 纵向控制和横向控制不是完全独立的。比如你在弯道中急刹车,车辆的横摆特性会发生变化,这时候横向控制器的参数可能需要调整。这就是所谓的「纵横向耦合」问题。我在做L4级自动驾驶项目时,专门花了两周时间处理这个耦合问题,才让车辆在弯道中既能平稳减速又不偏离车道。
好了,纵向控制的基本概念就聊到这儿。下面我用一张图来总结本章的核心内容:
这张图把纵向控制的核心要素都串起来了。从动力学模型出发,到控制目标,再到与横向控制的对比,构成了纵向控制的基础知识框架。后面的章节,我们会逐一深入每个环节。