ELAI S.r.l.

电机回到同一位置,为什么夹爪没有?

机械间隙保留运动历史。通过逐步讲解的模拟,理解迟滞、末端误差以及无记忆 AI 补偿的局限。

电机回到同一位置,为什么夹爪没有?

电机读数正确,抓取仍然偏了

夹爪需要回到一个小型夹具上方。操作员示教位置,机器人重复几次,看起来很准。后来改变接近路径,从另一侧到达,夹爪却停在稍有偏移的位置,而电机读数完全相同。这一定是相机、神经网络或轨迹程序出错吗?不一定:测量运动的位置与需要定位的部件之间,可能存在有间隙的传动。响应还取决于如何到达当前位置。

核心问题是:当电机位置不足以确定夹爪位置时,缺少什么信息?我们将建立最小间隙模型,计算小角度如何转化为末端位移,并说明忽略历史的补偿器为什么存在无法避免的限制。示例是确定性模拟,尺寸用于教学,不是商业机器人测量、单元安全评估或 EL-AI 系统性能展示。目的在于揭示被“看起来精确”的测量掩盖的误差来源。

传感器的位置改变了读数的含义

编码器用于测量角位置。如果装在电机上,它观测的是传动输入侧,不会自动测得被驱动关节的位置。用 u 表示已按标称减速比折算到关节侧的电机角度,q 表示关节实际角度。这样二者单位一致,不会混淆电机圈数与输出角度。理想刚性、无间隙传动满足 q = u,而本例并非始终如此。

设想两个接触时才能传递运动的表面,中间有少量自由间隙。沿一个方向运动时,一个表面带动另一个;反向后,电机侧先跨过空隙,直到另一侧接触,输出可能一直不动。这只用于说明机制,并非描述每一种真实减速器。弹性变形、摩擦和负载依赖也可能存在,我们暂时排除它们,以便研究最简单运动学间隙模型也需要哪些记忆。

带记忆的规则,而不是固定修正

取半间隙 r = 0.1 度,总宽度 2r = 0.2 度。输入为 u 时,允许的输出位于 u − r 与 u + r 之间。如果先前输出仍在此区间,模型保持它不变;输入移动足够远时,输出被带到最近边界。下面公式回答“下一次运动后关节在哪里”,即将上一次值投影到当前区间,只做满足约束所需的最小变化。

q[k] = max(u[k] − r, min(u[k] + r, q[k−1])) |u[k] − q[k]| ≤ r

k 是序列样本下标,不表示秒。这里 u、q、r 的单位均为度。min 取两个数的较小值,max 取较大值,两者共同将 q 限制在边界内。关键是 q[k−1],它保留上一状态。算法只需保存一个数,每个样本的操作数恒定,因此 n 个输入需要 O(n) 操作。程序使用浮点数,并以 10⁻¹² 度数值容差检查角差不超过 r。

这是准静态描述,只给出连续位置,不计算加速度、力矩或接触冲击。我们没有积分动力学方程,也未设定真实采样周期。Simulink Backlash 官方文档描述了脱离接触和两个方向接合的模式。它用于核对间隙含义,本文计算与序列则是独立 Python 示例,不是运行 Simulink 的结果。

逐步跟踪一次反向

从 u = 1 度、q = 0.9 度开始,处于递增接触支路。将 u 降到 0.95,新区间为 0.85 到 1.05,仍包含 q = 0.9,输出保持不动。降到 0.90、0.85、0.80 时仍如此。直到 u = 0.75,上边界变成 0.85,才带动 q 到 0.85。这不是以毫秒设置的延迟,而是跨过间隙所需的输入行程。如果电机提前停止,在此模型中仅等待更久也不会自动完成运动。

u(度)q(度)
1.000.90
0.950.90
0.900.90
0.850.90
0.800.90
0.750.85
0.700.80

