什么是具身智能

具身智能讨论的不是「模型能不能回答问题」,而是「智能体能不能在物理世界里把事做成」。它把感知、决策与动作执行绑在同一个身体上:机器人用传感器读取环境,用策略模型决定下一步做什么,再通过电机把决策变成真实的位移与操作。判断一个系统是不是具身智能,关键看它有没有形成「感知—决策—控制—环境反馈」的闭环,而不是看它用了多大的模型。

这也解释了它与纯软件 AI 的根本差异:文本模型的输出是一串符号,出错最多是一次答非所问;具身智能体的输出是一组关节力矩,出错会直接撞到物体、撞到人,或者让机械臂把自己拧坏。因此具身系统对实时性、可靠性与安全边界的要求,比离线的推理任务高出一个量级。

具身智能的门槛不在模型参数量,而在闭环:感知要足够快,决策要足够稳,控制要足够准,三者缺一,身体就动不起来。
本文核心知识点
  • 具身智能以物理身体为载体,输出动作而非文本,强调与环境交互的闭环。
  • 感知—决策—控制构成最小闭环单元,三个环节的频率与延迟要求各不相同。
  • 具身智能体架构通常分为感知层、状态估计层、决策层、控制层与本体执行层。
  • 仿真到真机通过域随机化与真实数据微调,缩小仿真与真机之间的差距。
具身智能闭环示意:移动机械臂机器人与半透明仿真剪影由环形箭头连接,中部是发光的决策核心
具身智能的最小闭环:机器人感知环境、形成决策、执行动作,再把结果反馈回感知。

感知—决策—控制闭环

把具身智能拆开看,最小的工作单元就是一个循环:传感器采集环境状态,策略模型据此产生动作决策,控制器把决策翻译成电机的力矩与位置指令,本体执行后环境发生变化,新的状态再次回到感知端。这个循环每转一圈,机器人就向目标靠近一步。

环节输入输出典型技术
感知图像、点云、关节编码器、力矩环境状态与自身状态估计目标检测、位姿估计、状态滤波
决策状态估计、任务指令、历史观测动作序列或目标位姿强化学习、模仿学习、VLA 模型
控制目标位姿、期望轨迹关节力矩或位置指令PID、阻抗控制、MPC、全身控制
本体执行关节指令真实运动与环境变化电机驱动、减速器、末端执行器

三个环节对时间的要求并不一致。感知与决策常以较低频率运行,例如每秒十到三十次;而底层控制回路往往需要每秒上百次以上的刷新率,否则关节会出现抖动甚至失稳。工程上通常把闭环拆成多层:慢环路负责理解任务与规划,快环路负责维持姿态与平衡,两层之间用目标点或轨迹来交接。

# 感知—决策—控制闭环的最小伪代码
state = robot.read_sensors()          # 读取相机、点云与关节状态

while task_running:
    obs = perception.encode(state)     # 感知:把原始数据编码成状态特征
    action = policy.decide(obs, goal)  # 决策:由策略网络给出目标动作
    torque = controller.track(action)  # 控制:把动作转成关节力矩指令
    robot.execute(torque)              # 执行:驱动本体产生真实运动

    state = robot.read_sensors()       # 环境反馈回到感知,闭环成立
    if task_done(state, goal):
        break

伪代码故意写得很短,但真实系统的复杂度都藏在几个函数里:感知要处理多传感器的时间同步与标定误差,决策要权衡探索与利用、长程任务与即时反馈,控制要应对摩擦、间隙与负载变化。理解这几件事各自解决什么问题,比记住某个模型的网络结构更有用。

具身智能体的软硬件架构

一套可用的具身智能体,通常是分层设计的。分层的好处是每一层都能独立测试与替换:感知层换了相机,不影响控制层;决策层换成新模型,也不影响底层稳定性。

  • 感知层:相机、激光雷达、深度相机、惯性测量单元与关节编码器,负责把物理世界转成数字信号。
  • 状态估计层:多传感器融合、时间同步、标定与坐标变换,输出统一的世界坐标与自身位姿。
  • 决策层:任务规划与策略推理,输出技能序列、目标位姿或直接的动作指令。
  • 控制层:把抽象动作翻译成可执行的关节轨迹,用阻抗控制、模型预测控制等方法保证跟踪精度。
  • 本体与执行层:电机、减速器、驱动器与末端执行器,是算法最终落地的地方。
  • 安全层:急停、力矩上限、碰撞检测与工作空间限制,贯穿以上各层。

