拆解具身智能系统(软件)
具身智能远非简单的'硬件+AI'组合,而是一套应对物理世界复杂性的闭环系统。从感知内部状态到外部环境理解,从任务拆解到运动规划,机器人软件系统需要完成五次精密翻译,涉及多传感器融合、实时通信、安全守护等关键模块。本文将深入解析ROS2系统如何支撑具身智能的分布式协作,揭示机器人面对物理世界时独有的系统架构与思考逻辑。

如果提到具身智能,就简单地认为它就是“硬件+AI”。那说明你严重低估机器人软件系统的复杂度。原因很简单:机器人面对的是复杂物理世界。
为了面对复杂世界里的各种信息和任务,工程师们为其设计了一套持续闭环运行的系统。

这套闭环,始于感知,终于感知。目的就是:让一个有身体、有惯性、有接触、有风险的机器,在不确定的环境中完成目标任务。
机器人的软件系统和平时手机软件是两码事。它不是写个代码if else 就能让这个产品按照指定的逻辑运行的系统。
虽然都叫做软件,但承载其系统的载体压根不在一个世界里。当下手机软件都在数字世界里生活,他们的世界是手机电脑。机器人和人类都处于同一个空间中进行物理运动,机器人要遵守苹果砸脑会长包定律。
载体都不在一个世界,注定他们的架构形式就是不一样的。机器人是一个在物理世界实时响应的复杂系统。手机软件卡顿了,最多是用户多等两秒,骂一句“sha(此处消音)软件”。
但如果一个200公斤的机械臂在装配汽车时卡顿了一下,或者一辆自动驾驶汽车在高速上“思考车生”0.5秒,那多半就直接吃席了。

一、快速了解具身翻译官
具身智能不是一个单体程序,而是大量节点、算法、驱动、控制器之间的分布式协作。 机器人软件系统需要把“人类意图”翻译成“安全、稳定、可执行的身体动作”。想要快速理解具身智能的软件系统,就要知晓他的全栈工作链路,全栈链路中共有五次翻译:

人话 → 任务
对应能力:语言理解、任务规划、技能选择。
任务距离:“把桌上的杯子拿给我”
任务 → 技能
对应能力:世界模型。
对应问题:我在哪里,杯子在哪里,怎么走过去,什么不能动?
技能 → 轨迹
对应能力:轨迹规划。
对应问题:怎么走?怎么抓杯子?手腕转到什么姿态?
轨迹 → 全身协调
对应能力:全身控制
对应问题:脚、腰、手、头如何协调?重心如何稳定?
全身协调 → 电机命令
对应能力:伺服控制
对应问题:电机每毫秒该输出多少力矩、速度或位置?
五次翻译背后是五层系统指令。利用这五层指令来保证翻译功能的顺利执行。
- 设备驱动层:读取相机、IMU、编码器、力传感器,向电机控制器发送位置、速度、力矩命令
- 实时通信层:利用 CAN、EtherCAT、串口、以太网等通信,把主控和各个执行单元连接起来
- 时间同步层:相机帧、IMU、关节角必须能对齐时间戳,否则状态会漂
- 硬件抽象层:算法要看到“xx关节当前角度是多少、最大力矩是多少、是否过温”
- 安全守护层:急停、限位、过流、过温、跌倒保护、通信中断保护,都不能依赖大模型临场发挥。
这五次翻译是机器人解决复杂问题的必经之路。正是因为这套系统能力的存在,才让机器人在解决复杂和实时性问题不会出错。
二、ROS?ROS2!
具身智能工程师每天看到机器人,都要回答一个非常基础的问题:这具身体能不能被稳定、可靠、实时地驱动起来。
一个人形机器人有几十个自由度,在头、肩、肘、腕、腰、髋、膝等部位都有电机、减速器、编码器,有些会配备力矩传感器或电流反馈装置。除此之外,还有相机、深度相机、IMU、麦克风、力传感器、触觉阵列、激光雷达等。软件系统要做的就是把这些硬件变成可读、可控、可诊断的机器人语言。

具身智能系统的确很复杂,有时会因为它的复杂性而发生失控。如果工作过程中相机一个进程,SLAM 一个进程,机械臂规划一个进程,语音交互一个进程……没有中间件,这些模块之间会变成一团乱码的接口地狱。机器人软件延迟个几百毫秒,具身智能本体可能就会摔倒、碰撞,或者抓碎东西。
机器人常用的中间件就是ROS2系统,中间件的核心任务是:让不同模块以标准方式交换数据,并且让系统可以被调试、替换、扩展。它负责把各种进程从地狱中拯救出来。
它不是传统意义上的操作系统,它属于一种通信框架,这种通信框架可以方便不同的模块订阅与发布消息给其他模块。它和我们耳熟能详的手机苹果安卓系统是不一样的。
ROS2 有两个得力干将:node和topic。ROS2 node 是最小通信单元,ROS2 topic 系统话题,每个node看可以订阅与发布多个topic。
举个栗子:node A发布了名为“wonb”的topic,这就表示node A随后会以自定义的频率通过这个topic向外发布消息,node B订阅了名为“wonb”的topic,那node B就会收听到来自名为“wonb”的topic的消息。

