RLDX-1 Technical Report

Paper: arXiv:2605.03269 Code: RLWRLD/RLDX-1 Code reference: main @ ef05cd4a (2026-05-14) Project: rlwrld.ai/rldx-1

1. Motivation (研究动机)

现有 VLA(如 、GR00T N1.x)已经能从 VLM 继承 broad scene understanding 和 language-conditioned generalization,但作者认为这仍主要是“versatile intelligence”:看懂场景、理解指令、泛化物体类别。真正部署到 contact-rich dexterous manipulation 时,还缺少三类功能能力:动态场景中的 motion awareness、依赖过去观测的 long-term memory、以及视觉难以判断接触/重量/滑移时需要的 physical sensing

本文要解决的具体问题不是再做一个只靠视觉和语言的通用机器人策略,而是构建一个能控制多 embodiment(single-arm、dual-arm、humanoid)、能处理高 DoF 手部操作、并能在真实机器人闭环中实时运行的 general-purpose robotic policy。RLDX-1 的目标是在同一 VLA 框架中接入视频历史、proprioception、torque/tactile 等异构输入,并把它们转化为未来 action chunk。

这个问题值得研究,因为 dexterous manipulation 的失败常常不是“没看懂语言”,而是执行层面的时间、记忆和接触信息不足:传送带抓取需要预测运动,Shell Game/Object-in-Box 需要记住被遮挡前的状态,插头插入/倒球/拿鸡蛋需要感知接触力或重量变化。若这些能力能统一进一个 VLA,就能从 demo robot policy 走向更可靠的 real-world robot foundation model。

2. Idea (核心思想)

核心洞察:real-world dexterity 需要的不只是更强 VLM,而是把 cognition、action、physics 分成不同 stream,让高层视觉语言语义、低维状态/动作、稀缺物理信号各自保留建模空间,再通过 joint self-attention 交换信息。RLDX-1 用 Multi-Stream Action Transformer (MSAT) 把这种异构信息融合成 flow-matching action model。

关键创新可以压缩成三点:第一,在 Qwen3-VL 8B 基础上加入 robot-specific VQA、cognition tokens、motion module 和 memory module,使 VLM 输出更适合动作预测;第二,用 MSAT 统一 cognition stream、state/action stream、physics stream,并同时 denoise future actions 和 future physical signals;第三,用 synthetic data、三阶段训练、static graph + kernel fusion 让该模型既覆盖稀有 dexterous 场景,又能真实部署。

或 GR00T N1.6 的根本差异在于:这些 baseline 主要依赖视觉-语言-动作映射,而 RLDX-1 明确把“运动”“历史”“物理接触”作为系统级能力补进架构和训练流程。实验中这种差异在 ALLEX Object-in-Box(91.7% vs 29.2/33.3)和 Franka Spin Tracking(97.9% vs 32.3/26.0)这类需要 memory/motion/physical sensing 的任务上最明显。

3. Method (方法)

3.1 Overall framework:从 RLDX-1-VLM 到 MSAT action denoising

Figure 1 解读:RLDX-1 的整体系统由三块组成:多来源训练数据(public real-world、in-house physical signals、synthetic data)、三阶段训练(pre/mid/post-training)、以及 RLDX-1 policy。左侧强调数据覆盖多个 embodiment 与稀有 dexterous 场景;中间说明先学 general manipulation,再扩展 motion/memory/physics,最后按真实任务适配;右侧显示模型最终同时评测 simulation 和 real-world benchmarks。

Figure 2 解读:给定语言指令 、视频观测 、proprioceptive state 和 physical signals ,RLDX-1 先由 RLDX-1-VLM 产生 cognition representation,再通过 memory module 注入长期历史,最后由 MSAT 联合 physics/action streams 预测未来 个动作。这里的重点是:motion、memory、physics 不是后处理,而是进入同一个 action denoising 模型。

Figure 3 解读:RLDX-1 分为 VLM 和 action model 两部分。VLM 基于 Qwen3-VL 8B,输入 multi-frame video 和 language instruction,通过 motion module 捕捉时间动态,并用 cognition tokens 提取对动作有用的 hidden states;memory module 把历史 cognition features 与当前 cognition features 融合。Action model 则把 cognition/memory、state/action、physical signals 放入 MSAT 的不同 stream,输出 future physical signals 和 future actions。

