ELAI S.r.l.

机械臂托着相同重量,为什么各关节的负担不同?

从杠杆到雅可比矩阵,用经过计算验证的示例解释力矩、连杆自重与依姿态变化的载荷限制,不虚构硬件实验。

机械臂托着相同重量,为什么各关节的负担不同?

重量不能说明全部负担

把瓶子贴近身体拿着,与伸直手臂拿着,感觉不同,虽然瓶子的质量没有改变。工业机器人也有类似情况:仅用千克表示的载荷,不能解释每个关节要承担多大负担。本文的问题很具体:改变机械臂姿态时,保持工件静止所需的力矩如何变化?读完后,我们将能在简单模型中计算它,并理解为什么一个额定载荷数字不能取代任务分析。

摘要。本文建立平面双关节机械臂模型,先忽略连杆质量,再计入自重。从力矩平衡推导关节力矩,并通过虚功解释它与雅可比矩阵转置的联系。以合成的 2 千克载荷,比较不同姿态、示意力矩约束以及到达同一点的两种构型。还通过势能的数值微分验证结果。这些是实际执行的教学计算,不是机器人实测、电耗估算或安全评估。

矩阵之前:力及其力臂

质量以千克衡量,重量则是一种力。这里取重力加速度 g=9.81 米/秒²:质量 m=2 千克产生向下的 mg=19.62 牛顿力。力矩以牛顿·米计量,描述绕轴旋转的趋势。对于竖直力,有效力臂是转轴与力的作用线之间的水平距离,通常并不是关节到工件的完整几何距离。

建立 x 水平、y 向上的坐标系。第一连杆长度 L₁=0.4 米,第二连杆 L₂=0.3 米。q₁ 是肩关节相对于水平线的角度,q₂ 是肘关节相对于第一连杆的角度,因此第二连杆的绝对方向是 q₁+q₂。逆时针为正。三角函数计算和求导采用弧度,表格为便于阅读使用度。

为确定重量作用的位置,将两根连杆的投影相加。末端点质量的位置为:

x = L₁ cos(q₁) + L₂ cos(q₁ + q₂) y = L₁ sin(q₁) + L₂ sin(q₁ + q₂)

两个角度均为零时,机械臂水平,x=0.7 米、y=0。重量相对肩关节的力臂为 0.7 米,相对肘关节为 0.3 米。因此执行器需要分别提供 19.62×0.7=13.734 牛顿·米和 19.62×0.3=5.886 牛顿·米来平衡它。两个力矩不是简单地分摊重量:每个关节都要平衡作用在其下游连杆上的所有力的力矩。

从微小运动到力矩

力臂计算在这里很直接。为推广到不完全竖直的力,引入雅可比矩阵 J:它描述角度的微小变化如何产生末端的微小位移。每一列对应只移动一个关节时的结果。将 x、y 分别对 q₁、q₂ 求导,得到:

J = [ −L₁ sin(q₁) − L₂ sin(q₁+q₂) −L₂ sin(q₁+q₂) ] [ L₁ cos(q₁) + L₂ cos(q₁+q₂) L₂ cos(q₁+q₂) ] δp = J δq

δq 包含两个以弧度表示的角度变化,δp 包含两个以米表示的位移,因此 J 的系数单位为米/弧度。例如在水平姿态下,肩关节微小转动使末端上升约 0.7 倍角度对应的距离;肘关节转动相同角度,则上升约 0.3 倍。“微小”很重要:这是局部关系,不能直接用于计算六十度这样的有限旋转。

接着问:机器人施加支撑力 F 时,对应哪些关节力矩?对虚位移,即假想的无穷小运动,末端做功为 Fᵀδp,关节做功为 τᵀδq。符号 ᵀ 表示转置,这里用于把各分量乘积相加。在无损耗理想模型中,两者相等。代入 δp=Jδq,并要求对任意 δq 都成立,可得:

τᵀδq = FᵀJδq τ = JᵀF F = [0, mg]ᵀ

这里 F 是平衡重力的向上支撑力,不是向下的重力本身;混用二者会改变符号。每个关节力矩把力的分量与相应可能位移组合起来。对竖直力,它恰好恢复水平力臂的结果。Lynch 与 Park 在 Modern Robotics 第 5.2 节解释了通用关系;本文推导及后续数值只针对已声明的平面模型。