由于ROS2中的通信是分布式的,这意味着node 不在意“wonb”这个topic是谁发布的。每个node各自发自己想发布的topic,同时也各自订阅各自感兴趣的topic,但是topic不可以重名。
ROS2之前还有一个版本,之前的ROS1版本,采用的是中心化结构,这个结构有一个很大弊端,如果master挂了,那么其他模块信息都无法进行消息的通信了,所以ROS2的这种去中心化的架构,相比于ROS1运行的会更加稳定。
ROS2有的不仅是订阅与发布话题的能力,还承担着几个更隐蔽且关键的工作:
- 解耦。 感知团队可以替换目标检测模型,导航团队不用改代码;硬件团队换一个深度相机,上层只要消息格式一致,就不用重写任务逻辑。
- 观测。 机器人调试极其依赖回放。一个 bug 可能只在“光线很暗、地面反光、人突然从右侧走过、机器人左脚刚落地”时出现。没有完整日志和时间戳,就无法复现。
- 仿真连接。 同一套接口可以接真实机器人,也可以接仿真机器人。仿真发出的/joint_states、/camera/image、/odom 可以尽量模拟真实机器人,这样上层算法能在数字世界里先跑起来。
- 生命周期管理。 机器人不是一个脚本,而是一组长期运行的服务。模块要能启动、暂停、恢复、降级、重启。某个视觉模型崩了,机器人不应全身失控;某个相机掉线了,系统应进入受限模式。
但是!,ROS2 不是万能答案!对于高频电机控制,很多时候不会直接跑在普通 ROS 节点里,而是放在实时线程或专用运动控制器里。 原因是 ROS 2 主要擅长模块化通信、系统集成、调试和工具链,而电机控制需要非常稳定的周期。例如控制器每 1ms 执行一次,如果某次因为系统调度延迟变成 10ms,机器人可能已经姿态失稳。
ROS2 承担的是“系统集成、上层任务、感知、规划、调试、日志、仿真连接”的角色。机器人软件栈通常是“双层甚至多层系统”:底层强实时,上层强表达。
三、感知——哲学三问
感知系统就是要让机器人回答下面这三个问题。

感知内部
人类行动有一个隐性前提:你知道自己站在哪里,脚有没有踩稳,手伸到哪里,杯子大概离你多远。机器人也一样。具身智能的第一步不是推理,而是认识自己。机器人认识自己,也是要对自己发出几类灵魂问题:
- 身体状态:每个关节角度是多少?每个关节速度是多少?躯干姿态是多少?重心在哪里?哪只脚在支撑?
- 空间状态:我在地图中的位置在哪里? 周围障碍物在哪里?地面是否可通行?人和物体是否在移动?
- 接触状态:左脚是否着地,右脚是否打滑,手是否碰到物体。
- 任务状态:我现在执行到哪一步?目标物体是否还在?抓取是否成功?是否需要重试?
机器人的感知能力是软件系统融合多种传感器的结果。编码器提供关节角,IMU 提供角速度和加速度,相机提供视觉特征,深度相机或雷达提供距离。
不过单个传感器都不可靠:相机会受光照影响,IMU 会漂移,编码器不知道脚是否打滑,深度相机会受玻璃和反光影响。为了更全面准确了解机器人,需要融合这些相对不完美信息,进而找到那个客观准确的事实。
额外说下,为什么双足机器人更难,首先在在感知模块,它就比轮式机器人多了很多自身理解的复杂性。
由于轮式机器人主要考虑平面移动,人形机器人是强接触系统。人形机器人通过双足支撑整套系统的稳定。双足机器人能做很多种复杂运动:单足支撑、摆腿、落脚、身体晃动、手部接触、搬运重物等。一旦机器人自身状态理解错误,后面的规划和控制都会建立在错误认知上。
感知外部
感知外部不是简单的拍照,录制视频。普通视觉模型看到图片,会回答“这里有一杯瑞幸咖啡”。但机器人视觉要回答的问题更复杂:“这个瑞幸咖啡在哪里?距离我多远?杯口朝上还是朝下?能不能抓?抓哪里最安全?杯子里是否可能有咖啡?旁边有没有障碍物?我伸手过去会不会碰到别的东西?”