直觉上,RLDX-1 把“看懂”和“会动”之间的接口做窄:VLM 不直接输出动作,而是输出一组 cognition tokens,让 action transformer 自己在动作空间里 denoise。这样做的好处是,VLM 负责语义和视觉 grounding,MSAT 负责跨模态 control dynamics;当 tactile/torque 数据稀缺时,physics stream 也可以作为 optional stream 打开或关闭,而不会破坏视觉/动作主路径。

3.2 RLDX-1-VLM:robot-specific VQA、cognition tokens、motion module

RLDX-1-VLM 以 Qwen3-VL 8B 为 backbone,但作者认为原始 VLM 缺少 embodied grounding:它可能懂一般图像问答,却不一定能推断机器人当前 end-effector 与目标物之间的空间关系、当前 subtask、以及低层动作含义。因此作者从 robot trajectories 构造 robot-specific VQA,覆盖三类问题:空间关系、intermediate subtasks、以及当前 frame 对应的 low-level actions。

VLM 输出不是直接取最后语言 token,而是追加 个 learnable cognition tokens 。给定视频特征 与语言 token ,输入为

这里 是 cognition token 对应的 hidden states,作为 action model 的高层条件。论文和 released code 都使用 intermediate layer 而非最终 LLM layer;repo 文档和 rldx/configs/model/rldx.py 中默认 select_layer=18,与 Table 2a 中最佳 layer 18 一致。

Motion awareness 来自两个改动。视觉 encoder 中插入 STSS motion module:在第 9 层附近计算 space-time self-similarity,再经 STSSEncoder 残差更新视频特征。LLM 侧则先按时间顺序处理 multi-frame tokens,随后把过去帧压缩成 context token,以降低多帧计算量。论文预训练使用 4 帧,相对 offset 为

3.3 Long-term memory:短视频之外的历史 cognition cache

Memory module 解决的是当前几帧无法判断状态的问题,例如 Object-in-Box 或 Shell Game。RLDX-1 保存最近 个按 action chunk 间隔采样的 cognition features:

论文中 ;mid-training 时 ALLEX 的 action horizon 为 40、FR3 为 16,因此 memory 覆盖 120 和 48 个过去 timesteps。Released code 中 rldx/model/core/rldx.pyTransformerMemory 维护 inference cache,并支持 concat_memory 与 memory dropout;注意 rldx/configs/train_config.py 的默认 memory_length=4 是 CLI 默认值,不应当当作论文配置,论文配置应以文中 mid-training override 为准。

3.4 MSAT action model:flow matching + multi-stream joint attention

Action model 是 flow-matching Diffusion Transformer。训练时采样 denoising timestep 与噪声 ,构造 noisy action chunk:

模型学习 velocity field:

其中 。推理时从 出发,用 Euler steps:

MSAT 的结构是多 stream Transformer:C stream 处理 cognition/memory;A stream 处理 state + noised action;P stream 在 use_physics=True 时处理 torque/tactile。每个 stream 有自己的 normalization 和 QKV projection,但 Q/K/V 会沿 token 维拼接做 joint self-attention,再拆回各 stream 更新。这保留了 modality-specific parameters,同时允许跨模态信息交互。

Physical sensing 还引入辅助 flow-matching objective:给定当前 physical signal 与未来 ,构造 noisy future physical signals ,P stream 预测其 velocity。论文设置 ,使 physics stream 不只是 conditioning,而是被训练去预测未来接触/力反馈动态。

论文公式与 released code 实现差异:核心 noisy action 与 velocity loss 在 rldx/model/core/rldx.py 中与公式一致(noisy_trajectory=(1-t)*noise+t*actionsvelocity=actions-noise、MSE loss)。但论文只写“sample ”,released code 的 sample_time() 通过 beta_dist 采样并乘以 config.noise_s,不是简单 uniform;此外 released code 还包含 Real-Time Chunking (RTC) prefix/guidance 路径,这是工程部署扩展,论文主公式没有展开。

3.5 Synthetic data:用生成视频扩展稀有 dexterous 场景

