第二章:力反馈系统架构——感知层、控制层、执行层,以及各层之间的信号流
做力反馈系统这么多年,我见过不少新手一上来就盯着电机选型或者控制算法猛啃。结果呢?系统联调的时候,信号延迟大得离谱,或者干脆震荡起来。说白了,他们缺的就是一张清晰的系统架构图。
今天咱们就把力反馈系统的三层架构彻底聊透。你想想看,一个完整的力反馈系统,本质上就是个闭环:感知→决策→执行。对应到工程实现上,就是感知层、控制层、执行层。
2.1 感知层:系统的「神经末梢」
感知层的任务很纯粹——把物理世界的力、位置、速度这些模拟量,变成控制层能读懂的数字化信号。
我个人习惯把感知层拆成三块:
- 力/力矩传感器:直接测量交互力。比如六维力传感器,能同时测Fx、Fy、Fz和力矩Tx、Ty、Tz。我在做手术机器人项目时,用的就是ATI的Mini45,分辨率能做到0.01N。
- 位置/速度传感器:编码器、霍尔传感器这些。注意,这里的位置是绝对位置还是相对位置,直接影响控制策略。
- 信号调理电路:放大器、滤波器、ADC。嗯,这里要注意——传感器原始信号通常很微弱,比如应变片输出只有几毫伏,不调理好,后面控制层拿到的全是噪声。
关键信号流:物理量 → 传感器 → 模拟信号 → 调理电路 → 数字信号 → 控制层
我曾经在一个力反馈手柄项目里踩过坑。当时用了便宜的应变片,没做温度补偿。结果环境温度一变化,零点漂移了20%。操作员明明没用力,手柄却反馈出0.5N的力。从那以后,我选传感器必看温漂系数。
2.2 控制层:系统的「大脑」
控制层是力反馈系统的核心。它接收感知层的数据,算出控制指令,发给执行层。
控制层通常跑在实时操作系统上,比如FreeRTOS或者VxWorks。为什么强调实时?因为力反馈对延迟极其敏感。人手的感知阈值大概在1ms级别,你控制周期要是超过5ms,操作者就会觉得「粘滞」。
控制层内部又分几个子模块:
- 信号预处理:滤波、去噪、标定。我习惯用二阶巴特沃斯低通滤波器,截止频率设100Hz左右,既能滤掉高频噪声,又不影响力反馈的带宽。
- 控制算法:这是重头戏。最简单的就是阻抗控制,公式是:
F = K * (X_d - X) + B * (V_d - V)。K是刚度,B是阻尼。你调参的时候会发现,K大了系统硬,但容易震荡;B大了系统稳,但感觉「肉」。 - 安全逻辑:限幅、急停、故障诊断。千万别省这一步。我见过有人做力反馈外骨骼,控制算法没做输出限幅,结果电机直接把人胳膊推过头了。
避坑指南:我曾经在控制层里直接用了浮点运算,结果在低端MCU上跑一个控制周期要3ms。后来改成定点数+查表法,直接压到0.5ms。记住,控制层的每一微秒都很宝贵。
2.3 执行层:系统的「肌肉」
执行层把控制层的数字指令,变成实际的力或力矩输出。
最常见的执行器是电机,尤其是无刷直流电机(BLDC)和音圈电机。选型时主要看三个参数:
| 参数 | 含义 | 我的经验值 |
|---|---|---|
| 峰值力矩 | 短时能输出的最大力 | 至少是额定值的3倍 |
| 力矩纹波 | 输出力矩的波动 | 小于5%才感觉平滑 |
| 电气时间常数 | 响应速度 | 小于1ms |
执行层还包括驱动器和传动机构。驱动器负责把控制层的PWM信号变成电机电流。传动机构呢,比如减速器、丝杠,它们会引入摩擦和间隙。嗯,这些非线性因素,后面控制算法得专门处理。
注意:执行层的延迟往往是整个系统的瓶颈。电机电感、驱动器死区时间、机械传动间隙,都会造成滞后。我建议你在执行层加一个电流环,跑在20kHz以上,这样能把电气延迟压到最低。
2.4 三层之间的信号流
好了,三层都讲完了。它们之间怎么配合?我画了一张图,你看一眼就明白了。
这张图里,信号流其实分两条路:
- 前向通路:感知层采集数据 → 控制层计算 → 执行层输出力。这是主路径,延迟要控制在1ms以内。
- 反馈通路:执行层的状态(实际位置、速度、电流)回传给控制层,形成内环。同时,操作者感受到的力也会通过感知层回传,形成外环。
你想想看,如果感知层的采样率只有1kHz,控制层算得再快也没用——因为输入数据就是过时的。反过来,执行层响应慢,控制层输出再精准,电机也跟不上。所以三层必须协同设计。
核心原则:感知层的采样率 ≥ 控制层频率的2倍(奈奎斯特定理)。控制层频率 ≥ 执行层电流环频率的1/10。我一般按感知层4kHz、控制层2kHz、电流环20kHz来配。
2.5 实际项目中的架构取舍
理论说完了,聊聊实战。我在做力反馈主手(就是手术机器人那个操作手柄)时,架构上做了几个取舍:
- 感知层:没用六维力传感器,太贵了。改用电机电流估算力矩,配合末端的小型一维力传感器做补偿。精度差一点,但成本降了80%。
- 控制层:算法用了阻抗控制+重力补偿。因为主手本身有自重,不补偿的话,操作者会觉得「提着个铁疙瘩」。
- 执行层:用了谐波减速器,背隙几乎为零。但摩擦大了,所以又在控制层加了摩擦前馈补偿。
说白了,架构没有标准答案。你得根据项目需求——成本、精度、响应速度——去权衡。但不管怎么变,三层之间的信号流逻辑是不变的。
一个小技巧:调试时,我习惯先在感知层输出原始数据,用串口或者DAC看波形。确认信号干净了,再调控制层。最后才接执行层。这样一层层排查,问题出在哪一目了然。
好了,力反馈系统的三层架构就聊到这儿。记住这张图,后面讲阻抗控制、导纳控制、力位混合控制时,你都会回到这个框架上来。
公众号:蓝海资料掘金营,微信deep3321