2. 人形机器人硬件基础

人形机器人的全身控制算法最终要落到物理实体上执行,硬件平台决定了控制的边界:能感知什么、能驱动什么、能以多快的频率闭环。本章从典型平台(Atlas、Optimus、Digit)的机械结构出发,拆解传感器、执行器和计算单元的选型逻辑与工程约束,帮助你在学习控制算法之前建立“硬件决定控制上限”的系统认知。

人形机器人硬件系统架构与信号/电源链路 计算单元 (Compute Unit) NVIDIA Jetson Orin / Intel i7 + RTX 实时内核 + 运动控制栈 (1kHz) 电源管理 (PMIC) 电池 48V → 多路DC-DC 12V/5V/3.3V/1.8V 域 执行器 (Actuators) 电机 + 减速器 + 驱动器 (Optimus/Digit: 电驱) 液压伺服阀 + 泵站 (Atlas 早期版本) CAN / EtherCAT 控制 传感器 (Sensors) IMU (BMI088/ADIS16470) 关节编码器 (磁/光) 六维力/扭矩传感器 足底压力阵列 SPI / I2C / EtherCAT 通信总线 (EtherCAT/CAN) 1kHz 同步 / 抖动 < 50μs 机械结构 (Mechanical) 铝合金/碳纤维 串联+并联混合 自由度: 28~40 (含灵巧手) 电源 (48V/12V) 控制 传感器数据 (1kHz) 状态估计/指令 安装/耦合 传动 图例: 电源线 信号/数据线 控制线 机械耦合 注:教学用简化架构图,非完整工程原理图

上图展示了人形机器人硬件系统的核心链路:计算单元通过通信总线与执行器和传感器交互,电源域为所有子系统供电,机械结构作为承载平台。这张图是后续所有控制算法讨论的物理基础——你需要时刻清楚:控制指令从计算单元发出,经过总线传输,驱动执行器产生力矩,同时传感器将状态反馈回计算单元,形成闭环。

2.1 典型人形机器人平台对比:Atlas、Optimus、Digit

不同平台的设计哲学直接决定了控制算法的实现方式。我们以三个最具代表性的平台为例,分析其机械结构差异与控制含义。

平台自由度执行器类型身高/重量控制频率设计定位
Boston Dynamics Atlas28(早期液压)/ 40+(电动版)液压伺服(早期)/ 电动+谐波(新版)1.5m / 80kg2kHz 关节环极限运动能力(跑酷、后空翻)
Tesla Optimus28(全身)+ 11(单手)无框力矩电机 + 行星滚柱丝杠1.73m / 57kg1kHz 关节环工业场景替代重复劳动
Agility Digit20(下肢+躯干)+ 双手电动直驱 + 低减速比1.75m / 65kg500Hz-1kHz物流搬运、人机协作

核心原理:液压执行器具有极高的功率密度(可达 10kW/kg),适合爆发性动作,但存在能效低(<30%)、漏油风险、维护复杂等问题。电动执行器虽然功率密度较低(约 1-3kW/kg),但控制精度高、响应快、能效高(>70%),且易于实现力矩闭环。当前行业趋势明显偏向电动方案——Atlas 在 2024 年也宣布转向电动版本,这印证了电驱在实用化场景中的优势。

判断方法:选择平台时,你需要评估三个关键指标:功率密度(决定能否完成高动态动作)、力矩控制精度(决定接触操作的柔顺性)、能效(决定续航时间)。如果做研究验证,Digit 的开源程度较高;如果做工业应用,Optimus 的规模化成本优势明显;如果研究极限运动控制,Atlas 的硬件能力最强但获取难度极大。

2.2 传感器系统:感知是控制的前提

人形机器人的传感器系统分为本体感知( Proprioception)和外部感知(Exteroception)两大类。本体感知解决“我自己的状态是什么”,外部感知解决“周围环境是什么”。

2.2.1 核心传感器类型与选型

  • IMU(惯性测量单元):通常安装在骨盆或躯干中心,提供三轴加速度和三轴角速度。典型型号如 Bosch BMI088(消费级)、ADI ADIS16470(工业级)。IMU 数据经过姿态解算(互补滤波或卡尔曼滤波)得到躯干姿态角,这是全身协调控制的基础参考系。
  • 关节编码器:分为式磁编码器(如 AS5047P)和光学编码器(如 Renishaw 系列)。磁编码器成本低、抗污染,但精度较低(±0.1°);光学编码器精度高(±0.005°),但价格昂贵且对环境敏感。对于髋关节、膝关节等大扭矩关节,推荐使用双编码器方案(电机端+输出端)以消除减速器回差。
  • 力/扭矩传感器:六维力传感器(如 ATI Mini45、坤维科技 KWR75)安装在脚踝和手腕,测量三个方向的力和三个方向的力矩。这是实现柔顺控制(阻抗控制、导纳控制)的关键——没有力反馈,机器人无法感知接触力,也就无法安全地与人和环境交互。
  • 足底压力阵列:使用薄膜压力传感器(如 FlexiForce)或压阻阵列,分布在脚掌不同区域,用于检测零力矩点(ZMP)位置,辅助步态规划与平衡控制。

