跳转至

机器人动力学

概述

动力学(Dynamics)研究力/力矩与运动之间的关系。与 运动学 仅关注几何关系不同,动力学需要考虑质量、惯量、重力等物理量。动力学是机器人 控制 的基础。

动力学有两大核心问题:

问题 输入 输出 应用
正动力学 关节力矩 \(\tau\) 关节加速度 \(\ddot{q}\) 仿真
逆动力学 期望轨迹 \(q, \dot{q}, \ddot{q}\) 所需力矩 \(\tau\) 控制

1 运动方程标准形式

机器人的运动方程可以统一写成:

\[ M(q)\ddot{q} + C(q, \dot{q})\dot{q} + g(q) = \tau \]

各项含义:

符号 名称 维度 物理意义
\(M(q)\) 质量/惯量矩阵 \(n \times n\) 正定对称,表征惯性
\(C(q, \dot{q})\dot{q}\) 科氏力与离心力 \(n \times 1\) 速度耦合效应
\(g(q)\) 重力项 \(n \times 1\) 重力在关节空间的投影
\(\tau\) 关节力矩/力 \(n \times 1\) 驱动器输出

重要性质

  • \(M(q)\)对称正定 的:\(M = M^T\)\(x^T M x > 0, \; \forall x \neq 0\)
  • \(\dot{M} - 2C\)反对称 的(选取 Christoffel 符号定义的 \(C\) 时)
  • 该性质在自适应控制和被动性分析中至关重要

2 Newton-Euler 递推法

Newton-Euler 方法是计算逆动力学最高效的方法,计算复杂度为 \(O(n)\)

2.1 算法流程

graph TB
    subgraph "前向递推:从基座到末端"
        A["连杆 1"] -->|"ω₁, α₁, a₁"| B["连杆 2"]
        B -->|"ω₂, α₂, a₂"| C["连杆 3"]
        C -->|"..."| D["连杆 n"]
    end
    subgraph "后向递推:从末端到基座"
        D -->|"f_n, τ_n"| C
        C -->|"f₂, τ₂"| B
        B -->|"f₁, τ₁"| A
    end
    style A fill:#e8f4fd,stroke:#2196F3
    style D fill:#fff3e0,stroke:#FF9800

2.2 前向递推(速度与加速度传播)

从基座 (\(i=0\)) 开始,依次向末端 (\(i=n\)) 计算每个连杆的角速度、角加速度和线加速度。

旋转关节 \(i\)

角速度传播:

\[ \omega_i = \;^{i}R_{i-1} \, \omega_{i-1} + \dot{\theta}_i \, \hat{z}_i \]

角加速度传播:

\[ \dot{\omega}_i = \;^{i}R_{i-1} \, \dot{\omega}_{i-1} + \;^{i}R_{i-1} \, \omega_{i-1} \times \dot{\theta}_i \hat{z}_i + \ddot{\theta}_i \hat{z}_i \]

连杆原点线加速度:

\[ \dot{v}_i = \;^{i}R_{i-1} [\dot{\omega}_{i-1} \times p_{i-1,i} + \omega_{i-1} \times (\omega_{i-1} \times p_{i-1,i}) + \dot{v}_{i-1}] \]

质心线加速度:

\[ \dot{v}_{c_i} = \dot{\omega}_i \times s_i + \omega_i \times (\omega_i \times s_i) + \dot{v}_i \]

其中 \(s_i\) 是从连杆坐标系原点到质心的向量。

2.3 后向递推(力与力矩传播)

从末端 (\(i=n\)) 开始,依次向基座 (\(i=0\)) 计算每个关节所受的力和力矩。

作用在连杆 \(i\) 上的净力(Newton 方程):

\[ F_i = m_i \dot{v}_{c_i} \]

作用在连杆 \(i\) 上的净力矩(Euler 方程):

\[ N_i = I_i \dot{\omega}_i + \omega_i \times (I_i \omega_i) \]

向基座方向递推合力和合力矩:

\[ f_i = \;^{i}R_{i+1} \, f_{i+1} + F_i \]
\[ n_i = N_i + \;^{i}R_{i+1} \, n_{i+1} + s_i \times F_i + p_{i,i+1} \times (^{i}R_{i+1} \, f_{i+1}) \]

最终关节力矩:

\[ \tau_i = n_i^T \hat{z}_i \]

3 Lagrangian 方法

