[机械臂动力学] 牛顿-欧拉递推动力学方程——力和力矩的内推法

写在前面

借鉴Craig 的《机器人学导论》第六章(动力学)牛顿-欧拉(Newton-Euler)内推法

本文主要是为了梳理一下那个又长角标又多的内推公式到底在做什么


核心思想:供需平衡

  1. 显而易见的是,公式都是等式;
  2. 我们引入了旋转系(本体系),这让我们可以脱离高中"非稳态下就不能受力平衡的思想限制",我们可以用虚拟力来让物体受力平衡;
  3. 在力矩等式中,本质上就是将外力/力矩、虚拟力、保守力等施加在同一物体质点上的力/力矩写到同一式子里,且左右天然相等(供需平衡,合外力/力矩和产生的运动效果等价,这里的运动效果可以用虚拟力表示)

连杆 i i i 的驱动端(关节 i i i),需要提供的力矩( i n i ^in_i ini)必须足够满足以下三部分的输出:

  1. 下一级连杆索要的力矩: 连杆 i + 1 i+1 i+1 对连杆 i i i 施加的反作用力矩(或者说你需要传导给下一级的力矩)。
  2. 移动自身质量需要的力矩(惯性力矩): 让你这根棍子自己转动起来需要的净力矩。
  3. 对抗力的力矩(力臂效应): 这根棍子上受到的各种线性力(比如下一级传回来的反作用力、自身的惯性力),因为没有作用在关节轴心上,会产生额外的扭转效应。

力矩平衡方程(针对关节 i i i 取矩)就是说:
左端输入的力矩 + 所有力对左端产生的力矩 = 改变角动量所需的力矩 (即 N i ) \text{左端输入的力矩} + \text{所有力对左端产生的力矩} = \text{改变角动量所需的力矩 (即 } \mathbf{N}_i \text{)} 左端输入的力矩+所有力对左端产生的力矩=改变角动量所需的力矩 (即 Ni)

Craig 的公式只是对上述等式进行了移项:
n i = 下一级传回的力矩 + 惯性力矩 + 惯性力造成的杠杆力矩 + 下一级力造成的杠杆力矩 \mathbf{n}_i = \text{下一级传回的力矩} + \text{惯性力矩} + \text{惯性力造成的杠杆力矩} + \text{下一级力造成的杠杆力矩} ni=下一级传回的力矩+惯性力矩+惯性力造成的杠杆力矩+下一级力造成的杠杆力矩


逐项拆解方程

Craig 书中的向内递归(Backward Recursion)力矩方程(6.42)如下(这里省略坐标系左上标,假设都在坐标系 { i } \{i\} {i} 下):
n i = N i + i + 1 i R ⋅ n i + 1 + P C i × F i + P i + 1 × ( i + 1 i R ⋅ f i + 1 ) \mathbf{n}i = \mathbf{N}i + ^{i}{i+1}R \cdot \mathbf{n}{i+1} + \mathbf{P}{C_i} \times \mathbf{F}i + \mathbf{P}{i+1} \times (^{i}{i+1}R \cdot \mathbf{f}_{i+1}) ni=Ni+i+1iR⋅ni+1+PCi×Fi+Pi+1×(i+1iR⋅fi+1)

A. 左边项: n i \mathbf{n}_i ni (我们需要求的)
  • 含义 :这是连杆 i − 1 i-1 i−1 施加在连杆 i i i 上的总力矩,也就是关节电机 i i i对连杆 i i i产生的力矩
  • 物理意义 :这是关节 i i i 的电机需要提供的总负载(当然最后还得投影到关节轴 Z ^ i \hat{Z}_i Z^i 上才是电机扭矩 τ \tau τ)
B. 右边第一项: N i \mathbf{N}_i Ni (自身旋转的成本)
  • 公式 : N i = I C i ω ˙ i + ω i × ( I C i ω i ) \mathbf{N}i = \mathbf{I}{C_i} \dot{\omega}i + \omega_i \times (\mathbf{I}{C_i} \omega_i) Ni=ICiω˙i+ωi×(ICiωi)(6.30)
  • 含义 :这是欧拉方程 的核心。它是让连杆 i i i 这个刚体产生角加速度( ω ˙ \dot{\omega} ω˙)以及维持旋转状态(陀螺效应)所必须消耗的净力矩,这是一个效果力,不是一个真实的力
  • 注意 :这个力矩是作用在质心 C i C_i Ci上的。
