具身智能策略模型:Diffusion Policy、OpenVLA 与 π0
0先建立共同框架符号含义SO101 中对应内容otobservation环境观察顶视 / 腕部相机图像qtrobot state本体状态关节角、夹爪位置、末端状态ℓlanguage instruction“把红色积木放进盒子”at单步动作关节目标、末端位姿增量、夹爪命令Ataction chunk动作块[at,at1,...,atH−1]三类模型本质都在学习区别主要在于动作是连续值还是离散 token以及模型通过什么方式生成动作。模型核心问题动作形式最关键能力Diffusion Policy如何生成自然连续的操作轨迹连续动作块多步去噪生成轨迹OpenVLA如何让 VLM 看懂指令并输出动作离散 action token视觉语言理解π0如何同时拥有 VLM 理解和连续控制连续动作块Flow Matching 连续生成1Diffusion Policy核心关键词连续动作、动作块、加噪去噪、多峰分布、滚动执行。1.1 它解决什么问题普通行为克隆常写成atπ(ot,qt) 即根据当前图像和机器人状态直接预测下一步动作。Diffusion Policy 更关注未来一段完整动作At[at,at1,...,atH−1]例如机器人抓杯子时模型生成的不是一个“向前移动”的单点命令而是一小段连续过程动作阶段可能内容接近机械臂朝杯子移动对准调整末端位置与角度下移接近杯口或把手抓取夹爪闭合抬起物体离开桌面转移向目标位置移动因此它更像是在生成一条“可执行轨迹”而不是独立预测每个时刻的动作。1.2 为什么不直接回归动作真实机器人任务常常有多个合理解。例如抓取杯子可以从左边接近也可以从右边接近。若直接使用 MSE 回归 模型容易把多种专家轨迹平均掉得到一条“中间路线”。但中间路线可能撞上障碍物 机械臂姿态不自然 无法正确抓取 不符合任何一条真实专家轨迹。Diffusion Policy 不只学习一个平均动作而是学习动作分布p(At∣ot,qt) 也就是在当前场景下哪些动作轨迹都可能是合理的。1.3 训练逻辑训练时从专家动作块 A0 出发逐步加入随机高斯噪声 变量含义A0专家真实动作轨迹Ak加噪后的动作轨迹k当前噪声等级ϵ随机高斯噪声ϵ^θ模型预测出的噪声模型输入(image, state, noisy action, noise level)“这段动作现在很乱但根据图像、机器人姿态和任务上下文它应该怎样被修正回来。”1.4 推理逻辑推理时反过来随机噪声动作→多次去噪→连续专家风格动作阶段动作状态初始完全随机的动作轨迹第一次修正大致朝目标方向靠近中间修正末端开始对准、姿态更自然最后修正形成完整抓取或放置轨迹最终获得At[at,at1,...,atH−1]但机器人通常不会把整个动作块一次执行到底而是预测16步→执行前4步→重新观察→再预测16步这叫Receding Horizon Control滚动时域控制。它的核心意义是真实环境随时会变化所以机器人要不断“看—动一点—再看”。Diffusion Policy从随机噪声动作中逐步去噪生成一段连续、自然、接近专家示范的动作轨迹。2OpenVLA2.1 它解决什么问题OpenVLA 想让机器人像视觉语言大模型一样理解任务图像语言指令→动作例如“把红色积木放进左边的盒子。”模型需要同时理解信息模型要判断什么图像哪个是积木、哪个是盒子、手臂在哪里语言红色、左边、放进去分别代表什么状态当前机械臂能否直接抓到物体动作接下来该向哪里移动、何时夹爪闭合它的关键思想是把机器人动作也变成类似文字 token 的离散符号让 VLM 像生成句子一样生成动作。2.2 VLM Backbone 是什么VLM Backbone 可以理解为模型中负责“看懂图像和理解语言”的主干大脑。模块主要作用视觉编码器将图像转换成视觉特征Projector把视觉特征映射到语言模型可理解的空间语言模型骨干融合图像、指令和历史 token动作输出头预测接下来应该输出哪些 action token所以 OpenVLA 的逻辑不是语言→动作 而是图像语言VLM理解→动作token2.3 Action Token 是什么机器人原始动作是连续数值例如at[Δx,Δy,Δz,Δr,Δp,Δy,g] 其中 g 可以是夹爪状态。例如[0.012,−0.005,0.008,0.00,0.03,−0.01,1]OpenVLA 会把每个连续维度切成多个区间0.012→第158个区间→token 158因此连续动作→离散动作token 推理完成后再反量化token 158→0.012最容易混淆的一点Action token 不是语言转成的动作向量。正确顺序是图像语言→VLM理解任务→预测离散动作token→反量化为连续动作动作 token 的本质是连续机器人动作离散化后的编号。2.4 训练逻辑内容含义yi专家动作对应的正确 tokenpi模型预测该 token 的概率Cross Entropy提高正确 token 的预测概率2.5 推理逻辑图像语言→z1→z2→...→zD 最后[z1,z2,...,zD]→continuous actiontoken 输出反量化后动作[158,115,148,...][0.012,−0.005,0.008,...]OpenVLA把连续动作离散成 token让 VLM 像生成文字一样生成机器人动作。3π03.1 它想解决什么问题π0 想同时保留两类模型的优点OpenVLA 的优点Diffusion / Flow 的优点能看懂图像和语言能生成自然连续动作能识别物体、颜色、空间关系更适合精细轨迹控制能利用视觉语言预训练不需要把动作强行离散化所以 π0 的核心表达是VLM理解任务FlowMatching生成连续动作它不是只追求“知道该抓哪个物体”还要能在真实机器人上输出高质量控制轨迹。3.2 模型分工模块主要职责VLM Backbone看图、理解语言、判断任务语义Robot State 输入告诉模型机械臂当前姿态Action Expert专门负责生成机器人动作Flow Matching Head预测动作应当如何从噪声逐渐变正确VLM Backbone 负责判断“我要把哪一个物体放到哪里”Action Expert 负责判断“SO101 的各关节接下来该如何连续运动”。3.3 输入与输出imagelanguagerobot statenoisy action→action chunk输入作用多视角图像看见目标物、机械臂、桌面与障碍物语言指令明确任务目标robot state当前关节、夹爪、底盘或末端状态noisy action chunk当前待修正的动作轨迹flow time当前动作处于从噪声到正确动作的哪个阶段输出是连续动作块At[at,at1,...,atH−1]3.4 π0 的 token 和 OpenVLA 不一样OpenVLA 中token离散动作类别 π0 中tokenTransformer序列中的一个位置它可能对应文本 token 图像 patch state 表示 连续动作表示。因此不要把 π0 的 action token 理解成 OpenVLA 那种“第158号离散动作类别”。π0 的动作本质仍在连续空间中生成。3.5 Flow Matching 到底学什么Diffusion Policy 的常见说法是预测加入了什么噪声π0 的 Flow Matching 更强调预测动作应该朝正确轨迹移动的速度和方向设专家动作是 A随机噪声是 ϵ在两者之间构造中间动作模型学习一个向量场当前动作状态模型应该做什么动作完全随机先让机械臂大致朝目标物体靠近动作接近目标调整末端高度与姿态接近抓取位置控制夹爪闭合已抓住物体向上抬起并转移所以 π0 不是直接回答“最终动作是什么”而是在不断回答“当前这段动作下一小步该怎么改才能越来越像专家动作”3.6 推理逻辑随机动作块→预测修正方向→更新动作块→重复多次→连续轨迹形式上最终得到的动作块再送往控制器执行。和 Diffusion Policy 一样真实机器人上也通常采用滚动执行生成一段动作→执行前几步→新图像与state→再生成3.7 Pre-training 与 Fine-tuning阶段主要学习内容Pre-training抓取、放置、推拉、开关、物体关系、语言任务理解Fine-tuning特定机器人的关节范围、相机视角、动作尺度、夹爪习惯、任务环境放到 SO101 上训练阶段可以理解为预训练学会“什么叫抓、放、移动、对准”SO101 微调学会“SO101 应该用什么动作完成这些操作”3.8 π0 的工程难点难点原因机器人输入格式统一不同机械臂 state/action 维度不同动作归一化不同关节、夹爪和底盘数值范围差别大图像同步图像、state、action 时间错位会直接损害训练推理延迟多次 Flow 迭代会增加控制延迟安全约束生成动作不代表它一定安全π0VLM 负责理解“做什么”Flow Matching 负责在连续动作空间中生成“怎么做”。3.9π0 的训练与推理细节输入作用图像 语言看懂环境、目标物与任务Robot State(qt)确定机械臂当前真实姿态是动作轨迹的起点Noisy Action (Atτ)告诉模型当前“半成品动作”长什么样Flow Time (τ)告诉模型现在应粗修还是细调输出 (vθ)动作块的修正方向 / 速度推理时随机动作块 (→) 多轮 Flow Matching 修正 (→) 连续 action chunk。动作块内各动作位置可以相互协调因此“接近—下降—闭合夹爪—抬起”不会被当成互不相关的单步命令部署时可执行 chunk 的前几步后重新观察和推理。3.10π0 在 SO101 上的关键工程点项目核心要求时间对齐图像、joint state、action 必须对应同一控制阶段先观察当前状态再记录接下来执行的动作错位会导致动作慢半拍、夹爪时机错误或轨迹抖动。输入统一不同机器人 state/action 维度不同需要 padding缺失相机槽位要 mask避免模型把空图当成真实场景。Normalization关节、夹爪、末端增量数值范围不同训练和部署必须使用同一套归一化统计量模型输出动作后再反归一化。Action 语义必须始终一致训练若使用 joint delta部署就要加回当前真实 joint state夹爪通常保持 absolute例如(0)张开、(1)闭合。ROS2 执行链图像state指令(→)π0policy(→)actionchunk(→)adapter(→)限幅/限速/急停/工作空间检查(→)driverVLM 负责“看懂要做什么”State 负责“知道自己在哪里”Flow Matching 负责“把随机动作逐步修正成连续轨迹”ROS2 安全与控制层负责“判断这条动作能不能安全执行”。4三者最关键的区别维度Diffusion PolicyOpenVLAπ0核心定位连续模仿学习策略视觉语言动作模型连续动作基础模型图像理解有但通常较任务相关强强语言理解可加但不是核心优势核心优势核心优势动作形式连续离散 token连续是否量化动作否是否训练 loss去噪损失Cross EntropyFlow Matching loss推理过程多步去噪自回归 token 生成多步向量场积分适合精细操作强一般强数据与算力门槛中等较高高SO101 初期落地很适合更适合理解和微调更适合理解前沿架构5部署到真实机器人时的统一链路相机图像state指令→模型策略→action→adapter node→安全检查→机器人驱动层级责任学习策略决定“下一步想怎么动”Adapter Node转换坐标系、消息格式、动作频率Safety Node限幅、超时、低电量、急停、工作空间保护Controller / Driver真正发送关节或末端执行命令FSM管理 IDLE、RUNNING、ERROR、RECOVERY 等状态