Figure 4 解读:synthetic pipeline 分两步。Data Generation 先对 source demonstrations 做 scene/task augmentation,再用 IDM 给生成视频打 action labels;Data Filtering 再把 IDM-predicted actions 放进 simulator rollout,用 motion-consistency classifier 比较 rollout video 与 synthetic video,只保留动作和视频一致的样本。

Figure 5 解读:这张图展示同一个 ALLEX demo 如何被扩展:原始视频保持真实动作骨架;task augmentation 改变可执行指令;scene augmentation 通过 I2I/I2V/V2V 改变桌面、物体、光照和背景。它说明 synthetic data 不是随机生成,而是围绕已有 robot trajectory 做可控多样化。

Synthetic data 的关键是“多样化但不能破坏动作标签”。作者使用两类 task augmentation:factorized instruction composition(行为、目标物、放置位置、手型重组)和 skill-primitive-conditioned instruction variation(围绕 pick/pour/push 等 primitive 改写)。Scene augmentation 则在 initial frame 上用 FLUX.2-dev 做 I2I editing,并用 Canny edge 约束结构,再用 I2V/V2V 传播外观变化。Filtering 包括 VLM 评估 instruction following / trajectory plausibility,以及基于 V-JEPA2 frozen encoder 的 motion-consistency probe。

3.6 三阶段训练与实时推理优化

Figure 6 解读:pre-training 数据覆盖 single-arm gripper、dual-arm gripper、humanoid hand,总计约 1.5M episodes:Open-X-Embodiment 870K、DROID 92K、Galaxea 114K、AgiBot gripper 239K、AgiBot hand 36K、Fourier ActionNet 30K、Humanoid Everyday 9K、Synthetic Data 150K。合成 GR-1 数据用于缓解 humanoid dexterous hand 数据稀缺。

Figure 7 解读:mid-training 分 ALLEX 和 FR3 两个目标平台。ALLEX 组合 in-house teleoperation 和三类 synthetic data;FR3 组合 DROID 与带 physical sensor 的 in-house 数据。这样既保留大规模数据带来的泛化,又把 memory/torque/tactile 等新 modality 接入目标 embodiment。

Pre-training 用 100K steps、global batch size 8192、AdamW LR 、5% warmup 后 constant schedule;VLM 除 top 4 layers 外冻结;训练约 195 小时 / 64 NVIDIA H200。Mid-training 用 25K steps、global batch size 1024、AdamW LR ,新增 modality 独立 dropout 0.3,并先做 2K-step alignment warmup,只更新新加 modality-specific parameters;训练约 15 小时 / 64 H200。

Post-training 主要是 task-specific imitation learning,并在 Light Bulb Twisting 等困难任务上加入 RECAP-style RL。作者还专门做推理优化,因为真实机器人闭环中 observation-to-action latency 会让动作过时。

Figure 8 解读:distributional critic 的 value 曲线对任务进展不稳定,而 text prediction critic 更接近单调进展,并能在失败后重试成功的 episode 中反映 recovery。作者用这点说明:把 VLM 的原生 text prediction interface 用作 value prediction,比新初始化 value head 更适合低数据 RL refinement。

Figure 9 解读:dynamic graph 会把 forward pass 切成多个 graph launch,kernel launch overhead 累积;static graph conversion 把配置相关的 RoPE 和 attention mask 等移出 forward,让整个 RLDX-1 forward 可以作为单个 CUDA Graph 运行。

Figure 10 解读:operator fusion 的目标是减少 global memory round-trips。未融合时 RMSNorm、RoPE、attention 分别写回/读回 Q/K;融合后在一个 kernel 中完成 norm、RoPE 和 attention,使输入 load 和输出 store 次数下降。Table 4 显示 all-modality RLDX-1 从 71.2 ms 降到 43.7 ms,速度提升 1.63×。

3.7 Pseudocode(基于 released code)

Code reference: main @ ef05cd4a (2026-05-14) — pseudocode and mapping based on this commit