经验提醒:IMU 的安装位置对控制效果影响巨大。安装在躯干质心附近可减少离心力干扰;如果安装在头部,则头部运动会产生额外的加速度噪声。实际工程中,我们通常将 IMU 与主控板通过减震海绵隔离,避免高频振动耦合进姿态解算。

2.2.2 传感器数据同步与时间戳

全身控制要求所有传感器数据在同一时间基准上。EtherCAT 总线天然支持分布式时钟同步(精度 < 1μs),而 CAN 总线需要软件同步(精度约 100μs)。在 1kHz 控制频率下,100μs 的偏差意味着 10% 的周期误差,可能导致控制不稳定。

// 传感器数据时间戳对齐伪代码
void sync_sensor_data() {
    uint64_t master_time = get_ethercat_master_time();
    for (int i = 0; i < NUM_SENSORS; i++) {
        sensor[i].timestamp = master_time - sensor[i].latency_compensation;
        // 使用最近邻插值或线性插值对齐到控制周期
        sensor[i].aligned_data = interpolate(sensor[i].raw_data, sensor[i].timestamp);
    }
}

2.3 执行器系统:从指令到力矩

执行器是控制算法的最终执行者。人形机器人常用的执行器方案有三种:电驱+减速器、液压伺服、直驱电机。每种方案在力矩密度、带宽、成本上各有取舍。

2.3.1 电驱+减速器方案(Optimus、Digit)

典型结构为:无框力矩电机 + 谐波减速器(或行星滚柱丝杠)+ 电机驱动器。电机提供高转速低扭矩,减速器将转速降低、扭矩放大。谐波减速器具有零背隙、高减速比(50:1~160:1)的优点,但柔度较大,影响力矩控制带宽。行星滚柱丝杠将旋转运动转化为直线运动,适合线性关节(如膝关节、踝关节)。

关键参数:电机驱动器需要支持力矩模式(电流环)控制,电流环带宽通常要求 > 1kHz。以 Optimus 的膝关节为例,峰值扭矩需求约 150Nm,如果减速比为 100:1,则电机端需要输出 1.5Nm 的持续扭矩,对应电机额定电流约 10A(取决于电机常数 Kt)。

2.3.2 液压伺服方案(早期 Atlas)

液压系统由液压泵站、伺服阀、液压缸组成。伺服阀控制液压油的流量和方向,从而控制液压缸的伸缩速度和力。液压方案的优点是功率密度极高(可达 10kW/kg),适合爆发性动作;缺点是能效低(<30%)、需要庞大的泵站(增加重量)、液压油泄漏污染环境、维护成本高。

2.3.3 直驱电机方案(研究平台)

直驱电机(如 MIT Mini Cheetah 使用的方案)没有减速器,电机直接驱动关节。优点是零背隙、高带宽(力矩控制带宽可达 100Hz)、可实现精确的力矩控制;缺点是扭矩密度低,需要大直径电机,导致关节体积和重量增加。适合研究动态控制算法,不适合需要大扭矩的工业场景。

风险说明:无论哪种执行器,都必须设置力矩上限和速度上限保护。在调试初期,建议将力矩限制在额定值的 30% 以内,防止控制算法发散导致硬件损坏。同时,执行器需要配置抱闸(制动器),在断电或急停时锁定关节位置,防止机器人倒塌伤人。

2.4 计算单元:实时控制的大脑

全身控制算法对计算资源的需求极高:状态估计(扩展卡尔曼滤波)、动力学计算(逆动力学)、轨迹优化(MPC)、力矩分配(QP 求解)等任务需要在 1ms 内完成。因此,计算单元通常采用异构架构:实时核 + 高性能核。

计算任务计算负载推荐硬件实时性要求
关节电流环(PID)低(每关节 ~10μs)MCU(STM32H7)/ FPGA硬实时(10kHz)
状态估计(EKF)中(~100μs)DSP / 实时核(ARM Cortex-R)硬实时(1kHz)
全身动力学(RNEA)中高(~200μs)高性能核(x86 / ARM Cortex-A)软实时(1kHz)
MPC 轨迹优化高(~5-20ms)GPU / 多核 CPU非实时(10-50Hz)

典型配置:NVIDIA Jetson Orin(用于感知和高级规划)+ Intel i7 或 AMD Ryzen(用于动力学计算)+ STM32H7(用于关节电流环)。三者通过 PCIe / EtherCAT / SPI 通信。Jetson 运行 Linux + ROS2,负责视觉感知和任务规划;i7 运行实时 Linux(PREEMPT_RT)或 QNX,负责全身控制;STM32 运行裸机程序,负责最底层的电流环。