软件上,这一套通常跑在实时操作系统或带实时补丁的 Linux 上,并通过中间件把节点解耦成可替换的模块。硬件上则要在算力、功耗与重量之间做取舍:把大模型全部塞进机器人本体,往往既费电又发热;更常见的做法是本体内只跑感知与控制,把重推理放到边缘服务器或工作站,通过高速链路保持同步。

分层设计的三条经验
  • 接口先行先定义层与层之间的数据结构,再分别实现,避免后期返工。
  • 可回放把传感器数据录制成日志,让决策与控制的调试可以离线复现。
  • 安全兜底任何一层失效时,都应能落回安全状态,而不是继续执行。

仿真环境与仿真到真机迁移

直接在真机上训练策略代价很高:一次跌倒可能损坏硬件,采集一小时数据要占用整台设备,失败样本的复现也不稳定。因此训练几乎都从仿真开始——在物理引擎里搭建场景与机器人模型,让策略先在虚拟世界里大量试错,再把能力迁移到真机,这一过程通常称为仿真到真机迁移。

迁移的难点在于「两个世界不一样」:真实相机有噪声与畸变,真实关节有摩擦与间隙,真实地面也不是理想的平面。常用对策是域随机化——在仿真中随机化光照、纹理、质量、摩擦系数与传感器噪声,让策略见多识广;再用少量真实数据做微调,把最后的差距补上。

# 仿真环境配置示例:以域随机化缩小仿真与真机的差距
simulator: mujoco
robot: mobile_arm_6dof
scene: tabletop_pick

physics:
  timestep: 0.002
  solver_iterations: 50
  gravity: [0.0, 0.0, -9.81]

randomization:
  friction: [0.4, 1.2]
  mass_scale: [0.8, 1.2]
  camera_noise: 0.02
  light_intensity: [0.6, 1.4]
  texture_pool: 32

episode:
  max_steps: 500
  success_threshold: 0.02
  num_envs: 64

配置里有两个数字值得注意:timestep 决定仿真的物理精度,太小会拖慢训练速度,太大会让接触解算失真;num_envs 决定并行仿真的环境数量,直接关系到单位时间内能采集多少经验。把这两项调对,往往比换一个更复杂的网络结构收益更大。

强化学习与模仿学习

让机器人学会一项技能,主流有两条路线。强化学习让智能体在环境中反复尝试,用奖励信号引导策略向目标靠拢;模仿学习则先由人类演示或专家策略提供正确动作,让模型直接学习「看到什么状态、该做什么动作」的映射。

两条路线各有代价:强化学习的奖励函数难设计,训练样本需求大,但上限高,能学到人类没有演示过的策略;模仿学习样本效率高、行为稳定,但受限于演示数据的分布,遇到没见过的状态容易失败。工程上常见的是先用模仿学习拿到可用初值,再用强化学习在仿真中精调。

# 策略训练循环:强化学习与模仿学习共用的骨架
for iteration in range(num_iterations):
    batch = collector.gather(policy, envs)      # 在并行环境中采集轨迹
    target = compute_targets(batch, gamma)      # 计算折扣回报或行为克隆标签
    loss = objective(policy, batch, target)     # 策略梯度或监督回归损失
    optimizer.step(loss)                        # 更新策略网络参数

    if iteration % eval_interval == 0:
        score = evaluate(policy, eval_envs)     # 定期在固定场景上评估
        logger.record(iteration, score)

无论走哪条路线,都要先把评估做扎实:固定一组评测场景、固定初始状态分布、固定随机种子,否则「这版比上版好」只是一句感觉。很多团队把大量时间花在调模型上,却因为评测不稳定而反复推翻正确结论,反而拖慢了整体进度。