
---
title: "机器人底层控制：从电机伺服到柔顺接触"
subtitle: "PD / PID、MIT Mode、阻抗与导纳控制｜灵巧操作与 Sim-to-Real｜无代码版"
date: "2026-10-29"
lang: zh-CN
---

# 机器人底层控制：从电机伺服到柔顺接触

<!-- course-meta:start -->
[课程首页](https://github.com/zengxiong111/Foundation_of_Embodied_AI/blob/main/README.zh-CN.md) · [English](Robot_Low_Level_Control_EN.md) · [PDF](../pdf/Robot_Low_Level_Control_ZH.pdf) · [机器人动力学](Robot_Dynamics_Embodied_CN.md)

| 项目 | 说明 |
|---|---|
| 课程定位 | 衔接《机器人动力学》《运动控制强化学习》与真实执行器接口，不重复完整动力学推导 |
| 适用范围 | 机械臂、足式机器人与多指灵巧手；厂家模式和硬件数值需按实际 SDK 核实 |
| 先修知识 | 关节位置/速度、Jacobian、刚体动力学方程、基本反馈控制 |
| 文档核验日期 | 2026-10-29 |
| 许可 | CC BY-NC-SA 4.0 · Xiong Zeng and contributors |

<!-- course-meta:end -->

<!-- course-toc:start -->
**本章知识地图**

```mermaid
flowchart LR
  A["AI Policy / 轨迹目标"] --> B["位置 / 速度 / 力矩指令"]
  B --> C["PD、MIT / 阻抗 / 导纳"]
  C --> D["电机、减速器与传动"]
  D --> E["机器人接触环境"]
  E --> F["状态 / 力反馈"]
  F --> C
  F --> A
```
<!-- course-visual:end -->

## 目录

- [1. 为什么具身策略需要底层控制](#course-section-01)
- [2. 电机、传动与伺服环](#course-section-02)
- [3. 位置、速度、力矩控制与 MIT Mode](#course-section-03)
- [4. 阻抗、导纳与柔顺控制](#course-section-04)
- [5. 接触任务中的力/位混合控制](#course-section-05)
- [6. AI Policy 应该输出什么动作](#course-section-06)
- [7. 仿真执行器与真实硬件对齐](#course-section-07)
- [8. 案例：TRON2 与多指灵巧手](#course-section-08)
- [9. 调参与安全验证顺序](#course-section-09)
- [10. 自测题与关键结论](#course-section-10)
- [参考资料](#course-section-11)

<a id="course-section-01"></a>

## 1. 为什么具身策略需要底层控制

VLA、WAM、模仿学习或 RL Policy 可以输出末端位姿、关节位置、关节速度或力矩，但**策略输出的动作并不等于电机实际执行的动作**。相同的目标关节角，在两个不同刚度、阻尼、限流和延迟的控制器上可能产生不同的过冲、接触力和滑移行为。

将系统分为三个层级：**任务/基础模型**决定做什么；**运动控制或技能策略**生成连续目标；**执行器控制器**在真实硬件的速度、力矩和温度限制下实现这些目标。低层控制并非 RL 的竞争对手，而是 RL 可以依赖的一部分物理闭环。

本讲重点是“理解并选择现有控制接口”，不是编写电机固件。学习完成后应能：读懂 SDK 中的控制模式；识别 MIT Mode 与阻抗控制的关系；判断仿真中的 PD 是否对应真机；为接触任务选择可验证的控制架构。

<a id="course-section-02"></a>

## 2. 电机、传动与伺服环

### 2.1 从电流到关节力矩

在简化的永磁电机模型中，电机轴力矩近似满足

$$
\tau_m=K_t i_q,\qquad \tau_j\approx \eta N\tau_m,
$$

其中 $K_t$ 是力矩常数，$i_q$ 是产生转矩的电流分量，$N$ 是减速比，$\eta$ 是传动效率。**不能仅凭最大电流就得到准确的关节最大力矩**：还需要电机常数、传动比、效率、持续/峰值限流及温度降额等信息；复杂连杆、腱绳或差动传动需要位置相关的力矩映射。

电机转子惯量经理想刚性减速器反射到关节侧的近似值为

$$
J_{\mathrm{ref}}\approx N^2J_m.
$$

它解释了为何连杆惯量相同的机器人也可能具有不同的加速响应和背驱特性。对实际灵巧手还需要考虑摩擦、齿隙、传动柔顺和电流/速度饱和。

### 2.2 典型伺服环层级

| 环路 | 目标与输入 | 关注点 |
|---|---|---|
| 电流环 | 驱动电流跟踪目标电流 | 电机驱动器内部、带宽与电流保护 |
| 速度环 | 根据速度误差生成电流/力矩请求 | 阻尼、摩擦补偿、稳定性 |
| 位置环 | 根据位置误差生成速度或力矩请求 | 跟踪精度、超调、抗干扰 |
| 任务/策略环 | 输出目标位姿、轨迹或动作块 | 感知延迟、反馈新鲜度、任务成功率 |

典型系统常采用级联控制，但并非每个设备都开放所有环路。必须查明 **SDK 指令在哪里生效、反馈在哪里测量、设备内部还有哪些控制和限幅**。

<a id="course-section-03"></a>

## 3. 位置、速度、力矩控制与 MIT Mode

### 3.1 三类基础命令

- **Position control**：发送 $q_d$，设备内部跟踪目标。适合多数关节运动、示教复现和位置动作 RL；不能假设一条指令会瞬间达到目标。
- **Velocity control**：发送 $\dot q_d$，适合连续伺服与速度型运动；必须防止位置积分漂移和越限。
- **Torque/effort control**：发送 $\tau_d$ 或对应驱动命令，能直接影响接触动力学；需要更严格的状态观测与独立安全保护。

对常见的显式 PD 形式，

$$
\tau_{\mathrm{cmd}}=K_p(q_d-q)+K_d(\dot q_d-\dot q)+\tau_{\mathrm{ff}},
\qquad \tau_{\mathrm{applied}}=\mathrm{sat}(\tau_{\mathrm{cmd}}).
$$

如果控制器只开放位置目标，$K_p$ 与 $K_d$ 可能固定在固件中，外部并不能随意设定。

### 3.2 MIT Mode 究竟是什么

**MIT Mode 通常是一类执行器命令接口/控制模式的名称，而不是一套与阻抗控制并列的普适控制理论。** 许多支持此模式的电机接受 $(q_d,\dot q_d,K_p,K_d,\tau_{\mathrm{ff}})$，在内部按 PD 加力矩前馈计算输出。具体报文字段、参数单位、限幅、模式切换和是否真的可调均依赖厂商。

| 命令配置 | 近似行为 | 限制 |
|---|---|---|
| $K_p>0$, $K_d>0$, $\tau_{\mathrm{ff}}=0$ | 关节弹簧-阻尼跟踪 | 不是自动保证接触安全的力控 |
| $K_p=0$, $K_d>0$ | 粘性阻尼/速度响应 | 需确认固件与驱动限流语义 |
| $K_p=K_d=0$, $\tau_{\mathrm{ff}}\neq0$ | 力矩前馈主导 | 更接近力矩命令，风险更高 |

**MIT Mode 的可配置 PD 形式可实现一种关节空间的弹簧-阻尼行为，但不等同于具备精确末端阻抗。** 实际刚度受到伺服带宽、传动摩擦、关节耦合和饱和影响。

<a id="course-section-04"></a>

## 4. 阻抗、导纳与柔顺控制

### 4.1 先区分“柔顺”与“阻抗”

**柔顺控制（compliant control）**指机器人在外力作用下允许受控位移或调整运动的更大类方法。**阻抗控制（impedance control）**规定运动偏差与交互力之间的动态关系；**导纳控制（admittance control）**通常从测得的外力生成运动参考。因此“柔顺控制 = 阻抗控制”并不严格。

关节阻抗的简化形式为

$$
\tau=K_q(q_d-q)+D_q(\dot q_d-\dot q)+g(q),
$$

这里 $g(q)$ 表示模型重力补偿。这个表达式更适合具有可用关节力矩接口的系统；若只开放位置模式，不能宣称发送 $q_d$ 就等价于完整阻抗控制。

### 4.2 笛卡尔阻抗

末端空间的简化目标 wrench 为

$$
F_d=K_x(x_d-x)+D_x(\dot x_d-\dot x),\qquad
\tau\approx J(q)^\top F_d+g(q).
$$

对 6D 位姿，应明确姿态误差、速度与力矩都表达在哪个坐标系。完整的操作空间控制还可能包含惯性、科氏项、零空间运动和接触约束。关节 PD **不能仅通过调节相同数值的 $K_p$ 就获得相同的笛卡尔刚度**。

### 4.3 导纳控制

一种理想化导纳模型为

$$
M_a\ddot x_r+D_a\dot x_r+K_a(x_r-x_0)=F_{\mathrm{ext}},
$$

其中传感的外力 $F_{\mathrm{ext}}$ 改变参考轨迹 $x_r$，然后交由内部位置/速度控制器跟踪。它适用于“可读取外力、有稳定位置伺服、但没有直接力矩接口”的情形；力传感噪声、滤波延迟及内环带宽会直接影响稳定性。

| 维度 | 阻抗控制 | 导纳控制 |
|---|---|---|
| 典型输入 | 位置/速度误差 | 测量的外部力/力矩 |
| 典型输出 | 目标关节力矩或 wrench | 修正后的运动参考 |
| 更自然的硬件条件 | 可用低延迟力矩接口 | 稳定位置控制 + 可信外力估计 |
| 常见风险 | 模型误差、饱和、接触不稳定 | 力估计偏差、滤波与内环延迟 |

低刚度不必然意味着安全。系统仍需要能量、速度、力矩、碰撞和停止条件的独立约束。

<a id="course-section-05"></a>

## 5. 接触任务中的力/位混合控制

插入、拧动、打磨或沿桌面滑动时，希望某些方向跟踪轨迹、另一些方向限制接触力。**Hybrid Force/Position Control** 用任务坐标系中的选择矩阵区分两个子空间，概念上可写为

$$
F_{\mathrm{cmd}}=S F_{\mathrm{motion}}+(I-S)F_{\mathrm{force}},
$$

其中 $S$ 必须与任务约束、坐标系及自由度定义一致，不能任意把矩阵分量混合。实际实现还要处理摩擦、接触切换、力传感器、Jacobian 奇异和控制限幅。

对于多指灵巧手，指尖力不等于电机电流；抓持力还受接触位置、传动结构、摩擦和其他手指耦合影响。只读到电流并不意味着已测得准确的法向接触力。

<a id="course-section-06"></a>

## 6. AI Policy 应该输出什么动作

| 策略动作 | 推荐接法 | 主要误差来源 |
|---|---|---|
| 关节目标 $q_d$ | 位置伺服或可配置 PD | 增益/限流、延迟、零位与关节顺序 |
| 关节增量 $\Delta q$ | 目标更新 + 限幅、滤波 | 积分漂移、步长及频率 |
| 末端增量 $\Delta x$ | IK 或操作空间控制器 | 坐标系、奇异位形、关节可达性 |
| 力/力矩请求 | 力矩接口或专用力控层 | 估计误差、接触切换、安全边界 |
| Action Chunk | 有时间戳的轨迹缓存 + 内环跟踪 | 块拼接、过期指令、异步推理 |

对 **Motion Tracking RL**，推荐从关节目标 + 明确的 PD/执行器模型开始；对 **VLA/WAM**，推荐输出有坐标约定的末端或关节目标，再通过安全控制层执行。只有在硬件和保护机制充分核实后才考虑直接输出力矩。两条路线都不应绕过独立的安全层。

<a id="course-section-07"></a>

## 7. 仿真执行器与真实硬件对齐

Isaac Lab 中 `ImplicitActuator` 将 PD 参数交给物理求解器；`IdealPDActuator` 在仿真步上显式计算并裁剪力矩。相同的 $K_p,K_d$ **不保证两种数值执行路径在接触、饱和、较大步长下完全等价**。此外还有 `DCMotor`、`DelayedPDActuator`、学习型执行器等模型。MuJoCo 也区分 actuator 输入、传动、激活状态和输出力/限幅。[1–2]

仿真到真实应记录一份**控制接口合同**：关节名称/顺序、单位、零位、动作模式、$K_p,K_d$（是否可设置）、电流/力矩/速度限幅、控制周期、命令传输延迟、状态估计频率及时间戳。

推荐用受保护的低幅值单关节响应检验：上升时间、超调、稳态误差、命令到响应延迟、不同速度下的摩擦与限幅；接触测试必须在独立的力/电流/速度保护下进行。不要用“调大随机化范围”代替对明显的接口语义错误进行修复。

<a id="course-section-08"></a>

## 8. 案例：TRON2 与多指灵巧手

任务：机械臂移动到桌面上的螺丝刀附近，灵巧手抓取并旋转。可分两条教学路线：

1. **位置控制路线**：高层 Policy 输出手掌目标与手指 $q_d$；机械臂经 IK/轨迹器、手指经位置伺服执行；通过视觉与关节反馈闭环修正。
2. **柔顺接触路线**：若相应硬件确实开放并支持合格的力矩/阻抗接口，则在接触阶段采用关节/笛卡尔阻抗；若只开放位置接口，研究外层导纳和受限位置伺服，并明确不能得到哪些保证。

**设备边界**：本案例不声称 TRON2、Revo3 或 Wuji Hand2 具备任意一种控制模式，也不提供这些设备的实际最大频率、力矩、增益或 CAN/EtherCAT 连接方式。课程实践前必须以所用固件版本和 SDK 为准，确认能否查询执行状态与错误码。

比较实验保持相同 Policy、动作空间、初始物体姿态及安全边界，分别报告成功率、接触峰值、指尖滑移、实际关节跟踪误差与故障停止次数。仅凭最终成功率无法解释接触控制质量。

<a id="course-section-09"></a>

## 9. 调参与安全验证顺序

1. **静态核验**：关节顺序、单位、坐标系、急停、硬限位和命令超时；确保硬件固有保护独立于 Policy。
2. **无负载、低幅值验证**：逐轴检查方向、速度、过冲及实际反馈；先记录基线再更改增益。
3. **自由空间轨迹**：测量不同速度/加速度下的跟踪误差、温升、延迟和限流情况。
4. **受保护的轻接触**：仅在设备允许、风险已评估的情形下测试，限制接触力与能量，配备可操作的停止机制。
5. **复杂任务**：逐步增加物体、遮挡、接触和视觉延迟扰动；日志中同时保存 command 与 executed state。

**不可直接沿用示例参数。** 刚度、阻尼、速度、力矩阈值必须依据硬件规格、负载、控制周期和安全评估确定，特别是灵巧手的每个关节可能具有不同的传动和动力学。

<a id="course-section-10"></a>

## 10. 自测题与关键结论

1. 为什么“最大电流”不足以准确推算每个手指关节的最大力矩？
2. MIT Mode 的五类命令参数与关节阻抗模型有何联系？
3. 为什么只开放位置命令的机器人不一定能直接实现力矩阻抗控制？
4. 阻抗与导纳各需要哪些反馈量？控制稳定性会受到哪些延迟影响？
5. 为什么必须记录仿真与真机的执行器模型，而不能只报告 Policy 的动作维数？

**一句话总结**：具身策略定义“期望动作”，底层控制决定“真实动态响应”；可靠 Sim-to-Real 的前提是动作语义、执行器动态、时序和安全边界一致。

<a id="course-section-11"></a>

## 参考资料

1. [NVIDIA Isaac Lab — Actuators](https://docs.nvidia.com/isaaclab/concepts/actuators)（隐式与显式执行器、限幅和延迟）。
2. [MuJoCo — Computation / Actuation Model](https://mujoco.readthedocs.io/en/stable/computation.html)（输入、传动与输出力）。
3. [CubeMars — Actuator Guide / MIT Mode](https://www.cubemars.com/how-to-use-cubemars-actuators.html)（MIT Mode 的典型厂商接口示例；不代表其他品牌）。
4. [Modern Robotics — Northwestern University](https://modernrobotics.northwestern.edu/)（控制与机器人动力学理论）。
5. [ROS 2 Control Documentation](https://control.ros.org/jazzy/)（控制器与硬件抽象）。
6. [课程配套：机器人动力学](Robot_Dynamics_Embodied_CN.md)；[运动控制强化学习](Embodied_Motion_Control_RL_Tutorial_ZH.md)；[Isaac / MuJoCo](Isaac_MuJoCo_RL_完整教程_中文.md)。

*说明：本讲为教学性控制架构分析，不构成针对具体机器人型号的安全操作说明或厂商功能承诺。新增原创内容使用 CC BY-NC-SA 4.0；第三方资料及原课程内容版权保持不变。*
