1、课程导论:为什么需要协同调参?规划与控制的爱恨情仇
大家好,欢迎来到这门实战课。
先问大家一个问题:你调过参数吗?
我相信做自动驾驶的朋友,十有八九都干过这事。但你再想想——你调参的时候,是不是经常遇到这种情况:
规划模块跑得好好的,一上控制就翻车?或者控制那边死活跟不住轨迹,你以为是PID参数没调好,结果折腾半天发现是规划出的路径太“贼”了?
嗯,这就是我今天想聊的核心——规划与控制之间的“爱恨情仇”。
1.1 规划和控制,到底谁听谁的?
从分工上看,规划负责“想”,控制负责“做”。
规划说:我要走这条曲线,速度这样变化。
控制说:好的,我尽量跟。
但问题来了——规划想得再美,控制做不到,等于白想。
我早期做项目时,就踩过这个坑。当时我们规划模块输出了一条非常平滑的路径,曲率连续、速度规划也很优雅。结果一上车,车辆在弯道里疯狂抖动,方向盘来回打。排查了半天,发现是规划出的路径曲率变化率太大,控制系统的响应带宽根本跟不上。
说白了,规划以为控制是超人,控制却只是个普通人。
核心观点:规划和控制不是两个独立的模块,而是一对需要“双向奔赴”的搭档。协同调参,就是让它们互相理解、互相妥协。
1.2 为什么不能各自为政?
很多团队的开发模式是这样的:
规划工程师调自己的参数,控制工程师调自己的参数。最后联调时,发现一堆问题,然后互相甩锅。
规划说:“我轨迹没问题,是你控制跟不住。”
控制说:“你轨迹那么激进,谁能跟得住?”
这种场景,我见过太多次了。
其实,问题的根源在于——两个模块的“评价标准”不一样。
- 规划的评价标准:路径平滑、速度合理、避障成功、舒适度高。
- 控制的评价标准:跟踪误差小、响应快、不超调、不震荡。
你看,这两个标准天然就有冲突。规划追求“最优路径”,控制追求“精确跟踪”。但最优路径往往意味着更复杂的曲线、更快的速度变化,这对控制来说就是噩梦。
我的经验:我曾经接手过一个项目,规划模块用了五次多项式插值,路径确实漂亮。但控制那边是纯PID,根本跟不住。后来我们做了一件事——在规划里加了一个“控制可行性约束”,说白了就是让规划知道控制的能力边界。效果立竿见影。
1.3 协同调参到底调什么?
协同调参,不是让你把规划和控制的所有参数都揉在一起调。而是找到那些“跨模块的关键参数”。
我个人习惯把参数分成三类:
| 参数类型 | 举例 | 谁负责 |
|---|---|---|
| 规划独有参数 | 路径采样密度、速度规划权重 | 规划工程师 |
| 控制独有参数 | PID增益、前馈系数 | 控制工程师 |
| 协同参数 | 最大曲率、加速度限制、 jerk限制 | 双方共同调 |
你看,真正需要协同的,其实是那些“边界参数”。比如:
- 规划输出的最大曲率,控制能不能跟?
- 规划允许的最大加速度,控制能不能响应?
- 规划的jerk限制,会不会导致控制震荡?
这些参数,单独调任何一个模块都没用。必须两边一起看,一起试。
1.4 一个真实的案例
我记得有一次,我们做高速场景的LCC(车道居中控制)。
规划那边为了舒适性,把jerk限制设得很低。结果车辆在进入弯道时,转向响应特别慢,因为规划输出的转向角变化率被限制了。控制那边拼命想跟,但方向盘就是转不过去,最后车辆直接偏离车道。
你猜怎么解决的?
不是调控制,也不是调规划。而是把规划的jerk限制和控制的前馈系数一起调。规划允许更大的转向变化率,控制则用前馈提前补偿。两边各退一步,问题就解决了。
避坑指南:我曾经见过一个团队,花了两个月调控制参数,始终解决不了弯道跟踪问题。最后发现是规划输出的路径曲率超过了车辆物理极限。所以,调参之前,先确认一下“物理可行性”。
1.5 协同调参的核心逻辑
说了这么多,我想用一张图来总结一下协同调参的核心逻辑。
这张图想表达的意思很简单:
规划输出轨迹给控制,控制反馈误差给规划。而中间那个“协同参数区域”,才是调参的胜负手。
你想想看,如果规划不知道控制能跟多快的转向,它就会输出不切实际的路径。如果控制不知道规划为什么要这样走,它就会盲目地跟,跟不住就震荡。
所以,协同调参的本质,就是在规划和控制之间建立一种“共识”。
1.6 这门课能给你什么?
这门课不会跟你讲太多理论推导。我会直接告诉你:
- 哪些参数是“坑”,千万别乱调
- 哪些参数是“杠杆”,调一个顶十个
- 遇到具体问题(比如弯道抖动、起步顿挫、高速摇摆),该先动规划还是先动控制
说白了,就是把我这些年踩过的坑、总结的经验,直接给你。
一个小建议:学这门课之前,你最好对规划和控制的基本概念有了解。不需要很深,知道路径规划、PID控制是什么就行。剩下的,我们边调边学。
好,导论就到这里。接下来,我们直接进入实战——先从“规划参数对控制的影响”开始聊起。
可可精品资料库