一个人形机器人面对真实世界,软件系统要完成六层感知:
- 原始感知:RGB 图像、深度图、点云、声音、触觉、IMU。
- 几何感知:距离、平面、边缘、障碍物、可通行区域。
- 语义感知:桌子、椅子、杯子、人、门把手、抽屉。
- 物体位姿:物体在三维空间中的位置和朝向。
- 可供性:哪里能抓,哪里能推,哪里能踩,哪里不能碰。
- 动态预测:人会往哪里走,物体是否在移动,门是否正在关闭。
传统机器人感知偏向几何:点云、平面、边缘、物体位姿、占据栅格。现代具身智能则越来越强调语义感知和可供性:不仅要知道“这是杯子”,还要知道“杯口朝上、杯身可抓、杯里可能有水、拿的时候不能倾斜”。这就是VLM/VLA 模型在机器人系统中很重要的原因之一。
传统机器人在真实工作时,要由多种模型合作完成指令的。
- 传统几何感知:负责距离、碰撞、位姿、地图
- 深度视觉模型:负责识别、分割、语义、可供性
- 任务模型:负责根据目标选择关注对象
- 安全系统:负责过滤危险动作
一个具体的指令下发后,虽然利用现有的大模型能力,使机器人快速精准地理解语义。但机器人仍然需要几何、物理和安全的约束。让机器人“知道这是玻璃杯”不够,它还要知道玻璃杯在哪里、能不能抓、抓哪里、会不会滑、有没有人挡住、抓起来之后是否会碰到桌沿。
附:感知模块常见技术
- 正运动学 / 逆运动学:从关节角推导末端位姿,或从目标位姿反推关节角。
- 视觉里程计 / 视觉惯性里程计:根据图像和 IMU 估计机器人运动。
- SLAM:定位与建图。
- 接触估计:判断脚是否真正踩住地面、手是否接触物体。
- 外参标定:相机、IMU、机械臂、底盘坐标之间必须精准对齐。
- 状态滤波:例如卡尔曼滤波、扩展卡尔曼滤波、因子图优化等。
四、任务规划
用户说:帮我收拾下桌子。 人类的大脑会:识别桌子上的物品、判断哪些是垃圾、哪些要归位、哪些不能动、先拿哪个、放到哪里、如果不确定就问人。
这个指令对机器人来说,也要拆解成可执行的步骤:找到桌子、观察桌面、识别物体、判断物体类别、选择一个目标物、规划抓取、抓取物品、放到目标位置、检查桌面是否还有物品、循环直到完成。

上述过程就是任务规划,LLM出现后,它可以把自然语言拆成候选步骤,也可以根据上下文做语义推理。但机器人不应该完全按照大模型说的做,而应该在大模型建议中选择自己真的能完成的指令。
选择出来的指令,还要做一层验证机制,需要检查执行步骤是否合法、是否缺少信息、是否违反安全约束,然后再调用技能库(如:导航、开门、抓取),最后审查,每一步是否成功,任务失败则重试降级请求外界协助。
当感知层加工成机器人能理解的Robot Language后,机器人还需要进一步分析思考当前为了达成目标预期,需要做什么样子的动作拆解。这里的认知思考和人类一样,有快思考和慢思考。两个快慢思考系统之间会做信息传递。
快思考系统会基于用户当前下发的指令,感知当前机器人状态与外界状态,做指令任务拆解。
慢思考系统会使用互联网数据和具身智能数据+VLM/LLM模型,给机器人引入常识,和文字推理的结果。慢思考系统整理出来的机器人知识,是为了后续快系统规划动作做沉淀。
如果没有认知系统,那么机器人就是一个无脑机器人,只是单一的任务执行机器。有了认知能力后,机器人才能自主思考机器人的工作轨迹流程。

