1. 横向控制概述
1.1 什么是横向控制
横向控制,说白了就是让车「自己打方向盘」。
你想想看,人类开车时,眼睛看着前方道路,双手不断调整方向盘,让车辆始终保持在车道中央。横向控制要做的,就是把这件事交给算法来完成。
我刚开始接触这个领域时,觉得不就是让车沿着线走吗?后来才发现,这里面的门道可太多了。车辆是个非线性系统,轮胎的侧偏特性、悬架的变形、路面附着系数变化……这些都会影响控制效果。
从数学角度看,横向控制解决的是这样一个问题:
给定目标路径(参考线)
给定当前车辆状态(位置、航向角、速度)
输出:方向盘转角(或前轮转角)
目标:车辆实际轨迹与目标路径的误差最小化
嗯,这里要注意,横向控制不是简单的「偏差大就多打方向」。如果处理不好,车会像喝醉了一样左右摇摆,这在高速上是非常危险的。
1.2 横向控制在自动驾驶中的角色
自动驾驶系统通常分为感知、决策、规划、控制四大模块。横向控制属于控制层,是真正「动手」的那个角色。
我习惯用一个比喻来解释:
- 感知是眼睛——看到路在哪、有没有障碍物
- 决策是大脑——判断该直行还是变道
- 规划是导航员——画出一条具体的行驶轨迹
- 控制是双手双脚——执行规划出的轨迹
横向控制就是那双「打方向盘的手」。规划层说「前方100米右转」,横向控制就要精确地让车在正确的位置、以正确的曲率完成转弯。
核心要点:横向控制是自动驾驶系统的「最后一公里」。规划得再好,控制执行不到位,一切都是空谈。我在项目中遇到过多次,规划轨迹很完美,但控制算法参数没调好,结果车辆在弯道里直接偏出去了。
横向控制的好坏,直接决定了乘客的乘坐体验。你想想看,如果车在车道里来回晃,或者过弯时方向盘一顿一顿的,乘客会怎么想?
1.3 横向控制与纵向控制的区别
很多初学者容易把横向和纵向搞混。我简单说说它们的区别:
| 维度 | 横向控制 | 纵向控制 |
|---|---|---|
| 控制对象 | 方向盘转角 | 油门/刹车踏板 |
| 目标 | 跟踪路径,减少横向偏差 | 跟踪速度,保持安全距离 |
| 核心模型 | 车辆运动学/动力学模型 | 纵向动力学模型 |
| 主要挑战 | 非线性、轮胎侧偏、曲率变化 | 坡度、风阻、制动延迟 |
| 典型算法 | 纯跟踪、LQR、MPC | PID、前馈+反馈 |
说白了,横向控制管的是「方向」,纵向控制管的是「速度」。两者是解耦的,但在实际系统中又相互影响。比如高速过弯时,如果纵向速度控制不好,横向控制的压力会非常大。
一个小技巧:我在调试横向控制时,通常会先把纵向控制固定在一个恒速上。这样能排除速度变化带来的干扰,专心调横向参数。等横向调好了,再放开纵向控制做联合调试。
1.4 课程整体大纲介绍
这个课程一共30章,我按照「从零到一」的思路来设计。你不需要有控制理论的基础,但最好懂一点线性代数和微积分。
整个课程分为四个阶段:
- 基础篇(第1-8章):车辆模型、坐标系、参考线处理。这部分是地基,我会花大量篇幅讲清楚。
- 经典算法篇(第9-18章):纯跟踪、Stanley、LQR、MPC。每个算法我都会从原理推导到代码实现,手把手带你走一遍。
- 进阶篇(第19-25章):参数整定、鲁棒性分析、实车调试技巧。这部分是我多年踩坑经验的总结。
- 实战篇(第26-30章):完整项目实战,从仿真到实车部署。
下面这张图可以帮你快速了解整个知识体系:
避坑提醒:我曾经见过不少同学,一上来就跳着看MPC(模型预测控制),觉得这个算法最牛。结果基础没打牢,连车辆模型都建不对,最后代码跑出来全是bug。我的建议是:老老实实按顺序来,每一步都走扎实。
这个课程里,我会把每个算法的推导过程、代码实现、参数调优技巧都讲清楚。你跟着学完,应该能独立完成一个横向控制系统的开发。
好了,第一章就到这里。下一章我们开始搭建开发环境,顺便聊聊车辆运动学模型——这是所有横向控制算法的基础。
📌 本章要点回顾:
- 横向控制 = 控制方向盘,让车沿着目标路径行驶
- 横向控制是自动驾驶系统的执行层,直接影响安全性和舒适性
- 横向控制管方向,纵向控制管速度,两者相互影响
- 课程分四个阶段:基础→经典算法→进阶→实战
可可精品资料库