import torch
import torch.nn.functional as F
 
 
def rldx_train_step(model, batch):
    """Matches rldx/model/core/rldx.py: RLDX.forward -> RLDXActionModel.forward."""
    backbone_inputs, action_inputs = model.prepare_input(batch)
    backbone_outputs = model.backbone(backbone_inputs)
 
    if model.use_memory:
        backbone_outputs = model._apply_memory_training(backbone_outputs)
 
    backbone_outputs = model.action_model.process_backbone_output(backbone_outputs)
    vl_embeds = backbone_outputs.backbone_features
    embodiment_id = action_inputs.embodiment_id
 
    state_tokens = model.action_model.state_encoder(action_inputs.state, embodiment_id)
    actions = action_inputs.action
    noise = torch.randn_like(actions)
    t = model.action_model.sample_time(actions.shape[0], actions.device, actions.dtype)
 
    noisy_actions = (1.0 - t[:, None, None]) * noise + t[:, None, None] * actions
    velocity_target = actions - noise
    action_tokens = model.action_model.action_encoder(noisy_actions, t[:, None], embodiment_id)
 
    sa_tokens = torch.cat([state_tokens, action_tokens], dim=1)
    physics_tokens, physics_mask, physics_velocity = model.action_model.physics.prepare_train(action_inputs, t)
 
    msat_out, _ = model.action_model.model(
        hidden_states=sa_tokens,
        encoder_hidden_states=vl_embeds,
        timestep=t,
        encoder_attention_mask=backbone_outputs.get("backbone_attention_mask"),
        physics_embs=physics_tokens,
        physics_attention_mask=physics_mask,
        return_all_hidden_states=True,
    )
    action_stream = msat_out["action"] if isinstance(msat_out, dict) else msat_out
    physics_stream = msat_out.get("physics") if isinstance(msat_out, dict) else None
 
    pred_velocity = model.action_model.action_decoder(action_stream, embodiment_id)[:, -actions.shape[1]:]
    action_loss = F.mse_loss(pred_velocity, velocity_target, reduction="none") * action_inputs.action_mask
    loss = action_loss.sum() / (action_inputs.action_mask.sum() + 1e-6)
 
    physics_loss = model.action_model.physics.compute_loss(
        physics_stream, physics_velocity, action_inputs.action_mask, physics_mask
    )
    if physics_loss is not None:
        loss = loss + model.action_model.physics.physics_loss_weight * physics_loss
    return loss
def memory_inference_update(model, backbone_outputs, reset_memory=None):
    """Matches RLDX._apply_memory_inference."""
    feats = backbone_outputs["backbone_features"]
    batch, _, dim = feats.shape
    n_q = model._n_cog_tokens
    n_mem_q = model._memory_n_cog_tokens
    n_pass = n_q - n_mem_q
 
    current_all = feats[:, -n_q:, :]
    current_mem = current_all[:, n_pass:, :]
 
    if model._cached_mq is None or model._cached_mq.shape[0] != batch:
        model._cached_mq = current_mem.repeat(1, model._memory_length, 1)
    else:
        shifted = torch.cat([model._cached_mq[:, n_mem_q:, :], current_mem], dim=1)
        if reset_memory is not None and reset_memory.any():
            defaults = current_mem.repeat(1, model._memory_length, 1)
            mask = reset_memory.view(batch, 1, 1).expand(batch, model._memory_length * n_mem_q, dim)
            model._cached_mq = torch.where(mask, defaults, shifted)
        else:
            model._cached_mq = shifted
 
    mem_out = model.memory(inputs_embeds=model._cached_mq).last_hidden_state[:, -n_mem_q:, :]
    if model._concat_memory:
        backbone_outputs["backbone_features"] = torch.cat([current_all, mem_out], dim=1)
    else:
        backbone_outputs["backbone_features"] = torch.cat([current_all[:, :n_pass, :], mem_out], dim=1)
    return backbone_outputs
def msat_block(c_tokens, a_tokens, p_tokens=None):
    """Conceptual version of rldx/model/modules/action_model/msat.py + blocks.py."""
    streams = [c_tokens, a_tokens] if p_tokens is None else [c_tokens, a_tokens, p_tokens]
 
    qkv = []
    for x in streams:
        x_norm = stream_specific_norm(x)
        q, k, v = stream_specific_qkv_projection(x_norm)
        qkv.append((q, k, v))
 
    q = torch.cat([x[0] for x in qkv], dim=1)
    k = torch.cat([x[1] for x in qkv], dim=1)
    v = torch.cat([x[2] for x in qkv], dim=1)
    mixed = joint_self_attention(q, k, v)
 
    split = split_back_to_streams(mixed, [x.shape[1] for x in streams])
    updated = []
    for x, y in zip(streams, split):
        x = x + stream_specific_attention_out(y)
        x = x + stream_specific_swiglu_mlp(stream_specific_norm(x))
        updated.append(x)
    return updated  # [C, A] or [C, A, P]

