双编码器不是两把尺:协作机器人正在用编码器差值“偷”出关节扭矩
首发于公众号「如是有为」 · 查看原文

现在机器人热,热到大家都在看整机会不会跑、会不会跳、会不会进厂打工。但真拆到关节里面,热闹马上变得很安静:电机、减速器、编码器、驱动器,谁都不能掉链子。尤其是编码器,过去像参数表里的小配角,现在越来越像机器人关节的神经末梢。
最近看了一篇关于双编码器应用的老文章,讲的是协作机器人里的双编码器执行器方案。
文章不长,但里面几个细节很值得展开:电机端编码器、输出端编码器、中空轴、回路轴、拖动示教、外力感知,还有那个最容易被忽略的角度差。
什么是协作机器人
协作机器人,讲白了,就是能和人共享工作空间的机器人。
传统工业机器人像车间里的钢铁犀牛,焊接、码垛、搬运,力气大、速度快,外面围一圈安全护栏,人别靠近就行。
协作机器人命苦一点。
它要站在人旁边,被人拖着示教,被人轻轻推开,被人撞一下还得知道停。
它要准,要轻,要安全,还要好用。
最麻烦的地方在于,它不能只知道:
我转到哪了?
它还得知道:
刚才是谁碰了我?
碰得多重?
我该跟着走,还是马上停?

协作机器人最难的地方,藏在人手碰上来的那一刻
展会上看协作机器人,画面一般都挺温柔。
白色外壳,蓝色灯带,动作慢悠悠,旁边站一个笑得很标准的工作人员,机械臂端着咖啡、拧着螺丝、摆着小零件,像一台从未来商场里走出来的高级家电。
工程师看这种画面,一般笑不出来。
传统工业机器人可以关在护栏后面,自己在里面猛干。协作机器人要和人一起工作,安全、柔顺、拖动示教、碰撞检测都变成了硬要求。
Nikon 的 C3 eMotion 智能执行器就是面向协作机器人关节的集成模块,把电机、减速器、电机驱动器、制动器和编码器放进一个单元里,用来降低机器人关节设计门槛。

这个“集成”听着优雅,落到关节里面就是灾难片。
电机要进去。
减速器要进去。
驱动器要进去。
抱闸要进去。
轴承、线束、散热、密封也要进去。
知乎案例里的剖面图,把电机、谐波减速器、交叉滚子轴承、驱动电路、编码器 1、编码器 2全塞进一个紧凑执行器里,还提到两个编码器在轴向上只占大约 15mm。

