robot_control_tutorial

第3章:机器人运动学与动力学

3.1 引言

现代机器人系统,尤其是腿式机器人和人形机器人,其控制的核心挑战在于处理复杂的动力学约束。与传统的固定基座机械臂不同,这些系统的基座不受外部固定,而是通过与环境的接触来实现运动和平衡。本章将深入探讨浮动基座机器人的运动学与动力学建模,为后续的规划和控制算法奠定理论基础。

本章的学习目标包括:

从固定基座到浮动基座的转变带来了本质性的复杂度提升。固定基座机器人的运动完全由关节角度决定,而浮动基座机器人需要同时考虑基座的位姿和关节配置。这种耦合关系使得系统呈现出高度非线性和欠驱动特性,要求我们采用更加精细的建模和控制方法。

3.2 浮动基座动力学

3.2.1 浮动基座系统建模

浮动基座机器人的配置可以分解为两部分:基座的位姿和关节角度。设机器人具有 $n$ 个自由度的关节,则系统的总自由度为 $6 + n$。我们定义广义坐标为:

\[\mathbf{q} = \begin{bmatrix} \mathbf{p}_b \\ \boldsymbol{\phi}_b \\ \mathbf{q}_j \end{bmatrix} \in \mathbb{R}^{6+n}\]

其中 $\mathbf{p}_b \in \mathbb{R}^3$ 是基座位置,$\boldsymbol{\phi}_b \in \mathbb{R}^3$ 是基座姿态的最小表示(如欧拉角或轴角),$\mathbf{q}_j \in \mathbb{R}^n$ 是关节角度向量。

基座的运动更自然地在特殊欧几里得群 SE(3) 上描述。基座位姿可表示为:

\[\mathbf{T}_b = \begin{bmatrix} \mathbf{R}_b & \mathbf{p}_b \\ \mathbf{0} & 1 \end{bmatrix} \in \text{SE}(3)\]

广义速度定义为:

\[\mathbf{v} = \begin{bmatrix} \mathbf{v}_b \\ \boldsymbol{\omega}_b \\ \dot{\mathbf{q}}_j \end{bmatrix} \in \mathbb{R}^{6+n}\]

其中 $\mathbf{v}_b$ 和 $\boldsymbol{\omega}_b$ 分别是基座的线速度和角速度。注意广义速度的维数与广义坐标相同,但它们之间的关系是非线性的:

\[\dot{\mathbf{q}} = \mathbf{S}(\mathbf{q}) \mathbf{v}\]

其中 $\mathbf{S}(\mathbf{q})$ 是依赖于姿态参数化的变换矩阵。

     世界坐标系
         |
         v
    ┌─────────┐
    │  基座   │ <- 6 DOF (x,y,z,roll,pitch,yaw)
    └────┬────┘
         │
    ┌────┴────┐
    │  关节1  │ <- 关节自由度
    └────┬────┘
         │
        ...
         │
    ┌────┴────┐
    │ 末端链节│
    └─────────┘

3.2.2 质心动力学

浮动基座系统的质心动力学遵循牛顿-欧拉定律。系统总质量为 $m$,质心位置 $\mathbf{p}_{CoM}$ 的动力学方程为:

\[m \ddot{\mathbf{p}}_{CoM} = \sum_{i} \mathbf{f}_i + m\mathbf{g}\]

其中 $\mathbf{f}_i$ 是作用在接触点 $i$ 的外力,$\mathbf{g}$ 是重力加速度。

系统的角动量 $\mathbf{L}$ 相对于质心的变化率为:

\[\dot{\mathbf{L}} = \sum_{i} (\mathbf{p}_i - \mathbf{p}_{CoM}) \times \mathbf{f}_i\]

这两个方程构成了质心动力学的基础,在全身控制中起到关键约束作用。

零力矩点(ZMP) 是地面反力的等效作用点,其水平方向力矩为零:

\[\mathbf{p}_{ZMP} = \frac{\sum_i \mathbf{p}_i^{xy} f_i^z}{\sum_i f_i^z}\]

其中上标 $xy$ 表示水平分量,$z$ 表示垂直分量。ZMP必须位于支撑多边形内以保证静态稳定性。

质心投影(CMP) 定义为质心在地面的垂直投影点。动态行走中,CMP可以暂时离开支撑域,但需要通过角动量调节来恢复平衡。CMP与ZMP的关系为:

\[\mathbf{p}_{ZMP} = \mathbf{p}_{CMP} - \frac{z_{CoM}}{m g} \ddot{\mathbf{p}}_{CoM}^{xy}\]

这个关系表明,在动态运动中,ZMP偏离CMP的程度取决于质心的水平加速度。

3.2.3 欧拉-拉格朗日方程

浮动基座系统的拉格朗日量定义为动能减去势能:

\[\mathcal{L} = T - V = \frac{1}{2} \mathbf{v}^T \mathbf{M}(\mathbf{q}) \mathbf{v} - V(\mathbf{q})\]

其中 $\mathbf{M}(\mathbf{q}) \in \mathbb{R}^{(6+n) \times (6+n)}$ 是广义质量矩阵,具有以下分块结构:

\[\mathbf{M}(\mathbf{q}) = \begin{bmatrix} \mathbf{M}_{bb} & \mathbf{M}_{bj} \\ \mathbf{M}_{bj}^T & \mathbf{M}_{jj} \end{bmatrix}\]

应用欧拉-拉格朗日方程,得到系统动力学方程:

\[\mathbf{M}(\mathbf{q})\dot{\mathbf{v}} + \mathbf{C}(\mathbf{q}, \mathbf{v})\mathbf{v} + \mathbf{g}(\mathbf{q}) = \mathbf{S}^T \boldsymbol{\tau} + \mathbf{J}_c^T \mathbf{f}_c\]

其中:

质量矩阵 $\mathbf{M}(\mathbf{q})$ 具有以下重要性质:

  1. 对称正定性:$\mathbf{M} = \mathbf{M}^T > 0$
  2. 有界性:$\lambda_{min}\mathbf{I} \leq \mathbf{M} \leq \lambda_{max}\mathbf{I}$
  3. 能量守恒:$\dot{\mathbf{M}} - 2\mathbf{C}$ 是反对称矩阵

这些性质在控制器设计和稳定性分析中至关重要。

3.3 约束动力学与接触建模

3.3.1 约束类型与表达

机器人系统中的约束可以分为几类,每类都有其特定的数学表达和物理含义。

完整约束(Holonomic Constraints) 可以表示为配置空间中的代数方程:

\[\mathbf{h}(\mathbf{q}) = \mathbf{0}\]

例如,闭链机构中的环约束、两个链接之间的固定距离约束等。完整约束减少了系统的配置空间维数。

非完整约束(Nonholonomic Constraints) 涉及速度,不能积分为位置约束:

\[\mathbf{A}(\mathbf{q})\mathbf{v} = \mathbf{0}\]

典型例子是轮式机器人的无侧滑约束。非完整约束限制了瞬时运动方向,但不减少可达配置空间。

单边约束(Unilateral Constraints) 表示为不等式:

\[\mathbf{c}(\mathbf{q}) \geq \mathbf{0}\]

接触约束是最常见的单边约束:物体不能穿透地面,但可以离开地面。对于接触点 $i$,其高度约束为:

\[c_i(\mathbf{q}) = z_i(\mathbf{q}) - z_{ground} \geq 0\]

双边约束(Bilateral Constraints) 始终保持激活:

\[\mathbf{c}(\mathbf{q}) = \mathbf{0}\]

例如,机械臂末端固定在某个位置时的约束。

约束的速度级和加速度级表达通过微分得到:

\[\mathbf{J}_c \mathbf{v} + \dot{\mathbf{J}}_c \mathbf{v} = \mathbf{0}\]

其中约束雅可比矩阵定义为:

\[\mathbf{J}_c = \frac{\partial \mathbf{c}}{\partial \mathbf{q}}\]

3.3.2 接触动力学

刚体接触假设 是机器人动力学中的基本假设:

  1. 接触点不发生穿透:$c_i(\mathbf{q}) \geq 0$
  2. 碰撞瞬时完成,遵循动量守恒
  3. 接触力只能是推力:$f_{n,i} \geq 0$(法向力非负)

库仑摩擦模型 描述了接触点的摩擦特性。对于接触点 $i$,摩擦锥约束为:

\[\|\mathbf{f}_{t,i}\| \leq \mu_i f_{n,i}\]

其中 $\mathbf{f}{t,i}$ 是切向力,$f{n,i}$ 是法向力,$\mu_i$ 是摩擦系数。

在三维空间中,摩擦锥可以线性化为多面锥:

\[\mathbf{f}_i \in \mathcal{K}_i = \{\mathbf{f} : \mathbf{A}_i \mathbf{f} \leq \mathbf{0}\}\]

典型的4面锥近似使用4个摩擦边界:

      法向力 f_n
          ↑
          │
    ╱─────┼─────╲
   ╱      │      ╲   <- 摩擦锥
  ╱       │       ╲
 ╱   μf_n │ μf_n   ╲
╱─────────┴─────────╲
     切向力 f_t

接触力的互补性条件 是接触动力学的核心,表达了接触状态的离散性:

\[0 \leq c_i \perp f_{n,i} \geq 0\]

这意味着:

对于滑动摩擦,互补性条件扩展为:

\[\begin{cases} \|\mathbf{f}_{t,i}\| < \mu_i f_{n,i} &\Rightarrow \mathbf{v}_{t,i} = \mathbf{0} \text{ (粘滞)} \\ \|\mathbf{f}_{t,i}\| = \mu_i f_{n,i} &\Rightarrow \exists \lambda \geq 0, \mathbf{v}_{t,i} = -\lambda \mathbf{f}_{t,i} \text{ (滑动)} \end{cases}\]

3.3.3 约束力计算

拉格朗日乘子法 将约束力作为拉格朗日乘子引入动力学方程:

\[\mathbf{M}\dot{\mathbf{v}} + \mathbf{C}\mathbf{v} + \mathbf{g} = \mathbf{S}^T\boldsymbol{\tau} + \mathbf{J}_c^T \boldsymbol{\lambda}\]

配合加速度级约束:

\[\mathbf{J}_c \dot{\mathbf{v}} + \dot{\mathbf{J}}_c \mathbf{v} = \mathbf{0}\]

联立求解得到:

\[\begin{bmatrix} \mathbf{M} & -\mathbf{J}_c^T \\ \mathbf{J}_c & \mathbf{0} \end{bmatrix} \begin{bmatrix} \dot{\mathbf{v}} \\ \boldsymbol{\lambda} \end{bmatrix} = \begin{bmatrix} \mathbf{S}^T\boldsymbol{\tau} - \mathbf{C}\mathbf{v} - \mathbf{g} \\ -\dot{\mathbf{J}}_c \mathbf{v} \end{bmatrix}\]

这是一个混合线性互补问题(MLCP),可用Lemke算法或内点法求解。

投影动力学方法 将动力学投影到约束允许的子空间:

