4、手感补偿算法:摩擦补偿、阻尼补偿、惯性补偿、回正力矩补偿

好,咱们接着聊手感补偿。说实话,这部分才是线控转向手感模拟的「灵魂」所在。

你想想看,一个真实的方向盘,你打它的时候,有摩擦的涩感,有阻尼的黏滞感,有惯性的厚重感,还有回正时那股自动归位的劲儿。这些感觉缺一不可。如果少了任何一个,驾驶员就会觉得「这车不对劲」。我当年在台架上第一次试跑纯理论模型时,手感轻飘飘的,像在玩廉价游戏方向盘——就是因为没加补偿。

下面我一个一个拆开来讲。

4.1 摩擦补偿

摩擦补偿,说白了就是模拟方向盘内部的机械摩擦。真实车辆里,转向柱、万向节、齿轮齿条,哪哪都有摩擦。线控转向取消了这些机械连接,摩擦感就没了。你得用算法把它「补」回来。

我个人习惯用库仑摩擦模型,简单又实用:

T_friction = F_c * sign(ω) + F_v * ω

这里 F_c 是库仑摩擦系数,F_v 是粘性摩擦系数,ω 是方向盘转速。

嗯,这里要注意一点:sign(ω) 在零速附近会抖动。为什么?因为转速为零时,符号函数跳变,容易引起震颤。我建议加一个死区处理:

if |ω| < ω_threshold:
    T_friction = 0
else:
    T_friction = F_c * sign(ω) + F_v * ω

我曾经在一个项目中,死区设得太小,结果驾驶员在高速直线行驶时,方向盘一直有微弱的抖动反馈。后来把阈值从 0.5 deg/s 调到 2 deg/s,问题就解决了。

小技巧:摩擦补偿不宜过大,否则低速打方向会感觉「卡顿」。我一般把库仑摩擦系数控制在 0.3~0.8 Nm 之间,具体看车型定位。

4.2 阻尼补偿

阻尼补偿模拟的是转向系统的粘滞阻力。你快速打方向时,阻尼感会变强;慢慢打,阻尼感就弱。这跟液压助力转向里的阻尼阀一个道理。

阻尼补偿的公式很简单:

T_damping = B * ω

B 是阻尼系数,ω 是方向盘角速度。

但这里有个坑——阻尼系数不能是常数。你想想看,低速泊车时,驾驶员希望方向盘轻快;高速行驶时,希望稳重。所以阻尼系数应该随车速变化:

B = B_base + B_speed * f(v)

其中 f(v) 是车速的函数,一般用分段线性或二次曲线。

我记得有一次调试,阻尼系数设得偏高,结果驾驶员在高速变道时,觉得方向盘「黏手」,回正速度太慢。后来把高速段的阻尼系数降低了 20%,手感就自然多了。

注意:阻尼补偿和摩擦补偿容易混淆。简单区分:摩擦是「起步阻力」,阻尼是「运动中的阻力」。摩擦让你觉得「沉」,阻尼让你觉得「黏」。

4.3 惯性补偿

惯性补偿模拟的是方向盘和转向系统的转动惯量。真实方向盘有质量,你打它的时候,会有一种「推着质量走」的感觉。线控转向的电机转子惯量很小,如果不补偿,手感会轻飘飘的,缺乏质感。

惯性补偿的公式:

T_inertia = J * α

J 是模拟惯量,α 是方向盘角加速度。

这里有个麻烦事——角加速度信号噪声很大。直接微分角速度,出来的信号抖得没法用。我建议加一个低通滤波器:

α_filtered = LPF(α_raw, cutoff_freq)

截止频率我一般设在 10~15 Hz,既能保留动态响应,又能滤掉高频噪声。

另外,惯性补偿不能太大。我见过一个团队,把惯量设得跟真实液压转向一样大,结果驾驶员觉得方向盘「笨重」,快速来回打方向时跟不上手速。嗯,线控转向的优势之一就是可以灵活调节,别把它调回老样子了。

核心观点:惯性补偿是「质感」的关键。调得好,方向盘有「高级感」;调不好,要么轻飘飘,要么笨重得像卡车。

4.4 回正力矩补偿

回正力矩补偿,这是手感模拟里最复杂的一块。它模拟的是轮胎自回正力矩,让方向盘在转弯后自动回正。

回正力矩的主要来源有两个:

  • 轮胎侧向力产生的回正力矩——跟侧偏角、轮胎特性有关
  • 主销后倾产生的回正力矩——跟车速、转向角有关

简化模型可以写成:

T_return = K_return * δ + C_return * ω

δ 是方向盘转角,K_return 是回正刚度,C_return 是回正阻尼。

但实际项目中,我很少用这么简单的模型。为什么?因为真实回正力矩是非线性的,低速和高速差异很大。我一般用查表法:

T_return = Map(δ, v)

这个 Map 表通过实车标定得到。先在不同车速下测量真实转向系统的回正力矩,然后拟合出二维表格。

我曾经犯过一个错误——回正力矩补偿加得太多,导致方向盘在弯道中回正过快,驾驶员需要一直「拉着」方向盘。后来把回正阻尼系数调大了 30%,才找到平衡点。

避坑指南:回正力矩补偿一定要和阻尼补偿配合。回正力矩负责「拉回来」,阻尼负责「拉得稳」。两者比例失调,手感就会很奇怪。

4.5 四种补偿的协同关系

四种补偿不是孤立的,它们共同构成了手感的总和:

T_total = T_friction + T_damping + T_inertia + T_return

我画了一张图,帮你理清它们的关系:

手感补偿算法协同关系图 总手感力矩 T_total 摩擦补偿 T_friction 阻尼补偿 T_damping 惯性补偿 T_inertia 回正力矩补偿 T_return 输入:方向盘转速 ω 输入:角加速度 α 输入:方向盘转速 ω 输入:转角 δ、车速 v 输出到电机力矩指令 四种补偿线性叠加,共同构成最终的手感力矩

从图上你能看到,四种补偿各自有各自的输入参数,最终线性叠加到总力矩上。但实际标定时,它们之间会有耦合效应。比如,回正力矩补偿和阻尼补偿就经常需要联合标定。

我个人习惯的标定顺序是:先调摩擦,再调阻尼,然后加惯性,最后调回正力矩。每一步调完后,都要在台架上跑一遍典型工况——低速泊车、中速过弯、高速变道。嗯,这个过程很费时间,但值得。

总结一下:四种补偿算法,说白了就是「缺什么补什么」。摩擦补涩感,阻尼补黏滞,惯性补厚重,回正力矩补自动归位。调好了,驾驶员根本感觉不到这是线控转向;调不好,处处都是违和感。

公众号:蓝海资料掘金营,微信deep3321