跳转至

机器人控制理论

概述

机器人控制的目标是使机器人精确执行期望的运动或施加期望的力。控制器需要基于 动力学模型 计算驱动力矩,实现对位置、速度、力的精确跟踪。

graph TB
    subgraph "控制架构"
        A["轨迹规划器"] --> B["控制器"]
        B --> C["机器人"]
        C -->|"关节编码器"| D["状态估计"]
        C -->|"力/力矩传感器"| E["力反馈"]
        D --> B
        E --> B
    end
    style A fill:#e8f4fd,stroke:#2196F3
    style B fill:#fff3e0,stroke:#FF9800
    style C fill:#f3e5f5,stroke:#9C27B0

1 PID 控制

1.1 基本形式

PID 是最基础也最广泛使用的控制方法。对单关节:

\[ u(t) = K_p e(t) + K_i \int_0^t e(\tau) \, d\tau + K_d \dot{e}(t) \]

其中误差 \(e(t) = q_d(t) - q(t)\)

各项作用:

作用 调参影响
P(比例) \(K_p e\) 减小稳态误差,过大引起振荡
I(积分) \(K_i \int e \, dt\) 消除稳态误差,过大引起超调和振荡
D(微分) \(K_d \dot{e}\) 增加阻尼,抑制振荡,对噪声敏感

1.2 独立关节 PID

将每个关节视为独立系统,分别设计 PID:

\[ \tau_i = K_{p,i} e_i + K_{d,i} \dot{e}_i + K_{i,i} \int e_i \, dt \]

局限性

  • 忽略关节间的动力学耦合
  • 忽略重力补偿
  • 在高速运动时跟踪精度下降

1.3 PD + 重力补偿

在实践中最常用的简单控制律之一:

\[ \tau = K_p e + K_d \dot{e} + g(q) \]

其中 \(g(q)\) 为重力补偿项。该控制律保证在静态和低速运动下的精度。

渐近稳定性证明

选择 Lyapunov 函数 \(V = \frac{1}{2}e^T K_p e + \frac{1}{2}\dot{q}^T M(q)\dot{q}\),可以证明在 PD + 重力补偿下系统渐近稳定。


2 计算力矩控制(Computed Torque Control)

2.1 基本思想

利用完整的动力学模型进行 非线性反馈线性化,将非线性系统转化为线性系统。

控制律:

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

更紧凑地写为:

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

2.2 闭环分析

将控制律代入运动方程 \(M\ddot{q} + C\dot{q} + g = \tau\)

\[ M(q)[\ddot{q}_d + K_p e + K_d \dot{e} - \ddot{q}] = 0 \]

由于 \(M(q)\) 正定,得到误差动力学:

\[ \ddot{e} + K_d \dot{e} + K_p e = 0 \]

这是一个线性二阶系统!选择 \(K_p, K_d > 0\) 即可保证指数稳定。

2.3 实践考虑

问题 描述 解决方法
模型不确定性 \(M, C, g\) 与真实值有偏差 鲁棒控制、自适应控制
计算延迟 实时计算逆动力学 Newton-Euler \(O(n)\) 递推
关节摩擦 未建模的摩擦力 摩擦补偿项
传感器噪声 速度估计不准 滤波、观测器

3 阻抗控制(Impedance Control)

3.1 动机

在与环境交互时(如装配、擦拭),纯位置控制过于"刚性"。阻抗控制通过调节末端执行器的动态行为来实现柔顺交互。

3.2 目标阻抗

期望末端执行器表现出如下动力学行为:

\[ M_d \ddot{e} + D_d \dot{e} + K_d e = F_{\text{ext}} \]

其中:

参数 含义 效果
\(M_d\) 期望惯量 控制加速度响应
\(D_d\) 期望阻尼 控制速度响应
\(K_d\) 期望刚度 控制位移响应
\(e = x_d - x\) 末端位置误差
\(F_{\text{ext}}\) 外部接触力

3.3 实现

关节空间阻抗控制:

\[ \tau = M(q)\ddot{q}_r + C(q,\dot{q})\dot{q}_r + g(q) - J^T(q) F_{\text{ext}} \]

其中参考加速度 \(\ddot{q}_r\) 由阻抗关系确定。

简化实现(无力传感器时):

\[ \tau = J^T(q)[K_d(x_d - x) + D_d(\dot{x}_d - \dot{x})] + g(q) \]

此时阻抗由 \(K_d\)\(D_d\) 确定,不需要力传感器。

3.4 导纳控制

阻抗控制的对偶形式:

  • 阻抗控制:输入运动偏差,输出力 → 适合力控制的执行器
  • 导纳控制:输入力偏差,输出运动 → 适合位置控制的执行器
\[ x_c = M_d^{-1}(F_{\text{ext}} - D_d \dot{x}_c - K_d x_c) \]

4 力控制

4.1 力/位混合控制

Raibert-Craig 方法(1981):在不同方向上分别控制力和位置。

定义选择矩阵 \(S\)(对角矩阵,元素为 0 或 1):

\[ \tau = J^T [S \cdot F_{\text{force\_ctrl}} + (I - S) \cdot F_{\text{pos\_ctrl}}] \]
  • \(S_{ii} = 1\):第 \(i\) 方向做力控制
  • \(S_{ii} = 0\):第 \(i\) 方向做位置控制

例如:垂直于工件表面方向做力控制,平行方向做位置控制。

4.2 力控制器设计

PI 力控制:

\[ F_{\text{force\_ctrl}} = K_{fp}(F_d - F_{\text{meas}}) + K_{fi} \int (F_d - F_{\text{meas}}) \, dt \]

