真机仿真器#
在仿真训练中加入真实的观测延迟和网络条件,无需部署到实际硬件。
RLinf 提供两个独立模块——delay_sampler 和 net_emulation——各自由
YAML 中的对应参数控制。两者默认关闭:不配置对应参数时,训练流程不受影响。
观测延迟仿真 (delay_sampler)#
通过 InsertDelay env wrapper 在 chunk_step 和 reset 返回前注入可配置的等待延迟,模拟每个真机的
传感器延迟。
适用场景:测试可变观测时序对策略训练的影响,或为真实世界部署准备策略时, 模拟不同机器人相机和编码器延迟。
支持的分布类型:
类型 |
参数 |
适用场景 |
|---|---|---|
|
|
所有观测使用相同的固定延迟 |
|
|
延迟在已知范围内均匀变化 |
|
|
延迟遵循类似泊松到达的模式 |
|
|
符合真实传感器的抖动,具有典型值和波动范围 |
所有延迟值单位为秒。
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 部署在不同集群或云区域时。
键 |
类型 |
说明 |
|---|---|---|
|
|
开启( |
|
|
为 |
|
|
源-目标端点对,每对可配置 |
|
|
共享 |
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
参考: