image.png|450
好久没有更新了,今天开个新坑,机器人动力学

1. Introduction

1.1 Dynamics Algorithms

刚体系统的动力学由其运动方程描述,该方程规定了作用在系统上的力与其产生的加速度之间的关系。我们将主要关注两种特定计算的算法:

正向动力学:计算给定刚体系统在给定外力作用下的加速度响应;
逆向动力学:计算必须施加于给定刚体系统以产生特定加速度响应的作用力。

正向动力学主要用于仿真。逆向动力学有多种用途,例如:运动控制系统、轨迹规划、机械设计,以及作为正向动力学计算的一个组成部分。在第9章中,我们将讨论第三种计算类型,称为混合动力学,其中给定部分加速度和力变量,任务是计算其余部分。

Equation of motion for a rigid-body system:

$$ \boldsymbol{\tau} = \boldsymbol{H}(\boldsymbol{q}) \ddot{\boldsymbol{q}} + \boldsymbol{C}(\boldsymbol{q}, \dot{\boldsymbol{q}}) $$

它本质上就是牛顿第二定律(F=ma)在复杂多体系统(如机器人手臂、无人机)中的高级扩展形式。这个方程描述了力(τ)如何导致运动(q̈)。你可以把它想象成机器人领域的 ​​“F = ma”​

需要注意的是,

通过建立抽象的数学模型,我们可以编写一套通用的、强大的计算机代码,用它来计算一整大类物理系统的动力学问题,而不是为每个具体的机器人或机构都重新写一遍代码。​

  1. 目标​:我们想用计算机模拟或控制各种机器(机器人、机械等)的物理运动。
  2. 方法​:不为每个机器都重写代码,而是追求编写通用代码
  3. 实现途径​:
    • 第一步:抽象建模。将千差万别的物理机器,根据其连接结构抽象成两大类:​运动树闭环系统
    • 第二步:分类开发算法。针对每一类系统,去开发解决不同问题(如FD/ID)的算法。
  4. 最终成果​:得到一个算法工具箱。当你需要分析一个新机器时,你只需要:
    • a) 判断它属于哪一类(树 or 闭环)。
    • b) 从工具箱里挑选适合该类别的、功能正确的算法(FD or ID)。
    • c) 将你这个机器的具体参数(质量、长度等,即 model)输入到算法中,即可得到计算结果。

简而言之,这段话描述了一种高效、系统化的工程研究方法:通过分类和抽象,将复杂的物理问题转化为可管理的计算机算法问题,从而实现最大程度的代码复用和计算效率。​​ 这本书的主要内容,就是详细介绍这些针对不同类别的、执行不同计算(FD/ID)的算法是如何实现的。

1.2 Spatial Vectors

空间向量 (Spatial Vectors)​。它的目的是简化描述和计算

一个刚体在三维空间中有 6 个运动自由度​:这很好理解,它可以同时在 3 个方向上移动​(前后、左右、上下)和绕 3 个轴旋转​(俯仰、偏航、翻滚)。

但我们通常用 3D 向量来表达它的动力学​:这意味着我们需要两个独立的方程来描述一个刚体的完整运动:

image.png
公式的含义如下:

image.png|625

传统方法的缺点​:你必须同时处理两个方程和两种不同类型的物理量(力和力矩、线加速度和角加速度),这使得公式推导和计算机编程都变得复杂和冗长。

基于空间向量的解决方案:

​==什么是空间向量?​==它是一个 ​6 维(6D)向量,巧妙地将描述刚体运动的线性(移动)和角度(旋转)分量“打包”结合在一起。

​空间加速度 (Spatial Acceleration)​​ = 线加速度 (a) + 角加速度 (ω̇)

​空间力 (Spatial Force)​​ = 力 (f) + 力矩 (n)

... 同样还有空间速度、动量等。

==统一的空间运动方程:==

image.png

这个方程在形式上和 f = m a 非常相似,但它完整地描述了刚体的所有 6 个自由度的运动。我们来解析它的各个部分:

f: ​空间力 。一个6D向量,包含了作用在刚体上的所有力和力矩信息。
I: ​空间惯性张量 。一个6x6的矩阵,它同时包含了刚体的质量 (m)、质心位置和3D惯性张量 (I) 的所有信息。它完全定义了刚体本身的惯性属性。
a: ​空间加速度 。一个6D向量,包含了质心的线加速度和刚体的角加速度。
v: ​空间速度。一个6D向量,包含了刚体的线速度和角速度。
v ×* I v: 这是空间向量代数中的一种叉乘运算。它代表了离心力和哥氏力效应。在传统的3D方程里,这部分是 ω × I ω;在空间表示中,它被推广并包含了更全面的速度耦合效应。(×* 是一个符号,表示空间向量的叉乘)

空间向量表示法(Spatial Notation)​​ 在刚体动力学中的一个巨大优势:​它极大地简化了物理量的表达和运算

例如:合并两个刚体,​将两个刚体连接在一起,形成一个新的复合刚体

如果使用传统的 3 D 矢量方法,是非常复杂的。需要计算新质心位置,新的转动惯量等,这些代数运算非常大。

在空间表示法中,每个刚体的惯性被整合为一个统一的数学对象——空间惯性张量(Spatial Inertia Tensor)​,它是一个 6x6 的矩阵,用 ​ I 表示。这个矩阵已经包含了质量、质心位置和转动惯量的所有信息。

当两个刚体合并时,​新刚体的总空间惯性张量就是两者惯性张量之和​:

image.png|235

这个公式的简洁程度令人惊叹,它直接取代了传统方法中所有复杂的计算步骤。

空间向量不仅是一种数学工具,更是一种编程范式。它通过“数据类型抽象”和“专用函数库”,让程序员可以用非常简洁、直观的语法来表达复杂的物理运算,而无需牺牲任何运行效率。​

在传统的3D向量方法中,要实现一个完整的刚体动力学方程是非常复杂且难以调试。
使用空间向量方法非常简单清晰。
最终结果​:程序员可以用一行极其直观的代码:

f = I * a + v.cross(I * v);

总而言之,空间向量不仅是一种优雅的数学理论,更是一种强大的工程实践工具。它允许工程师和研究人员用表达力极强的代码来实现复杂的物理仿真,同时保证了专业级的运行性能,完美地平衡了开发效率与执行效率。​

1.3 Units and Notation

数学符号与排版 (Mathematical Notation & Typography)

这是说明中最详细的部分,遵循了国际标准(ISO),旨在通过字体和字型来区分不同含义的符号:

运算符与数组 (Operators & Arrays)

坐标系与空间向量 (Coordinate Systems & Spatial Vectors)

这是理解本书动力学内容的关键约定:

转载请注明出处