力控制的挑战

  • 接触/非接触状态切换导致不连续
  • 环境刚度未知时稳定性难保证
  • 力传感器噪声和延迟

5 操作空间控制

5.1 基本思想

直接在任务空间(笛卡尔空间)设计控制律,通过雅可比映射到关节空间。

操作空间动力学(Khatib, 1987):

\[ \Lambda(x) \ddot{x} + \mu(x, \dot{x}) + p(x) = F \]

其中:

\[ \Lambda(x) = (J M^{-1} J^T)^{-1} \]
\[ \mu = \Lambda J M^{-1} C \dot{q} - \Lambda \dot{J} \dot{q} \]
\[ p = \Lambda J M^{-1} g \]

5.2 控制律

\[ F = \Lambda(x)[\ddot{x}_d + K_p e + K_d \dot{e}] + \mu(x, \dot{x}) + p(x) \]

映射到关节力矩:

\[ \tau = J^T F \]

等价地:

\[ F = J^{-T} \tau \]

5.3 冗余机器人的零空间控制

对冗余机器人(\(n > 6\)),可以在满足主任务的同时利用零空间完成辅助任务:

\[ \tau = J^T F_{\text{task}} + (I - J^T J^{-T}) \tau_0 \]

其中 \(\tau_0\) 是零空间力矩,可用于:

  • 关节极限回避
  • 奇异性回避
  • 自碰撞回避
  • 姿态优化

6 自适应控制

6.1 动机

当动力学参数(质量、惯量、摩擦系数等)未知或变化时,需要在线估计并补偿。

6.2 自适应计算力矩

利用动力学方程的线性参数化性质:

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

控制律:

\[ \tau = Y(q, \dot{q}, \dot{q}_r, \ddot{q}_r) \hat{\pi} + K_d s \]

其中 \(s = \dot{e} + \Lambda e\) 为滑模变量,\(\hat{\pi}\) 为参数估计值。

参数更新律:

\[ \dot{\hat{\pi}} = -\Gamma Y^T s \]

其中 \(\Gamma > 0\) 为学习率矩阵。

稳定性保证

通过 Lyapunov 分析可以证明:\(s \to 0\)(跟踪误差收敛),但不保证 \(\hat{\pi} \to \pi\)(参数不一定收敛到真实值,除非持续激励条件满足)。


7 鲁棒控制

7.1 滑模控制

设计滑模面 \(s = \dot{e} + \lambda e\),控制律保证 \(s\) 快速到达零并保持:

\[ \tau = \hat{M}(q)[\ddot{q}_d + \lambda\dot{e}] + \hat{C}\dot{q} + \hat{g} - K \, \text{sgn}(s) \]

其中 \(K\) 足够大以克服模型不确定性。

抖振问题

符号函数 \(\text{sgn}(s)\)\(s=0\) 附近产生高频抖振。实践中用饱和函数 \(\text{sat}(s/\phi)\) 替代,\(\phi\) 为边界层厚度。

7.2 \(H_\infty\) 控制

在频域设计,最小化干扰到性能输出的传递函数的 \(\infty\)-范数:

\[ \min_K \|T_{zw}(s)\|_\infty \]

适合处理结构化不确定性和外部干扰。


8 学习型控制

8.1 迭代学习控制(ILC)

对重复任务,利用前一次执行的误差改进下一次的控制输入:

\[ u_{k+1}(t) = u_k(t) + L \cdot e_k(t) \]

8.2 强化学习控制

直接学习控制策略,不依赖精确模型:

  • 模型无关:PPO、SAC 直接优化策略
  • 模型基础:学习动力学模型 + MPC
  • Sim-to-Real:仿真中训练,迁移到真实机器人

8.3 实时系统要求

机器人控制对实时性有严格要求(参见 实时系统):

控制层 频率 延迟要求
关节伺服 1-10 kHz < 1 ms
力控制 500 Hz - 1 kHz < 2 ms
运动控制 100-500 Hz < 10 ms
规划层 1-50 Hz < 100 ms

9 控制架构总结

graph TB
    A["任务规划"] --> B["轨迹生成"]
    B --> C{"控制策略选择"}
    C -->|"已知模型"| D["计算力矩控制"]
    C -->|"模型不确定"| E["自适应控制"]
    C -->|"有干扰"| F["鲁棒控制"]
    C -->|"需要交互"| G["阻抗/力控制"]
    C -->|"无模型"| H["学习型控制"]
    D --> I["关节伺服"]
    E --> I
    F --> I
    G --> I
    H --> I
    I --> J["机器人"]
    style C fill:#fff3e0,stroke:#FF9800
    style I fill:#e8f4fd,stroke:#2196F3

10 常用工具与框架

工具 用途
Simulink / MATLAB 经典控制设计与仿真
Drake 模型预测控制、轨迹优化
ros2_control ROS2 控制框架
MuJoCo 动力学仿真(含接触)
IsaacGym / IsaacSim GPU 并行仿真 + RL 训练

参考文献

  1. Siciliano, B. et al. (2009). Robotics: Modelling, Planning and Control. Springer.
  2. Slotine, J.-J. E. & Li, W. (1991). Applied Nonlinear Control. Prentice-Hall.
  3. Khatib, O. (1987). A unified approach for motion and force control of robot manipulators. IEEE RA.
  4. Craig, J. J. (2005). Introduction to Robotics: Mechanics and Control. Pearson.
  5. Spong, M. W. et al. (2006). Robot Modeling and Control. Wiley.

评论 #