真机仿真器#

在仿真训练中加入真实的观测延迟和网络条件,无需部署到实际硬件。

RLinf 提供两个独立模块——delay_sampler 和 net_emulation——各自由 YAML 中的对应参数控制。两者默认关闭:不配置对应参数时,训练流程不受影响。

观测延迟仿真 (delay_sampler)#

通过 InsertDelay env wrapper 在 chunk_step 和 reset 返回前注入可配置的等待延迟,模拟每个真机的 传感器延迟。

适用场景:测试可变观测时序对策略训练的影响,或为真实世界部署准备策略时, 模拟不同机器人相机和编码器延迟。

支持的分布类型:

类型

参数

适用场景

constant

delay

所有观测使用相同的固定延迟

uniform

min_delay, max_delay

延迟在已知范围内均匀变化

exponential

rate

延迟遵循类似泊松到达的模式

gaussian

mean, stddev

符合真实传感器的抖动,具有典型值和波动范围

所有延迟值单位为秒。

env:
  delay_sampler:
    type: uniform
    min_delay: 0.11       # 110 ms
    max_delay: 0.20       # 200 ms

使用要求:

  • 延迟仅在训练模式下生效,评估不受影响。

  • Wrapper 通过 _setup_env_and_wrappers 按环境实例应用,与 Runner 类型(同步/异步)无关。

网络仿真 (net_emulation)#

通过全局调度器仿真跨 Worker 的网络延迟和带宽限制。设置 cluster.net_emulation.enabled 后,调度器会在 node rank 0 上与其他全局 Manager 一同启动 NetEmulationManager。所配置 Worker 组之间的点对点发送和 广播都会先向它申请一个传输时隙并等待相应的延迟,从而保证每条链路的延迟和每个组 的带宽预算在整个集群内保持一致。广播(Actor 向 Rollout Worker 同步权重即走此 路径)在发送端计费一次、在每个接收带宽组各计费一次,发送方按最慢的接收方等待。

不跨节点的传输不会被仿真:同设备与同节点的数据交换走共享内存 IPC,而非网络。

适用场景:测试在带宽受限或高延迟链路下策略的表现,例如 Env Worker 和 Rollout Worker 部署在不同集群或云区域时。

键

类型

说明

enabled

bool

开启(true)或关闭(false)。默认:false。

symmetric

bool

为 true 时,每对 cross-DC 自动镜像。默认:true。

crossdc_pairs

list

源-目标端点对,每对可配置 delay_ms。

bandwidth_groups

list

共享 bandwidth_mbps 带宽预算的端点组。

cluster:
  net_emulation:
    enabled: true
    symmetric: true
    crossdc_pairs:
      - src: ["Env:0-1"]
        dst: ["Rollout:0-1", "Actor:0-1"]
        delay_ms: 50
    bandwidth_groups:
      - members: ["Env:0-1"]
        bandwidth_mbps: 1000
      - members: ["Rollout:0-1", "Actor:0-1"]
        bandwidth_mbps: 500

端点名称使用 GroupName:Rank 格式——Env:0 表示第一个 Env Worker, Rollout:1 表示第二个 Rollout Worker。支持闭区间 Rank 范围,例如 Env:0-3 会展开为 Env:0 到 Env:3。Group 后缀会自动去除。

使用要求:

  • 同步和异步 Runner 均可使用。

  • 与 delay_sampler 独立。可单独启用、组合启用或全部关闭。

组合使用#

同时启用两个模块以模拟真实部署环境:

env:
  delay_sampler:
    type: uniform
    min_delay: 0.11
    max_delay: 0.20

cluster:
  net_emulation:
    enabled: true
    crossdc_pairs:
      - src: ["Env:0", "Env:1"]
        dst: ["Rollout:0", "Rollout:1"]
        delay_ms: 50

示例#

完整示例配置:

examples/embodiment/config/realsimulator_robotwin_adjust_bottle_dagger_openpi.yaml

参考:

  • RoboTwin — RoboTwin 环境设置与配置。

  • DAgger — 基于专家策略的 DAgger 训练。