\[\mathbf{P} = \mathbf{I} - \mathbf{J}_c^T(\mathbf{J}_c\mathbf{M}^{-1}\mathbf{J}_c^T)^{-1}\mathbf{J}_c\mathbf{M}^{-1}\]

投影后的动力学为:

\[\mathbf{P}\mathbf{M}\dot{\mathbf{v}} = \mathbf{P}(\mathbf{S}^T\boldsymbol{\tau} - \mathbf{C}\mathbf{v} - \mathbf{g})\]

这种方法避免了显式计算约束力,适用于运动规划。

接触力优化分配 当系统过约束时(如多点接触),接触力不唯一。通常通过优化问题求解:

\[\begin{align} \min_{\mathbf{f}_c} \quad & \|\mathbf{f}_c\|^2_{\mathbf{W}} \\ \text{s.t.} \quad & \mathbf{M}\dot{\mathbf{v}} + \mathbf{C}\mathbf{v} + \mathbf{g} = \mathbf{S}^T\boldsymbol{\tau} + \mathbf{J}_c^T \mathbf{f}_c \\ & \mathbf{f}_i \in \mathcal{K}_i, \quad \forall i \in \text{接触点} \end{align}\]

其中 $\mathbf{W}$ 是权重矩阵,用于调节不同接触点的力分配偏好。这是一个二次规划(QP)问题,可实时求解。

3.4 递归动力学算法

递归算法利用树形结构的特性,将计算复杂度从 $O(n^3)$ 降至 $O(n)$,是实时控制的关键技术。

3.4.1 逆向动力学(ID)

递归牛顿-欧拉算法(RNEA) 是最经典的逆向动力学算法,分为三个阶段:

第一阶段:正向运动学递归(从基座到末端)

对于 i = 0 到 n-1:
    计算链接 i+1 的速度和加速度:
    v[i+1] = v[i] + ω[i] × r[i,i+1] + q̇[i+1]·z[i+1]
    ω[i+1] = ω[i] + q̇[i+1]·axis[i+1]
    a[i+1] = a[i] + α[i] × r[i,i+1] + ω[i] × (ω[i] × r[i,i+1]) + q̈[i+1]·z[i+1]
    α[i+1] = α[i] + q̈[i+1]·axis[i+1] + ω[i] × (q̇[i+1]·axis[i+1])

第二阶段:力/力矩计算(每个链接)

对于每个链接 i:
    F[i] = m[i]·(a[i] - g)  // 惯性力
    N[i] = I[i]·α[i] + ω[i] × (I[i]·ω[i])  // 惯性力矩

第三阶段:反向力递归(从末端到基座)

对于 i = n 到 1:
    f[i-1] = f[i] + F[i]  // 链接间传递的力
    n[i-1] = n[i] + N[i] + r[i-1,i] × f[i]  // 链接间传递的力矩
    τ[i] = n[i-1]ᵀ·axis[i]  // 关节力矩

RNEA算法的计算复杂度为 $O(n)$,适合实时控制。对于浮动基座系统,需要特殊处理基座的6个虚拟关节。

3.4.2 正向动力学(FD)

正向动力学求解加速度:给定 $\mathbf{q}$,$\mathbf{v}$,$\boldsymbol{\tau}$,求 $\dot{\mathbf{v}}$。

铰接体算法(ABA) 是Featherstone提出的高效算法,核心思想是利用铰接体惯量(articulated-body inertia)的递归关系:

\[\mathbf{I}_i^A = \mathbf{I}_i + \sum_{j \in children(i)} \mathbf{I}_j^{Ac}\]

其中 $\mathbf{I}_j^{Ac}$ 是子链接 $j$ 对父链接 $i$ 的等效惯量。

ABA算法步骤:

第一遍:计算偏置力和铰接体惯量(从末端到基座)

对于 i = n 到 1:
    计算铰接体惯量 I^A[i]
    计算偏置力 p[i] = v[i] × I^A[i]·v[i]
    传播到父节点

第二遍:计算加速度(从基座到末端)

对于 i = 1 到 n:
    计算关节加速度 q̈[i]
    计算链接加速度 a[i]
    传播到子节点

ABA的计算复杂度同样为 $O(n)$,但常数系数略大于RNEA。

复合刚体算法(CRBA) 用于计算质量矩阵 $\mathbf{M}(\mathbf{q})$:

\[\mathbf{M}_{ij} = \mathbf{z}_i^T \mathbf{I}_j^C \mathbf{z}_j\]

其中 $\mathbf{I}_j^C$ 是复合刚体惯量,包含了链接 $j$ 及其所有后代的惯量。CRBA的复杂度为 $O(n^2)$。

3.4.3 运动学计算

正向运动学的递归实现

对于串联机构,末端位姿通过连续的齐次变换计算:

\[\mathbf{T}_{0,n} = \mathbf{T}_{0,1}(\mathbf{q}_1) \mathbf{T}_{1,2}(\mathbf{q}_2) \cdots \mathbf{T}_{n-1,n}(\mathbf{q}_n)\]

递归实现:

T[0] = I  // 基座坐标系
对于 i = 1 到 n:
    T[i] = T[i-1] · T_local[i](q[i])

雅可比矩阵的高效计算

几何雅可比矩阵的第 $i$ 列对应关节 $i$ 的运动螺旋:

\[\mathbf{J}_i = \begin{cases} \begin{bmatrix} \mathbf{z}_i \\ \mathbf{0} \end{bmatrix} & \text{移动关节} \\ \begin{bmatrix} \mathbf{z}_i \times (\mathbf{p}_e - \mathbf{p}_i) \\ \mathbf{z}_i \end{bmatrix} & \text{转动关节} \end{cases}\]