3.1 基本原理

Lagrangian 方法基于能量观点,对建模更直观,但计算复杂度为 \(O(n^3)\)\(O(n^4)\)

定义 Lagrangian 函数:

\[ L = K - P \]

其中 \(K\) 为系统总动能,\(P\) 为系统总势能。

Euler-Lagrange 方程:

\[ \frac{d}{dt}\frac{\partial L}{\partial \dot{q}_i} - \frac{\partial L}{\partial q_i} = \tau_i, \quad i = 1, 2, \ldots, n \]

3.2 动能与势能

连杆 \(i\) 的动能:

\[ K_i = \frac{1}{2} m_i v_{c_i}^T v_{c_i} + \frac{1}{2} \omega_i^T I_i \omega_i \]

系统总动能可以写成二次型:

\[ K = \frac{1}{2} \dot{q}^T M(q) \dot{q} \]

其中 \(M(q)\) 就是质量矩阵,其元素为:

\[ M_{ij}(q) = \sum_{k=\max(i,j)}^{n} \left[ m_k \left(\frac{\partial v_{c_k}}{\partial \dot{q}_i}\right)^T \frac{\partial v_{c_k}}{\partial \dot{q}_j} + \left(\frac{\partial \omega_k}{\partial \dot{q}_i}\right)^T I_k \frac{\partial \omega_k}{\partial \dot{q}_j} \right] \]

连杆 \(i\) 的势能:

\[ P_i = m_i g^T p_{c_i} \]

系统总势能:

\[ P = \sum_{i=1}^{n} m_i g^T p_{c_i} \]

3.3 推导运动方程各项

由 Euler-Lagrange 方程展开可得:

\[ \tau_i = \sum_{j=1}^{n} M_{ij}(q) \ddot{q}_j + \sum_{j=1}^{n} \sum_{k=1}^{n} c_{ijk} \dot{q}_j \dot{q}_k + g_i(q) \]

其中 Christoffel 符号:

\[ c_{ijk} = \frac{1}{2} \left( \frac{\partial M_{ij}}{\partial q_k} + \frac{\partial M_{ik}}{\partial q_j} - \frac{\partial M_{jk}}{\partial q_i} \right) \]

4.1 系统描述

  • 连杆 1:质量 \(m_1\),长度 \(l_1\),质心在 \(l_{c1}\),惯量 \(I_1\)
  • 连杆 2:质量 \(m_2\),长度 \(l_2\),质心在 \(l_{c2}\),惯量 \(I_2\)
  • 重力沿 \(-y\) 方向

4.2 位置与速度

连杆 1 质心位置:

\[ x_{c1} = l_{c1} \cos\theta_1, \quad y_{c1} = l_{c1} \sin\theta_1 \]

连杆 2 质心位置:

\[ x_{c2} = l_1 \cos\theta_1 + l_{c2} \cos(\theta_1 + \theta_2) \]
\[ y_{c2} = l_1 \sin\theta_1 + l_{c2} \sin(\theta_1 + \theta_2) \]

4.3 动能

\[ K_1 = \frac{1}{2}(m_1 l_{c1}^2 + I_1)\dot{\theta}_1^2 \]
\[ K_2 = \frac{1}{2}m_2\left[l_1^2 \dot{\theta}_1^2 + l_{c2}^2(\dot{\theta}_1 + \dot{\theta}_2)^2 + 2l_1 l_{c2} \cos\theta_2 \, \dot{\theta}_1(\dot{\theta}_1 + \dot{\theta}_2)\right] + \frac{1}{2}I_2(\dot{\theta}_1 + \dot{\theta}_2)^2 \]

4.4 势能

\[ P = m_1 g l_{c1} \sin\theta_1 + m_2 g [l_1 \sin\theta_1 + l_{c2} \sin(\theta_1 + \theta_2)] \]

4.5 质量矩阵

\[ M(q) = \begin{bmatrix} m_1 l_{c1}^2 + m_2(l_1^2 + l_{c2}^2 + 2l_1 l_{c2}\cos\theta_2) + I_1 + I_2 & m_2(l_{c2}^2 + l_1 l_{c2}\cos\theta_2) + I_2 \\ m_2(l_{c2}^2 + l_1 l_{c2}\cos\theta_2) + I_2 & m_2 l_{c2}^2 + I_2 \end{bmatrix} \]

4.6 科氏力与离心力矩阵

