一、横向控制概述
1.1 什么是横向控制
横向控制,说白了就是让车“走对路”。
你想想看,一辆无人车在路上跑,它需要解决两个基本问题:往哪走和走多快。“往哪走”这件事,就是横向控制的核心任务。
我个人的理解是:横向控制就是控制车辆的方向盘转角,让车辆沿着我们规划好的参考路径行驶。它要保证车辆不偏离车道,过弯时不会冲到对面车道去,直道上也不会左摇右晃。
核心定义:横向控制 = 通过控制方向盘转角,使车辆的实际行驶轨迹与期望路径之间的误差最小化。
嗯,这里要注意一个细节:横向控制不只是“打方向盘”这么简单。它涉及到车辆动力学、轮胎特性、路面附着系数等一系列复杂因素。我在项目中遇到过,同样的控制算法,在干燥柏油路上跑得好好的,一到雨天就完全失控——这就是横向控制的魅力所在。
1.2 横向控制在自动驾驶中的角色
自动驾驶系统通常分为三个层级:感知、决策、控制。横向控制属于控制层的核心模块之一。
我习惯把自动驾驶比作一个人开车:
- 感知 = 眼睛和耳朵,看路况、看信号灯
- 决策 = 大脑,决定什么时候变道、什么时候转弯
- 控制 = 手脚,执行大脑的指令
横向控制就是“手”的部分——负责打方向盘。没有它,前面感知得再准、决策得再聪明,车也动不了。
横向控制的好坏,直接决定了乘客的安全和舒适性。我记得有一次测试,我们的横向控制器参数没调好,过弯时方向盘来回修正,坐在后排的同事直接晕车了……从那以后,我对横向控制的平顺性要求就特别高。
避坑指南:我曾经犯过一个低级错误——把横向控制的采样频率设得太低。结果车辆在高速行驶时,每次控制指令之间的间隔太长,导致车辆像“蛇形”一样左右摆动。后来我总结:横向控制的控制频率至少要达到50Hz以上,才能保证高速下的稳定性。
1.3 横向控制与纵向控制的区别
很多初学者容易把横向控制和纵向控制搞混。我简单做个对比:
| 对比维度 | 横向控制 | 纵向控制 |
|---|---|---|
| 控制对象 | 方向盘转角 | 油门/刹车踏板 |
| 目标 | 跟踪期望路径 | 跟踪期望速度 |
| 主要误差 | 横向偏差、航向角偏差 | 速度偏差、加速度偏差 |
| 动力学模型 | 自行车模型、阿克曼模型 | 纵向动力学模型 |
| 典型算法 | PID、LQR、MPC | PID、MPC、滑模控制 |
| 舒适性影响 | 侧向加速度、横摆角速度 | 纵向加速度、冲击度 |
其实两者有一个本质区别:横向控制是非线性的。为什么?因为轮胎的侧偏特性是非线性的,车辆在高速过弯时,轮胎力会进入饱和区。而纵向控制相对来说线性度好一些,至少在常规工况下是这样。
我个人建议:学习横向控制之前,先把纵向控制搞明白。因为纵向控制相对简单,可以作为入门。等你把PID调明白了,再上手横向控制会轻松很多。
1.4 课程整体架构与学习路径
这门课一共30章,我把它分成了四个阶段:
- 基础篇(第1-8章):横向控制的基本概念、车辆运动学模型、动力学模型、轮胎模型等。这部分是地基,必须打牢。
- 算法篇(第9-18章):从经典的PID控制,到LQR、MPC,再到更高级的滑模控制、鲁棒控制。每种算法我都会讲原理、推导、代码实现和调参经验。
- 工程篇(第19-25章):实际工程中会遇到的问题——传感器延迟、执行器饱和、参数标定、故障诊断等。这部分是我踩坑经验的精华。
- 进阶篇(第26-30章):端到端横向控制、强化学习在横向控制中的应用、多车协同控制等前沿话题。
下面这张图可以帮你快速了解整个课程的知识体系:
关于学习路径,我个人的建议是:
- 如果你是初学者:按顺序学,不要跳。基础篇的车辆模型是后面所有算法的基础,跳过去后面会越学越懵。
- 如果你有控制理论基础:可以从算法篇开始,但遇到不懂的模型推导,记得回头翻基础篇。
- 如果你已经在做工程:直接跳到工程篇,那里有很多实战经验。但建议抽时间补一下算法篇,因为很多工程问题归根结底是算法理解不够深。
重要提醒:横向控制不是“调参游戏”。我见过太多人上来就调PID参数,调了两周发现车还是跑不直。为什么?因为根本问题出在模型上——你的车辆模型不准,再好的算法也白搭。所以,请务必重视基础篇的内容。
好了,第一章就到这里。从下一章开始,我们会正式进入车辆运动学模型的学习。到时候我会手把手带你推导公式,还会分享一些我在实车测试中遇到的“坑”。