其中 $\mathbf{z}_i$ 是关节 $i$ 的轴向,$\mathbf{p}_i$ 是关节位置,$\mathbf{p}_e$ 是末端位置。

递归计算避免了重复的矩阵乘法:

对于 i = 1 到 n:
    z[i] = R[i-1] · axis_local[i]  // 关节轴在世界坐标系
    p[i] = p[i-1] + R[i-1] · r_local[i]  // 关节位置
    J[:, i] = compute_column(z[i], p[i], p[n])

奇异性检测与处理

雅可比矩阵的奇异性通过条件数或最小奇异值检测:

\[\kappa(\mathbf{J}) = \frac{\sigma_{max}}{\sigma_{min}}\]

当 $\kappa > \kappa_{threshold}$(如1000)时,系统接近奇异配置。

奇异性处理策略:

  1. 阻尼最小二乘:$\mathbf{J}^+ = \mathbf{J}^T(\mathbf{J}\mathbf{J}^T + \lambda^2\mathbf{I})^{-1}$
  2. 奇异值截断:将小于阈值的奇异值设为零
  3. 零空间投影:利用冗余自由度避开奇异配置

对于浮动基座系统,扩展雅可比需要考虑基座运动:

\[\mathbf{J}_{ext} = \begin{bmatrix} \mathbf{J}_{base} & \mathbf{J}_{joint} \end{bmatrix}\]

其中 $\mathbf{J}_{base} \in \mathbb{R}^{6 \times 6}$ 通常是单位矩阵(在基座坐标系表达时)。

逆运动学的数值迭代

牛顿-拉夫逊法是求解逆运动学的标准方法。给定期望末端位姿 $\mathbf{x}_d$,迭代更新关节角度:

\[\Delta \mathbf{q} = \mathbf{J}^+(\mathbf{x}_d - \mathbf{x}(\mathbf{q}_k))\]

收敛条件通常设定为位置误差小于1mm,姿态误差小于0.1度。对于冗余机器人,可以在零空间中优化次要目标:

\[\Delta \mathbf{q} = \mathbf{J}^+\Delta \mathbf{x} + (\mathbf{I} - \mathbf{J}^+\mathbf{J})\mathbf{z}\]

其中 $\mathbf{z}$ 是零空间运动,可用于避障、避奇异或优化关节配置。

3.5 案例研究:四足机器人ANYmal的动力学建模

3.5.1 系统描述

ANYmal是ETH Zurich开发的四足机器人,代表了当前腿式机器人的先进水平。其机械结构和动力学特性为理解浮动基座系统提供了典型案例。

机械结构参数

坐标系定义

         前进方向 x
             ↑
             │
    ┌────────┼────────┐
    │  LF    │    RF  │  <- 左前/右前腿
    │        │        │
    │   基座 O        │  y ← 侧向
    │        │        │
    │  LH    │    RH  │  <- 左后/右后腿
    └────────┴────────┘
             z ⊗ 垂直向下

每条腿的运动链从基座到足端:

基座 → HAA关节 → 大腿 → HFE关节 → 小腿 → KFE关节 → 足端
      (横滚)        (俯仰)         (俯仰)

动力学参数识别: 系统的准确动力学模型需要识别以下参数:

参数识别通过最小二乘法,利用激励轨迹的实验数据:

\[\min_{\boldsymbol{\theta}} \sum_{t} \|\boldsymbol{\tau}_{measured}(t) - \boldsymbol{\tau}_{model}(t, \boldsymbol{\theta})\|^2\]

其中 $\boldsymbol{\theta}$ 是待识别的动力学参数向量。

3.5.2 动力学模型构建

广义坐标选择

ANYmal的广义坐标定义为: \(\mathbf{q} = [\mathbf{p}_b^T, \boldsymbol{\phi}_b^T, \mathbf{q}_{LF}^T, \mathbf{q}_{RF}^T, \mathbf{q}_{LH}^T, \mathbf{q}_{RH}^T]^T \in \mathbb{R}^{18}\)

其中每条腿的关节角度为: \(\mathbf{q}_{leg} = [q_{HAA}, q_{HFE}, q_{KFE}]^T\)

质量矩阵结构

由于四条腿的对称性,质量矩阵具有特殊的稀疏结构:

\[\mathbf{M} = \begin{bmatrix} \mathbf{M}_{bb} & \mathbf{M}_{b,LF} & \mathbf{M}_{b,RF} & \mathbf{M}_{b,LH} & \mathbf{M}_{b,RH} \\ \mathbf{M}_{b,LF}^T & \mathbf{M}_{LF} & \mathbf{0} & \mathbf{0} & \mathbf{0} \\ \mathbf{M}_{b,RF}^T & \mathbf{0} & \mathbf{M}_{RF} & \mathbf{0} & \mathbf{0} \\ \mathbf{M}_{b,LH}^T & \mathbf{0} & \mathbf{0} & \mathbf{M}_{LH} & \mathbf{0} \\ \mathbf{M}_{b,RH}^T & \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{M}_{RH} \end{bmatrix}\]

腿间的耦合仅通过基座产生,这大大简化了计算。每条腿的质量矩阵 $\mathbf{M}_{leg} \in \mathbb{R}^{3 \times 3}$ 可独立计算。

接触雅可比计算

每个足端的接触雅可比将足端速度映射到广义速度空间:

\[\mathbf{v}_{foot} = \mathbf{J}_{foot} \mathbf{v}\]

对于左前腿(LF),其雅可比矩阵为:

\[\mathbf{J}_{LF} = \begin{bmatrix} \mathbf{J}_{LF,base} & \mathbf{J}_{LF,leg} & \mathbf{0}_{3 \times 9} \end{bmatrix}\]

