3、路感模拟策略:路面信息采集与处理、路感模拟算法基础、电机力矩控制原理
好,咱们进入正题。这一章聊的是路感模拟策略,说白了就是——怎么让方向盘“告诉”你,车轮底下压到了什么。
我经常跟团队里的小朋友讲:线控转向的核心,不是“取消机械连接”,而是“重建机械质感”。你想想看,传统转向系统里,路面信息是通过齿轮齿条、转向柱、扭杆,一路硬生生传到你手上的。线控转向呢?这条路断了。你得靠传感器、算法、电机,把这条路重新“搭”起来。
嗯,这里要注意:搭得不好,驾驶员会觉得“假”,像在打游戏。搭得好,他根本意识不到这是线控。这就是路感模拟的终极目标——让驾驶员忘记你的存在。
3.1 路面信息采集与处理
路感模拟的第一步,是搞清楚“路面上到底发生了什么”。
我个人习惯把信息来源分成三类:
- 直接测量信号:比如齿条力传感器、电机电流估算的力矩。这些信号最真实,但噪声也大。
- 车辆状态信号:车速、横摆角速度、侧向加速度。这些信号告诉你车辆在“怎么动”。
- 环境感知信号:比如摄像头识别到的路面类型(柏油、砂石、冰雪)。这部分目前还比较前沿,但未来一定是趋势。
采集到信号之后,处理是关键。我见过不少项目,传感器精度很高,但滤波没做好,路感反而更差。为什么?因为驾驶员的手对高频振动非常敏感,你滤得太干净,他感觉不到路面细节;滤得不够,又全是毛刺。
这里我分享一个经验:分频段处理。
| 频段 | 频率范围 | 处理方式 | 对应路感 |
|---|---|---|---|
| 低频 | 0-5 Hz | 低通滤波,保留幅值 | 转向手感轻重、回正力矩 |
| 中频 | 5-20 Hz | 带通滤波,适度衰减 | 路面起伏、接缝感 |
| 高频 | 20-100 Hz | 高通滤波,保留能量特征 | 碎石路、粗糙路面的振动 |
我曾经在一个项目中,把高频段完全滤掉了。结果试车员反馈:“这车开起来像在棉花上飘。”后来我保留了高频段的能量包络,只滤掉相位混乱的部分,路感一下子就“真实”了。
3.2 路感模拟算法基础
信号处理完了,接下来就是“算”。路感模拟算法,核心就一句话:把物理模型算出来的力矩,变成电机能执行的指令。
目前主流的路感算法,我把它归纳为三个层次:
- 基础模型层:基于车辆动力学,计算回正力矩、阻尼力矩、摩擦力矩。这是“骨架”。
- 补偿修正层:根据车速、转向角速度、侧向加速度等,对基础力矩进行动态修正。这是“血肉”。
- 路面注入层:把前面采集处理好的路面振动信号,叠加到力矩指令上。这是“灵魂”。
举个例子,回正力矩的计算,最经典的是用“魔术公式”轮胎模型简化版:
// 简化回正力矩计算
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;
}
最后,我想强调一点:电机力矩控制,不是越“准”越好。为什么?因为真实的机械转向系统,本身就有摩擦、阻尼、惯性这些“不完美”的特性。你控制得太精准,反而失去了机械感。
所以,我经常在力矩指令上,故意加一点“噪声”——模拟齿轮啮合的微小振动、模拟转向管柱的弹性变形。听起来有点反直觉,对吧?但试车员的反馈是:“嗯,这车有‘机械味’了。”
这就是路感模拟的微妙之处——有时候,不完美才是完美。
好了,这一章的内容就到这里。路感模拟这件事,说难不难,说简单也不简单。关键是把“物理模型”和“人的感知”这两条线串起来。下一章我们会聊更具体的标定方法,到时候再细说。