3、路感模拟策略:路面信息采集与处理、路感模拟算法基础、电机力矩控制原理

好,咱们进入正题。这一章聊的是路感模拟策略,说白了就是——怎么让方向盘“告诉”你,车轮底下压到了什么。

我经常跟团队里的小朋友讲:线控转向的核心,不是“取消机械连接”,而是“重建机械质感”。你想想看,传统转向系统里,路面信息是通过齿轮齿条、转向柱、扭杆,一路硬生生传到你手上的。线控转向呢?这条路断了。你得靠传感器、算法、电机,把这条路重新“搭”起来。

嗯,这里要注意:搭得不好,驾驶员会觉得“假”,像在打游戏。搭得好,他根本意识不到这是线控。这就是路感模拟的终极目标——让驾驶员忘记你的存在。

3.1 路面信息采集与处理

路感模拟的第一步,是搞清楚“路面上到底发生了什么”。

我个人习惯把信息来源分成三类:

  • 直接测量信号:比如齿条力传感器、电机电流估算的力矩。这些信号最真实,但噪声也大。
  • 车辆状态信号:车速、横摆角速度、侧向加速度。这些信号告诉你车辆在“怎么动”。
  • 环境感知信号:比如摄像头识别到的路面类型(柏油、砂石、冰雪)。这部分目前还比较前沿,但未来一定是趋势。

采集到信号之后,处理是关键。我见过不少项目,传感器精度很高,但滤波没做好,路感反而更差。为什么?因为驾驶员的手对高频振动非常敏感,你滤得太干净,他感觉不到路面细节;滤得不够,又全是毛刺。

这里我分享一个经验:分频段处理

频段 频率范围 处理方式 对应路感
低频 0-5 Hz 低通滤波,保留幅值 转向手感轻重、回正力矩
中频 5-20 Hz 带通滤波,适度衰减 路面起伏、接缝感
高频 20-100 Hz 高通滤波,保留能量特征 碎石路、粗糙路面的振动

我曾经在一个项目中,把高频段完全滤掉了。结果试车员反馈:“这车开起来像在棉花上飘。”后来我保留了高频段的能量包络,只滤掉相位混乱的部分,路感一下子就“真实”了。

小技巧: 路面信息的采样率建议不低于 1 kHz。电机力矩控制的更新率则要更高,通常 2-5 kHz。别问我怎么知道的——问就是吃过亏。

3.2 路感模拟算法基础

信号处理完了,接下来就是“算”。路感模拟算法,核心就一句话:把物理模型算出来的力矩,变成电机能执行的指令

目前主流的路感算法,我把它归纳为三个层次:

  1. 基础模型层:基于车辆动力学,计算回正力矩、阻尼力矩、摩擦力矩。这是“骨架”。
  2. 补偿修正层:根据车速、转向角速度、侧向加速度等,对基础力矩进行动态修正。这是“血肉”。
  3. 路面注入层:把前面采集处理好的路面振动信号,叠加到力矩指令上。这是“灵魂”。

举个例子,回正力矩的计算,最经典的是用“魔术公式”轮胎模型简化版:

// 简化回正力矩计算
float calcAligningTorque(float lateralAcc, float vehicleSpeed) {
    // 侧向加速度越大,回正力矩越大
    float baseTorque = lateralAcc * K_ALIGN;
    // 车速越高,回正力矩增益越小(高速时方向更稳)
    float speedGain = 1.0f - (vehicleSpeed / MAX_SPEED) * 0.3f;
    return baseTorque * speedGain;
}

你看,代码其实不复杂。但难在哪里?难在标定。K_ALIGN 这个系数,不同车型、不同轮胎、不同路面,完全不一样。我建议你在实车标定时,至少准备三组参数:舒适型、运动型、标准型。别想着“一套参数打天下”,不存在的。

核心观点: 路感模拟算法,本质上是在“欺骗”驾驶员的大脑。你算的不是真实的力矩,而是“驾驶员期望感受到的力矩”。这两者之间的差距,就是算法的价值所在。

3.3 电机力矩控制原理

算法算出了目标力矩,接下来就是让电机“听话”。

电机力矩控制,说白了就是电流控制。因为对于永磁同步电机(PMSM)来说,力矩和电流基本成正比。你控制好了电流,就控制好了力矩。

我常用的控制架构是“三环控制”:

  • 位置环(最外层):控制方向盘转角。主要用于主动回正、自动泊车等场景。
  • 速度环(中间层):控制方向盘转速。用于阻尼控制、末端限位。
  • 电流环(最内层):控制电机力矩。这是路感模拟的“最后一公里”。

电流环的响应速度,直接决定了路感的“质感”。我个人的经验是:电流环的带宽至少要做到 200 Hz 以上。低于这个值,你会感觉到明显的“滞后感”——方向盘转过去了,力矩才跟上来。

这里有一个常见的坑:力矩纹波

我曾经在一个项目中,路感算法算得完美,但试车员一开就说:“方向盘在抖。”查了半天,发现是电机的齿槽转矩波动,叠加到了路感信号上。解决办法有两个:一是用高精度的电机(成本高),二是在算法里加一个陷波滤波器,把纹波频率滤掉。

// 陷波滤波器示例:滤除 50 Hz 力矩纹波
float notchFilter(float input, float freq) {
    static float prevInput = 0, prevOutput = 0;
    float omega = 2 * PI * freq * DT;
    float alpha = 0.95f;  // 陷波深度
    float output = (1 - alpha) * input + alpha * prevOutput 
                   - cos(omega) * (input - prevInput);
    prevInput = input;
    prevOutput = output;
    return output;
}
注意: 陷波滤波器会引入相位延迟。如果延迟过大,驾驶员会感觉“方向不跟手”。我建议陷波频率不要低于 30 Hz,且只在确认有纹波问题时才启用。别没事找事。

最后,我想强调一点:电机力矩控制,不是越“准”越好。为什么?因为真实的机械转向系统,本身就有摩擦、阻尼、惯性这些“不完美”的特性。你控制得太精准,反而失去了机械感。

所以,我经常在力矩指令上,故意加一点“噪声”——模拟齿轮啮合的微小振动、模拟转向管柱的弹性变形。听起来有点反直觉,对吧?但试车员的反馈是:“嗯,这车有‘机械味’了。”

这就是路感模拟的微妙之处——有时候,不完美才是完美

路感模拟策略知识体系 路面信息采集与处理 传感器信号 齿条力 / 电机电流 车辆状态 车速 / 横摆角速度 环境感知 路面类型识别 ↓ 分频段处理(低频/中频/高频) 路感模拟算法 基础模型层 回正力矩 阻尼 / 摩擦力矩 补偿修正层 车速增益修正 侧向加速度补偿 路面注入层 高频振动叠加 路面特征注入 电机力矩控制原理 位置环 主动回正 速度环 阻尼控制 电流环 力矩执行 ⚠ 力矩纹波抑制 陷波滤波器 三环控制架构 · 分频段处理 · 力矩纹波抑制

好了,这一章的内容就到这里。路感模拟这件事,说难不难,说简单也不简单。关键是把“物理模型”和“人的感知”这两条线串起来。下一章我们会聊更具体的标定方法,到时候再细说。