其中 $\mathbf{J}{LF,base} \in \mathbb{R}^{3 \times 6}$ 是基座运动对足端的影响,$\mathbf{J}{LF,leg} \in \mathbb{R}^{3 \times 3}$ 是腿部关节对足端的影响。

单腿逆运动学解析解

ANYmal的腿部结构允许解析求解逆运动学。给定足端在髋关节坐标系的位置 $\mathbf{p}_{foot}^{hip} = [x, y, z]^T$:

  1. HAA角度(髋关节横滚): \(q_{HAA} = \arctan2(y, -z)\)

  2. 腿在矢状面的投影长度: \(l_{xz} = \sqrt{x^2 + (z/\cos(q_{HAA}))^2} - l_{hip}\)

  3. KFE角度(膝关节)通过余弦定理: \(q_{KFE} = \pi - \arccos\left(\frac{l_{thigh}^2 + l_{shank}^2 - l_{xz}^2}{2 l_{thigh} l_{shank}}\right)\)

  4. HFE角度(髋关节俯仰): \(q_{HFE} = \arctan2(x, -z/\cos(q_{HAA})) - \arcsin\left(\frac{l_{shank}\sin(q_{KFE})}{l_{xz}}\right)\)

解析解的存在极大提高了运动规划和控制的效率。

3.5.3 仿真验证

动力学一致性测试

验证动力学模型的正确性通过能量守恒测试:

  1. 自由落体测试:机器人从高度 $h$ 自由落下,验证势能转换为动能: \(mgh = \frac{1}{2}\mathbf{v}^T\mathbf{M}\mathbf{v}\)

  2. 零重力漂浮测试:在零重力环境下,验证动量和角动量守恒: \(\frac{d}{dt}(m\mathbf{v}_{CoM}) = \mathbf{0}, \quad \frac{d}{dt}\mathbf{L} = \mathbf{0}\)

  3. 关节空间惯量测试:固定基座,摆动单腿,验证关节惯量的正确性。

接触力验证

静态平衡测试验证接触力计算:

  1. 将机器人置于水平地面
  2. 计算静态平衡时的接触力
  3. 验证力平衡:$\sum \mathbf{f}_i = m\mathbf{g}$
  4. 验证力矩平衡:$\sum (\mathbf{p}i - \mathbf{p}{CoM}) \times \mathbf{f}_i = \mathbf{0}$

计算性能基准

在标准硬件(Intel i7 @ 2.8GHz)上的计算时间:

这些性能指标确保了1 kHz的控制频率要求。

3.5.4 实际应用中的挑战

模型不确定性处理

实际系统存在多种不确定性来源:

  1. 负载变化:机器人可能携带不同的负载,改变系统惯量
  2. 关节柔性:实际驱动器存在柔性,引入额外的动力学
  3. 地面柔性:软地面的接触动力学与刚体假设不同
  4. 磨损和老化:机械磨损改变摩擦特性

鲁棒控制策略包括:

接触检测与切换

接触状态的可靠检测对于模式切换至关重要:

  1. 力传感器方法:直接测量接触力,但增加成本和复杂度
  2. 本体感知方法:通过关节力矩和运动学推断接触 \(\hat{\mathbf{f}}_{contact} = (\mathbf{J}^T)^+(\boldsymbol{\tau}_{measured} - \boldsymbol{\tau}_{model})\)
  3. 概率接触估计:使用贝叶斯滤波融合多种信息源

实时约束满足

硬实时要求下的优化策略:

  1. 热启动:使用上一时刻的解作为初值
  2. 早停策略:在时间约束内返回次优解
  3. 显式MPC:离线计算控制律查找表
  4. 分层优化:将问题分解为快速和慢速两层

驱动器饱和处理

实际驱动器有力矩和速度限制: \(|\tau_i| \leq \tau_{max}, \quad |\dot{q}_i| \leq \dot{q}_{max}\)

饱和处理策略:

  1. 优先级任务分配:保证关键任务(如平衡)优先
  2. 力矩重分配:将饱和关节的负载转移到其他关节
  3. 轨迹重规划:在线修改轨迹以满足驱动器约束

传感器噪声和延迟

实际传感器存在噪声和延迟,影响状态估计:

状态估计通常采用扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF),融合多传感器信息以提高精度和鲁棒性。

3.6 本章小结

本章深入探讨了机器人运动学与动力学的核心理论,为后续的规划和控制算法奠定了坚实基础。我们从浮动基座系统的特殊性出发,系统地构建了完整的动力学框架。

关键概念回顾

  1. 浮动基座动力学
    • 广义坐标包含基座位姿(6维)和关节角度(n维)
    • 欧拉-拉格朗日方程:$\mathbf{M}\dot{\mathbf{v}} + \mathbf{C}\mathbf{v} + \mathbf{g} = \mathbf{S}^T\boldsymbol{\tau} + \mathbf{J}_c^T\mathbf{f}_c$
    • 质心动力学提供全局约束:$m\ddot{\mathbf{p}}_{CoM} = \sum\mathbf{f}_i + m\mathbf{g}$
    • ZMP和CMP概念用于稳定性分析
  2. 约束动力学
    • 接触约束的互补性:$0 \leq c_i \perp f_{n,i} \geq 0$
    • 库仑摩擦锥:$|\mathbf{f}{t,i}| \leq \mu_i f{n,i}$
    • 约束力计算通过拉格朗日乘子法或投影方法
    • 过约束系统需要优化分配接触力
  3. 递归算法
    • RNEA实现 $O(n)$ 复杂度的逆向动力学
    • ABA实现 $O(n)$ 复杂度的正向动力学
    • 递归算法利用树形结构避免冗余计算
    • 雅可比矩阵的高效递归计算
  4. 实际应用考虑
    • 参数识别确保模型准确性
    • 奇异性检测和处理保证数值稳定
    • 实时性要求驱动算法优化
    • 不确定性和扰动需要鲁棒设计

