从随机动作块到真实闭环Diffusion 与 Flow 策略的执行账本TL;DR场景Diffusion 或 Flow 策略输出平滑动作只完成候选轨迹生成真实闭环还要回答动作数据合同、数值求解时限、Action Chunk 衔接、滚动时域新鲜度、约束裁决和低层跟踪五个独立问题。结论把模型→Policy 方框展开为五层执行账本动作数据合同、生成参数化与求解器、训练/推理分账、Receding Horizon 与低层控制解耦、同步/异步延迟账本 RTC 等异步衔接方案。产出动作数据合同 10 字段表 Diffusion/Flow 参数化对比 MSE 平均化准确边界 同步执行延迟分解 异步 Action Chunking 三类账 6 种块衔接方案 4 种约束与安全选项 失败定位表。版本矩阵维度状态说明动作数据合同 10 字段✅ 已验证observation_time / action_time / control_mode / frame_id / units / dt·horizon / normalizer_version / valid_mask / embodiment / terminationDDPM 基础✅ 已验证通过逐步加噪与反向去噪学习生成分布动作策略可预测噪声、A_0、速度或其他目标Diffusion Policy 核心设计✅ 已验证条件去噪扩散 Receding Horizon 视觉条件 时间序列扩散 TransformerCNNFiLM 与 Transformer-based DDPM 两种实现Diffusion Policy 实验结论✅ 已验证4 个机器人操作基准 15 个任务平均比当时 SOTA 46.9%论文给出条件但非任意机器人实时性或安全保证ACTAction Chunking Transformer✅ 已验证学习动作序列的生成模型用于缓解误差累积与非平稳示教问题π0 架构✅ 已验证在预训练视觉语言模型之上使用 Flow Matching 动作架构在多种机器人数据上训练Flow Matching 数学✅ 已验证学习随生成时间 τ 变化的向量场 dA(τ)/dτ v_θ(A(τ), τ, c)通过数值积分得到数据分布样本Flow Matching 与通用 ODE 求解器✅ 已验证Flow Matching 原始工作描述为对条件概率路径向量场的回归可使用通用 ODE 求解器Flow 不等于一步就能执行Diffusion 不等于必然很慢✅ 已验证实际 NFE、蒸馏、求解器阶数、动作维度、条件编码缓存和硬件共同决定延迟MSE 平均化准确边界✅ 已验证仅在条件分布存在间隔大的多模式如左绕 / 右绕时 MSE 才会产生不可执行均值多峰 ≠ 必须用生成式Receding Horizon 不等于低层闭环✅ 已验证策略更新较低频伺服控制器仍需在更高频率计算电流/力矩/速度/位置命令Real-Time ChunkingRTC✅ 已验证NeurIPS 2025 工作针对 Diffusion / Flow Action Chunk Policy 推理时延执行当前块时并行生成下一块冻结确定会执行的动作前缀对其余部分 Inpainting论文称可在不重新训练策略的情况下应用普通 Action Chunking 块边界问题✅ 已验证RTC 论文指出普通 Action Chunking 仍可能在块边界出现暂停或分布外突跳同步执行充分条件✅ 已验证T_e2e,p99 M B_exec 替代 T_policy hΔt前者更接近实际门槛约束与安全四种选项✅ 已验证约束投影 / Guidance / 规划器筛选 / 独立安全门禁前三种能提高可行性但不能替代最后一种“Diffusion Policy 某条固定公式”❌ 不成立网络可预测噪声 / A_0 / 速度参数化Diffusion Policy是一类条件扩散动作生成“MSE 一定失败 / 生成式一定更优”❌ 不成立模型选择应由条件动作分布、数据覆盖、延迟预算、安全架构决定“10 条 Seed 安全”❌ 不成立候选可能都属于同一模式筛选器若无可靠动力学与约束只是 10 次暴露风险“Receding Horizon 电机控制闭环”❌ 不成立策略负责到哪里控制器负责每个控制周期怎样稳定到达“RTC 独立安全层”❌ 不成立RTC 处理推理与执行衔接独立安全层负责约束、拒绝和强制停止“动作块平均能解决跳变”❌ 不成立可能混合不同观察和意图必须先定义承诺前缀、版本和衔接语义摘要Diffusion 或 Flow 策略输出平滑动作只完成候选轨迹生成。真实闭环还需要动作数据合同、数值求解时限、Action Chunk 衔接、滚动时域新鲜度、约束裁决和低层跟踪。本文把这些环节拆成可观测执行账本。关键词Diffusion Policy、Flow Matching、Action Chunk、Receding Horizon、RTC目录核心结论第一层先定义动作数据合同第二层Diffusion 与 Flow 生成的是什么条件编码也需要时间语义MSE 平均化的准确边界第三层训练与推理流程必须分账第四层Receding Horizon 不是低层闭环第五层同步与异步延迟账本动作块衔接不是简单平均约束与安全四种选项不能混称明确标注的执行伪代码失败定位表结语FAQ核心结论Diffusion 或 Flow 策略输出一段平滑动作只证明生成模型在训练分布附近产生了连续序列。真实机器人还要回答五个彼此独立的问题这段序列的单位、坐标系和时间戳是否正确生成参数化与数值求解器是否按时完成新旧 Action Chunk 是否连续且基于足够新的观察动作是否满足机器人与环境约束低层控制器能否稳定跟踪。动作块建模、生成模型、采样积分器、滚动时域执行和低层控制不能被压成一个Policy方框。[H-P01] Diffusion Policy 把视觉运动策略表示为条件去噪扩散过程并将 Receding Horizon、视觉条件和时间序列网络作为关键设计。[H-P02] π0 则在预训练视觉语言模型之上使用 Flow Matching 动作架构并在多种机器人数据上训练。两者都能建模动作分布但论文中的任务结果只说明各自实验设置不构成任意机器人上的实时性或安全保证。第一层先定义动作数据合同设一个动作块为[A_t[a_t,a_{t1},\ldots,a_{tH-1}]\in\mathbb{R}^{H\times D}]其中 (H) 是预测步数(D) 是单步动作维度。这个矩阵本身没有执行语义。(a) 可能是关节位置、关节增量、速度、力矩、末端位姿、夹爪开度或混合控制量相同数字在不同合同中可能产生完全不同的物理行为。训练与推理数据至少要固定以下字段字段必须说明的内容缺失后的典型后果observation_time图像、状态和语言条件各自采样时间模型基于旧画面生成新动作action_time示教动作实际生效时间而非日志写入时间学到错误的感知—动作相位control_modepositiondelta-positionvelocitytorque 等数值可用但物理语义错误frame_idbase、world、camera、tool 等坐标系方向或旋转轴错置unitsm、mm、rad、degree、N、N·m尺度灾难dt与horizon单步周期、块长度、允许抖动推理块与执行调度不匹配normalizer_version每维缩放、裁剪和反归一化版本离线正常、上线幅值异常valid_maskPadding、缺测、终止后的无效动作模型把补零当真实策略embodiment机器人、关节顺序、工具、限位版本跨机体动作映射错误termination成功、失败、人工中止、急停无法学习何时结束或退出机器人动作数据最危险的问题常不是模型结构而是看似相同的张量实际来自不同时间、坐标系或控制模式。上线前应对每批数据做单位、维度、时间单调性、关节顺序、限位和归一化可逆性检查并保存转换版本不能只靠训练 Loss 发现合同错误。第二层Diffusion 与 Flow 生成的是什么Diffusion 动作块在一种常见 DDPM 参数化中对真实动作块 (A_0) 加噪[A_k\sqrt{\bar{\alpha}_k}A_0\sqrt{1-\bar{\alpha}_k}\epsilon,\quad \epsilon\sim\mathcal{N}(0,I)]网络在条件 (c) 下预测噪声[\mathcal{L}\mathbb{E}\left[|\epsilon-\epsilon_\theta(A_k,k,c)|^2\right]][H-P05] DDPM 建立了通过逐步加噪与反向去噪学习生成分布的基本形式。动作策略可以预测噪声也可以采用 (A_0)、速度参数化或其他目标Diffusion Policy不是某一条固定公式。推理时从噪声动作块开始经若干反向步骤得到候选 (\hat{A}_0)。网络结构负责估计去噪方向调度器和求解器负责把这些方向离散成采样轨迹。步数、时间网格、随机项、Guidance 和数值精度都会改变延迟与输出不能把模型前向一次当作完整策略耗时。Flow Matching 动作块Flow Matching 学习随生成时间 (\tau) 变化的向量场[\frac{dA(\tau)}{d\tau}v_\theta(A(\tau),\tau,c)]从基分布出发通过数值积分得到数据分布中的动作块。[H-P06] Flow Matching 的原始工作把它描述为对条件概率路径向量场的回归并可使用通用 ODE 求解器。[H-P02] π0 报告使用建立在 VLM 上的 Flow Matching 架构生成机器人动作。Flow 不等于一步就能执行Diffusion 也不等于必然很慢。实际 NFE、蒸馏、求解器阶数、动作维度、条件编码缓存和硬件共同决定延迟。工程文档应分别记录模型参数化、积分器、步数与端到端时间。条件编码也需要时间语义动作生成网络的条件通常包括相机特征、语言指令、本体状态、上一动作和任务阶段。条件可以通过拼接、FiLM、交叉注意力或独立 Token 注入这些结构差异本身不保证模型真的使用了每个条件。验收时应分别屏蔽视觉、语言和本体状态交换时间顺序并比较动作分布变化。若去掉关节速度后输出几乎不变模型可能无法处理动态起点若交换两帧图像仍得到相同动作它可能只依赖静态外观。条件缓存也要进入延迟账本。语言编码可在指令不变时复用视觉与本体状态却通常必须随控制轮次更新。为了缩短延迟而复用旧视觉特征会把计算优化转化为状态陈旧问题。系统应记录每个条件的采样时间、编码完成时间和被策略消费的时间使用最大条件年龄而不是单一观察时间评价新鲜度。MSE 平均化的准确边界常见说法是回归会把两种动作平均成危险动作所以必须用 Diffusion。准确说法应更窄。在平方损失下确定性回归器倾向于条件均值。当条件分布存在间隔很大的多个动作模式例如障碍物可从左或右绕行均值可能落在障碍物中间这是多峰分布下的风险。若任务在给定观察下近似单峰、动作模式经过高层决策消歧或回归目标本来就是连续控制最优值MSE 并不会必然失败。反过来生成模型虽能表达多峰也可能模式坍缩、产生低概率危险样本或耗时过长。模型选择应由条件动作分布、数据覆盖、延迟预算和安全架构决定而不是由生成式一定优于回归式的口号决定。第三层训练与推理流程必须分账训练流程至少包含按真实时间切片 Observation 与 Action Chunk转换到统一坐标和控制模式应用固定版本归一化生成有效 Mask随机采样扩散或 Flow 时间计算只覆盖有效动作的损失按机体、任务、速度和接触阶段分桶评估。推理流程则是同步传感器与机器人状态构造带时间戳条件生成动作块反归一化与动作适配执行约束检查写入动作缓冲由低层控制器按自身周期跟踪。训练网络从未直接接触的任何变换都必须进入部署合同和回放测试。随机 Seed 只产生不同数值候选不自动构成有意义的策略多样性。候选可能都属于同一模式也可能差异来自采样噪声而非真实任务歧义。需要测模式覆盖、任务等价类、候选间距离、成功率、危险率和排名稳定性。更不能因为采样十条再选一条就声称安全筛选器若没有可靠动力学与约束十条只是十次暴露风险。第四层Receding Horizon 不是低层闭环Action Chunking 常预测 (H) 步但每轮只执行前 (h) 步然后用新观察重新规划。这样可以减少单步策略调用又避免整块开环执行。ACT 学习动作序列的生成模型用于缓解误差累积与非平稳示教问题Diffusion Policy 也把 Receding Horizon 作为关键组成。[H-P03][H-P01]但滚动重规划不等于电机控制闭环。策略通常在较低频率上更新动作参考伺服控制器仍需在更高频率根据编码器、力传感器和动态状态计算电流、力矩、速度或位置命令。策略可以生成到哪里控制器负责每个控制周期怎样稳定到达。执行前缀 (h) 的大小是系统参数过大时观察更新慢、错误持续久过小时策略调用频繁、容易耗尽延迟预算。它应依据任务动态、接触风险、控制频率、推理延迟分布和动作块质量共同确定不能从论文示例直接复制。第五层同步与异步延迟账本同步策略同步执行通常是停止或保持当前参考采集观察等待策略完成再下发新动作。端到端延迟应拆为[T_{e2e}T_{sense}T_{sync}T_{pre}T_{condition}T_{sample}T_{adapt}T_{safety}T_{transport}]还要记录调度抖动、GPU 排队、首次编译和网络尾延迟。对于当前块继续执行、下一块必须在缓冲耗尽前到达的具体设计一个充分而非通用的条件是[T_{e2e,p99}M B_{exec}]其中 (B_{exec}) 是已安全排队动作的剩余执行时间(M) 是时钟、抖动和切换裕度。原初稿中的 (T_{policy}h\Delta t) 只在特定前缀缓冲定义下近似成立若系统会暂停、保持最后命令、预测未来状态、并行计算或允许降频门槛都不同。异步 Action Chunking[H-P04] Real-Time ChunkingRTC针对 DiffusionFlow Action Chunk Policy 的推理时延在执行当前块时并行生成下一块它冻结确定会执行的动作前缀并对其余部分做 Inpainting且论文称该方法可在不重新训练策略的情况下应用。论文同时指出普通 Action Chunking 仍可能在块边界出现暂停或分布外的突跳。异步执行消除了等模型算完才动的停顿却增加三类账下一块使用的观察已经多旧当前块中哪些动作不可再改模型完成时机器人真实状态与预测起点差多少。RTC 是一种处理这些矛盾的方法不是唯一方法也不能替代独立安全层。动作块衔接不是简单平均新旧块的接缝可以采用多种工程方案硬切换仅在位置、速度、加速度和接触模式差异均低于阈值时使用重叠融合对重叠区加权但接触动作或绕障模式不能盲目平均左绕与右绕的均值可能不可行状态条件化下一块显式以当前关节、末端速度、夹爪和接触状态为起点Warm StartInpainting保留将执行前缀只生成可修改后缀末端约束要求块首尾满足连续性、速度或动力学边界低层限幅控制器施加速度、加速度、Jerk 和力矩变化限制但它不能修复高层错误路线。评价不能只看动作曲线是否光滑。还要测接缝位置速度加速度跳变、接触模式切换、跟踪误差、块边界失败率、缓冲欠载次数和观察年龄。约束与安全四种选项不能混称约束投影把生成动作映射回关节限位、速度范围或简单凸集合投影后的轨迹可能离数据分布很远也未必避碰。Guidance在采样或积分时加入目标与代价梯度它依赖可微、尺度正确且足够可信的代价。规划器筛选生成多个候选后用碰撞、动力学或任务代价排序质量受候选覆盖和评估模型限制。独立安全门禁在策略之外拥有否决权检查状态新鲜度、关节与工作区、碰撞、力力矩、速度、网络与看门狗并可触发 Hold、撤退或急停。前三种能提高可行性但都不能自动替代最后一种因为生成模型、投影器和规划器可能共享同一错误假设。明确标注的执行伪代码以下仅是架构伪代码未针对任何机器人验证while system_state RUNNING: obs synchronized_snapshot() if stale(obs) or invalid(obs): enter_hold(state_invalid) continue proposal policy.generate_chunk(obs, deadline) action action_adapter.denormalize_and_map(proposal) verdict safety_gate.check(action, obs, robot_limits) if not verdict.accepted: enter_hold(verdict.reason) continue prefix stitch_with_active_buffer(action, current_state) executor.enqueue(prefix) feedback monitor.read() if deadline_miss(feedback) or no_progress(feedback): enter_recovery(feedback.reason)真实实现还需要线程安全、时钟同步、队列上限、取消语义、控制器接口和硬件急停不应把这段伪代码直接部署。失败定位表现象优先检查不应先做的事动作方向整体相反坐标系、关节顺序、Delta 定义增加采样步数每个块内部平滑但边界突跳观察年龄、起点状态、缓存与 Stitch只调低层滤波推理偶发停顿p99 分阶段延迟、GPU 排队、缓冲余量只看平均 FPS多 Seed 都撞同一障碍数据模式覆盖、条件是否区分、筛选器继续增加 Seed 数离线回放正常、真机幅值过大归一化版本、单位、控制模式、时钟重新训练全部模型安全投影后轨迹抖动投影不连续、约束冲突、距训练分布过远假定合法即自然接触后持续用力力反馈、终止条件、块长度、低层力控只依赖视觉策略长延迟时还能动但任务失败异步状态陈旧、冻结前缀过长、预测起点漂移把无停顿当实时成功结语Diffusion 与 Flow 为机器人策略提供了表达多峰动作分布和长动作块的工具但它们只解决如何生成候选动作的一部分。动作是否可执行取决于数据合同是否按时取决于求解器和尾延迟是否连续取决于滚动执行与块衔接是否安全取决于独立约束与监控是否稳定最终还取决于低层控制。正确的工程路径不是看到平滑轨迹就宣布闭环完成而是建立完整账本动作张量的物理语义、训练与推理转换、采样 NFE、同步或异步调度、缓冲余量、观察年龄、接缝指标、安全否决和控制跟踪。只有这些合同同时成立随机动作块才真正变成机器人可以按时、安全、连续执行的动作。FAQFlow Matching 就没有去噪步骤吗它通常通过学习向量场并数值积分生成样本仍可能有多步求解但不应机械套用 Diffusion 的参数化描述。Action Chunk 直接平均能解决跳变吗可能暂时变平滑却会混合不同观察和意图必须先定义承诺前缀、版本和衔接语义。RTC 能替代 Safety Gate 吗不能。RTC 处理推理与执行衔接独立安全层负责约束、拒绝和强制停止。错误速查卡症状根因定位修复动作方向整体相反坐标系 / 关节顺序 / Delta 定义错置动作数据合同第一层缺失核对frame_id/control_mode/embodiment字段检查归一化是否对齐轴冻结动作数据合同 10 字段上线前做单位、维度、时间单调性、关节顺序、限位、归一化可逆性检查离线正常、真机幅值过大归一化版本 / 单位 / 控制模式 / 时钟错位检查normalizer_version与action_time对比离线和在线的每维缩放归一化固定为版本化工件切换版本必须重测保存转换版本链每个块内部平滑但边界突跳观察年龄过大新块起点未基于当前状态缓存与 Stitch 不一致检查stale(obs)/ 最大条件年龄 / 块衔接策略显式定义承诺前缀 版本 衔接语义用状态条件化或 Warm Start推理偶发停顿p99 分阶段延迟 / GPU 排队 / 缓冲余量不足拆分 T_e2e T_sense T_sync T_pre T_condition T_sample T_adapt T_safety T_transport用 T_e2e,p99 M B_exec 替代 T_policy hΔt按数据面调优多 Seed 都撞同一障碍数据模式覆盖不足 / 条件未区分 / 筛选器单一检查数据多模态覆盖、候选间距离、模式覆盖指标增加模式覆盖、任务等价类、候选间距离、成功率、危险率、排名稳定性测试安全投影后轨迹抖动投影不连续 / 约束冲突 / 距训练分布过远检查投影后分布与训练集分布的 KL / 距离约束投影 Guidance 规划器筛选组合不要假定合法即自然接触后持续用力力反馈缺失 / 终止条件不当 / 块长度过大 / 低层力控未启用检查termination字段与低层力控接口启用低层力控合理设置块长度与终止条件不要只依赖视觉策略长延迟时无停顿但任务失败异步 Action Chunking 状态陈旧 / 冻结前缀过长 / 预测起点漂移记录观察年龄、冻结前缀、模型完成时真实状态用 RTC 等异步方案但不要替代独立安全层监控最大条件年龄Diffusion Policy被当某条固定公式动作策略可预测噪声 / A_0 / 速度参数化文档中是否只描述了 DDPM 噪声预测工程文档分别记录模型参数化 / 积分器 / 步数 / 端到端时间误把生成式 一定优于回归式多峰 ≠ 必须用生成式MSE 边界被误读条件动作分布是单峰还是多峰数据是否覆盖多模式按条件动作分布、数据覆盖、延迟预算、安全架构决定不要凭口号选型误把10 条 Seed 安全候选可能都属于同一模式测模式覆盖、任务等价类、候选间距离、危险率筛选器若无可靠动力学与约束10 条只是 10 次暴露风险误把 Receding Horizon 当电机控制闭环策略负责到哪里控制器负责每个控制周期怎样稳定到达策略频率 vs 控制器频率编码器 / 力传感反馈是否进入控制器短前缀重规划 高频反馈各自关闭不同环路显式划分两环责任误把 RTC 当 Safety GateRTC 处理推理与执行衔接独立安全层负责约束、拒绝、强制停止系统是否把 RTC 之外的安全检查独立布置保留独立安全门禁RTC 不替代 Safety Gate块衔接直接平均接触 / 绕障模式被平均后可能不可行检查接缝位置 / 速度 / 加速度跳变、接触模式切换显式选择 6 种衔接方案之一硬切换 / 重叠融合 / 状态条件化 / Warm Start / 末端约束 / 低层限幅伪代码被直接部署标注的未针对任何机器人验证被忽略真实实现是否补齐线程安全、时钟同步、队列上限、取消语义、控制器接口、硬件急停补齐生产化要素不能直接部署工程示例伪代码论文示例 hΔt 被原样复制同步执行充分条件被简化任务动态 / 接触风险 / 控制频率 / 推理延迟分布 / 动作块质量是否独立评估重新评估 h 大小用 T_e2e,p99 M B_exec 校准valid_mask缺失导致模型学错Padding / 缺测 / 终止后的无效动作被当成真实策略检查有效 Mask 是否在训练时正确应用加入 valid_mask 字段损失只覆盖有效动作embodiment字段漂移跨机体动作映射错误关节顺序、工具、限位版本未冻结检查 embodiment 字段是否随数据集更新Embodiment 作为版本化工件切换 embodiment 必重训 / 重测Flow Matching 误套用 Diffusion 公式训练目标和数值路径不能混写文档是否清晰描述向量场 数值积分路径Flow Matching 向量场 数值积分Diffusion 噪声 去噪分别记账同步执行时仍出现块边界突跳Action Chunking 块边界分布外 推理未按时普通 Action Chunking 在块边界可能暂停 / 分布外突跳用 RTC 异步衔接监控缓冲余量与观察年龄保留独立安全层作者武子康的个人博客