机械臂还必须支撑自身

最初计算忽略了连杆质量。现在加入质量 m₁=1.5 千克的均匀第一连杆,以及 m₂=1 千克的均匀第二连杆。均匀表示各自重心位于长度中点。对肘关节,第二连杆重量的力臂为 L₂ cos(q₁+q₂)/2;对肩关节,两根连杆都有贡献。用 G 表示仅支撑机械臂自身所需的力矩:

G₁ = g[m₁(L₁/2)cos(q₁) + m₂(L₁ cos(q₁) + (L₂/2)cos(q₁+q₂))] G₂ = g m₂(L₂/2)cos(q₁+q₂) τ_total = G + Jᵀ[0, mg]ᵀ

水平姿态下,G₁=8.3385 牛顿·米,G₂=1.4715 牛顿·米。加入载荷后得到 22.0725 和 7.3575 牛顿·米。这一差别不可忽视:只看工件产生的 13.734 牛顿·米,会低估肩关节需求。这里是关节输出端力矩,不自动等于电机轴力矩,因为减速器会改变传动比、效率和摩擦。本文没有建模传动装置或制动器。

一种姿态减轻肩部负担,却未减轻肘部负担

令 q₁=60°、q₂=−60°。第一连杆抬起,第二连杆因为角度之和为零而保持水平。末端变为 x=0.5 米、y≈0.34641 米。肩关节的水平力臂缩短:载荷贡献降至 9.81 牛顿·米,连杆贡献降至 4.905 牛顿·米,总计 14.715 牛顿·米。肘关节仍面对水平的第二连杆,因此总力矩依然为 7.3575 牛顿·米。

q₁, q₂ (°)x, y (m)肩部总力矩 (N m)肘部总力矩 (N m)
0, 00.7, 022.07257.3575
60, −600.5, 0.3464114.7157.3575
90, 00, 0.700
0, 900.4, 0.314.7150
73.739795, −900.4, 0.311.18347.0632

第三行是有用的极限情况:两根连杆竖直,重量作用线穿过关节轴。理想重力矩为零,但结构仍传递力。这不意味着允许无限载荷;材料强度、轴承、失稳、偏离竖直以及动力学均不在此计算内。JSON 中零可能因余弦舍入显示为 10⁻¹⁵ 量级的数,并非实测物理力矩。

到达同一点,负担分配仍不同

最后两行都到达 (0.4, 0.3) 米,但肘部位置不同。单独载荷对肩关节的贡献相同,均为 7.848 牛顿·米,因为它的水平力臂没有改变。但连杆质量分布不同,G₁ 随之改变。肩部总力矩从 14.715 降至 11.1834 牛顿·米,肘部则从零升至 7.0632 牛顿·米。我们重新分配了负担,而不是让机器人在所有方面都变得更优。

这个比较只约束末端位置。两种构型的第二连杆方向不同;若任务还要求相同工具朝向,双关节机械臂不一定能满足新增约束。障碍物和关节限位也可能排除某个解。因此,力矩准则必须纳入完整规划问题,而不能作为孤立捷径。

把力矩约束换算为载荷上界

仅为本例,假设肩关节对称力矩限值为 18 牛顿·米,肘关节为 8 牛顿·米。这不是商业机器人的规格。水平姿态托住 2 千克时超过第一个限值,而 (60°, −60°) 在本静态模型中满足二者。计算最大质量之前,必须先扣除支撑机械臂自身所需的力矩。

a₁ = L₁ cos(q₁) + L₂ cos(q₁+q₂) a₂ = L₂ cos(q₁+q₂) |Gᵢ + mg aᵢ| ≤ τ_lim,i m_max = minᵢ [(τ_lim,i − Gᵢ)/(g aᵢ)] (aᵢ > 0, Gᵢ ≥ 0)

aᵢ 是载荷相对关节 i 的水平力臂,单位米。最后一行适用于这里两个力臂为正、重力贡献同向的案例;其他姿态必须解绝对值不等式,不能盲目除以负数或零。水平时,肩部允许约 1.407 千克,肘部约 2.218 千克,取较小值。弯曲姿态下肩部允许约 2.670 千克,但肘部仍为 2.218 千克,成为主导约束。