核心公式汇总

概念 公式 说明
动力学方程 $\mathbf{M}\dot{\mathbf{v}} + \mathbf{C}\mathbf{v} + \mathbf{g} = \boldsymbol{\tau}_{gen}$ 广义形式
质心动力学 $m\ddot{\mathbf{p}}_{CoM} = \sum\mathbf{f}_i + m\mathbf{g}$ 牛顿定律
角动量变化 $\dot{\mathbf{L}} = \sum(\mathbf{p}i - \mathbf{p}{CoM}) \times \mathbf{f}_i$ 欧拉方程
摩擦锥约束 $|\mathbf{f}_t| \leq \mu f_n$ 库仑摩擦
互补性条件 $0 \leq c \perp f_n \geq 0$ 接触逻辑
雅可比关系 $\mathbf{v}_{end} = \mathbf{J}\mathbf{v}$ 速度映射

与后续章节的联系

掌握本章内容是理解现代机器人控制的关键。动力学模型不仅是仿真的基础,更是所有基于模型的规划和控制算法的核心。

3.7 常见陷阱与错误

在机器人动力学建模和实现中,即使经验丰富的工程师也容易犯一些常见错误。本节总结这些陷阱并提供调试建议。

1. 坐标系混淆

最常见的错误来源是坐标系定义不一致:

2. 姿态表示的奇异性

3. 数值积分累积误差

4. 接触力计算的数值问题

5. 摩擦锥线性化误差

6. 忽略关节限位和速度限制

7. 质量矩阵的错误计算

8. 时间延迟和因果性

9. 单位不一致

10. 碰撞和穿透处理

调试建议总结

  1. 分层测试:从单个关节到完整系统逐步验证
  2. 能量监控:持续检查系统能量守恒
  3. 极限测试:在边界条件下测试(零重力、大负载等)
  4. 对比验证:与解析解或商业软件对比
  5. 日志记录:保存详细的状态历史便于回溯

3.8 练习题

基础题(理解概念)

练习3.1 浮动基座与固定基座的本质区别
考虑一个3自由度的机械臂,分别计算其作为固定基座和浮动基座(如安装在卫星上)时的自由度、质量矩阵维度和动力学方程形式。讨论两种情况下的可控性差异。

提示 固定基座:3 DOF,$\mathbf{M} \in \mathbb{R}^{3 \times 3}$ 浮动基座:9 DOF(6+3),$\mathbf{M} \in \mathbb{R}^{9 \times 9}$ 考虑角动量守恒对运动的约束
参考答案 固定基座情况: - 自由度:3(仅关节角度) - 质量矩阵:$\mathbf{M} \in \mathbb{R}^{3 \times 3}$ - 动力学方程:$\mathbf{M}(\mathbf{q})\ddot{\mathbf{q}} + \mathbf{C}(\mathbf{q},\dot{\mathbf{q}})\dot{\mathbf{q}} + \mathbf{g}(\mathbf{q}) = \boldsymbol{\tau}$ - 可控性:完全可控,3个执行器控制3个自由度 浮动基座情况: - 自由度:9(6个基座 + 3个关节) - 质量矩阵:$\mathbf{M} \in \mathbb{R}^{9 \times 9}$,包含基座-关节耦合项 - 动力学方程:前6个方程无驱动项(基座),后3个有驱动(关节) - 可控性:欠驱动系统,3个执行器控制9个自由度 - 特殊约束:零重力下角动量守恒,限制可达空间 关键差异:浮动基座的关节运动会引起基座反向运动(动量守恒),使得末端定位更复杂。

练习3.2 ZMP与质心投影的关系
一个双足机器人质心高度 $h = 1.0$ m,质量 $m = 50$ kg,当前质心水平加速度 $\ddot{x}_{CoM} = 2.0$ m/s²。计算ZMP相对于质心投影(CMP)的偏移量。如果支撑多边形宽度为0.2 m,判断机器人是否稳定。

提示 使用公式:$x_{ZMP} = x_{CMP} - \frac{h}{g}\ddot{x}_{CoM}$ 重力加速度 $g = 9.8$ m/s²
参考答案 ZMP偏移计算: $$\Delta x = x_{ZMP} - x_{CMP} = -\frac{h}{g}\ddot{x}_{CoM} = -\frac{1.0}{9.8} \times 2.0 = -0.204 \text{ m}$$ ZMP在CMP后方0.204 m。 稳定性判断: - 支撑多边形宽度:0.2 m(即 ±0.1 m) - ZMP偏移:0.204 m > 0.1 m - 结论:不稳定,ZMP已超出支撑域 物理解释:质心向前加速需要ZMP向后移动以产生向前的地面反力。过大的加速度导致ZMP超出支撑域,机器人将向后倾倒。

练习3.3 摩擦锥约束的线性化
给定摩擦系数 $\mu = 0.5$,将三维摩擦锥约束 $|\mathbf{f}_t| \leq \mu f_n$ 线性化为4面锥。写出线性不等式约束 $\mathbf{A}\mathbf{f} \leq \mathbf{0}$ 的矩阵 $\mathbf{A}$。