3.8 Code-to-paper mapping

Code reference: main @ ef05cd4a (2026-05-14) — pseudocode and mapping based on this commit

Paper ConceptSource FileKey Class/Function
RLDX top-level VLA pipelinerldx/model/core/rldx.pyRLDX.forward, RLDX.get_action, RLDXActionModel.forward, RLDXActionModel.get_action_with_features
Qwen3-VL / cognition-token bridgerldx/model/modules/backbone/adapter.py, rldx/model/modules/backbone/modeling_vtc.py, docs/architecture.mdVTCQwen3VLBackbone, cognition-token encode/embed path
Motion awareness / STSSrldx/model/modules/backbone/motion.pyMotionModule, STSSTransformation, STSSEncoder
Long-term memoryrldx/model/modules/memory.py, rldx/model/core/rldx.pyTransformerMemory, _apply_memory_training, _apply_memory_inference
MSAT action modelrldx/model/modules/action_model/msat.py, blocks.py, attention.py, ops.pyMSAT, DoubleStreamBlock, TripleStreamBlock, SingleStreamBlock
Physics stream / auxiliary physical predictionrldx/model/modules/action_model/physics.py, physics_head.py, rldx/model/core/rldx.pyprepare_train, compute_loss, physics_loss_weight
Training launcher/config surfacerldx/experiment/launch_train.py, rldx/experiment/trainer.py, rldx/configs/train_config.pyTrainConfig, CLI overrides for batch/steps/LR/modalities
Model defaultsrldx/configs/model/rldx.pymodel_name, select_layer=18, n_cog_tokens=64, action_horizon, num_inference_timesteps=4, MSAT depth/head settings
Real-time inference optimizationrldx/inference/action_model/engine/, rldx/inference/backbone/, rldx/inference/memory/, docs/inference_server.mdcuda_graph.py, custom_msat_chain.py, fused attention/RMSNorm/RoPE kernels

4. Experimental Setup (实验设置)

Datasets and scale. Pre-training 数据总计约 1.5M episodes:Open-X-Embodiment 870K、DROID 92K、Galaxea Open-World 114K、AgiBot World gripper 239K、AgiBot World hand 36K、Fourier ActionNet 30K、Humanoid Everyday 9K、Synthetic GR-1 150K。Mid-training:ALLEX 使用 in-house teleoperation + 72K synthetic episodes,训练采样 5:5;FR3 使用 DROID 92K + in-house tactile/torque data,训练采样 8:2。

Baselines. Simulation 和 real-world 主要对比 -FAST、、GR00T N1.5、GR00T N1.6;real-robot OpenArm/ALLEX/FR3 主要报告 、GR00T N1.6 与 RLDX-1。

Evaluation metrics. 主要指标是 success rate (%);Card Slide-and-Pick 和 Pot-to-Cup Pouring 用 progress score(阶段完成度 0.33/0.66/1.0 或 0.25/0.5/0.75/1.0);Light Bulb Twisting 用 episode length frames 和 twist attempts(越低越好);inference 用 p50 latency over 300 iterations after 100 warmup。

Training config. 论文报告的 pre-training:4-frame observations offsets ,100K steps,global batch 8192,AdamW LR ,5% warmup,64 H200,195h。Mid-training:25K steps,batch 1024,AdamW LR ,modality dropout 0.3,2K alignment warmup,64 H200,15h。Simulation fine-tuning 默认 60K steps / batch 1024 / LR / 5% warmup;例外:LIBERO batch 256,SIMPLER Google-VM/VA 20K steps,RoboCasa365 250K steps / batch 196。Released repo 对应配置入口是 rldx/experiment/launch_train.py + rldx/configs/train_config.py,但论文级大规模 pre/mid-training 的具体 launch overrides 没有作为单个脚本完全公开,因此上述数字以论文正文为准,不能用 TrainConfig 默认值替代;换句话说,不要把默认值直接替代论文报告值。