机器人的认知系统会在执行前和执行中发挥不同职责。执行前:让机器人听懂指令并结合当前环境,拆分合适步骤;执行中:核心要理解当下状态中,为什么做,以及做了以后会有什么后果。
它是一套:指令下发→指令理解与任务拆解(执行前的认真思考)→结合环境制定期望→控制(执行中的思考)的闭环流程
认知系统会根据当下环境和执行步骤,接收上游感知模块融合物理世界信息与本体传感器数据后的输入制定期望。期望有三种:任务期望、瞬时期望和长时期望, 认知的输出存在不同层级的期望,每个期望各有优劣势。
任务期望:输出控制封装好的技能进行调用,是最高层的任务单,只管叫哪个“技能包”,不管具体怎么走、怎么动。
- 优势:简单明了,容易组合成复杂任务,出错时也方便整体替换某个技能。
- 劣势:它不知道“走到桌子前”的路上突然出现了个纸箱子怎么办。
长时期望:输出长时轨迹或约束条件(无时间概念),是中层的导航图,负责为每个技能规划出一条完整、无碰的空间路径,但不严格要求几点几分到达。
- 优势:有全局视野,能保证整体路径最优、不钻死胡同。
- 劣势:它是一份“静态地图”,无法应对突然窜出来的人。当预想的环境改变时,这个期望无法被快速更新。
瞬时期望:输出瞬时动作,是最底层的实时指挥官,每隔零点几秒就发出一个立即要执行的动作指令,只关注“这一刻”。
- 优势:反应极快,能实时避障、修正误差,鲁棒性高。
- 劣势:毫无远见,只能保证“下一刹那不撞”,如果只靠它,很容易陷在局部,绕不出迷宫。
用一个日常任务来串联讲解:让呆瓜机器人把一杯水从A桌送到B桌。

任务期望:输出的就是上图的四个步骤,它不关心外界的影响,只有这一个串任务执行。
长时期望:会结合物理环境约束进行路线的规划。从当前位置,沿着墙走,绕过障碍区,最终到达A桌正前方0.5米处,路径可以是连续曲线,也可以是一串路点。
瞬时期望:一个瞬时抽象动作指令(通常带有很小的位移或速度)。突然出现了一个皮球在前方,机器人需要快速拐弯绕过皮球,避免被皮球绊倒,影响任务执行。(实际交给控制模块时,会转换为电机的力矩或速度)
五、运动规划与全身控制
运动规划不是粗暴地走过去,而是要让机器人在约束中生成可执行运动。任务规划决定做什么事情,运动规划决定怎么行动到目标位置。
人类执行“走过去拿杯子”这个指令很简单,但机器人要解决一堆约束问题。运动规划要回答:从哪里走?手从哪条路径伸过去?脚踩在哪里?身体要不要前倾?会不会撞到桌子?关节会不会超限?抓取后重心会不会变?运动规划通常分成:
- 全局路径规划:从当前位置到目标区域。
- 局部避障:避开人、椅子、桌角等动态或静态障碍。
- 上肢轨迹规划:手臂如何到达物体附近。
- 抓取规划:手指或夹爪从哪个角度接近。
- 落脚规划:脚下一步踩哪里,是否安全。
- 全身运动规划:腿、腰、手、头如何配合。
全身控制,简称 WBC。就是把机器人身体作为一个整体来控制,而不是把手、脚、腰分开控制。因为有了它,我们才能说人形机器人和普通机械臂有区别。机械臂只需要考虑手怎么动。但人形机器人不是固定的。它站着、走着、转身、弯腰、伸手、搬东西,同时还不能倒。

WBC 要同时满足:手要到目标位置、脚要稳定接触地面、身体不能倒、质心不能跑出支撑区域、关节不能超限、力矩不能超限、脚底不能打滑、动作要平滑、如果有人碰到机器人,要能恢复平衡。它是机器人身体里的“总协调器”。
机器人的任何动作都不是局部动作,而是全身动力学问题。手:我要往前伸。脚:你伸太远我会倒。腰:我可以前倾一点。膝盖:我可以弯一点降低重心。控制器:你们真墨迹,给了我一大堆限制,我得在你们给我这么多限制的条件下算出一个最安全的全身动作。
除了WBC,还要提两个概念:MPC和底层控制。
先说MPC,Model Predictive Control,模型预测控制。它的思路是:机器人不只看当前一瞬间,而是预测未来一小段时间内可能发生什么,然后选择最优控制动作。
人类在走路时不会只考虑“这一毫秒脚怎么动”,还会自然预判“下一步踩哪里、身体会不会歪、前面有没有障碍”。MPC 就是机器人的这种短期预判。
在人形机器人里,MPC 可以用于:预测质心运动、规划落脚点、估计接触力、生成动态步态、协调手部接触和脚部支撑。
不过MPC 的难点也很明显:计算量大,模型误差敏感,真实机器人上的摩擦、接触、柔性、传感器噪声都可能让预测不准。
简单介绍下低层控制。越接近电机,越要精准,稳定。低层控制是最靠近机器人身体的一层。它通常负责:位置、速度、力矩、柔顺控制、关节限位、力矩、温度保护、电流保护等等。
底层控制中要重点说下柔顺控制,这是决定机器人物理行动是否自然的关键概念。机器人和世界接触时,不能像刚性铁块一样硬顶。比如手递杯子给人,如果手臂非常僵硬,人碰到它会很危险;如果夹爪太硬,可能捏碎杯子。柔顺控制让机器人像带有弹簧和阻尼一样,能够在接触时缓冲力量。