合成计算,载荷 2 千克且计入连杆质量。图中肘关节保持伸直(q₂=0),向竖直抬起时两个力矩均减小。虚线是假设限值,不是硬件规格。
合成计算,载荷 2 千克且计入连杆质量。图中肘关节保持伸直(q₂=0),向竖直抬起时两个力矩均减小。虚线是假设限值,不是硬件规格。

图探索的是与 (60°, −60°) 不同的一组姿态:固定 q₂=0,仅把肩部从 0° 改为 90°。读取某一点,就是比较所需力矩与对应关节的限值线。图并不说明该姿态无碰撞,也不说明到达它的运动满足限值。可行平衡是单个状态的条件,运动还需要检查路径和动力学。

通过能量进行独立验证

可以用另一条路径检查符号和系数。抬升质量会增加势能 U=mgy。把两根连杆重心处的势能与载荷势能相加,支撑力矩就是关节发生微小旋转时的势能变化率。用 ∂ 表示对单个变量求导:

U = g[m₁(L₁/2)sin(q₁) + m₂(L₁ sin(q₁)+(L₂/2)sin(q₁+q₂)) + m(L₁ sin(q₁)+L₂ sin(q₁+q₂))] τᵢ = ∂U/∂qᵢ ≈ [U(q+h eᵢ) − U(q−h eᵢ)]/(2h)

eᵢ 只改变第 i 个角度,h 为以弧度计的小步长。代码使用 h=10⁻⁶,把中心差分与解析力矩比较,要求误差小于 10⁻⁷ 牛顿·米。表中的五种姿态与扫描中的 91 种姿态均通过检查。还针对力分量 (3, 19.62) 牛顿、关节速度 (0.02, −0.03) 弧度/秒,检查功率相等。这不是硬件验证,而是对模型和实现一致性的数值检查。

用于真实机器人前还需补充什么

模型假设连杆刚性、载荷为点质量、关节理想且没有加速度。真实工具具有自身质量与重心,偏心工件还可能在法兰处施加额外力矩。运动中还要加入惯性、加速度、摩擦与接触力。峰值限制不等于长期工作周期内可持续的力矩;这里的抽象限值没有换算为温度或使用寿命,因此并未推导出经认证的载荷额定值。

还需区分能量概念:静止机器人关节速度为零,因此机械功率 τᵀq̇ 为零,但仍可能需要力矩。这不意味着电耗为零;计算电耗需要电机、传动、控制器与制动器的信息。同样,重力矩较小并不能证明与人协作安全,接触、速度、停止及完整应用评估是不同问题。

结论:几何与重量分布都重要

同一工件需要不同力矩,是因为它相对各关节的力臂变化,而且机器人还须支撑自己的连杆。本例中,缩短肩部力臂降低了肩部负担,却没有改变肘部需求;即使以另一姿态到达同一点,也会重新分配负担。因此,提出抓取或路径方案的 AI 系统应面对明确物理约束:几何上合理的方案可能超过可用力矩。这是可能的设计集成,并非 EL-AI 已实现的功能。企业已表达的工业与协作机器人兴趣仍属于待探索方向。

简短代码计算前三种姿态;完整包还包含同一点的两个解、质量上界、扫描与能量检查。在这个双关节模型中,每种姿态的运算量固定,n 个姿态的扫描成本为 O(n),保存结果需要 O(n) 内存。没有随机采样,因此不适用随机种子。以下来源支持通用的力与力矩关系;数据、假设及数值比较明确属于本文的教学示例。

参考资料与可复现代码

Kevin M. Lynch, Frank C. Park — Modern Robotics, 5.2: Statics of Open Chains (transcript).

from math import cos, radians
g, L1, L2, m1, m2, payload = 9.81, .4, .3, 1.5, 1., 2.
for angles in [(0, 0), (60, -60), (90, 0)]:
    q1, q2 = map(radians, angles)
    c1, c12 = cos(q1), cos(q1 + q2)
    own1 = g * (m1 * L1/2 * c1 + m2 * (L1*c1 + L2/2*c12))
    own2 = g * m2 * L2/2 * c12
    tau1 = own1 + payload*g*(L1*c1 + L2*c12)
    tau2 = own2 + payload*g*L2*c12
    print(angles, round(tau1, 4), round(tau2, 4))

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