提示 将圆锥用4个平面近似,考虑切向力的4个主方向
参考答案 设接触力 $\mathbf{f} = [f_x, f_y, f_z]^T$,其中 $f_z$ 是法向力(向上为正)。 4面锥的线性约束: $$\begin{align} f_x - \mu f_z &\leq 0 \\ -f_x - \mu f_z &\leq 0 \\ f_y - \mu f_z &\leq 0 \\ -f_y - \mu f_z &\leq 0 \\ -f_z &\leq 0 \quad \text{(法向力非负)} \end{align}$$ 矩阵形式 $\mathbf{A}\mathbf{f} \leq \mathbf{0}$: $$\mathbf{A} = \begin{bmatrix} 1 & 0 & -0.5 \\ -1 & 0 & -0.5 \\ 0 & 1 & -0.5 \\ 0 & -1 & -0.5 \\ 0 & 0 & -1 \end{bmatrix}$$ 这个线性化在对角方向(如 $f_x = f_y$)误差最大,保守度约为 $\sqrt{2}/2 \approx 29\%$。

挑战题(深入理解)

练习3.4 递归算法复杂度分析
证明RNEA算法的计算复杂度为 $O(n)$,其中 $n$ 是自由度数。提示:分析每个递归步骤的操作数,考虑向量叉乘(6次乘法)和矩阵向量乘法的开销。

提示 统计三个阶段的操作:正向运动学、力计算、反向递归 每个关节的计算量是常数
参考答案 RNEA算法复杂度分析: **正向递归**(每个关节): - 速度更新:2次叉乘 + 2次加法 = 12 + 6 = 18 ops - 加速度更新:3次叉乘 + 3次加法 = 18 + 9 = 27 ops - 小计:45 ops/关节 **力计算**(每个链接): - 惯性力:1次矩阵乘法 + 1次减法 = 9 + 3 = 12 ops - 惯性力矩:1次矩阵乘法 + 1次叉乘 = 9 + 6 = 15 ops - 小计:27 ops/链接 **反向递归**(每个关节): - 力传递:1次加法 = 3 ops - 力矩传递:1次加法 + 1次叉乘 = 3 + 6 = 9 ops - 关节力矩:1次点积 = 3 ops - 小计:15 ops/关节 总计:$(45 + 27 + 15) \times n = 87n$ ops 因此复杂度为 $O(n)$,与 $O(n^3)$ 的直接矩阵方法相比,在 $n > 6$ 时显著更快。

练习3.5 接触力优化的物理意义
多点接触时,为什么常用 $\min |\mathbf{f}|^2$ 作为目标函数?讨论其他可能的目标函数(如 $\min |\mathbf{f}|1$,$\min |\mathbf{f}|\infty$)的物理意义和计算特性。

提示 考虑能量最小化、力均匀分配、优化问题的凸性
参考答案 不同范数的物理意义和特性: **$\|\mathbf{f}\|^2$ (二次范数)**: - 物理意义:最小化接触力的"能量",趋向均匀分配 - 优点:严格凸,唯一解,QP问题易求解 - 缺点:可能所有接触点都有力(不稀疏) - 适用:需要平滑力分配的场景 **$\|\mathbf{f}\|_1$ (一范数)**: - 物理意义:最小化总接触力,促进稀疏解 - 优点:倾向使用最少接触点,模拟真实接触 - 缺点:非严格凸,可能多解,需要线性规划 - 适用:接触选择、抓取规划 **$\|\mathbf{f}\|_\infty$ (无穷范数)**: - 物理意义:最小化最大接触力,避免单点过载 - 优点:保护硬件,延长接触面寿命 - 缺点:非光滑,需要特殊优化方法 - 适用:脆弱接触面、力矩限制严格场景 **混合目标**: $$\min \alpha\|\mathbf{f}\|^2 + \beta\|\mathbf{f}\|_1 + \gamma\|\mathbf{f}_z - f_{nom}\|^2$$ 结合多种考虑:平滑性、稀疏性、期望载荷分配。

练习3.6 浮动基座系统的动量映射
推导浮动基座机器人的质心角动量 $\mathbf{L}$ 与广义速度 $\mathbf{v}$ 的关系:$\mathbf{L} = \mathbf{A}(\mathbf{q})\mathbf{v}$。说明质心角动量矩阵 $\mathbf{A}(\mathbf{q})$ 的结构和计算方法。

提示 角动量包含基座和关节运动的贡献 使用复合刚体的概念
参考答案 质心角动量的完整表达: $$\mathbf{L} = \sum_{i=1}^{n_{links}} \left[ \mathbf{I}_i^{CoM} \boldsymbol{\omega}_i + m_i (\mathbf{p}_i - \mathbf{p}_{CoM}) \times \mathbf{v}_i \right]$$ 其中每个链接的速度由广义速度决定: $$\begin{bmatrix} \mathbf{v}_i \\ \boldsymbol{\omega}_i \end{bmatrix} = \mathbf{J}_i(\mathbf{q}) \mathbf{v}$$ 代入得到线性关系: $$\mathbf{L} = \mathbf{A}(\mathbf{q})\mathbf{v}$$ 质心角动量矩阵的结构: $$\mathbf{A}(\mathbf{q}) = \begin{bmatrix} \mathbf{A}_{base} & \mathbf{A}_{joints} \end{bmatrix} \in \mathbb{R}^{3 \times (6+n)}$$ 计算方法: 1. 对每个链接 $i$: - 计算其雅可比 $\mathbf{J}_i$ - 计算惯量贡献:$\mathbf{I}_i^{CoM} \mathbf{J}_{\omega,i}$ - 计算位置贡献:$m_i [\mathbf{p}_i - \mathbf{p}_{CoM}]_\times \mathbf{J}_{v,i}$ 2. 累加所有链接的贡献 特殊性质: - 在零重力环境下,$\mathbf{L} = \mathbf{A}\mathbf{v} = const$ - 这提供了 $n-3$ 个非完整约束(假设初始角动量为零) - 限制了系统的可达工作空间