柔顺控制不是算法,是一种控制思想。 需要控制机器人与环境发生物理交互时,机器人在接触中既能完成任务,又不会产生过大的危险力。柔顺控制有三种方式:
- 被动柔顺:通过机械结构本身变软。如弹簧、柔性材料、串联弹性执行器。
- 主动柔顺:通过控制算法让机器人表现得像“软的”。如阻抗控制、导纳控制、混合力/位控制。
- 变刚度 / 变阻抗控制:机器人根据任务自动调整软硬。如空中快速移动时硬一点,接触人时软一点。
阻抗控制是其中最重要最经典的控制能力。 它不是简单地让机器人到某个点,而是让机器人表现得像一个你设计好的机械系统。 阻抗控制像一个有重量带有阻尼的弹簧,让机器人在碰到东西时,不会硬顶,而是像有弹性的手一样能缓冲,能保持合适的力度。
六、配套工具链
机器软件系统还有一些需要配套的工具箱。支撑软件工程师快速开发、测试、部署的整套工具链。
1、仿真环境:在仿真环境下中,我们可以用1万倍速测试成千上万种极端场景,比如突然冲出来的小孩、断掉的网络、复杂的山路。仿真环境要尽可能1比1还原机器人的各种数据,同时要搭建好期望仿真的世界环境,这个仿真世界的物理规律要符合真实世界的设定,不能汽车在天上365度翻转。仿真可以快速造出大量的机器人长尾场景。进而提升机器人的鲁棒性。现在很多公司在训练机器人的时,会用真实数据+仿真数据并行训练。
2、SDK:现阶段的机器人技能,还没有很强的泛化能力,机器人的技能指令还需要依赖人工编排,以及VLA模型的预训练实现。为让二次开发者快速控制机器人的各项功能,需要将机器人的各项元技能封装成SDK包供二次开发者使用。一般有五种分类:本体控制类、传感器类、机器人中间件类、仿真类 、云端类

3、数据飞轮:当机器人投入到生产环境下,如果机器人获得了数据使用授权和脱敏后,再将遇到的困难场景数据传回云端。这些数据被清洗、标注,用来重新训练模型。利用训练好的数据提升机器人能力后,再通过OTA升级给所有机器人。这就形成了一个“越用越聪明”的数据飞轮。
写在最后
叽里咕噜地说了一堆,让我们再回到那个问题:机器人软件系统到底是什么?
我觉得,它是一张将物理世界和数字世界编织在一起的纽带。它决定了机器人的能力边界和安全底线。它是工程师和产品经理对“一个机器人应该怎样存在并服务于人”这个问题的系统化回答。
如何让机器人软硬件更好地结合到一起为物理世界创造价值,还需要更多的具身智能从业者一起努力。作为一个机器人行业的产品经理,我这两篇文章想让大家知道机器人大概是怎么回事。没有将每个概念写特别深入。同时希望大家下一次看到扫地机器人躲开你家的猫咪时,浮现出这篇文章里的只言片语。
许多资本和媒体都在吹捧具身智能又达成了某个目标。身为从业者,我知道它现在距离真正帮助人类工作还有很长的路要走,我清楚它的边界和局限性。还有很多东西需要定义。
比如说VLA的黑盒性怎么解?VLA真的是对的路径么?怎么具身智能的好数据?(真实?仿真?长尾数据?)怎么商业化?纯粹卖本体?软件能力如何收敛?安全边界怎么定义?泛化能力怎么提升?
具身智能的从业者需要大量的知识,尤其是工程师和产品经理。优秀的具身智能产品经理需要完整的机器人知识体系,这和其他行业的产品经理不同。因为具身智能的产品决策是要影响真实世界的。希望从业者能对机器人保持敬畏,它不是一次普通的技术升级。
最后说几个反常识性观点吧,当作文章最后的留白。
- 灵巧手不需要五指,三指就够用,复杂场景可升级成四指
- 感知—思考—行动,未必适用全部场景。行动—感知—思考—行动,可能更容易解决问题。
- 卡通非人体形态的机器人卖得会更好。
- 以后卖机器人周边产业的公司,会比很多做机器人的公司,创造更多商业价值
本文由 @糊研乱宇 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议

起点课堂会员权益




分布式协作和中间件确实是机器人软件的核心痛点。没有ROS2这种标准通信框架,不同团队写的模块根本没法对接,更别提复用和替换。这个方向值得持续投入。