1、课程导论:什么是路径跟踪?为什么需要LQR?课程目标与前置知识
1.1 从一个真实场景说起
各位同学,大家好。我是你们这门课的主讲人。
先聊个我亲身经历的事。几年前我参与一个园区无人配送车项目,车是改装的,底盘、转向、电机全是拼凑的。第一次上路测试,车明明沿着车道线走,可一到弯道就「画龙」——左扭一下,右扭一下,最后直接冲上路沿。
我当时蹲在路边,盯着日志数据看了半天。发现什么问题呢?控制指令发出去,车身的实际转角响应总是慢半拍。说白了,就是控制器没算明白「现在该打多少方向」。
这就是路径跟踪要解决的核心问题。
1.2 什么是路径跟踪?
路径跟踪,简单讲就是:让车辆沿着一条预先规划好的路径行驶。
你想想看,自动驾驶系统里,上游的规划模块给你一条路径——可能是一系列点,也可能是一条平滑曲线。你的任务就是控制方向盘、油门、刹车,让车「贴」着这条路径走。
但这里有个坑:路径跟踪 ≠ 轨迹跟踪。
关键区别
- 路径跟踪:只关心空间位置,不关心时间。车可以快一点,也可以慢一点,只要走在路径上就行。
- 轨迹跟踪:既要走在路径上,还要在特定时间到达特定位置。比如「3秒后必须到路口」。
我在项目中遇到过不少新手,把这两个概念混为一谈。结果设计控制器时,非要把时间约束加进去,搞得系统又复杂又容易震荡。其实很多场景下,路径跟踪就够了。
1.3 为什么需要LQR?
好,问题来了:路径跟踪的方法那么多,PID、纯跟踪、Stanley、MPC……为什么我偏偏要讲LQR?
原因有三:
- LQR天然适合「权衡」。路径跟踪的本质是「既要跟踪得准,又要控制得稳」。LQR的目标函数里,你可以直接设置权重——是更看重跟踪精度,还是更看重转向平顺?调一个参数就行。
- LQR有解析解。不像MPC需要在线优化,LQR的增益矩阵可以离线算好。在嵌入式平台上,算力有限,LQR的实时性优势很明显。
- LQR是很多高级方法的基础。比如LQG、iLQR、DDP,都是从LQR衍生出来的。学会了LQR,后面再学MPC、强化学习控制,你会觉得「哦,原来底子在这儿」。
我的个人习惯
做工程选控制器,我一般这么判断:如果系统模型比较准,算力有限,优先上LQR。如果模型不准或者约束多,再考虑MPC。别一上来就上最复杂的,容易把自己绕进去。
1.4 课程目标
这门课学完,我希望你能做到三件事:
- 理解原理:LQR为什么能解路径跟踪问题?状态空间模型怎么建?代价函数怎么设?
- 能动手实现:从车辆运动学模型开始,一步步推导LQR控制器,最后在仿真环境里跑起来。
- 会调参避坑:Q矩阵和R矩阵怎么调?遇到发散、震荡怎么办?我会把踩过的坑都告诉你。
1.5 前置知识
嗯,这里要提醒一下。这门课不是零基础入门,你需要具备以下基础:
| 知识领域 | 具体要求 |
|---|---|
| 线性代数 | 矩阵运算、特征值、二次型。LQR的核心就是解Riccati方程,离不开矩阵。 |
| 自动控制原理 | 状态空间模型、极点配置、稳定性分析。至少要知道什么是「反馈」。 |
| Python基础 | numpy、matplotlib。代码示例会用Python写,仿真也用Python。 |
| 车辆运动学 | 自行车模型、阿克曼转向几何。如果你不熟悉,我会在第二章快速过一遍。 |
我曾经踩过的坑
有一次带实习生做项目,他线性代数基础不错,但控制理论没学扎实。结果Riccati方程解出来了,反馈增益也算对了,但仿真一跑就发散。为什么?因为他忽略了系统可控性检查。所以,前置知识里「状态空间模型」和「可控性」这两块,请务必提前复习。
1.6 本章知识体系
下面这张图,是我自己梳理的本章知识结构。你可以把它当作一张「地图」,后面每学一个知识点,都能在这张图上找到位置。
1.7 写在前面的话
做控制工程这么多年,我最大的体会是:理论是骨架,经验是血肉。LQR的公式你可以在任何一本教材上找到,但「Q矩阵设多大车才不会抖」「R矩阵设多小转向才不迟钝」——这些只能靠实践积累。
这门课里,我会把公式推导讲清楚,但更会花大量篇幅讲「为什么这么设参数」「仿真发散时先查哪里」。你跟着做一遍,比看十遍书都管用。
好,导论就到这里。下一章我们开始搭建车辆运动学模型——这是LQR控制器的「地基」。地基打不牢,后面全是空中楼阁。
公众号:蓝海资料掘金营,微信deep3321