经验提醒:不要将所有计算任务都放在一个 CPU 上。将关节电流环放在 MCU 上可以保证即使上层系统崩溃,机器人也能安全停机。同时,在 Jetson 和 i7 之间使用共享内存或零拷贝通信(如 Fast DDS 的共享内存传输),可显著降低通信延迟。

2.5 案例拆解:Digit 机器人的硬件调试与力矩控制实现

我们以 Agility Digit 为背景,演示一个完整的硬件调试闭环:从传感器标定到力矩控制实现。

背景与约束:Digit 使用电动直驱+低减速比方案,关节力矩控制带宽较高(约 50Hz),但扭矩输出有限(峰值约 80Nm)。目标是在实验室环境中实现单腿站立平衡,要求躯干姿态偏差 < 2°,且脚底接触力波动 < 10N。

初始现象:首次上电后,机器人站立时出现持续抖动,躯干俯仰角振荡幅度达 ±5°,且右腿膝关节有异响。

关键数据:

  • IMU 采样率 1kHz,姿态解算输出延迟 2ms
  • 关节编码器分辨率 19bit(约 0.001°),但实际噪声 ±0.01°
  • 六维力传感器采样率 500Hz,噪声 RMS 0.5N
  • 控制周期 1ms,但实际执行周期抖动 ±0.3ms

分析判断过程:

  1. 首先检查 IMU 数据:发现加速度计 Z 轴有 0.2g 的偏置,且存在 50Hz 工频干扰。使用椭圆拟合校准后,偏置降至 0.02g。
  2. 检查编码器数据:右腿膝关节编码器在运动方向切换时出现 ±0.05° 的跳变,判断为磁编码器受电机磁场干扰。解决方案:增加屏蔽罩,并将编码器采样时间与 PWM 驱动信号错开。
  3. 检查力传感器:发现脚底力传感器在静止时读数漂移 3N/min,判断为温度漂移。解决方案:在控制代码中加入温度补偿模型(基于传感器内部温度读数)。
  4. 检查控制周期抖动:使用示波器测量实际控制周期,发现抖动主要来自 Linux 调度。解决方案:将控制线程绑定到专用 CPU 核心,并设置 SCHED_FIFO 实时优先级。

实际操作步骤:

# 1. 传感器标定
python3 calibrate_imu.py --accel_bias 0.02 --gyro_bias 0.001
python3 calibrate_force.py --temp_compensation on

# 2. 控制线程实时化
sudo chrt -f 99 ./whole_body_controller

# 3. 力矩控制参数调整
# 初始 PID: Kp=50, Ki=0.1, Kd=0.5
# 调整后: Kp=80, Ki=0.05, Kd=0.8 (增加阻尼,减少振荡)

结果对比:经过上述调整,躯干姿态偏差从 ±5° 降至 ±1.2°,脚底接触力波动从 25N 降至 8N,膝关节异响消失。控制周期抖动从 ±0.3ms 降至 ±0.05ms。

风险与代价:增加编码器屏蔽罩导致关节重量增加 0.3kg,对动态性能有轻微影响;温度补偿模型需要额外 10ms 的标定时间。但整体收益远大于代价。

复盘经验:硬件调试的核心是“先传感器,后执行器,再控制算法”。很多控制问题看似是算法问题,实则是传感器噪声或延迟问题。建议在开发初期就建立传感器数据质量监控工具,实时可视化 IMU 偏置、编码器噪声、力传感器漂移等指标。

2.6 常见误区与总结复盘

误区一:认为“高精度传感器 = 好控制”。实际上,传感器精度需要与控制频率匹配。如果控制频率只有 100Hz,那么 1kHz 的传感器数据也需要降采样,此时高精度优势无法发挥。更重要的是传感器的延迟一致性——所有传感器延迟必须一致,否则状态估计会引入虚假的“运动”。

误区二:忽视执行器的力矩带宽。很多初学者只关注峰值扭矩,却忽略了力矩控制的带宽。如果执行器的力矩带宽只有 10Hz,那么机器人无法实现 1Hz 以上的动态平衡动作。测量力矩带宽的方法是:给执行器施加正弦力矩指令,逐步增加频率,观察实际力矩的幅值衰减和相位滞后。

总结:人形机器人硬件系统是一个“感知-计算-执行”的闭环。本章的核心要点是:(1)理解不同平台的硬件差异决定了控制算法的适用范围;(2)传感器数据质量(噪声、延迟、同步)是控制性能的上限;(3)执行器的力矩带宽和精度比峰值扭矩更重要;(4)计算单元需要异构架构来满足不同时间尺度的任务需求。在后续章节中,我们将基于这些硬件约束,逐步展开状态估计、动力学建模和全身控制算法的学习。