\(h = m_2 l_1 l_{c2} \sin\theta_2\),则:

\[ C(q, \dot{q}) = \begin{bmatrix} -h\dot{\theta}_2 & -h(\dot{\theta}_1 + \dot{\theta}_2) \\ h\dot{\theta}_1 & 0 \end{bmatrix} \]

4.7 重力项

\[ g(q) = \begin{bmatrix} (m_1 l_{c1} + m_2 l_1)g\cos\theta_1 + m_2 l_{c2} g \cos(\theta_1 + \theta_2) \\ m_2 l_{c2} g \cos(\theta_1 + \theta_2) \end{bmatrix} \]

4.8 完整运动方程

\[ \begin{bmatrix} \tau_1 \\ \tau_2 \end{bmatrix} = M(q)\begin{bmatrix} \ddot{\theta}_1 \\ \ddot{\theta}_2 \end{bmatrix} + C(q, \dot{q})\begin{bmatrix} \dot{\theta}_1 \\ \dot{\theta}_2 \end{bmatrix} + g(q) \]

5 动力学性质与应用

5.1 关键性质

性质 1:\(M(q)\) 对称正定

保证了系统动能总是正的,也保证了运动方程的解存在且唯一。

性质 2:\(\dot{M} - 2C\) 反对称(Christoffel 定义下)

\[ x^T(\dot{M} - 2C)x = 0, \quad \forall x \in \mathbb{R}^n \]

该性质意味着系统的被动性(passivity),在自适应控制中起关键作用。

性质 3:线性参数化

运动方程可以写成:

\[ M(q)\ddot{q} + C(q, \dot{q})\dot{q} + g(q) = Y(q, \dot{q}, \ddot{q}) \, \pi \]

其中 \(Y\) 是回归矩阵,\(\pi\) 是动力学参数向量。这一性质是自适应控制的基础。

5.2 正动力学求解

正动力学用于仿真,给定 \(\tau\),求 \(\ddot{q}\)

\[ \ddot{q} = M(q)^{-1} [\tau - C(q, \dot{q})\dot{q} - g(q)] \]

结合数值积分(如 Runge-Kutta)即可仿真机器人运动。

5.3 逆动力学求解

逆动力学用于控制,给定期望轨迹 \(q_d(t)\),计算前馈力矩:

\[ \tau_{\text{ff}} = M(q_d)\ddot{q}_d + C(q_d, \dot{q}_d)\dot{q}_d + g(q_d) \]

6 计算效率比较

方法 复杂度 适用场景
Newton-Euler 递推 \(O(n)\) 实时逆动力学计算、控制
Lagrangian \(O(n^3) \sim O(n^4)\) 推导符号表达式、理论分析
Articulated-Body Algorithm \(O(n)\) 正动力学仿真
Composite-Rigid-Body \(O(n^2)\) 计算 \(M(q)\)(配合 \(O(n)\) 逆动力学)

7 扩展话题

7.1 接触动力学

当机器人与环境发生接触时,需要引入接触力约束:

\[ M(q)\ddot{q} + C(q,\dot{q})\dot{q} + g(q) = \tau + J_c^T F_c \]

其中 \(J_c\) 为接触雅可比,\(F_c\) 为接触力。接触力需满足摩擦锥约束等。

7.2 柔性关节动力学

当关节存在弹性(如谐波减速器)时,需要扩展模型:

\[ M(q)\ddot{q} + C\dot{q} + g = K(\theta_m - q) \]
\[ B\ddot{\theta}_m + K(\theta_m - q) = \tau_m \]

其中 \(K\) 为关节刚度矩阵,\(B\) 为电机惯量,\(\theta_m\) 为电机侧角度。

7.3 常用仿真工具

  • MuJoCo:高效的接触动力学仿真器,广泛用于机器人学习
  • PyBullet:开源物理引擎,Python 接口
  • Drake:MIT 开发,支持多体动力学与优化控制
  • Pinocchio:高效的刚体动力学库,支持解析导数

参考文献

  1. Featherstone, R. (2008). Rigid Body Dynamics Algorithms. Springer.
  2. Siciliano, B. et al. (2009). Robotics: Modelling, Planning and Control. Springer.
  3. Craig, J. J. (2005). Introduction to Robotics: Mechanics and Control. Pearson.
  4. Spong, M. W. et al. (2006). Robot Modeling and Control. Wiley.

评论 #