先记住一句话

分辨率回答“能分出多小的码”,精度回答“离真值多远”,重复性回答“回到同一点有多一致”;控制系统还必须同时关心带宽、延迟、同步与失效模式。

定义 measurand选 sensor/range标定 offset/scale/frametimestampfilter/estimateplausibility check
Physicalangle/current/accel
Sensoranalog/digital code
Calibrationunits + frame
Estimatorstate + covariance
Controllerfresh measurement
传感器给 measurement,不直接给真值;标定、时间与融合决定 controller 最终看见什么。

1. 编码器到底测什么

类型输出逻辑上电行为
增量式 A/B/Z数脉冲并由相位判断方向,Z 提供每圈索引通常要找零/找 Z 才知道绝对位置
单圈绝对式圈内每个角度有唯一数字码上电即知 0–360°,不知道转过多少整圈
多圈绝对式同时记录圈内角和圈数断电后仍可恢复多圈位置,取决于实现

接口可能是 ABI、SPI、SSI、BiSS-C、RS-485、CAN 或 EtherCAT。接口名字不决定传感原理;磁、光、电感或 resolver 都可以通过不同数字接口输出。

2. 磁、光、Hall 与 resolver

  • Hall switches:常提供粗略的电角扇区,足够六步换向,但低速高性能位置控制通常嫌分辨率低。
  • 磁编码器:紧凑耐污,适合集成关节;磁铁偏心/倾斜、附近铁磁材料会造成周期误差。
  • 光编码器:可获得很高分辨率和精度,但对污染、装配与机械尺寸更敏感。
  • Resolver:用旋转变压器的正余弦模拟信号表示角度,耐高温和恶劣环境,但需要激励与解算电路。

3. 五个不能混用的指标

指标问题例子
分辨率最小数字步距是多少?15 bit/turn = 32768 个码
绝对精度报告角度离真值多远?±0.1°,可能远差于一个 LSB
重复性同方向多次回到该点是否一致?±0.01°
带宽/采样率多快的变化能被测到?2 kHz update 不等于 2 kHz 有效带宽
延迟/抖动真实发生到控制器收到相隔多久、是否稳定?固定 200 μs 可建模;0–2 ms 抖动更难控制

4. 速度通常是从位置估出来的

ω[k] ≈ (θ[k] − θ[k−1]) / Δt

差分会放大量化噪声;滤波能降噪,却增加相位延迟。低速时脉冲间隔法可能比固定窗口差分更好。高增益速度/阻尼环必须把编码器噪声、采样时钟和滤波一起设计。

5. 电流传感不是输出力矩传感

FOC 用 shunt、Hall 或磁通门测相电流,并通过 τmotor ≈ Kt Iq 估计电机转矩。输出端还经过齿轮摩擦、效率、惯量和弹性:

τexternal ≠ ηN Kt Iq (加速、摩擦和变形尚未扣除)

串联弹性执行器可测弹簧形变估力矩;应变片/力矩轴能更直接测输出扭矩;腕部或足底六维 F/T 传感器输出三轴力与三轴力矩,但会有串扰、温漂和过载风险。

6. IMU 测的不是“世界坐标姿态”

  • 陀螺仪测角速度,积分会随 bias 漂移。
  • 加速度计测 specific force;静止时能看到重力方向,运动时同时含线加速度。
  • 磁力计可提供航向参考,但机器人电机大电流和钢结构会严重扰动磁场。

姿态是用陀螺、加速度计和其他观测做状态估计得到的。IMU 安装方向、时间戳、振动隔离、温度标定和坐标系定义与传感器型号同样重要。

7. 时间同步决定多传感器能否对齐

joint encoders @ t0 ─┐
IMU            @ t0 ├─→ state estimator → q, dq, base pose @ one time
foot force     @ t0 ┘
camera         @ t0-Δ ─→ compensate exposure + transport latency

给所有数据打“收到消息时刻”的时间戳不够,因为采样可能早已发生。EtherCAT Distributed Clocks、硬件 trigger、PTP 或共享时钟的目标,是知道测量真正对应的时间。

8. 校准与故障检查

  • 关节零位、方向、减速比与机械限位一致吗?
  • 磁编码器一圈误差是否需要 harmonic compensation?
  • 电流 sensor offset 在不同温度下是否漂移?
  • IMU bias、scale、轴不正交和安装外参是否标定?
  • 数据是否单调、CRC 正确、时间戳连续,断线是否 fail-safe?

9. 四个 sensor 手算

例 1:encoder quantization

12-bit absolute encoder 每转 4096 counts,单 count=360/4096=0.0879°。读数 1024 对应 90°;这不包含 offset、nonlinearity 和 mounting error。

例 2:差分估速度

10 ms 前 angle=1.00 rad,现在=1.03 rad,raw velocity=(1.03−1.00)/0.01=3 rad/s。若位置噪声各 ±0.002 rad,差分噪声可达约 ±0.4 rad/s。

例 3:motor current 到输出 torque

Current=8 A、Kt=0.1 N·m/A、reduction N=9、efficiency=0.8,估计 output torque=8×0.1×9×0.8=5.76 N·m。它仍不是直接 load-cell measurement。

例 4:timestamp misalignment

Joint 以 4 rad/s 转动,camera 与 encoder timestamp 差 15 ms,则对齐误差约 4×0.015=0.06 rad=3.44°,远大于常见 encoder quantization。

常见误解:

15-bit 编码器每码约 0.011°,只说明数字量化步距;它完全可能只有 ±0.2° 绝对精度,也可能经过减速器后被回差和结构变形主导。

自测

1. 为什么提高编码器分辨率不一定提高控制带宽?

带宽还受延迟、噪声、滤波、通信周期、机械共振和控制器影响;更多 bit 不能修复这些限制。

2. 为什么用电流估脚底接触力很困难?

必须通过全身动力学映射,并扣除惯性、重力、传动摩擦与效率;模型误差会进入接触力估计。

3. IMU 静止时为什么加速度计读数不为零?

加速度计测 specific force,支撑面对它施力以抵消重力,因此会观测到与重力相关的约 1 g 信号。

一手资料

ODrive Magnetic Encoders 说明磁铁安装与谐波误差;ODrive Hardware Configuration 比较编码器和双反馈;Unitree GO-M8010-6 给出 15-bit 编码器和位置/速度/力矩/温度反馈实例。