练习3.7 奇异配置的几何解释
对于平面3R机械臂(3个转动关节),描述所有可能的奇异配置,给出几何解释,并提出避免奇异的运动规划策略。

提示 奇异性发生在雅可比矩阵降秩时 考虑边界奇异和内部奇异
参考答案 平面3R机械臂的奇异配置: **1. 边界奇异(工作空间边界)**: - 完全伸展:三个链接共线,臂长最大 - 完全收缩:第二、三链接折回,臂长最小 - 几何解释:末端达到可达空间边界,失去某个方向的运动能力 **2. 内部奇异(肘部奇异)**: - 配置:第二、三关节轴线重合(链接2和3共线) - 几何解释:失去垂直于链接2-3方向的瞬时运动能力 - 数学表征:$\mathbf{J}$ 的第2、3列线性相关 **3. 腕部奇异**: - 配置:末端执行器轴与某个关节轴对齐 - 影响:失去某个姿态自由度 **奇异性的数学判定**: $$det(\mathbf{J}\mathbf{J}^T) = 0 \text{ 或 } \sigma_{min}(\mathbf{J}) < \epsilon$$ **避免策略**: 1. **路径规划层面**: - 使用奇异性地图,规划远离奇异区域的路径 - 采用冗余自由度(如7自由度臂)增加灵活性 2. **轨迹优化层面**: - 添加可操作度约束:$w(\mathbf{q}) = \sqrt{det(\mathbf{J}\mathbf{J}^T)} > w_{min}$ - 使用梯度:$\nabla_q w$ 引导远离奇异 3. **控制层面**: - 阻尼最小二乘:$\dot{\mathbf{q}} = \mathbf{J}^T(\mathbf{J}\mathbf{J}^T + \lambda^2\mathbf{I})^{-1}\dot{\mathbf{x}}$ - 动态调整阻尼:$\lambda = \lambda_0 e^{-w/w_0}$ 4. **任务设计**: - 避免需要穿越奇异配置的任务 - 使用任务空间约束而非末端精确定位

练习3.8 多体系统的能量方法
使用拉格朗日方法推导双摆(两个串联的摆)的动力学方程。验证系统的能量守恒性,并讨论如何扩展到n连杆情况。

提示 先写出动能和势能表达式 使用广义坐标 $\mathbf{q} = [\theta_1, \theta_2]^T$
参考答案 双摆系统推导: **系统参数**: - 链接长度:$l_1, l_2$ - 链接质量:$m_1, m_2$(集中在末端) - 广义坐标:$\mathbf{q} = [\theta_1, \theta_2]^T$ **位置表达**: $$\begin{align} \mathbf{p}_1 &= l_1[\sin\theta_1, -\cos\theta_1]^T \\ \mathbf{p}_2 &= \mathbf{p}_1 + l_2[\sin\theta_2, -\cos\theta_2]^T \end{align}$$ **速度**: $$\begin{align} \dot{\mathbf{p}}_1 &= l_1\dot{\theta}_1[\cos\theta_1, \sin\theta_1]^T \\ \dot{\mathbf{p}}_2 &= \dot{\mathbf{p}}_1 + l_2\dot{\theta}_2[\cos\theta_2, \sin\theta_2]^T \end{align}$$ **动能**: $$T = \frac{1}{2}m_1\|\dot{\mathbf{p}}_1\|^2 + \frac{1}{2}m_2\|\dot{\mathbf{p}}_2\|^2$$ 展开得: $$T = \frac{1}{2}[(m_1+m_2)l_1^2\dot{\theta}_1^2 + m_2l_2^2\dot{\theta}_2^2 + 2m_2l_1l_2\cos(\theta_1-\theta_2)\dot{\theta}_1\dot{\theta}_2]$$ **势能**: $$V = m_1gl_1(1-\cos\theta_1) + m_2g[l_1(1-\cos\theta_1) + l_2(1-\cos\theta_2)]$$ **拉格朗日量**: $$\mathcal{L} = T - V$$ **欧拉-拉格朗日方程**: $$\frac{d}{dt}\frac{\partial\mathcal{L}}{\partial\dot{\theta}_i} - \frac{\partial\mathcal{L}}{\partial\theta_i} = 0$$ 得到动力学方程: $$\mathbf{M}(\mathbf{q})\ddot{\mathbf{q}} + \mathbf{C}(\mathbf{q},\dot{\mathbf{q}})\dot{\mathbf{q}} + \mathbf{g}(\mathbf{q}) = \mathbf{0}$$ 其中质量矩阵: $$\mathbf{M} = \begin{bmatrix} (m_1+m_2)l_1^2 + m_2l_2^2 + 2m_2l_1l_2\cos(\theta_2-\theta_1) & m_2l_2^2 + m_2l_1l_2\cos(\theta_2-\theta_1) \\ m_2l_2^2 + m_2l_1l_2\cos(\theta_2-\theta_1) & m_2l_2^2 \end{bmatrix}$$ **能量守恒验证**: $$E = T + V = const$$ 通过 $\frac{dE}{dt} = 0$ 可验证(无外力和耗散时)。 **扩展到n连杆**: - 递归计算每个链接的位置和速度 - 动能:$T = \frac{1}{2}\sum_{i,j}\mathbf{M}_{ij}(\mathbf{q})\dot{q}_i\dot{q}_j$ - 使用递归算法避免重复计算 - 复杂度从 $O(n^3)$(直接法)降到 $O(n)$(递归法)