1. 人形机器人感知系统:它到底在“感知”什么
人形机器人与工业机械臂最大的区别在于:它没有固定工作台,没有恒定光照,没有固定的工件位姿。它要走进客厅、走入车间、走上楼梯,在一个完全非结构化、动态变化的世界里保持平衡、避开障碍、完成操作。这一切的前提,就是一套足够鲁棒的环境感知系统。
先说结论:人形机器人的感知系统,本质上是在回答三个问题——我在哪、周围有什么、接下来会怎样。这三个问题分别对应自身体态感知、环境几何感知和动态语义预测,而整个感知架构的设计,就是围绕这三类信息如何获取、如何对齐、如何融合、如何在毫秒级延时内送入控制与规划模块来展开的。
很多人第一反应是“感知就是装几个传感器”。实际项目里你会发现,传感器选型只占工作量的三成,剩下七成都耗在标定、同步、融合、延迟预算、失效降级这些“看不见的工程”上。这也是为什么很多仿真的机器人Demo看起来完美,一上实物就满地打滚——仿真环境里传感器是理想模型,现实里每一帧数据都带着噪声、抖动和时延。
这篇文章我会从环境感知的总体架构出发,把感知系统在整个人形机器人软件栈中的位置讲清楚,再重点分析“感知-控制-规划”正在从传统的串行流水线,走向一体化端到端闭环的技术趋势。内容主要基于我在几个机器人项目里的实际经验,也会涉及一些业内公开的技术思路,供正在入门或已经踩坑的同行参考。
1.1 从仿生学说起:为什么是“多模态”而不是“单传感器”
人形机器人要应对的场景,决定了它必须走多模态融合的路线。你看人类自己:走路时靠前庭系统感知姿态,靠视觉预判落脚点,靠脚底压力反馈调节肌肉张力,三者缺一不可。闭眼单脚站立坚持不了几秒,就是因为视觉这一路被切断了。
机器人也是同理。激光雷达提供精确的几何距离,RGB相机提供丰富的语义纹理,IMU提供高频姿态增量,关节编码器提供本体状态,脚底或指尖的触觉传感器提供接触力信息。每一种传感器都有天然的盲区:
- 激光雷达在玻璃、镜面、黑体表面会失效或者产生错误点;
- RGB相机在暗光、强逆光、低纹理环境下特征匹配会崩;
- IMU积分漂移是必然的,只是时间快慢问题;
- 触觉传感器量程小,但它是接触类任务唯一可靠的信息来源。
所以“多模态”不是炫技,而是不同物理原理的传感器彼此补盲的结果。融合的目标,是在任何单一模态失效时,系统仍然能维持一个“可用”的置信度状态继续运行。
1.2 感知-控制-规划一体化:被逼出来的趋势
早期机器人架构是严格分层的:感知模块输出“世界模型”(地图、目标位姿),规划模块基于这模型搜索路径,控制模块跟踪路径。这在结构化环境里没问题,但人形机器人遇到的场景并不友好——桌面上一个杯子被碰倒了,下一秒就会滚动;门把手是弯曲的异形件,光靠视觉算位姿误差太大;走在碎石路面上,视觉给出的地面高度与实际触地高度差出一大截。
这类问题倒逼行业做一件事:让感知结果不再只是给规划用的“模型”,而是直接参与控制反馈的“状态表征”。比如足式机器人常用的“地形高度图”,它既给规划器用来选落脚点,同时也在控制环里作为地面约束条件参与质心高度调节。视觉不再是一个慢速的“地图构建器”,而是一个快速的“状态观测器”。
这几年更激进的路线是端到端学习:用策略网络直接把传感器原始数据映射到关节力矩指令,中间没有显式的几何模型、没有路径规划、没有状态估计。谷歌、特斯拉、以及国内一批做人形具身智能的团队都在推这个方向。这种架构里,感知、控制、规划的区别已经模糊了——感知特征在神经网络里直接参与控制决策,一体化变成了字面意义上的“一个网络”。
这条趋势线下面我会展开细讲。先说架构,因为无论技术趋势怎么演变,传感器层和数据处理层的物理约束是绕不开的。
2. 环境感知总体架构拆解
一套典型的人形机器人环境感知架构,从硬件到决策输出,分五层:数据采集层、数据预处理层、多模态融合层、语义理解层、任务接口层。下面逐层拆,重点讲层与层之间的数据流和约束关系。
2.1 数据采集层:传感器配置与安装布局
人形机器人的传感器布局与轮式机器人有显著差异。轮式机器人传感器通常在车体上方,视野相对固定;人形机器人有一个会俯仰转动的头部、一个会摆动的躯干、两条会遮挡视野的机械臂,安装布局必须考虑动态遮挡问题。
我参与过的项目里,常用的配置组合是:
| 传感器 | 数量 | 安装位置 | 主要用途 | 典型频率 |
|---|---|---|---|---|
| 激光雷达 | 1-2 | 头部/胸前 | 大范围几何建图、障碍物检测 | 10-20 Hz |
| RGB相机 | 2-4 | 头部双眼、躯干、手腕 | 语义识别、目标检测、视觉里程计 | 30-60 Hz |
| RGB-D相机 | 0-2 | 头部/腰部 | 近距离稠密深度、操作空间感知 | 30 fps |
| IMU | 1-2 | 躯干、头部 | 姿态估计、加速度观测 | 200-1000 Hz |
| 关节编码器 | 按关节数 | 每个关节 | 本体姿态、运动学 | 100-1000 Hz |
| 六维力/触觉 | 按需 | 脚底、指尖 | 接触力估计、柔顺控制 | 100-1000 Hz |
安装布局有个很关键的原则:传感器视场之间的重叠冗余度,决定了融合系统能容忍多大程度的遮挡和失效。头部的双目相机若被机械臂完全遮挡,就只能依靠躯干传感器维持感知。所以头部传感器视角和机械臂工作空间之间的干涉分析,是设计早期就该做的仿真工作。
2.2 数据预处理层:时间同步与空间标定
这一层最脏活累活,但也是整个系统稳定性的基石。核心任务有三个:
空间标定:不同传感器坐标系之间的外参(位置和姿态)标定。激光雷达和相机之间的标定用标定板或自然特征点;相机与IMU之间的标定要处理时间延迟和相机内参的联合优化;IMU与机器人基座之间的标定通常用静止数据初始化加在线估计。现代方案很多直接用多传感器标定框架一次联合求解,比传统“两两标定再串联”误差小得多。
时间同步:不同传感器的采样频率不同、信号出发时间不同、处理链路延迟不同。如果你把30Hz的相机数据和200Hz的IMU数据在时间戳对齐上出了问题,融合后的姿态会出现肉眼可见的抖动。一般做法是:
- 先用硬件触发或多机同步信号,把相机的曝光时刻与IMU采样时刻对齐到同一个时间基准,误差控制在1ms内;
- 在软件层面再做一次时间戳插值补偿,因为即便硬件同步,相机数据的到达时间仍然会晚于采集时间,这部分延迟要用IMU或运动模型做补偿。
数据质量清洗:激光雷达的离群点去除、相机图像的失真校正和去噪、IMU数据的零偏估计和温度补偿。这一步不留神,后面融合层算出来的就会是“对垃圾数据做精美包装”。
2.3 多模态融合层:几何融合与状态估计
融合层的目标,是输出一个对机器人运动控制真正有用的状态估计。这里存在两种主流技术路线:
路线一:滤波类方案(基于贝叶斯)。主要是扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF),后来出现了迭代误差状态卡尔曼滤波(IESKF)。这类方案把多传感器数据看成一堆带噪声的观测,系统状态是机器人位姿和速度,通过预测-更新的循环迭代,在融合每个传感器数据后输出更准确的估计。特点是计算稳定、延迟可控,适合运动估计和姿态解算。
路线二:优化类方案(基于图优化)。把一段时间内的状态和观测构造成一个图,通过非线性最小二乘求解最优轨迹。视觉惯性导航系统(VINS)、激光惯性系统(LIO)都属于这一类。特点是精度高、能利用历史信息优化全局轨迹,但计算开销大、延迟更高,更适合地图构建而非实时控制。
有人形机器人的工程实践,通常采用两者结合:用轻量级滤波做高频局部状态估计,供平衡控制使用;用优化类方案做低频全局位姿修正,供导航规划使用。
2.4 语义理解层:从“有什么东西”到“意味着什么”
几何信息告诉你“前方0.5米有一个障碍物”,但控制模块真正需要知道的是:“这是一个桌子,高度0.75米,可以把手撑在上面;还是一个玻璃隔断,不能碰撞?”。所以语义理解层把几何数据进一步提炼为物体类别、属性、关系。
常用手段是深度学习视觉模型,做目标检测、语义分割、实例分割,把2D图像信息映射到3D空间中。在人形机器人上还有一层特殊需求——场景交互理解:门怎么开、抽屉往哪个方向拉、椅子能不能坐人。这部分就要结合对物体功能属性的知识库和交互模式识别,也是目前行业里研究的热点。
2.5 任务接口层:不同下游模块的不同“胃口”
感知系统最终要对接三类下游模块,它们的需求差别很大:
- 控制模块:需要低延迟的高频状态(50-1000Hz),容忍短暂的精度下降,但绝对不能接受100ms以上的延迟抖动;
- 规划模块:需要低频的高精度全局模型(1-10Hz),对细节精度要求高,对延迟相对宽容;
- 交互决策模块:需要带语义标签的稀疏信息,比如“桌上有杯水”“门口有个老人要经过”,频率甚至1Hz就够了。
所以感知系统通常不输出单一“真值”,而是输出多层次、多频率的接口。一个时刻,系统既在输出200Hz的机身姿态,也在输出10Hz的局部障碍物栅格,还在输出1Hz的场景语义图。它们的更新频率不同、坐标系不同、更新策略也不同。
3. “感知-控制-规划”一体化趋势的深度解析
这一节是全文重点。我们详细聊聊标题里的后半句话——“感知-控制-规划”的一体化,到底是什么、为什么发生、以及它遇到了什么挑战。
3.1 传统流水线到底卡在哪里
一个典型的人形机器人传统架构是这样的时间线:
- 感知模块以30Hz处理图像,100Hz处理雷达点云,输出当前位姿、地图、目标位姿;
- 规划模块拿到以上数据,以10Hz的频率规划一条运动轨迹(甚至更慢,如果是复杂的全身运动规划,可能只有2-5Hz);
- 控制模块以1000Hz跟踪这条轨迹,负责让机器人走得稳、不摔倒。
这里最要命的问题在于延迟累积。传感器采集到一帧数据,处理需要30-60ms;交给规划器,搜索一个路径可能再用50-100ms;传给控制器,控制器跟踪的实际上是一个“上一时刻”的轨迹。对于高速动态场景,比如有人突然从侧面冲过来,或者地面有一块石头需要快速规避,整个链路从感知到执行的延迟轻松超过200ms。人形机器人质心高、惯量大,200ms足够它从正常行走变成摔倒。
更深层的问题还不是延迟,而是误差传播。传统流水线里,感知模块先在“几何层”做一次误差累积(比如把相机图像变成点云时引入深度误差),规划模块又假设这个几何模型是准确的,再基于它做优化。一旦感知误差超过规划容忍度,规划出来的轨迹在现实世界里就会不满足约束——比如规划认为落脚点是平的,实际那块石头高出了一厘米,控制器如果死板跟踪,就会绊倒。
3.2 一体化趋势的三种实现路径
一体化不是一蹴而就的。从我观察到的行业实践看,有三条实现路径,代表了不同阶段和不同技术路线:
路径一:感知与控制的紧耦合(状态感知融合)
这条路不推翻传统架构,但把感知结果直接嵌入控制回路。典型例子是足式机器人里的“地形感知+摆动腿落脚控制”:感知层实时估计地形的高度和倾角,控制层在摆动腿即将触地时根据这个估计动态调整期望落脚高度,而不是等规划器重新算轨迹。感知从那时的“一次性建模”,变成了“持续滚动更新”,控制环里直接用了感知的原始信息。
路径二:感知与规划的端到端化(学习优化联合)
这条路把感知特征直接输入到规划算法里,中间的显式几何模型被弱化,取而代之的是学习到的代价图或价值图。比如导航任务中,感知网络输出一个“可通行性代价场图”,规划算法在这个图上搜索路径。“可通行性”本身就是在编码几何+语义+动态信息的融合特征,感知和规划的信息流已经交织在一起。
路径三:全端到端的感知-控制一体化(行为学习)
最激进的路线:用强化学习或模仿学习让策略网络直接从传感器原始数据学到关节力矩指令。2023年之后的几个知名人形机器人演示,大量采用了这种路线——视频输入IMU、关节编码器数据,输出是双腿和双臂的力矩指令,中间没有任何显式表示“世界模型”的模块。它的优势是极高的控制频率和卓越的动态响应,劣势是数据需求量大、可解释性差、对训练环境外的场景泛化能力有限。
3.3 为什么“一体化”在技术上可行了
一体化趋势不是理论推演,而是三个技术条件成熟后的必然结果:
第一个条件是端侧算力的跃升。早期的Jetson系列和工控机跑一个目标检测网络都颤颤巍巍,更别说让策略网络在控制频率上实时推理。现在嵌入式GPU和NPU的性能已经能在50ms以内完成目标检测+语义分割+特征提取,为感知特征直接参与控制提供了算力基础。
第二个条件是传感器硬件的成熟。低成本高分辨率的深度相机、小型化固态激光雷达、带温度补偿的高精度IMU的普及,让机器人公司能在有限体积和成本内,搭载足够多样的感知模态,为一体化模型提供丰富的输入信号。
第三个条件,也是最关键的,是机器人学习范式的突破。Sim-to-Real(仿真到现实迁移)技术——特别是域随机化、零样本迁移——让研究者能够在仿真环境里大规模训练感知-控制一体化策略,然后直接部署到实体机器人上。此外,世界模型(World Model)技术的兴起,让模型具备对未来几帧场景的预测能力,某种程度上替代了传统规划器的“前瞻”能力。
3.4 一体化带来的新问题
一体化趋势解决了很多旧问题,也制造了新问题。我在项目里体会比较深的有几个:
可解释性下降。传统流水线里,某个环节出错,你可以定位是传感器标定误差、地图构建错误,还是路径搜索失败。端到端网络里,策略输出了一个奇怪的动作,你不知道它“看到”了什么。这种黑盒特性在工业部署上是很大障碍,安全认证和故障追溯都无从下手。
数据饥渴。一体化策略需要海量的传感器-动作对数据,真实机器人采集成本极高,主要靠仿真。但仿真与真实的差距始终存在——雷达在仿真里的噪声模型做不到与实物一致,视觉域差也需要大量调参才能把Sim-to-Real的差距压缩到可接受范围。
安全边界模糊。传统架构可以在规划层设置硬约束(比如“轨迹不能穿过障碍物”),一体化策略没有显式的约束表达,只能靠训练时的奖励函数惩罚。你惩罚的不够充分,它就会在训练分布之外的场景犯一个“看似微小但致命”的错误。
这些人未来三到五年内,工程界会花大力气去解决。我个人判断,眼前更稳妥的落地形态,是**“两条腿走路”**:既有传统感知-规划-控制的安全底盘,又有数据驱动的感知-控制一体化增强模块。安全时用一体化跑得更好,异常时回退到保守模式。
4. 实操视角:感知系统架构设计的几个关键参数
聊完趋势,回到地面。这一节以我实际做过的一个双足人形平台为例,讲感知系统架构在工程落地时最常遇到的几个参数估算、延迟预算和调试经验。
4.1 延迟预算怎么算
感知系统的延迟预算,决定了每个模块能分到多少处理时间。以“视觉辅助落脚点选择”为例,整个链路的延迟预算可以参考如下拆解:
| 阶段 | 具体内容 | 延迟预算 |
|---|---|---|
| 传感器曝光 | 相机曝光时长 | 5-15 ms |
| 图像采集传输 | 相机到计算设备的传输与解码 | 5-10 ms |
| 图像预处理 | 去畸变、缩放、归一化 | 2-5 ms |
| 深度估计 | 单目/双目/深度网络推理 | 10-30 ms |
| 地形建图 | 点云转高度图、滤波 | 5-10 ms |
| 落脚点修正 | 基于高度图的落脚位置调整 | 1-3 ms |
| 控制指令下发 | 关节力矩指令生成与传输 | 1-2 ms |
总计约30-75ms。这个速度能满足步频在每秒1-2步的慢速行走,但对跑步或快速避障是不够的。所以高性能平台的感知模块经常要把“深度估计”这个大头拆成两级——一级粗估计用于控制(15ms内),一级细估计用于优化规划(100ms预算)。这就是前面说的“多频率多层接口”的由来。
4.2 坐标系管理的血泪教训
人形机器人身上至少有十几个坐标系:世界系、机体系、躯干系、头部位姿系、左右相机系、左右雷达系、左右脚踝系、末端执行器系。一套严格命名的坐标系管理系统,是感知模块正常工作的前提。
坐标变换的一个重要原则是:尽量用“树”结构管理,避免“图”结构。树结构里任意两个坐标系之间有唯一的变换路径,可以统一推向世界系再互转;图结构则可能出现循环变换、多路径不一致的精度陷阱。我见过项目组用一套全连通坐标树,结果误差在几次变换后被放大了一个数量级,机器人走路总是歪着——查了一整天才发现是某个坐标系的父系设错了。
实操建议:所有外参标定结果集中存储在一个配置文件中,每次启动先做一致性校验。校验方法是把一组静态观测点分别经两棵不同的坐标变换树投影到世界系,比较残差是否在预期范围内。
4.3 触觉感知:一体化趋势中最被低估的模态
从前面的趋势分析里你会注意到,视觉和激光雷达在一体化架构中讨论最多,但我想特别提一句触觉。人形机器人有个特点:它是通过接触与世界交互的——脚底踩地、手抓物体、身体靠墙。而接触信息,恰恰是传统视觉感知完全覆盖不到、但对控制至关重要的一路信息。
人形机器人行走时,脚底压力中心(CoP)位置是最关键的平衡观测,它直接反映了真实支撑状态,比任何视觉估计都可靠。手臂操作时,指尖或腕部的力传感让机器人能感知到抓握力的实时变化,实现“手眼力”协同。我做个一个抓取玻璃杯的实验,仅靠视觉定位+位置控制,很容易把杯子夹碎或滑脱;加入力感知闭环后,握力可以根据接触阻抗实时调整,成功率几乎翻倍。
一体化趋势下,触觉数据也在以另一种方式进入策略网络——作为观测输入的一部分。这类数据量大、频率高,但在末端执行器准确标定后,它对策略的鲁棒性提升明显。将来真正成熟的具身智能系统,大概率是视觉-力觉-本体觉三种模态深度融合的系统,而不是今天大家扎堆的视觉中心方案。
5. 常见问题与排查技巧实录
最后一部分,整理一些我在感知系统调试中真实踩过的坑,按高频程度排序,希望对正在被类似问题折磨的朋友有点帮助。
5.1 多传感器时间戳不同步导致的“数据打架”
现象是:机器人静止时,融合后的位姿输出一直在缓慢漂移或抖动,哪怕IMU静止积分也会给出错误速度。
排查后发现,相机和IMU的时间戳基准不一致——相机用的是系统时间,IMU用的是硬件时间,两者差了大约20毫秒,而且是变化的。在静止情况下这个偏差还能忍,一旦运动起来,相机位姿和IMU预测位姿就对不上,融合输出会出现周期性跳变。
解决方式:给所有传感器统一NTP或PTP时间同步协议,并在标定流程中对时间戳偏移做了一次联合优化(把时间延迟作为标定参数)。做完之后,抖动幅度下降了至少一个数量级。这个坑在不少团队中出现过,很多代码里会用时间戳比对和延迟估计来补偿,但底层硬件不统一,软件做得再好也是补救而非根治。
5.2 激光雷达在“玻璃门”场景下的致命误判
某次调试,机器人一直在走廊里犹犹豫豫不敢走,检查发现前方明明开阔,雷达却输出了一堵“墙”的点云——那是走廊尽头的大块玻璃窗。
解决这个问题的常规思路是:加入相机语义分割,把“镜面/玻璃”区域标记为可通行,或者用雷达强度信息识别低反射率区域(玻璃的反射强度和正常墙壁差异很大)。但更稳妥的方案,是建立在多传感器置信度分析上:如果相机和雷达对于同一区域输出矛盾结论,且距离较近时相机置信度低但雷达置信度高,那就应该采信“有玻璃但可避让”的保守策略。
5.3 仿真里效果好、实机上拉胯的“域差”
做Sim-to-Real时遇到过最折磨的问题:仿真里策略100%成功,实机测试30%成功率都没有。翻来覆去查完,最后定位到两个域差。
第一个是相机传感器噪声模型差异。仿真里的RGB-D深度传感器噪声是高斯分布,实机的深度传感器在暗光、反光、近距离下有大量空洞和飞点。后来在仿真里增加了深度噪声、丢失率、时域毛刺的模拟,效果立刻改善。
第二个是延迟差异。仿真里观测量是“当前时刻”的,实机里观测量到达策略网络时已经晚了30ms。这30ms在动态控制里就是决定性的。解决办法是在仿真里显式加入观测延迟模型,把延迟从30ms扫到100ms做课程式训练,让策略学会容忍延迟。
这个经历说明一个小道理:别急着调模型,先把输入分布的差距找出来。感知系统表现的差异,往往不是算法问题,而是传感器数据和仿真设计的差异问题。
5.4 快速定位排查速查表
| 现象描述 | 优先排查项 | 常用手段 |
|---|---|---|
| 融合位姿抖动 | 时间同步、标定残差 | 记录多传感器时间戳,做静态和动态标定校验 |
| 局部地图不稳定 | IMU零偏漂移、激光畸变 | 检查运动畸变补偿,做IMU温补零偏 |
| 目标检测框在图像上稳、映射到3D后抖 | 外参标定误差、深度值噪声 | 做深度一致性校验,标定时加入多帧优化 |
| 策略在仿真行、实机不行 | 观测噪声模型、延迟模型 | 对比仿真和实机的传感器数据分布特征 |
| 机器人总在特定区域错误绕行 | 玻璃/网状物/反光面 | 分析该区域的点云与图像模态一致性和置信度 |
5.5 数据回放与故障复现
最后分享一个工作习惯——给感知系统配一套数据回放工具。我在做融合调试时,从来不看实时画面,而是预先录制“传感器原始数据包”,然后离线反复回放同一段数据。这样做的意义在于:实时调试时,机器人每次的执行动作不同,数据不可复现,问题定位到“某个时段”后很难再精确定位;离线回放则可以停在任意一帧,放慢速度检查每个模块的输出。
数据回放工具建议包含:传感器原始数据的波形查看、各模块的输入输出对比、时间戳偏移标注、标定参数可编辑后重算。这套工具的投资非常值,能省下数倍的在机调试时间。实测下来,一个传感器数据录制系统虽然前期要投入一点工作量,但排查问题时效率极高。
我个人在实际项目里最大的体会是:感知系统工程师做久了,耐心比技术更重要。很多问题不是不会解,而是被错误前提和没对齐的假设耗光了时间。比如“雷达测到的墙”,先确认是不是玻璃,再确认是不是标定问题,最后再怀疑算法——这种排查顺序,看似简单,但缺少工程意识的人往往会绕一大圈。多模态融合系统里,大概率怀疑传感器,小概率怀疑算法,这个经验在多个项目里反复被验证。