2. 人形机器人硬件基础
人形机器人的全身控制算法最终要落到物理实体上执行,硬件平台决定了控制的边界:能感知什么、能驱动什么、能以多快的频率闭环。本章从典型平台(Atlas、Optimus、Digit)的机械结构出发,拆解传感器、执行器和计算单元的选型逻辑与工程约束,帮助你在学习控制算法之前建立“硬件决定控制上限”的系统认知。
上图展示了人形机器人硬件系统的核心链路:计算单元通过通信总线与执行器和传感器交互,电源域为所有子系统供电,机械结构作为承载平台。这张图是后续所有控制算法讨论的物理基础——你需要时刻清楚:控制指令从计算单元发出,经过总线传输,驱动执行器产生力矩,同时传感器将状态反馈回计算单元,形成闭环。
2.1 典型人形机器人平台对比:Atlas、Optimus、Digit
不同平台的设计哲学直接决定了控制算法的实现方式。我们以三个最具代表性的平台为例,分析其机械结构差异与控制含义。
| 平台 | 自由度 | 执行器类型 | 身高/重量 | 控制频率 | 设计定位 |
|---|---|---|---|---|---|
| Boston Dynamics Atlas | 28(早期液压)/ 40+(电动版) | 液压伺服(早期)/ 电动+谐波(新版) | 1.5m / 80kg | 2kHz 关节环 | 极限运动能力(跑酷、后空翻) |
| Tesla Optimus | 28(全身)+ 11(单手) | 无框力矩电机 + 行星滚柱丝杠 | 1.73m / 57kg | 1kHz 关节环 | 工业场景替代重复劳动 |
| Agility Digit | 20(下肢+躯干)+ 双手 | 电动直驱 + 低减速比 | 1.75m / 65kg | 500Hz-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
分析判断过程:
- 首先检查 IMU 数据:发现加速度计 Z 轴有 0.2g 的偏置,且存在 50Hz 工频干扰。使用椭圆拟合校准后,偏置降至 0.02g。
- 检查编码器数据:右腿膝关节编码器在运动方向切换时出现 ±0.05° 的跳变,判断为磁编码器受电机磁场干扰。解决方案:增加屏蔽罩,并将编码器采样时间与 PWM 驱动信号错开。
- 检查力传感器:发现脚底力传感器在静止时读数漂移 3N/min,判断为温度漂移。解决方案:在控制代码中加入温度补偿模型(基于传感器内部温度读数)。
- 检查控制周期抖动:使用示波器测量实际控制周期,发现抖动主要来自 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)计算单元需要异构架构来满足不同时间尺度的任务需求。在后续章节中,我们将基于这些硬件约束,逐步展开状态估计、动力学建模和全身控制算法的学习。