转向角控制律从PI到PD的工程实践与标定要点
发布时间:2026/10/20 10:13:59 锦皓数字建站

这段时间在调一套线控转向执行器的角度闭环遇到了一个很有意思的改动控制律从 PI 换成了 PD。改动本身不大但背后的取舍拉扯了一整轮标定。起初用 PI 的时候低速库内回正总出现“过了零点又弹回来”的震荡用手一摸方向盘就能感觉到它在跟你较劲换成 PD 之后回正干净利落快速换道也没了那种跟在目标后面慢半拍的迟滞感。这篇就把我在这轮实践中看到的 PI 问题、PD 的价值以及从 PI 过渡到 PD 过程中绕不开的那些坑一次说清楚。1. 转向角控制场景里PI控制器的“原罪”到底出在哪1.1 被控对象转向系统不是理想二阶系统很多人一上来就套“PI 能消除稳态误差、能提高低频增益”的教科书结论但那是针对简化线性对象的。实际转向角控制面对的对象几乎处处都在挑战控制律的底线。转向执行器的动力学可以简化为一个含刚度的质量-阻尼系统J·θ̈ b·θ̇ K·θ T_m T_f其中 J 是转向柱到执行器折算过来的等效惯量b 是系统阻尼包括电机反电动势阻尼、转向器摩擦阻尼K 是等效刚度——轮胎侧向刚度、转向柱扭杆刚度、减速机构啮合刚度都会叠进来。这个 K 很关键它让对象带上了振荡特性相当于一个弹簧连着质量本身就存在谐振峰。更麻烦的是 T_f。转向系统的摩擦力矩不是线性的而是典型的库仑摩擦加 Stribeck 效应低速时摩擦力随速度增大而下降静态时还有一个很大的静摩擦。这套非线性组合意味着当你试图让方向盘停在某个角度时系统面对的等效扰动不是一个常数而是一个会随着运动状态切换的强扰动。在这样的对象上做角度闭环积分项的作用被放大了但它的副作用也同样被放大了。1.2 积分饱和回正震荡的元凶PI 控制器的输出为u(t) Kp·e(t) Ki·∫e(t)dt积分项的意图是只要误差存在输出就持续累积直到把误差压到零。这个思路在理想线性系统里没有问题但转向执行器有明确的输出限幅——电机电流有限制、转矩有限制。一旦控制量超过执行器极限系统进入饱和状态但积分器并不知道它还在继续累积。于是出现了经典积分饱和windup现象。典型的场景就是低速回正车辆从左侧打满状态回正目标角度是零误差为负。PI 的积分项一直在负向累积输出达到电机负向电流极限。方向盘接近零点时由于摩擦和刚度效应误差逐渐变小但积分器里的负向累积量巨大短时间内根本“泄”不完。结果就是方向盘冲过零点误差变号积分项还在推着电机继续负向输出直到积分逐渐回退方向反了、过冲又来了。在实车台架上看就是方向盘经过零点后左右来回摆动两次、三次才稳住。驾驶员手上能直接感觉到那种“较劲”和“哆嗦”这是积分项惹的祸不是机械间隙的问题。即便加了抗积分饱和逻辑比如条件钳位、反算跟踪也只能减轻过冲没法消除积分项本身带来的相位滞后。1.3 相位滞后转向跟手的隐形杀手积分项带来的另一个问题不体现在阶跃响应上而体现在频域上。PI 控制器的传递函数为C(s) Kp Ki/s积分项在低频段拉高增益的同时也给整个控制回路引入了 90° 的相位滞后。在转向角控制这个场景里这个滞后非常致命。驾驶员对转向响应最敏感的频段大约在 1~4Hz 的快速修正输入。一个典型的紧急变道或者麋鹿测试工况驾驶员的转向输入接近 2~3rad/s 的角速度里面包含的中频分量并不少。PI 在这个频段的相位滞后会让实际转角始终落后于目标转角驾驶员的感受就是“车头指向慢半拍”“方向盘发粘”。你打过去它跟着动但总觉得有延迟你往回调它又慢一拍才跟进。如果只看阶跃响应的上升时间和超调PI 的表现也许还过得去。但转向手感这件事恰恰是相位特性说了算。这也是为什么很多做转向控制的工程师在实车主观评价之后会坚决把外环积分项拆掉。2. PD控制改变了系统的“阻尼性格”2.1 为什么一个微分项能救回相位裕度控制律从 PI 改成 PD本质上是把控制器传递函数变成了C(s) Kp Kd·s这是一个带相位超前的环节。在系统开环 Bode 图上微分项提供了 90° 的相位提前把原本被积分项拖下去的相位裕度重新拉回来。用更直白的话说PI 在“记仇”PD 在“预判”。比例项看的是当前误差有多大微分项看的是误差正在怎么变化。误差在快速增大微分项提前输出更强的修正信号误差即将过零微分项提前输出反向阻尼。PD 控制器的相位超前特性相当于在闭环特征方程里直接给系统加了一个等效阻尼项。从状态空间角度看闭环特征方程为J·s² (b Kd)·s (K Kp) 0等效阻尼比ζ (b Kd) / (2√(J(K Kp)))Kd 以线性方式直接进入阻尼项这是大家常说的“微分项能阻尼系统”的数学本质。对转向系统来说这相当于在控制代码里加了一根虚拟的液压阻尼器——你不需要改变机械结构阻尼性格就变了。2.2 方向盘手感上的三个直观改变实车对比中PI 改 PD 之后手感的差异非常明显。第一是回正变得干净了。低速回正不再出现越过零点后的来回摆动方向盘像被一只手稳稳地送到正中间然后停住。这是因为微分项在接近目标时提供了连续减小的反向阻尼误差趋近于零的过程中控制输出也自然衰减不会像积分项那样“憋着一股劲”非要冲到零点再往外反弹。第二是快速变道跟手了。连续输入一个正弦转向指令实际转角对目标转角的相位延迟明显减小。主观评价上驾驶员会觉得方向盘“听话”了你打到哪它跟到哪不再有被水流推着走的感觉。第三是抗扰动能力在特定频段反而更强了。遇到路面冲击或者轮胎侧向力突变PD 响应这些瞬态扰动的速度比 PI 快得多。因为积分项的响应天然是慢的它需要时间把误差累积起来才输出微分项在扰动出现的第一瞬间就会输出反向修正。高速大曲率弯道里遇到路面接缝方向盘的稳定性会好很多。2.3 回正工况的微观过程PD如何刹住过冲把回正过程拆细看。假设目标角度从 30° 跳变到 0°误差 e 初始为 -30°误差导数在响应起始时刻为正因为方向盘在朝目标方向运动误差绝对值在减小。PI 的逻辑是负误差累计成负输出随误差缩小输出逐渐减小但积分状态本身是滞后的所以产生了过冲。PD 的逻辑完全不同在误差快速缩小的阶段微分项输出一个与误差导数反向的修正量而且这个修正量和误差缩小的速度成正比。方向盘越接近零点、运动速度越快微分项的“刹车力”就越强。这相当于对系统增加的阻尼随运动速度动态变化而且变化方向恰好是稳定的方向。实测中PD 控制的回正轨迹是一条平滑的、几乎临界阻尼的衰减曲线没有过冲。这里有一个经验值好的 PD 回正常规工况下误差过零不超过一次甚至为零次。3. 换PD之后的新麻烦以及工程师的妥协办法3.1 微分放大噪声传感器分辨率和低通滤波的拉扯任何改动都有代价。PD 的第一个代价是高频噪声。微分项的幅频特性是 20dB/dec频率越高增益越大。转向角度传感器的分辨率如果不够好编码器每格对应的角度阶跃会被微分项放大成剧烈的转速尖峰。如果用的是增量式编码器静止时角度值在相邻两个量化电平之间跳变微分输出会直接产生一个脉冲串——在扭矩指令里表现为高频抖动。解决方法是给微分项加低通滤波工程实现用的是一阶近似微分D(s) Kd·s / (τ·s 1)这里 τ 的选择是一个典型的折中。τ 太大滤波太强微分效果被削弱相位超前也打了折扣τ 太小噪声又压不住。我的经验是先测量静止状态下的传感器角度噪声水平把滤波截止频率选在噪声能量明显聚集频率的 1/3 到 1/2 处。比如编码器噪声能量集中在 80Hz 以上截止频率就设在 40Hz 左右如果传感器分辨率和刷新率都很高可以放到 60Hz。这里还有一个容易忽略的坑微分项处理的是角度误差的导数还是角度的导数两种写法在目标值突变时行为不同。如果对误差求导目标角度阶跃时误差导数会产生一个巨大的尖峰实际响应表现为“打方向瞬间电机猛冲一下”。如果对反馈角度求导就没有这个问题。工程上我强烈建议后者只对测量角度做微分目标值变化不进入微分通道。3.2 稳态误差回潮摩擦力矩不会消失PD 的第二个代价是稳态误差重新出现。纯 PD 的直流增益是有限的 Kp对摩擦力矩这样的常值扰动的抑制能力比 PI 差。PI 在低频段有“无穷大”增益能靠积分把角度的稳态误差压到零PD 做不到最终会残留一个角度的零偏。转向系统的库仑摩擦矩通常不小折算到角度环上常见的残余误差量级可能是 0.3°~1°这个量级在高速直线行驶时也许无所谓但在自动泊车、车道居中这类需要精准转角保持的场景里会造成明显的轨迹偏差。我见过几种工程处理办法按实用程度排序第一种是前置摩擦补偿。在控制输出端叠加一个与期望运动方向相反的恒定力矩方向和数值由摩擦力矩辨识结果给出。这样摩擦力矩被“前馈抵消”了PD 只需要处理残差。补偿值不准确也没关系能抵消掉 60% 以上的摩擦就够让稳态误差降到可接受范围。第二种是条件积分。不取消积分但只在误差小于某个阈值比如 0.5°且系统趋于稳定时才开启。大误差时积分完全离线避免 windup小误差时积分慢慢把最后的零偏磨掉。第三种是接受这个误差在路径规划层补偿。对于 LKA 这类应用控制误差的方向是固定且可预测的通常由转向助力方向决定可以在目标转角上加一个偏置量来补偿。3.3 工程折中位置环PD 速度环PI 前馈有条件地留一点I真正落地的转向角控制器很少是单环纯 PD 的。更常见的结构是串级外环位置环用 PD内环速度环保留 PI电流环也是 PI。位置环 PD 负责“把角度拉到位”速度环 PI 负责“消除速度稳态误差、抑制负载扰动”电流环 PI 负责“转矩快速跟随”。这样分工的逻辑是角度环面对的是高惯性、大摩擦的非线性对象用 PD 保证动态和阻尼速度环面对的是相对线性的电机-减速机构模型PI 能发挥消除扰动误差的长处。另一个值得聊的做法是目标加速度前馈。PD 的微分项本质上是根据当前误差速度做反馈但如果目标值本身有明确的变化趋势——比如规划好的转向路径——目标加速度是已知的。在控制输出中直接叠加T_ff J·θ̈_des相当于提前把跟踪目标加速度需要的力矩给出去反馈控制器只需要修正偏差。这个前馈加进去之后Kd 可以适当调小既保留阻尼又减少噪声敏感度一举两得。如果不想完全放弃积分项还有一个效率很高的“软切换”技巧根据角速度误差的符号和积分器输出方向判断当出现 windup 征兆积分器输出方向与当前需要的修正方向相反且误差越过零点时直接把积分状态清零。这种“事后清零条件累计”的实现保留了 PI 的低频优势同时极大削弱了回正过冲。很多商用转向控制器里的位置环用的是这种变种方案。4. 从仿真到实车PD转向角控制的完整标定流程4.1 把控制律边界摸清楚惯量、阻尼、刚度建模不建议直接上来就拍 Kp、Kd 的初值。我做这轮标定时第一步是在仿真模型里把对象参数标定出来J、b、K、摩擦电平每个参数都要有实测或者辨识依据而不是从文档里抄一个数。辨识惯量 J 的常规方法是做扫频激励给电机一个带随机频率成分的扭矩指令采集角速度响应用频域拟合得到对象传递函数。库仑摩擦电平可以用匀速转动法辨识让转向系统以不同角速度匀速运转记录稳态输出力矩拟合出摩擦-速度曲线。有了模型控制律的边界就清晰了。快速验证方法很直接在模型里把 Kp 从 0 开始逐步增大观察闭环阶跃响应。如果 Kp 加到某个值出现振荡记住这个临界增益Kd 在此基础上逐步增加观察阻尼比提升效果。这一步在模型里做目的是找到“系统的物理边界在哪里”而不是为了得到一个精确的参数。4.2 调参顺序先PD初值再加滤波最后补前馈实际调参我习惯按下面的顺序走每一步都有明确的目标。第一步设 Kd 0只留 Kp调到系统刚好不振荡为止。这个 Kp 对应的是“纯比例不振荡的上限”。如果它已经满足稳态精度的需求说明机械部分本身阻尼不错Kd 只需要一点如果系统在很低的 Kp 就开始振说明机械刚度大、阻尼小Kd 是重头戏。第二步逐步增加 Kd观察阶跃响应。关注指标只有一个超调量能不能控制到 5% 以内。同时看控制输出的噪声水平一旦扭矩指令里面出现明显的高频抖动停下开始加微分滤波的 τ然后再加一点 Kd循环迭代。这个“加 Kd → 看到噪声 → 加滤波 → 再加 Kd”的循环是 PD 标定的核心动作通常要转三轮以上才有比较满意的平衡点。第三步加目标加速度前馈。前馈大小按 J 的辨识值算实际标定时给一个系数在 0.6~1.2 之间调节。前馈加进去以后同样的跟踪精度下 Kd 可以显著减小噪声和滤波的压力都小很多。这轮调完常规阶跃响应的调节时间应该在 300ms 以内超调小于 3%回正过程不允许出现第二次过零。4.3 实车数据判读扫频、阶跃、时域误差怎么看仿真定好初值实车验证才是真正的裁判。台架或者实车上我至少做三类工况每类判读的维度不同。第一大类是阶跃工况目标角度从 0° 快跳到 10°看实际角度怎么追。重点看响应曲线有没有超调调节时间内有没有来回“切”的动作。实测里经常看到 PD 参数在仿真里很顺上实车就出现 3~5Hz 的小幅振荡——因为实车的信号延迟、执行器响应带宽、传感器噪声都跟模型不一样。这种振荡一般通过降低 Kd 或者加强微分滤波解决。第二大类是连续正弦输入从 0.2Hz 到 3Hz 扫频对比目标角度和实际角度的幅值比和相位差。幅值比在 1~2Hz 内不掉到 0.8 以下相位延迟在这个频段不超过 60ms这是跟手感的硬指标。第三大类是库内低速回正反复做低速打满-回正、半圈-回正判读角度误差曲线。出现了误差曲线过零次数大于一次、或者回正过程中有明显的电机嗡鸣声基本可以判定阻尼不足或微分通道噪声放大。一个对照表供参考现象根因处理方向回正过冲后小幅振荡阻尼不足Kd 偏小增大 Kd或降低微分滤波截止频率静止时扭矩指令抖动微分放大量化噪声减小 Kd增加 τ切换为角度微分而非误差微分高速变道跟踪慢相位裕度不足检查 Kp 与 Kd 的比例增大 Kd或增加加速度前馈稳态停车角度偏差固定偏转摩擦补偿缺失或补偿不足叠加摩擦前馈力矩或开启条件积分回正过早减速、最后慢慢蹭Kd 过大导致“刹得太早”降低 Kd或对微分输出做局部死区有一点必须强调实车数据要多看“控制输出”那一栏不要只看角度误差。同样的误差曲线控制输出里藏着高频毛刺还是平滑跟随反映的问题完全不同。差分通道的任何异常都会先暴露在扭矩指令里角度响应反而可能是干净的。这也是我在每次实测时都坚持采集电机控制指令时序的原因。5. 写在最后PI还是PD本质是控制律和执行器性格的匹配做了这轮切换之后我对控制律选型的理解更具体了一层PI 和 PD 没有绝对的优劣只有适不适合对象特征。转向角控制这个场景的特殊性在于强非线性摩擦、高刚度负载、驾驶员的直接手感参与、对相位延迟极度敏感——这些条件凑在一起积分项的劣势被放大到不可接受微分项的优势恰好补上了最缺的那块阻尼。而对很多转速环、温度环这类对象PI 依然是最稳当的选择。如果让我给一个稳妥的起点我不会再直接写一个纯 PI 的位置环。先从 PD 建立基础稳定性用前馈和条件积分解决摩擦扰动和稳态精度最后再考虑要不要把积分请回来。这个顺序在多个模拟项目的转向执行器上都验证过收敛速度比反着来快得多。最后分享一个细节把控制律从 PI 改成 PD 之后别忘了同步检查上层路径规划的转角请求速率。微分项对目标角度变化率的容忍度远低于积分项如果规划层还在给出每秒几十度的突变转角指令PD 会把每个突变都当成强扰动响应系统一样会抖。控制律换了指令形态也要跟着适配这个联动问题我在第一次测试时忽略了后面白花了两天排查。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。