如果你现在想亲手做人形机器人,这篇文章要解决的不是“概念解释”,而是一个更实际的问题:你到底该把 Humanoid AI 当成什么样的工程系统来搭。对大多数团队来说,最关键的判断不是先追求会聊天、会推理、会走路里的某一个亮点,而是先把任务边界、机体能力、接管方式和验证闭环一起定清楚。做对这一步,你后面加视觉、加规划、加学习模块才不会越做越乱。
这篇适合谁
- □ 你是不是刚准备做人形机器人原型,但还没想清楚该从本体、控制还是“智能”哪层先下手?
→ 是:这篇对你有用
→ 否:如果你已经有明确任务和系统分工,下一步更适合直接看状态估计、控制或日志回放的专项文章。 - □ 你是不是已经能把传感器、执行器、上位机堆起来,但系统一复杂就不知道谁该负责什么?
→ 是:这篇对你有用
→ 否:如果你还停留在零部件认知阶段,更适合先看机体、驱动和 ROS 基础入门。 - □ 你是不是经常看 humanoid demo,却分不清“演示效果”和“可迭代工程闭环”的差别?
→ 是:这篇对你有用
→ 否:如果你已经在按闭环成功率、失败分类和回放证据推进项目,这篇更像是一次系统复核。 - □ 你是不是想把项目做成可调试、可接管、可验证的系统,而不是一次性展示机器?
→ 是:这篇对你有用
→ 否:如果你当前目标只是单次 demo 亮相,这篇的工程约束会显得比你需要的更重。
先纠正几个很常见的误区
误区 1:Humanoid AI 主要就是一个更强的大模型
不是。大模型最多只覆盖任务理解、语言接口、策略先验的一部分。真正让机器人在真实空间里干活的,是感知、状态估计、控制、执行、安全和恢复这些链路。模型可以帮你决定“做什么”,但做不做得出来、出错后怎么收回来,还是系统工程问题。
踩坑现场:
常见情况是团队前两周先把语音、大模型和任务解释接口接得很热闹,第三周开始上实机,才发现视觉延迟、关节状态不同步、控制接口没有失败返回。到了第一次完整演示时,机器人能“听懂”指令,却连稳定走到目标位都做不到。这个时候大家才意识到,前面投入最多的那层,恰好不是当前系统的主瓶颈。
误区 2:先把机体做出来,后面再慢慢补系统
这条路很容易把项目带偏。你越晚考虑电源边界、控制接口、人工接管、日志回放和故障恢复,后面越会发现很多硬件和软件决定已经把你锁死了。真正靠谱的顺序通常是边定义系统边做机体,而不是先把身体堆完再找“大脑”。
踩坑现场:
很典型的一幕是,到了第三个月,机体已经组装完,线束和舱内空间也基本定型,团队才开始补接管接口和日志链路。结果发现急停位置不顺手、上位机串口不够、相机时间戳没统一、关键状态量根本没留记录口。后面每加一个“系统能力”,都要返工结构、电路或布线,项目节奏一下子从开发变成拆机。
误区 3:看起来像人,就已经进入 humanoid intelligence 阶段
外形只是载体。对动手项目来说,更重要的是你有没有把“人类环境里的任务闭环”做出来,比如能不能在有限场景里稳定感知、执行、失败、回退、接管、复盘。没有这条闭环,外形再像人,也只是一个难维护的平台。
踩坑现场:
很多团队在外观、双臂联动和整机视频上投入很大,前期 demo 看起来已经很像“人形机器人产品”。但真到了连续测试阶段,只要环境稍微变化,比如地面摩擦系数不同、箱体位置偏了几厘米、操作者换了一个人,整套动作就重来不了。通常也是在这个节点,团队才真正意识到,自己做出来的是一个高度依赖场记和运气的演示系统,而不是可迭代的任务系统。
关键实现判断:先把 Humanoid AI 拆成 4 条必须闭合的链路
如果你问我“Humanoid AI 到底是什么”,我更愿意给一个工程化回答:它是把任务意图、物理身体、执行约束和可恢复运行连起来的系统层。 真正该先闭合的,通常不是“全部能力”,而是下面这 4 条链路:
- 任务链路:输入是什么,成功标准是什么,任务在哪一步允许失败。
- 身体链路:机体自由度、负载、视角、供电、散热和可维护性够不够支撑这个任务。
- 执行链路:状态估计、控制器、技能接口、任务编排有没有明确边界。
- 恢复链路:出了问题以后谁接管、怎么停、怎么回放、怎么重新进入运行状态。
很多项目失败,不是因为某个算法太差,而是这 4 条链路里至少有一条一直没被认真定义。
一个更实用的系统拆法:别再用“本体 + AI”这种两层思路
做 humanoid 时,我更推荐把系统拆成下面 6 层。这样拆,后面选硬件、选软件栈、定测试顺序都会清楚很多。
1. 机体与执行层
包括结构、执行器、减速器、线束、供电、散热和基础传感器。它决定了机器人能不能承受任务要求的姿态、速度、负载和连续运行时间。像 Berkeley Humanoid Lite 这类开源参考平台的价值,不只是“有一台便宜 humanoid”,而是它把机体、软件环境、遥操作和实机 bring-up 放在同一个文档体系里,能帮助你理解一台人形机器人不是单独几个零件的组合,而是一套需要一起调通的系统。
2. 状态估计与实时控制层
这一层负责让机器人知道“我现在在哪、处于什么姿态、各关节和接触状态如何”,并把动作稳定做出来。你后面看到的步态、抓取、平衡、柔顺,都是建立在这里之上的。如果这层没有时序纪律、状态边界和故障处理,上层再聪明也只是在向不稳定底座发指令。
3. 技能与任务编排层
这里才是很多人直觉里所谓的“机器人智能”。但它不应该直接越级碰硬件。更稳妥的做法是把上层任务拆成一组有输入、输出、前置条件和失败返回的技能,再由任务编排层决定先后顺序。ROS 2 managed lifecycle 的设计很值得参考,它强调模块要有明确状态机,外部监督器能决定何时配置、激活、停用和重启。这对 humanoid 尤其重要,因为你的视觉、控制、导航、手部、接管链路不可能永远同时健康。
4. 示教、遥操作与学习层
很多项目把学习理解成“先攒大量数据,再训一个大模型”。这太晚了。更现实的做法是尽早建设遥操作和示教基础设施,让系统先具备采集任务样本、复现成功轨迹、比较版本差异的能力。Mobile ALOHA 之所以有启发,不在于它证明了某一种最终形态,而在于它把低成本全身示教、双臂移动操作和后续行为克隆连在了一起,说明很多“智能”进步其实建立在更好的数据入口和任务定义之上。
5. 接管与安全层
人形机器人不是全自动才算成熟。对真实工程来说,可人工接管、可限速降级、可暂停恢复,比“完全不需要人”更重要。你至少要先定义:哪些状态允许远程接管,哪些状态必须原地锁定,哪些错误只能人工确认后恢复。否则系统一进复杂环境,风险会立刻上升。
6. 日志、回放与验证层
这是最常被低估的一层,却决定了项目能不能持续迭代。MCAP 和 ROS 2 的配合很值得借鉴,因为它让你把消息流、事件、传感器数据和任务状态统一记录下来,后面才能做回放、对比、回归和事故复盘。没有这层,所谓 Humanoid AI 很容易沦为“今天能跑,明天不知道为什么不行”。
层间接口一览
- 1. 机体与执行层 输入:任务需求规格 → 输出:关节状态、传感器数据 → 给:状态估计层
- 2. 状态估计与实时控制层 输入:关节状态、传感器 → 输出:当前位姿、控制指令 → 给:技能层
- 3. 技能与任务编排层 输入:当前位姿、任务目标 → 输出:技能调用序列 → 给:执行层 + 安全层
- 4. 示教、遥操作与学习层 输入:人工示范、轨迹数据 → 输出:可复用技能 / 策略 → 给:技能层
- 5. 接管与安全层 输入:异常信号、人工指令 → 输出:降级 / 锁定 / 恢复指令 → 给:控制层
- 6. 日志、回放与验证层 输入:全层数据流 → 输出:回放文件、版本对比报告 → 给:主编 / 开发者
分步实践指南:第一次做人形机器人,建议按这个顺序起盘
第 1 步,先把任务缩成一个最小闭环
不要一开始就写“家庭服务机器人”“通用人形助理”这种目标。先收缩成一个可以明确验证的任务闭环,比如“从固定货架拿起标准箱并放到周转位”“走到指定工位按按钮再回初始位”“在桌面场景完成单次双手递送”。最小闭环必须同时写清楚输入、环境限制、成功标准、人工接管条件和不可接受失败。
▶️ 现在就做:
任务名称:
输入条件:(环境、初始状态、触发方式)
执行边界:(只在什么范围内有效)
成功标准:(可观测、可测量)
允许失败的节点:(哪一步失败可以重试)
不可接受失败:(哪些失败必须停止并人工介入)
人工接管条件:(什么状态下移交人工)
第 2 步,反推机体与传感器边界
任务一旦收缩,你才能判断是否真的需要双足、是否一定需要双臂、是否需要头部转动视角、是否需要力控手爪、续航和热设计要做到什么程度。很多团队的问题不是“能力不够”,而是选了一个与任务不匹配的机体方案。
▶️ 现在就做:
按下面 checklist 逐条勾掉不必要能力:
□ 双足是否必须,还是轮式 / 固定底座也能完成任务?
□ 双臂是否必须,还是单臂已经够用?
□ 力控是否必须,还是位置控制 + 简单接触确认就够?
□ 头部转动视角是否必须,还是固定视角可接受?
□ 续航要求是连续 10 分钟、30 分钟,还是更长?
□ 热设计是单次演示即可,还是要支撑连续回归测试?
第 3 步,把上层智能先降格成“可调用技能集合”
在最初版本里,不要急着追求统一大脑。更实用的做法是先定义一组可验证技能,例如站稳、移动到位、抬手、预抓取、闭合夹爪、确认接触、放下物体、异常停止、回零。每个技能都要明确前置条件、输出状态和失败码。只有这样,你后面接入语义模型、规划器或策略学习时,才不会把系统弄成黑箱。
▶️ 现在就做:
技能名:
前置条件:
输入:
输出状态:
失败码:
失败后动作:重试 / 退出 / 请求接管
第 4 步,尽早把接管链路接进去
哪怕第一版只是键盘、手柄或简单遥操作界面,也比完全没有接管强。接管链路的作用不只是“救场”,还包括数据采集、故障隔离和任务脚本验证。很多看似高级的自主能力,前期都是靠稳定的示教和回放体系慢慢长出来的。
▶️ 现在就做:
接管方式 checklist:
□ 是否已有键盘接管入口
□ 是否已有手柄接管入口
□ 是否已有遥操作入口
□ 哪些状态下允许人工接管
□ 哪些状态下必须自动降级或锁定
□ 紧急停止触发条件是否写成明确规则
□ 接管后如何恢复到可继续测试状态
第 5 步,把日志和视频回放当作基础设施,不要当成附属功能
第一次 bring-up 就该录:控制命令、关键状态量、模式切换、错误码、相机时间戳、人工接管事件。后面每次改一个控制参数、换一个感知模型、调整一个任务脚本,都要能对比前后差异。你真正想得到的不是“这次成功了”,而是“为什么成功,下一版还能不能稳定复现”。
▶️ 现在就做:
最小日志字段清单:
□ 控制命令
□ 关键状态量
□ 模式切换事件
□ 错误码
□ 相机时间戳
□ 人工接管事件
□ 每次测试的任务版本号 / 参数版本号
□ 对应视频文件名与日志文件名是否能一一对应
第 6 步,最后才逐步加复杂智能
等最小闭环已经具备可重复成功率、失败分类和回放能力,再去加语言接口、视觉语义理解、模仿学习、强化学习或更复杂的任务规划器。顺序反过来做,通常只会制造更多不可定位问题。
▶️ 现在就做:
只有下面三条全满足,才进入更复杂智能阶段:
□ 当前任务已有可重复成功率,且不是靠一次运气跑通
□ 当前失败已经完成分类,不再只写“执行失败”
□ 当前日志和回放可用,能把一次失败定位到具体模块
最容易翻车的地方
- 目标过大:项目定义停留在“通用服务”这种抽象说法,没有可验证边界。
- 智能越级:上层直接控制过多底层细节,结果一改模块就全链路联动出错。
- 没有接管策略:系统一旦异常,只剩断电或人工硬抱住机器人。
- 不留回放证据:团队讨论全靠印象,最后谁都说不清故障源头。
- 把“可演示”误当成“可迭代”:能做一次动作,不代表系统能被稳定优化。
怎么验证你真的把 Humanoid AI 搭对了
我建议至少用下面 5 个问题做自检:
- 你能不能用一句话说清楚当前只在验证哪一个任务闭环,而不是泛泛说“做通用机器人”?
答不上来的话 → 立刻把任务缩成一个可观测、可测量、可复现的最小闭环。 - 系统里每一层有没有明确边界,尤其是谁负责实时控制、谁负责任务决策、谁负责异常接管?
答不上来的话 → 先补一页层间接口说明,把输入、输出和责任人写出来。 - 发生一次失败后,你能不能拿出日志、视频和状态变化,把问题定位到具体模块,而不是只知道“又失败了”?
答不上来的话 → 先把日志字段、视频命名和测试记录方式统一,再继续改算法。 - 至少存在一种人工介入路径,让系统在异常时进入可控、可恢复状态吗?
答不上来的话 → 先补最小接管方案和急停规则,不要继续扩任务范围。 - 同一个任务,你能不能连续复现,而不是靠运气跑通一次?
答不上来的话 → 先做固定场景回归测试,把成功率和失败分类跑稳定。
如果这 5 个问题里有 3 个答不上来,那你现在做的多半还不是完整意义上的 Humanoid AI 系统,而只是若干模块的并列拼装。
下一步怎么做
如果你刚起步,下一篇最值得继续补的是四类文章:状态估计、全身控制、接管链路、日志回放。因为它们决定了你后面加任何“智能”时,系统是否还可控。如果你已经有一台原型机,建议立即补做三样东西:任务边界文档、最小接管方案、统一回放记录。
延伸阅读 / Sources
如果你准备把这篇入门文章继续落到真实原型上,下面这 4 个来源最值得先顺着读。它们分别对应开源整机参考、模块状态边界、遥操作与示教入口、以及日志回放基础设施,基本覆盖了这篇文章里最核心的 4 条工程链路。
- Berkeley Humanoid Lite Docs,可参考开源人形平台如何把机体、软件环境、bring-up 和排错文档放在一起。
- ROS 2 Managed Lifecycle,可参考模块状态边界、激活/停用和监督式管理思路。
- Mobile ALOHA,可参考全身遥操作、示教采集和任务学习如何形成闭环。
- MCAP for ROS 2,可参考日志记录、回放和版本对比的基础设施做法。
