第 3 章 位置与速度传感¶
控制回路要"知道自己在哪、转多快"。这一章讲关节里那枚编码器的输出形态(增量/绝对、单圈/多圈)、敏感原理谱系(光/磁/旋变)、分辨率与真实定位误差的差距、双编码器构型为什么必要、速度测量的三种方法与取舍,以及串行接口的电气与帧形态。它止于器件输出:把这些数读进 joint_states、发成话题、打时间戳归 ROS2-note 第 6–7 章;
BiSS/SSI 的总线工程实践(多从站组网、实时同步)归 fieldbus-note,本章只讲接口本身。观测器/滤波从含噪位置估速度归 control-note 第 8 章。示例参数为手算而设、不指某一型号;厂商专有接口的规范归属与版本未核实者标「待核实」。
从器件输出到下一位观测量的链:
flowchart LR
enc["编码器:增量 / 绝对"] --> res["分辨率 ≠ 准确度"]
res --> dual["双编码器:电机侧 + 关节侧"]
dual --> speed["速度:差分 / 滤波 / 观测器"]
1. 增量式与绝对式输出¶
- 增量式(incremental):输出 A/B 两路正交方波(相位差 90°)+ 每圈一个 Z(零位/索引)脉冲。方向由 A/B 超前关系判,位置由计数得。对 A/B 做4 倍频(both edges × 2 通道)把每线计数乘 4。它没有"断电后绝对位置"概念,上电要找 Z 或靠机械限位归零。
- 绝对式(absolute):每角度对应唯一编码字,上电即知绝对角,免归零。分单圈(一圈内绝对,靠码盘:格雷码避免跳变多 bit 同时翻转的读错)与多圈(记录圈数)。多圈实现有机械齿轮计数、电池/电容后备计数、以及无电池多圈(wake-up on power)——上电时靠感应上一断电位置的圈数,省去电池维护,是关节模组常见做法。
判据:会掉电、要免归零、要安全停机后仍在原位 → 绝对多圈;只测速度或增量够用、可接受上电找零 → 增量。
A/B 正交方波在每个计步上的状态序列(正向;反向则逆序):
packet-beta
0-0: "A=1 B=0"
1-1: "A=1 B=1"
2-2: "A=0 B=1"
3-3: "A=0 B=0"
4-4: "回到 A=1 B=0"
四个状态构成一个电气周期,A 与 B 相位差 90°;对两路各取双边沿即 4 倍频,每个状态变化计一步。Z 相每转只出一个脉冲,是上电找零的基准。
2. 敏感原理谱系¶
同一"角度→数字",传感物理不同,鲁棒性与误差特性不同:
- 光电(optical):光源 + 码盘(圆光栅)+ 光电接收。分辨率最高(细栅距 + 高倍细分)、噪声低;怕粉尘、油污、结露遮光,怕振动导致瞬时丢脉冲。
- 磁(magnetic):多极磁环 + 磁阻/霍尔芯片读磁场角。耐污染、可容忍安装偏心与气隙(gap)变化——代价是磁环与读头的机械偏心/磁偏心引入一次(每转一周期)与高次谐波角度误差,须在位标定(测出谐波表反减)。敏感技术档:Hall、AMR(各向异性磁阻)为主流,GMR/TMR 精度更高(一句名目)。
- 旋转变压器(resolver):励磁绕组 + 两个正交输出绕组,转子角调制出 \(\sin\theta/\cos\theta\) 包络,经 R/D 变换(解算)成数字角。耐高温、耐振动、天然绝对、极对数可多,故重载、引擎旁、换向(第 1 章 FOC 换向常配旋变)不退;代价是分辨率与动态受 R/D 转换器激励频率与跟踪带宽限。
- 电感式与电容式(如电感游标、感应同步器/容栅):用于直线或特殊几何绝对测量,本板块一句名目。
判据:干净高精度环境选光;脏、有油、要抗冲击选磁(配在位谐波标定);高温/强振/换向选旋变。
3. 分辨率不等于准确度¶
厂商标"分辨率"常是 \(2^n\)(绝对位数)或"线数 ×4"(增量细分),那只是理论最小刻度,真实单圈准确度另有一堆误差项相加:
import numpy as np
n = 17 # 绝对编码器位数(示例)
counts = 2**n
res_deg = 360/counts # 理论分辨率
17 位绝对编码器的理论刻度约 10 角秒,这只是一个刻度,不含下面的误差项。
分辨率是"能分辨多细",准确度是"读数和真值差多少",差在:
- 单圈误差(interpolation error / DNL-INL):光栅/磁传感器本身的周期性与积分非线性,厂商以"最大单圈误差"给(标型号);
- 安装偏心:磁/光码盘中心与旋转轴不重合,注入一次谐波误差(幅值≈偏心量/码盘半径,磁编码器尤甚,靠「敏感原理谱系」里的在位标定削);
- 细分噪声与振动抖动:高倍细分放大的电子噪声、机械振动瞬时抖动。
把"高分辨率"当"高精度"是常见误读;误差预算要逐项列,不是看位数。
4. 双编码器构型¶
一个带减速器的关节,只装电机端编码器会把减速器的账算错:回差、扭变、传动误差都在输出侧,电机端看不见。工程做法是两端各装一枚:
- 电机端:高分辨率,每输出一圈随转子转 \(N\) 圈,用于换向(FOC)与高速测速;
- 输出端(负载侧):装在关节输出轴,绝对、低分辨也够(输出轴转速比电机低 \(N\) 倍),直读真实输出角。
两者之差正暴露减速器的回差与轴扭变(第 2 章精度三指标):串联弹性关节(输出端另有弹性元件形变测力,见第 4 章)尤其依赖输出端读数。它把"折算分辨率"与"输出真实精度"分开——电机端 \(\theta_m/N\) 是命令,输出端 \(\theta_o\) 才是事实,控制器用 \(\theta_o\) 闭环可把减速器非线性测回去(补偿器实现归 control-note)。
两端各装一枚编码器,差值是减速器的误差:
flowchart LR
motor["电机"] --> enc_m["电机端编码器<br/>高分辨率,换向与高速测速"]
motor --> red["减速器 N<br/>回差 / 扭变 / 传动误差"]
red --> enc_o["输出端编码器<br/>绝对、低分辨率够用"]
enc_m --> diff["两者之差 = 减速器误差<br/>θm/N 是命令,θo 是事实"]
enc_o --> diff
5. 速度测量:M 法、T 法与差分¶
编码器原始量是位置,速度要"算"。三种法各有适用转速:
- M 法(frequency/counting):固定窗口 \(T_g\) 内数脉冲数 \(M\),\(\omega \propto M/T_g\)。高速时 \(M\) 大、量化相对误差小;低速 \(M\) 小、±1 个脉冲的量化误差被放大。
- T 法(period):测相邻脉冲周期,低速准、高速差(高频周期太短难测)。
- M/T 法:同一窗口内既数脉冲又计时,兼顾两端,是常用折中。
M 法的量化误差随转速跌得很快:以每圈 16384 计数、10 ms 计数窗口为例,60 rpm 时窗口内约有 164 个计数,±1 计数的相对误差不足 1%;6 rpm 时只剩约 16 个计数,误差升到约 6%;1 rpm 时只有约 3 个计数,误差超过 30%。低速段因此要靠 T 法或 M/T 法,把计时而不是计数当主信息。
从含噪位置用差分或观测器估速度是另一条路(差分放大噪声;观测器把噪声整形与滞后权衡),其推导与调参归 control-note 第 8 章——本章只立"测速方法随转速分档"的器件侧边界。
6. 接口形态:SSI 与 BiSS C(及厂商专有)¶
绝对值编码器的角度怎么从芯片走到主控,是同步串行接口:
- SSI(Synchronous Serial Interface):主控发时钟、从机在数据线上移出编码字(绝对值串出),类移位寄存器。开环、无地址、点对点;电气走 RS-485/422 差分(与增量式的线路驱动同源,见 TIA/EIA-422-B)。
- BiSS C(Bus Interface for Sensors and Actuators, C mode):开源规范,与 SSI 兼容的上行,加下行数据段、错误标志(ERR/Warning)与状态位、Alarm、位置请求,支持"安全"数据(带 CRC 的读)。它是点对点同步串行接口,不是现场总线(不能多主寻址),多从站靠主控分别拉选。
- EnDat(海德汉侧)、Hiperface DSL(maxon/倍福侧):厂商专有绝对值接口,命令/应答式、带诊断与非易失参数区。其规范归属方、当前版本与开放程度未核实前,只列名目不展开帧结构(标「待核实」)。
多圈掉电保持:电池或超级电容后备圈计数、齿轮机械计数、或 wake-up-on-power 无电池找回(见「增量式与绝对式输出」)——是关节运维里最容易踩的坑(电池耗尽=丢多圈,需重找零)。BiSS/SSI 的总线级工程实践(多轴同步、实时等时)归 fieldbus-note;绝对值读数进 joint_states 的通路归 ROS2-note 第 6–7 章。
7. 要点¶
- 增量给"变化"(A/B/Z、4 倍频、上电需归零),绝对给"位置"(格雷码单圈、多圈含电池/机械/wake-up 保持);会掉电免归零选绝对多圈。
- 敏感原理分档:光电最精但怕脏怕振,磁耐污染靠在位谐波标定削偏心误差,旋变耐高温振动且天然绝对(换向常用),电感/电容作特殊几何。
- 分辨率 ≠ 准确度:\(2^n\) 只是刻度,单圈误差、安装偏心一次谐波、细分噪声与振动另列进误差预算。
- 带减速器的关节用双编码器:电机端管换向/测速,输出端直读真实角,把回差与扭变测回去(串联弹性关节的前提,接第 4 章)。
- 测速分档:M 法高速准、T 法低速准、M/T 折中;M 法量化误差在低速急剧放大;差分/观测器估速归 control-note。
- 绝对值靠同步串行接口送出:SSI 与开源 BiSS C(带错误/状态位,但是接口不是现场总线);EnDat/Hiperface DSL 规范未核实前只列名目;多圈掉电保持是运维坑。