( https://zhuanlan.zhihu.com/p/117460544 )
15mm,大概一小截指甲盖。
这点空间里,机器人要知道电机在哪里,关节输出端在哪里,还要判断有没有外力推它。
说好听点叫高集成。
说难听点,就是在螺蛳壳里装修三室一厅,厨房还得开放式。
这也是我说了好多次的东西:
编码器不要只盯参数。
16 位、18 位、20 位,当然重要。
但放到协作机器人关节里,编码器早就不只是“测角度”的小零件。
它在服务电机控制,服务输出端闭环,服务拖动示教,服务碰撞检测,甚至开始参与外力估算。

两颗编码器一做差,位置反馈开始长出力觉
双编码器最普通的讲法,是一颗装在电机端,一颗装在输出端。
电机端编码器盯电机转子,服务 FOC、换向、速度环、转矩响应。
输出端编码器盯关节最终输出,服务真实位置、全闭环、末端精度。
这套话没有错,但讲多了就像嚼过三天的口香糖,味道没了。
协作机器人里更有意思的一层,是两颗编码器之间那个差值。
设:
θm = 电机端编码器角度
θo = 输出端编码器角度
N = 减速比
θm / N = 电机端折算到输出端的理论角度
Δθ = θm / N - θo
这个 Δθ 表面只是角度差,往下挖,它是传动链被外力、负载、弹性、迟滞、摩擦一起拧出来的痕迹。
再给关节传动链一个等效扭转刚度 K:
τext ≈ K · Δθ
这行公式一出来,味道就变了。

两颗编码器都在测位置。
可它们一做差,位置反馈链开始有了力觉味道。
关节像一根会轻微扭转的弹簧。电机端编码器站在弹簧一头,输出端编码器站在弹簧另一头。人手一推,输出端先产生微小位移,电机端折算到输出端的位置没有完全跟上,中间冒出一个角度差。
控制器把这个差值乘上刚度模型,就能摸到外部扭矩的影子。
Celera Motion 也沿着这条线讲过。协作机器人关节可以利用谐波传动内部柔顺性和电机电流形成虚拟扭矩传感能力;另一份机械设计资料还提到,双编码器可用于实时监控每个关节的刚度/柔顺性,让位置和扭矩信息一起提供给控制器。

Celera Motion
减速器的弹性,过去是误差。
放进双编码器差分框架里,它开始变成信号。
这件事很像公司里那个平时最爱摸鱼的人,某天突然被发现特别会接待客户。
你说他没用吧,他确实带来了订单。
你说他有用吧,他平时也确实挺让人血压高。
谐波减速器的弹性就这个味儿。
放错地方,它折磨工程师。
换个算法视角,它给机器人关节提供外力线索。
K·Δθ 只是入门,后面全是迟滞、温漂和机械记忆
τext ≈ K · Δθ 很适合科普,但不能把它当现场万能符。
真实协作机器人关节里,K 不会像教科书里的弹簧常数那样老老实实坐在那里。
谐波减速器有非线性刚度,有迟滞,有回差,有摩擦,有温漂,还有负载历史留下的机械记忆。
同一个 Δθ,顺转和反转含义可能不一样。
同一个 Δθ,冷机和热机含义可能不一样。
同一个 Δθ,轻载和重载含义可能也不一样。
更工程一点,公式会变成:
τext ≈ f(Δθ, θ, direction, temperature, load history)
再写得稍微像控制工程师的白板:
τext ≈ K(θ, direction, temperature) · Δθ
相关论文研究提到,基于电机侧和负载侧双编码器估算扭矩时,需要处理谐波减速器的运动学误差、迟滞和扭转刚度,并提出用 B 样条方法补偿运动学误差。这句话翻成人话就是:
两个角度一减,只是把门打开。
门后面站着一屋子的标定、建模、滤波、补偿和现场脏数据。
静止时,双编码器像关节里的测力弹簧。
人手轻轻推关节,输出端先动,电机端因为大减速比暂时变化不明显。那篇案例也提到,静态时输出侧受到外部扭矩,输出侧编码器会测到微小变化;在大减速比下,电机侧编码器还没发现变化,两者对比可得到人手在机械臂上的微小用力。
Δθstatic = θm / N - θo
τhand ≈ K · Δθstatic
拖动示教打开
控制器顺着这个力让电机跟随。
人拉它,它走。
拖动示教没打开
控制器反过来补偿外力,守住输出位置。
人推它,它稳。
同一个差值,换个控制策略,机器人性格立刻变了。
手感好的机械臂,拖起来像拉一根没有重量的杆子;手感差的机械臂,像遛一头刚睡醒的铁牛,轻了不动,重了乱窜,停下还回弹一下,仿佛它和人类有私人恩怨。
运动时,公式还得继续往下长:
θo_ref = θm / N
eθ = θo_ref - θo
τload ≈ K · eθ + B · deθ/dt
再深一点,还会把惯量和摩擦拉进来:
τext ≈ K · eθ + B · deθ/dt + J · d²eθ/dt² - τfriction
这里的 B 对应阻尼影响,J 对应惯量影响,τfriction 对应摩擦补偿。
写到这里,公众号读者可能已经开始怀疑自己误入控制理论课堂。
先别跑。
核心就一句:
双编码器给了系统一个空间参照。
电机端理论输出和真实输出之间的偏差,可以被拿来反推负载和外力变化。
2025 年一篇关于协作机器人伺服振动抑制的研究,也采用了电机侧编码器和减速器侧编码器的双编码器结构,并把两侧数据纳入伺服控制来抑制振动。

这说明双编码器在协作机器人里早就不只是“位置更准”那点事。
它正在往扭矩估算、柔顺控制、振动抑制这些更深的控制问题里钻。
输出端编码器最精彩的一招,是没有老老实实待在输出端
很多人听到“输出端编码器”,第一反应特别朴素:
那就装在输出法兰旁边。
这句话的轻松程度,差不多等于:
北京房子贵,那就在三环买一套。

协作机器人关节里,输出端附近不是想装什么就装什么。
输出法兰在转,编码器定子要固定在静止侧;供电和通信线要出来,空间又很小;结构稍微一复杂,输出轴变长、弯矩增加、刚度下降、走线困难、滑环路数上涨。
一个问题牵出一串问题,像过年亲戚问你对象,答错一句后面全是连招。
知乎文章的案例把这件事讲得很清楚:若在输出法兰附近布置编码器,会带来编码器定子固定、输出轴长度增加、弯矩增加和结构稳定性下降的问题;若编码器在执行器转子侧,供电和通信线路可能需要滑环,导致滑环路数和尺寸上升。
成熟方案不会粗暴地把编码器贴在输出法兰旁边。

案例里给出的路线,是通过中空轴设计,把输出轴侧的编码器转移到执行器定子侧;输出轴反向增加一个穿过中空轴的回路轴,把输出端转动数据带回来,同时解决编码器定子固定与走线问题。
这才是技术含量。
双编码器不只是控制问题,它会反过来改变机械拓扑。
编码器要看见输出端,结构就得想办法把输出端信息送回来。
线束不能乱跑。
定子要能固定。
轴向空间不能炸。
滑环最好少碰。
装配和维护还要能活。
高端协作机器人关节里,编码器已经不再是“轴上贴个传感器”。
它开始成为执行器结构设计的硬约束。
低端做法是轴在哪里,编码器贴哪里。
高端做法是编码器要看见什么,结构就为它让路。
这句话我说了很多次,后面还会继续说:
编码器的用途不能只盯参数表上那几个数字。

双编码器拼到最后,拼的是差值能不能长期可信
编码器行业特别容易把人带进参数迷宫。
16 位、18 位、20 位。
绝对精度、重复精度、线性误差。
数字一排开,像手机发布会卷摄像头像素。
客户看着安心,销售讲着有底气,工程师坐在旁边,心里已经开始准备解释第八遍:
高分辨率不等于好控制。
双编码器力觉里,最要命的是这个差值:
Δθ = θm / N - θo

系统相信的不是某一颗编码器单独多漂亮,而是两颗编码器做差之后,这个差值还干不干净、稳不稳定、能不能长期对应真实物理意义。
两颗编码器零位不稳,差值带偏见。
采样时间不同步,差值带错觉。
输出侧噪声大,差值抖成心电图。
电机侧延迟大,控制器可能把延迟看成外力。
温漂、装配偏心、轴系跳动、磁场干扰、回差死区,全会把这个差值弄脏。
电机侧编码器反馈数据用于 PID、FOC 控制,是电机转动性能的重要输入;输出侧编码器直接测量输出位置变化,并通过与电机侧编码器数据对比来测量扭矩,重点落在微小变化、增减量和相对变化值上。
这段很值得反复讲。
电机侧编码器要稳、快、延迟低,服务驱动闭环。
输出侧编码器要低噪声、高重复性、微小变化可辨,服务差分力觉。
标称 20 位,信号脏得像菜市场,没有用。
绝对精度写得好看,微小变化看不出来,也没有用。
两颗编码器单独看都正常,一做差满屏鬼故事,这种情况一点也不稀奇。
像两个部门单独汇报都很健康,一对账发现公司现金流失踪。
双编码器真正的门槛不在“多买一颗”。
门槛在:
结构、标定、同步、噪声、温漂、刚度模型、迟滞补偿和异常诊断一起过关。
同侧、异侧双电感编码器开始出现
这两年更有意思的变化,是国内厂商已经开始把“双编码器的结构麻烦”往编码器里面吞。
过去关节厂为了读两个角度,像在执行器里搞密室逃脱:
一边要看电机端,一边要看输出端;
一边要保留中空走线,一边还得让编码器定子有地方固定;
线束不能乱跑,滑环最好别碰,轴向空间还不能炸。
工程师画到最后,感觉不是在设计关节,是在给一只螃蟹做微创手术。
现在同侧、异侧双电感编码器开始出现,一套定子电路同时读两个转子的角度,直接给控制器两路角度数据。
比如锐鹰传感 KID 系列,公开资料里写着“一体式异侧中空双编码器”“双读头”“单接口双输出”。
弓望电子官网也列出了同侧双编码器、异侧双编码器,并推荐 RT-T036 这种大中空小尺寸同侧双编码器。
强和/Mosrac DP 系列则是单定子配内外双转子,在同侧实现双编码器设计。其公开选型示例里能看到 DP–20–50–A–19–02–05–E 这种 DP 系列绝对值双编码器型号。

Mosrac dp-series-dp2055-inductive-encoders
这个趋势很关键。
双编码器过去是执行器系统里的“结构难题”,现在正在变成编码器厂商的“封装能力”。
谁能用一套电路读两个角度,谁就能帮关节少一截轴、少一圈线、少一套安装麻烦。
对协作机器人来说,这比单纯把分辨率从 17bit 卷到 19bit 更实际。
参数当然要看。
但只看参数,就像相亲只看身高体重。
真正过日子,得看能不能一起还房贷。
编码器放进机器人关节里,真正值钱的不是海报上那个 bit 数,而是它能不能把双角度、走线、安装、同步、差值可信度这些脏活一起扛下来。
最后再科普一次:协作机器人需要的是一条更早醒来的关节感知链
协作机器人能和人一起工作,靠的不是一颗传感器突然成仙。
机械结构要轻,关节要有足够扭矩和刚度,控制器要能处理接触,安全策略要可靠,传感器要及时发现异常,拖动示教要顺,停机要果断,恢复还要稳。
双编码器在里面扮演的是一条很关键的底层感知链。
Nikon 的 C3 eMotion 产品资料写到,双编码器结构可以检测减速器的角度传递误差,并实现包含输出轴位置在内的全闭环控制;Nikon 也提到,其双编码器结构可用于外力检测、直接示教和安全停止等协作机器人功能。
这条链路大概长这样:
人手外力
↓
输出端微小位移
↓
输入输出角度差 Δθ
↓
刚度 / 迟滞模型估算 τext
↓
驱动器执行跟随 / 顺应 / 停止 / 补偿
链路短,位置低,贴近关节。
协作机器人安全不能等上层算法慢慢开会。
人手碰上去,关节底层最好先醒。
双编码器就在这条早醒链路里。
回到最开始,协作机器人到底是什么?
它不是一台“可以站在人旁边的工业机器人”这么简单。
它是一个必须理解接触的机器人。
人推它,它要知道。
人拖它,它要顺着走。
人撞它,它要停。
负载变了,它要分得清。
关节里面发软了,它要看得见。
编码器,尤其是协作机器人关节里的双编码器,已经从“测角小零件”变成了一条关节级感知链。
它测位置,也参与控制。
它看角度,也帮助估力。
它服务电机,也服务输出端。
它不只是参数表上的 bit 数,更是机器人理解自己身体状态的入口。
这就是我反复说、还会继续说的那句话:
别只盯着编码器参数。
编码器的价值,要放回关节、执行器、控制系统和协作场景里看。
一颗编码器测的是角度。
两颗编码器配合起来,机器人开始低头看自己的胳膊。
刚才,是谁推了我?
评论区聊点现场里的东西。
你们做协作机器人或关节模组时,双编码器差值有没有拿来估算外力?
K · Δθ 这套模型最大的坑是刚度标定、温漂、同步延迟,还是输出侧编码器噪声?
有没有遇到过两颗编码器单看都正常,一做差满屏鬼故事的场面?
关注我,后面继续拆机器人关节模组、双编码器力控、电感/磁编码器选型,以及那些参数表里写得很漂亮、现场里能把人逼疯的执行器细节。

关注公众号「如是有为」
微信扫一扫,新文章先在公众号发出。