C. 右边第二项: i + 1 i R ⋅ n i + 1 ^{i}{i+1}R \cdot \mathbf{n}{i+1} i+1iR⋅ni+1 (传递给下一级的)
  • 含义 :这是连杆 i + 1 i+1 i+1作用给连杆 i i i的力矩,处理的是下一级的姿态旋转(包括转动惯量和陀螺效应)对关节造成的直接扭转负担
  • 为什么有 R R R?:因为 n i + 1 \mathbf{n}_{i+1} ni+1 原本是在坐标系 { i + 1 } \{i+1\} {i+1} 里描述的,我们现在在计算坐标系 { i } \{i\} {i} 的平衡,所以必须用旋转矩阵把它变换过来
D. 右边第三项: P C i × F i \mathbf{P}_{C_i} \times \mathbf{F}_i PCi×Fi (惯性力的力臂效应)
  • F i \mathbf{F}_i Fi 是牛顿方程算出来的惯性力 ( F = m a F=ma F=ma)。它是一个"虚拟力"(达朗贝尔原理),作用在质心 C i C_i Ci 上
  • P C i \mathbf{P}_{C_i} PCi 是从关节 i i i 原点指向质心 C i C_i Ci 的位置矢量
  • 物理意义 :虽然惯性力 F i \mathbf{F}_i Fi 是平移力,但因为它不过关节轴心(原点),就像你推门没推在门轴上一样,就会产生一个力矩,也就是力 × \times × 力臂
  • 连杆 i i i 自身的质心平移(在做加速运动时产生的惯性力 F i \mathbf{F}_i Fi)乘上 力臂给连杆 i i i 的起始端 O i O_i Oi的力矩
  • 惯性张量的博客中,关于惯性积的讨论有涉及到这部分内容,即为什么L形连杆旋转时会感受到一端对另一端的牵扯
E. 右边第四项: P i + 1 × ( i + 1 i R ⋅ f i + 1 ) \mathbf{P}{i+1} \times (^{i}{i+1}R \cdot \mathbf{f}_{i+1}) Pi+1×(i+1iR⋅fi+1) (下一级反作用力的力臂效应)
  • 含义 :连杆 i + 1 i+1 i+1 对连杆 i i i 施加了一个反作用力 f i + 1 \mathbf{f}_{i+1} fi+1(注意这里其实是把力传导回来)
  • 位置 :这个力作用在连杆 i i i 的末端(即坐标系 { i + 1 } \{i+1\} {i+1} 的原点)
  • 力臂 : P i + 1 \mathbf{P}_{i+1} Pi+1 是从关节 i i i 原点指向关节 i + 1 i+1 i+1 原点的向量(即连杆长度向量)
  • 物理意义 :这一项处理的是下一级的质心平移(包括重力下落的趋势和挥舞时的甩动)对关节造成的杠杆负担;比如大臂不动的同时甩动小臂,这时大臂也能感受到一股"冲击"

区分 N N N 和 n n n:

  • 大写 :净力矩 (Net Torque),只与刚体自身的旋转状态 ( I , ω ˙ , ω I, \dot{\omega}, \omega I,ω˙,ω) 有关
  • 小写 :关节力矩(Inter-link Torque),是连杆之间传递的负载
相关推荐
九.九6 小时前
ops-transformer:AI 处理器上的高性能 Transformer 算子库
人工智能·深度学习·transformer
春日见6 小时前
拉取与合并:如何让个人分支既包含你昨天的修改,也包含 develop 最新更新
大数据·人工智能·深度学习·elasticsearch·搜索引擎
恋猫de小郭6 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
寻寻觅觅☆6 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
deephub6 小时前
Agent Lightning:微软开源的框架无关 Agent 训练方案,LangChain/AutoGen 都能用
人工智能·microsoft·langchain·大语言模型·agent·强化学习
偷吃的耗子7 小时前
【CNN算法理解】:三、AlexNet 训练模块(附代码)
深度学习·算法·cnn
大模型RAG和Agent技术实践7 小时前
从零构建本地AI合同审查系统:架构设计与流式交互实战(完整源代码)
人工智能·交互·智能合同审核
老邋遢7 小时前
第三章-AI知识扫盲看这一篇就够了
人工智能
互联网江湖7 小时前
Seedance2.0炸场:长短视频们“修坝”十年,不如AI放水一天?
人工智能
PythonPioneer7 小时前
在AI技术迅猛发展的今天,传统职业该如何“踏浪前行”?
人工智能