图从两个角度展示同一现象。左侧输入以 0.01 度步长从 −1 到 +1 度再返回,两条支路不重合,形成一种迟滞,即对历史的依赖。右侧放大表格中的短反向过程,注意输入下降时输出的平段。不能把斜率理解为速度,因为横轴只是没有赋予时间的下标。图中是模型位置,不是真实编码器测量或振动数据。

准静态模拟:迟滞环与反向细节。半间隙 r = 0.1°,没有时间尺度或真实机器人测试。
准静态模拟:迟滞环与反向细节。半间隙 r = 0.1°,没有时间尺度或真实机器人测试。

同一读数可能对应两个位置

从足够负的值接近 u = 0,q 为 −0.1 度;从足够正的值接近同一个 u,q 为 +0.1 度。输入读数完全相同,关节却相差 0.2 度。电机传感器可能十分一致,但关节存在两个状态。因此始终从同一方向重复的测试可能表现很好,却掩盖改变接近方向后的误差。这并不矛盾:重复一条路径与不依赖路径地到达某个位置,是两个不同实验问题。

从十分之一度到夹爪的毫米位移

要判断 0.2 度到底大不大,在关节上连接长度 L = 0.5 米的刚性杆。末端沿圆运动,平面位置为 p(q) = [L cos(q), L sin(q)]。三角函数中的 q 必须用弧度,角度需乘 π/180。比较 q = −r 与 q = +r,两者水平坐标相同,竖直坐标相反,因此距离恰为 2L sin(r),无需近似。

r_rad = 0.1 × π / 180 ≈ 0.001745329 d_between = 2L sin(r_rad) ≈ 0.001745328 m = 1.745328 mm d_from_nominal = 2L sin(r_rad / 2) ≈ 0.872665 mm

第一种距离是两种历史导致的到达位置之差,第二种是各自相对理想位置 p(0) 的误差。二者不能混淆:若不说明比较对象就称误差为 1.745 毫米,会把相对标称位置的误差近乎翻倍。小角度时 sin(r) 近似 r,第一种距离近似 2Lr,但程序保留三角函数精确公式。这不是机器人公差规格,只是所设 0.5 米与 0.1 度的几何结果。

只把半间隙改为 0.05、0.10、0.20 度,计算出的两次到达位置距离分别约为 0.873、1.745、3.491 毫米。敏感性检查说明哪个参数影响结果。工具越长,同一角误差越大,因为 L 是乘法因子。多关节机械臂还涉及几何与姿态,不能简单将此值乘轴数,而应通过完整运动学传播误差,并保留方向及相互依赖。

为什么更多数据仍不能弥补无记忆模型

假设训练一个只接收 u、输出 q 的预测器。在教学数据中,u = 0 等频对应 q = −r 和 q = +r,它应该学哪一个数?若目标是最小均方误差,最优值为两者平均,即零。不训练网络也能证明:设此处预测为 a,平均平方误差如下。这个例子隔离的是输入歧义,而不是优化器缺陷或参数不足。

MSE(a | u = 0) = [(a + r)² + (a − r)²] / 2 = a² + r² a_opt = 0; MSE_min = r² = 0.01 degree²; RMSE_min = 0.1 degree

交叉项 +2ar 和 −2ar 抵消,只剩 a² 与 r²。取 a = 0 可消除前者,后者仍在。RMSE 是均方误差平方根,单位回到度。增加同类样本能更准确估计均值,却不能说明下一观测由哪段历史产生。即使数据无噪声,条件误差仍为 0.1 度。这依赖两支路等概率且输入只有 u 的假设,并非神经网络或机器人普遍极限。

如果数据只有递增侧到达,固定修正 q = u − r 在该支路上完全正确,但用到另一支路会产生 2r 角误差。误导性测试很容易出现:将同一接近方式的重复样本随机分成训练和测试,不会补充缺失历史。评估补偿应包含完整和部分反向、明确初始化,并验证不同路径。这是建议的协议,不是已完成训练的报告;本文只执行模拟与计算。

仅有最后运动方向也未必足够