5. Experimental Results (实验结果)

5.1 Simulation benchmarks

Figure 11 解读:simulation 评测分两类:classical benchmarks 包括 LIBERO、LIBERO-Plus、SIMPLER Google/WidowX;challenging benchmarks 包括 RoboCasa Kitchen、GR-1 Tabletop、RoboCasa365。前者测试单臂/视觉域迁移/鲁棒性,后者测试更复杂的长程组合和 humanoid manipulation。

Table 1a: Classical simulation success rate (%).

MethodLIBERO ShortLIBERO LongLIBERO Avg.LIBERO-PlusGoogle-VMGoogle-VAWidowX
-FAST93.960.285.564.261.959.048.3
97.185.294.154.658.854.827.1
98.092.096.986.572.768.446.9
GR00T N1.590.076.086.566.352.443.762.0
GR00T N1.697.494.496.772.676.157.157.1
RLDX-198.695.397.886.781.577.471.9

Table 1b: Challenging simulation success rate (%).

MethodRoboCasa KitchenGR-1 TabletopRoboCasa365 Atomic-SComp.-SComp.-UAvg.
-FAST63.6-51.78.01.821.7
62.513.634.66.11.114.8
62.115.439.67.11.216.9
GR00T N1.565.748.043.09.64.420.0
GR00T N1.666.247.661.112.62.626.9
RLDX-170.658.767.319.05.632.1

主要结论:RLDX-1 在所有 simulation benchmark 上都是最高;在难度更高的 GR-1 Tabletop 和 RoboCasa365 上差距更大。尤其 RoboCasa365 composite tasks 上,RLDX-1 的 seen/unseen 组合任务为 19.0/5.6,而 GR00T N1.6 为 12.6/2.6,说明长程组合行为仍是 frontier VLA 的弱点。

5.2 Real-world OpenArm / ALLEX / FR3

Figure 12 解读:真实机器人平台覆盖三种 embodiment:OpenArm + Inspire Hands 是 28-DoF humanoid;ALLEX 是 48-DoF humanoid,带 stereo egocentric cameras;FR3 是 7-DoF 单臂,并加 AnySkin tactile、wrist/third-person cameras 和 torque。这个平台设计对应论文的三类能力测试:versatile intelligence、motion/memory、physical sensing。

Figure 13 解读:OpenArm benchmark 覆盖 Basic PnP、Shelf/Dish Rack spatial placement、Unseen Object、Unseen Task 和 Object Grounding。它主要评测 humanoid 上的 versatile intelligence:能否识别目标、理解空间指令、泛化未见物体/放置任务、以及区分同类物体实例。

Figure 14 解读:OpenArm 测 basic/spatial/unseen/object-grounding 等 humanoid versatile intelligence。RLDX-1 在全部任务上领先;Object Grounding 达 87.5%,而 GR00T N1.6 只有 33.3%,接近三选一随机水平,说明 baseline 能识别类别但 instance-level grounding 明显不足。

OpenArm exact success rates (%): Basic PnP 50.0(vs 41.7 / GR00T 37.5),Directional PnP Shelf 68.8(vs 54.2 / 47.9),Directional PnP Dish Rack 70.8(vs 58.3 / 50.0),Unseen Object 54.2(vs 37.5 / 45.8),Unseen Task 54.2(vs 45.8 / 50.0),Object Grounding 87.5(vs 83.3 / 33.3)。

Figure 15 解读:ALLEX benchmark 的四个任务分别对应 RLDX-1 的三类功能能力:Conveyor Pick-and-Place 测动态物体运动;Object-in-Box Selection 测历史记忆;Card Slide-and-Pick 与 Pot-to-Cup Pouring 测接触力、重量变化等 physical sensing。

Figure 16 解读:ALLEX 是功能能力测试的核心。Conveyor Pick-and-Place 需要 motion awareness;Object-in-Box Selection 需要 long-term memory;Card Slide-and-Pick 和 Pot-to-Cup Pouring 需要 physical sensing。RLDX-1 平均 86.8%,而 和 GR00T N1.6 分别为 44.8% 和 39.1%。