增加电机正在增大还是减小的符号是否足够?在充分接合的支路上有帮助,但不能解决所有部分反向。执行两段历史,都从 q = 0 初始化。第一段输入 [0, 1, 0.85, 0.90],最终 q = 0.90;第二段 [0, −1, −0.50, 0.90],最终 q = 0.80。最终输入都是 0.90,最后运动也都是递增,但输出不同:第一段保留了短暂反向前的值,第二段到达递增支路边界。

对已知模型,传播上一个 q 就足够了;已有精确规则的问题不需要大型网络。如果真实行为未知,带状态模型或观测序列可以作为待验证假设,但冠以“循环”名称并不能保证辨识或稳定性。如果初始历史未知,本模拟器也必须考虑输出不确定性,或采用使状态已知的程序。记忆不能凭空创造从未观测或初始化的信息。

补偿可以实现,但受假设约束

递增支路满足 q = u − r,因此目标 q* 对应 u = q* + r;递减支路满足 q = u + r,因此取 u = q* − r。目标 q* = 0.5 度时,程序检查从低侧接近用 0.6、从高侧接近用 0.4,在建立正确接触的路径后都得到 q = 0.5。但这不意味着任意命令交替加减十分之一度就行;离开接合支路时,必须知道状态并跨越间隙。

反向补偿在切换支路时可能要求输入跳变。准静态计算没有速度、加速度、电流或冲击限制,数学上有效的命令并不自动成为物理可行轨迹。真实系统必须结合传动动力学与约束。r 还可能随负载、磨损或工况变化,估计不准会留下残差;只描述间隙的模型不会自动纠正弹性、摩擦或几何误差。

比较观测信息不同的方案

始终从同一方向接近可减少模型中的支路歧义,但会改变路径,可能增加周期时间或与障碍物冲突。输出侧编码器更直接观测 q,能区分电机编码器混淆的状态,但增加成本、安装要求和控制设计问题。外部末端测量观测综合结果,包括其他几何误差,但也存在噪声、遮挡和延迟。没有任何方案天然消除所有误差,它们改变的是可获得的信息。

未来实验可同步测量输入与输出,使用多种幅度的往返运动、部分反向,并在明确负载下重复。首先比较无记忆模型、带状态间隙模型及未解释残差。若加入学习模块,应在不同于估计阶段的序列上评估,不能切分同一序列却隐藏初始化。这一协议尚未在硬件上执行。工业与协作机器人是 EL-AI 希望探索的方向,本文不证明公司已制造减速器、机器人、部署或取得实验成果。

复现推理,而不将其误作物理测试

附件包含模拟器、结果和绘图程序。play 按顺序读取输入,依照所述投影更新 q,改变顺序就改变了问题。run 构造迟滞环、反向、同一输入的两个到达状态、最后方向反例和补偿命令。断言检查约束与结果,下面代码输出关键数值。没有随机采样,因此无需随机种子。记录版本为 Python 3.14.0、Matplotlib 3.11.2。

回到抓取偏移的问题

夹爪可能没有回到同一点,因为传动上游的读数未必能识别下游状态,间隙保留部分运动历史。本例同样的 u = 0 对应相距约 1.745 毫米的末端位置,只看到 u 的预测器无法区分支路。概念上的解决办法是观测或重建该状态,再评估与真实动力学相容的补偿。要求 AI 更精确之前,应先确认输入是否包含实现精确所需的信息。

技术参考与材料

MathWorks — Backlash: Model behavior of system with play (documentation R2026b).

from experiment import run, play
r = run()
print(r['same_input'])
print(r['same_last_direction'])
print(r['branch_compensation'])
print(r['balanced_memoryless_rmse_deg'])

代码、数据与说明 · JSON. 教学计算使用 Python 3.14.0,图使用 Matplotlib 3.11.2。分析由 AI 辅助,不声称经过同行评审或人工审核。原创 ImageGen 封面仅作示意,不记录 EL-AI 人员、场所或实际安装。来源查阅于 2026 年 10 月 9 日。