ALLEX exact success/progress (%): Conveyor Pick-and-Place 87.5(vs 29.2 / 50.0),Object-in-Box Selection 91.7(vs 33.3 / 29.2),Card Slide-and-Pick 97.2(vs 55.3 / 62.3),Pot-to-Cup Pouring 70.8(vs 38.5 / 37.5),Average 86.8(vs 44.8 / 39.1)。这些结果直接支撑作者关于 motion/memory/physics 的 claim。

Figure 17 解读:FR3 benchmark 把同样的 motion/memory/physical sensing 要求放到单臂 gripper 平台上:Spin Tracking/Pong Game 测运动理解,Cup Swapping/Shell Game 测记忆,Plug Insertion/Egg PnP 测 tactile/force-aware contact-rich manipulation。

Figure 18 解读:FR3 把相同能力迁移到单臂 + gripper embodiment。RLDX-1 在 Spin Tracking 97.9、Pong Game 81.5、Shell Game 91.7,显示 motion/memory 模块并非只适用于 humanoid;Plug Insertion 和 Egg PnP 的提升则说明 tactile/force cues 对 contact-rich manipulation 有帮助。

FR3 exact success rates (%): Spin Tracking 97.9(vs 32.3 / 26.0),Pong Game 81.5(vs 37.0 / 42.6),Cup Swapping 45.8(vs 12.5 / 25.0),Shell Game 91.7(vs 45.8 / 54.2),Plug Insertion 33.3(vs 20.8 / 16.7),Egg PnP 61.1(vs 45.8 / 37.5),Average 68.5(vs 34.4 / 31.6)。

5.3 Ablations and deployment results

Figure 19 解读:attention map 对比显示 robot-specific VQA 后,RLDX-1-VLM 更集中关注 robot body 和被操作物体,而不是泛化 VLM 的松散视觉区域。这支撑 Table 2b 中 VQA adaptation 从 57.5 提升到 60.9 的定量结果。

Table 2: VLM design choices on RoboCasa Kitchen. Layer 18 最好:Layer 8 = 51.1,Layer 18 = 60.9,Layer 28 = 56.3。Robot-specific VQA 也有效:Qwen3-VL 8B = 57.5,RLDX-1-VLM = 60.9。

Table 3: Synthetic data scale on GR-1 Tabletop. Real only = 41.0;+25% synthetic = 45.6;+50% synthetic = 46.6;+100% synthetic = 50.1。结论是 synthetic data 随规模增加稳定提升,尤其帮助 humanoid 稀有场景覆盖。

Figure 20 解读:Light Bulb Twisting 是需要精细手指接触和旋转控制的 ALLEX 任务,单靠 imitation learning 容易学到低效或不稳定的 twist 轨迹,因此作者用 RECAP 做 RL refinement。

Figure 21a–21b 解读:RL refinement 逐轮降低完成帧数和 twist attempts。RECAP3 达到 frames(353±22)和 attempts(4.1±0.3),相比 BC 的 frames、 attempts,约 3× 改善,并且方差更小。

Table 4: Inference latency p50. RTX 5090 + Intel Core Ultra 7 265K,ALLEX config(dual-view 192×256,4 frames,action horizon 40,4 Euler steps):PyTorch Eager 为 67.0 ms(无 physics/memory)/ 71.2 ms(all-modality);CUDA Graph + Torch.Compile 为 56.9 / 59.6 ms;+ Static Graph Conversion 为 46.2 / 48.9 ms;+ Kernel Optimization 为 41.6 / 43.7 ms,对应 1.61× / 1.63× speedup。

5.4 Limitations and overall conclusion

论文没有单独的 Limitations section。根据正文可见的限制是:RLDX-1 仍依赖大量真实/合成 robot data、64 H200 级别训练资源、复杂 per-embodiment projection 和 deployment optimization;部分能力(如 Plug Insertion 33.3%)虽优于 baseline,但离高可靠真实工业部署仍有距离;released repo 也没有把论文级 synthetic generation/pretraining launch 全部封装成一个可复现实验脚本。

总体结论:RLDX-1 的贡献不是单点 architecture trick,而是把 VLA backbone、multi-stream action modeling、synthetic data、三阶段训练和 real-time inference stack 串成一个系统。实验结果表明,功能能力越强的任务(motion、memory、physics),RLDX-1 相比现有 frontier VLA 的优势越明显,这支持作者“dexterity-first foundation model”路线。