Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
232 commits
Select commit Hold shift + click to select a range
1c3a0f2
Improve client initialization performance by reducing unnecessary imp…
jackvial Jan 2, 2026
d0f2bed
fix type annotation errors
jackvial Jan 2, 2026
b1ccb95
remove torch types so torch is not needed on client
jackvial Jan 2, 2026
b9fb110
better logging
jackvial Jan 2, 2026
a40b737
use realsense camera
jackvial Jan 2, 2026
4ebe4b7
use pi05
jackvial Jan 2, 2026
ad9389b
updated configs
jackvial Jan 2, 2026
38b369c
update port
jackvial Jan 2, 2026
2d104a8
change port back
jackvial Jan 2, 2026
bbb1089
camera ports changed
jackvial Jan 2, 2026
7268ed6
try fine tuned model
jackvial Jan 2, 2026
0a1e909
prompt
jackvial Jan 2, 2026
42b14f2
debug logging
jackvial Jan 2, 2026
58e4d4a
observation perf improvements
jackvial Jan 2, 2026
257b0ce
tune chunk size threshold
jackvial Jan 2, 2026
e47d780
compress images
jackvial Jan 2, 2026
aa28150
adjust chunk threshold
jackvial Jan 2, 2026
d2765b2
Run observations in bg thread
jackvial Jan 2, 2026
8ef7ab4
go back to async camera reads
jackvial Jan 2, 2026
3b8089c
camera perf
jackvial Jan 2, 2026
2772391
observation cooldown
jackvial Jan 2, 2026
28a5b19
Fixes
jackvial Jan 2, 2026
7fc282f
perf improvements
jackvial Jan 2, 2026
9762b9c
more perf improvements
jackvial Jan 2, 2026
7f226d4
reduce lock contention
jackvial Jan 2, 2026
30f895e
implemented improved versions of async inference
jackvial Jan 2, 2026
bcdbb5a
fix bug
jackvial Jan 3, 2026
03baa51
Fix frozen actions being too strick on startup
jackvial Jan 3, 2026
9364a61
diagnostics
jackvial Jan 3, 2026
d055831
turn on deadline control
jackvial Jan 3, 2026
f8bf074
increase epsilon
jackvial Jan 3, 2026
d92e2b8
increase chunk size
jackvial Jan 3, 2026
45c7956
reduce fps
jackvial Jan 3, 2026
69fb33e
try smolvla base
jackvial Jan 3, 2026
d46f285
Added streaming
jackvial Jan 3, 2026
035307f
change weights back
jackvial Jan 3, 2026
858d883
add fallbacks on failed observation
jackvial Jan 3, 2026
585cac4
merging perf improvements
jackvial Jan 3, 2026
ba7329d
run observations async
jackvial Jan 3, 2026
3371417
headless fixes
jackvial Jan 3, 2026
f7b1a8d
more encoding fixes
jackvial Jan 3, 2026
227ba21
fix my bugs
jackvial Jan 4, 2026
75f5590
Added rtc support to improved async inference
jackvial Jan 4, 2026
293f780
fix missing processor
jackvial Jan 5, 2026
b23b4bd
Update server address
jackvial Jan 6, 2026
0b1f430
Tidy up proto
jackvial Jan 7, 2026
8791e60
Fix function names
jackvial Jan 7, 2026
45f58a6
remove the connection blocking
jackvial Jan 7, 2026
166c0be
Fix inference delay not passed
jackvial Jan 7, 2026
091618e
Setup experiment framework
jackvial Jan 9, 2026
779de4f
fix errors
jackvial Jan 9, 2026
ccecd17
Add way to plot results
jackvial Jan 9, 2026
e0b95a9
stable camera ports
jackvial Jan 10, 2026
0982f7a
tidy up
jackvial Jan 10, 2026
6a04e3e
more diagnostics
jackvial Jan 10, 2026
252f2fa
debugging
jackvial Jan 10, 2026
4fd262c
fix RTC
jackvial Jan 10, 2026
d8fbb23
k 1.5 and exp decary works well for rtc
jackvial Jan 10, 2026
f567c39
Integrated Alex Soar RTC improvements
jackvial Jan 10, 2026
8f2ed54
config params
jackvial Jan 10, 2026
1843e93
Refactor trajectory viz
jackvial Jan 10, 2026
be61cea
display l2 metric on plot
jackvial Jan 10, 2026
cec3c01
tuning
jackvial Jan 10, 2026
07f7e92
add ability to set denoising steps
jackvial Jan 11, 2026
37edf2b
styling
jackvial Jan 11, 2026
98cda1d
Experiement framework setup
jackvial Jan 11, 2026
bd0d146
Plumb spike injection
jackvial Jan 11, 2026
96d25f5
inject spikes at specific times
jackvial Jan 12, 2026
88c882f
show actually execution trajectory
jackvial Jan 12, 2026
097f83b
Update plots
jackvial Jan 12, 2026
9f36f2a
setup drop observation experiments
jackvial Jan 12, 2026
8534a1f
Add upper bound
jackvial Jan 14, 2026
3796853
remove comments to make code easier to read
jackvial Jan 14, 2026
80bba2c
remove get old execution prefix
jackvial Jan 14, 2026
b6010ff
Updated to use sorted dict container
jackvial Jan 14, 2026
04abec0
fix soft masking and remove s_min for now to simplify implementation
jackvial Jan 15, 2026
99c0021
reinterpt epsilon as desired amount of soft masking
jackvial Jan 16, 2026
3384f8c
some progress on fixing soft masking
jackvial Jan 16, 2026
efefc43
bring back s_min and make implementation closer to RTC paper
jackvial Jan 17, 2026
d255628
update naming and show masking boundaries
jackvial Jan 17, 2026
0987fa0
fix plots
jackvial Jan 17, 2026
0cf51c3
fix trigger condition
jackvial Jan 17, 2026
0ee6546
60hz and smooth
jackvial Jan 17, 2026
714efc0
trying different filters
jackvial Jan 17, 2026
bd26576
more Butterworth!
jackvial Jan 18, 2026
9773ed1
params
jackvial Jan 18, 2026
ba32c86
refactored filtering
jackvial Jan 18, 2026
2d92f27
refactored filters
jackvial Jan 18, 2026
40fd987
try use lookahead filtering
jackvial Jan 18, 2026
4894ed7
refactor to prevent race condition when shutting down
jackvial Jan 18, 2026
1452185
utils
jackvial Jan 18, 2026
77f750a
renaming
jackvial Jan 19, 2026
6b19c1b
Updated naming
jackvial Jan 20, 2026
924778c
Tidy utils
jackvial Jan 20, 2026
9fc91fd
added todo
jackvial Jan 20, 2026
60fe78f
refactor to llw register
jackvial Jan 22, 2026
fdc550b
remove priming
jackvial Jan 22, 2026
85cfdcc
set last read default to -1
jackvial Jan 22, 2026
f3fb88d
Update naming to make causality clearer
jackvial Jan 22, 2026
5407602
Messing with LWW registers
jackvial Jan 23, 2026
06e0a38
added client and server scripts
jackvial Jan 24, 2026
2050db2
debugging
jackvial Jan 25, 2026
c9c4f73
debug
jackvial Jan 25, 2026
6c18266
Added debug logging
jackvial Jan 25, 2026
4f38a09
Fix server address
jackvial Jan 25, 2026
ecd923d
use remote weights
jackvial Jan 25, 2026
86800af
update ports
jackvial Jan 25, 2026
19bda8c
Update ports again
jackvial Jan 25, 2026
c7d356d
fix port forwarding for viz
jackvial Jan 25, 2026
229fa66
more robuster
jackvial Jan 25, 2026
fb5a596
tidy up
jackvial Jan 25, 2026
80ffd86
Better protobuf naming
jackvial Jan 25, 2026
4d38f6f
refactor diagnostics to use same pattern as experiement metrics tracker
jackvial Jan 26, 2026
e7e6e23
disable micro timing by default
jackvial Jan 26, 2026
37f1def
fix configs
jackvial Jan 26, 2026
b5ff5b4
tidy up
jackvial Jan 26, 2026
1ab693b
Cleanup unnessary tests
jackvial Jan 26, 2026
6a9bd2d
bound metrics
jackvial Feb 6, 2026
bdb5f01
remove old docs
jackvial Feb 6, 2026
ac0115b
fix causality model
jackvial Feb 10, 2026
626af50
experimenting with experiments
jackvial Feb 10, 2026
9f4ff89
improved experiment metrics
jackvial Feb 11, 2026
6116314
show measured rtt
jackvial Feb 11, 2026
2c40f6a
record llw register seen values
jackvial Feb 11, 2026
6181aa0
mixture of faults
jackvial Feb 11, 2026
fea3275
add disconnect sim
jackvial Feb 11, 2026
132a6c4
added fault inject ghant chart
jackvial Feb 11, 2026
81a0199
more plot refinements
jackvial Feb 12, 2026
a39cf66
more granular timings
jackvial Feb 14, 2026
ec4a844
refactor to yaml configs
jackvial Feb 14, 2026
2bfcc7e
Add configs to table
jackvial Feb 14, 2026
96f6f28
save configs
jackvial Feb 14, 2026
278202b
Added more detailed latency plots
jackvial Feb 14, 2026
cfc3116
move more config to yaml files
jackvial Feb 14, 2026
25730a5
bit of tidy up
jackvial Feb 14, 2026
413b54a
save more config data
jackvial Feb 14, 2026
af2ba08
more plot refinements
jackvial Feb 14, 2026
e700db9
refine plots
jackvial Feb 14, 2026
6a0795e
move data around so units make sense
jackvial Feb 14, 2026
4c44efa
added experiment configs
jackvial Feb 14, 2026
f49827c
refine configs
jackvial Feb 14, 2026
c9328b8
make K warmup configurable
jackvial Feb 14, 2026
c7c357d
introduce spike later
jackvial Feb 14, 2026
bddbfc1
update configs
jackvial Feb 14, 2026
323d67b
mixture of faults
jackvial Feb 14, 2026
80b8608
Added more configs
jackvial Feb 14, 2026
0d410d3
fix typo
jackvial Feb 14, 2026
07c0059
overlapping reorder obs and actions
jackvial Feb 14, 2026
6802da2
updated config
jackvial Feb 14, 2026
f35aa4c
Moved timestamp to include capture
jackvial Feb 15, 2026
8105116
fix reorder sim boundary condition bug
jackvial Feb 15, 2026
5d26446
more configs
jackvial Feb 15, 2026
01c29b7
deleted archived
jackvial Feb 15, 2026
e97fbfa
removed rtc sweep code
jackvial Feb 15, 2026
f1d2dd9
tidy up
jackvial Feb 15, 2026
a6d75f3
renamed to drtc
jackvial Feb 15, 2026
a7b8dd5
remove old readme
jackvial Feb 15, 2026
f6bda56
tidy up
jackvial Feb 15, 2026
f80ebf6
tidy up median filter
jackvial Feb 15, 2026
3895493
align spike events with other event plots
jackvial Feb 15, 2026
d787b87
remove old median filter
jackvial Feb 15, 2026
6c26032
only allow running one experiment at a time for simplicity
jackvial Feb 15, 2026
7bddfc1
remove unused filters
jackvial Feb 15, 2026
7ae1680
more filter tidy up
jackvial Feb 15, 2026
aa36620
fix logging
jackvial Feb 15, 2026
f339fbb
fix logging
jackvial Feb 15, 2026
c32de65
more logging
jackvial Feb 15, 2026
2b869c2
Added option to start viz server
jackvial Feb 15, 2026
408f9c0
Added flow matching params
jackvial Feb 15, 2026
2201cd4
adjust mixture of faults
jackvial Feb 16, 2026
2c5fb7a
Make the mixture more specific to lww behavior
jackvial Feb 16, 2026
5afc6ef
Updated configs
jackvial Feb 16, 2026
cf7b328
better labels for spikes
jackvial Feb 16, 2026
c7aad36
throw if we try to request chunk size larger than the model was train…
jackvial Feb 16, 2026
d33c514
last of 10
jackvial Feb 16, 2026
6b94dae
setup script for running experiments on robot server
jackvial Feb 17, 2026
44257a0
use tailscale network
jackvial Feb 18, 2026
3ccd112
add scipy as dep
jackvial Feb 18, 2026
ba25788
Update paths
jackvial Feb 18, 2026
608524c
docs and update config
jackvial Feb 18, 2026
3c58da5
updated configs for cloud experiments
jackvial Feb 18, 2026
81623b4
update docs
jackvial Feb 18, 2026
e043e7e
added provisioning script
jackvial Feb 18, 2026
f69f19e
added provisioning script
jackvial Feb 18, 2026
b5e43e9
tidy up notes to remove comments about sweeps
jackvial Feb 19, 2026
e7f4239
Added property tests
jackvial Feb 19, 2026
ea36d4a
seed estimator with inital measurement and set initial deviation to zero
jackvial Feb 20, 2026
9a4cd64
Seed with s_min
jackvial Feb 20, 2026
78ff22d
bring back k warmup
jackvial Feb 20, 2026
46d71ca
initial deviation should be 0
jackvial Feb 20, 2026
983f988
use smin for cooldown but not part of the estimate
jackvial Feb 20, 2026
dfb44cb
better logging
jackvial Feb 21, 2026
2190e0f
better var naming
jackvial Feb 22, 2026
f960429
update obs sent naming to obs triggered as its more accurate
jackvial Feb 22, 2026
48b42f9
alias obs sent to obs triggered so i still use my existing data
jackvial Feb 22, 2026
14a1b28
remove my personal info
jackvial Mar 1, 2026
b44f958
update provisioning scripts for better dx
jackvial Mar 1, 2026
7ac22bb
Added instructions
jackvial Mar 2, 2026
870787e
move
jackvial Mar 2, 2026
d92e14c
remove gh deploy key setup
jackvial Mar 2, 2026
0f63177
Updated instructions
jackvial Mar 2, 2026
144dda0
Updated with main and fixed conflicts
jackvial Mar 8, 2026
e50275a
Updated dependencies and paths
jackvial Mar 8, 2026
2f210e9
Updated docs
jackvial Mar 9, 2026
cd19f71
Updated lww tests
jackvial Mar 9, 2026
d853f64
Add requirements.txt files back
jackvial Mar 9, 2026
70424d0
Merge branch 'main' into jv/drtc-lerobot
jackvial Mar 9, 2026
08be3bb
Fixed lint errors and tests
jackvial Mar 9, 2026
8d40437
Create new observation and action objects for DRTC and revert async i…
jackvial Mar 9, 2026
9cb49ca
Updated configs to test hardware
jackvial Mar 9, 2026
f90b33a
remove policy processor export
jackvial Mar 9, 2026
93ef832
Revert async inference config changes
jackvial Mar 9, 2026
1b7f427
undo typing changes
jackvial Mar 9, 2026
ec9997f
undo lerobot dataset changes
jackvial Mar 9, 2026
1a12483
undo motor bus type changes
jackvial Mar 9, 2026
9b45bad
Remove custom ignores
jackvial Mar 9, 2026
a96980d
Add trailing line back
jackvial Mar 9, 2026
671101c
remove trailing line again
jackvial Mar 9, 2026
cde785b
get rid of whitespace changes
jackvial Mar 9, 2026
4710df9
Remove pipeline overrides
jackvial Mar 9, 2026
1b63f3e
more tidy up
jackvial Mar 9, 2026
3fc2afd
revert e2e test changes
jackvial Mar 9, 2026
bed96ec
white space cleanup
jackvial Mar 9, 2026
6ee11e9
remove deadband filtering experiment
jackvial Mar 9, 2026
bca0b40
more deadband cleanup
jackvial Mar 9, 2026
83ba971
revert policy factory changes
jackvial Mar 9, 2026
733031c
undo type changes
jackvial Mar 9, 2026
2690459
undo whitespace
jackvial Mar 9, 2026
52d3d99
Remove unused configs
jackvial Mar 9, 2026
20745cc
revert camera changes
jackvial Mar 9, 2026
7bda575
remove old test
jackvial Mar 9, 2026
d20888c
Updated docs
jackvial Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/source/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@
title: Use Async Inference
- local: rtc
title: Real-Time Chunking (RTC)
- local: drtc
title: Distributed Real-Time Chunking (DRTC)
title: "Inference"
- sections:
- local: envhub
Expand Down
198 changes: 198 additions & 0 deletions docs/source/drtc.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
# Distributed Real-Time Chunking (DRTC)

[Distributed Real-Time Chunking](https://jackvial.com/posts/distributed-real-time-chunking.html) (DRTC) extends [RTC](./rtc.mdx) to a distributed client-server setup. You can think of it as combining [RTC](./rtc.mdx)'s in-painting with [async inference](./async.mdx)'s networked client-server pattern.

## Supported models

[SmolVLA](./smolvla.mdx), [pi0](./pi0.mdx) and any other flow matching models should work.

## Quick Start

DRTC assumes you already have a working LeRobot environment. If not, follow the main [Installation Guide](./installation), then install the extras used by the default DRTC scripts:

```bash
uv pip install -e ".[smolvla,async,feetech,scipy-dep]"
```

The examples below are currently set up around the default SO101 hardware profile in this repo. Configure your policy type and pretrained weight path in `examples/experiments/configs/baseline.yaml` before running.

### Client + Server on Same Node

If your policy server and robot client are running on the same machine, the simplest entrypoint is:

```bash
./scripts/run_drtc_experiment.sh \
--config examples/experiments/configs/baseline.yaml
```

This starts the DRTC policy server locally and then runs the experiment client against it. Add `--viz` if you also want the trajectory visualization server on `http://localhost:8088`.

### Remote Server With Local Client

Use this setup when you want the policy server on a remote GPU machine while keeping the robot client on your local robot computer.

> Note: The workflow below uses Prime Intellect for cloud GPUs and Tailscale for secure networking because that is one setup currently documented in this repo. They are not required. Any comparable cloud GPU provider and VPN or private network setup should work as well.

#### Prerequisites

- A Prime Intellect account: https://www.primeintellect.ai/
- A local `~/.prime/config.json` containing your API key and SSH key path for `./scripts/provision_prime_lerobot.sh`
- A Tailscale network shared by the local client and remote server: https://tailscale.com/

#### 1. Provision a remote policy server

Run from the repository root:

```bash
./scripts/provision_prime_lerobot.sh
```

This script searches for available GPUs with the required CUDA image, lets you choose one, provisions the instance, clones the repo, installs dependencies, sets up Tailscale, and prints:

- SSH connection details (`user@host` and port)
- The Tailscale domain for the remote machine

To resume setup on an existing pod (for example, after a network interruption):

```bash
./scripts/provision_prime_lerobot.sh --pod-id <POD_ID>
```

#### 2. Start the policy server on the remote machine

SSH to the provisioned machine using the connection details printed at the end of provisioning, then start the policy server:

```bash
ssh -i <SSH_KEY_PATH> -p <SSH_PORT> <SSH_USER>@<SSH_HOST>
cd /workspace/drtc
./scripts/start_drtc_server.sh
```

Leave this process running while the local client connects.

#### 3. Start the local client against the remote server

From your local client or robot machine, make sure you are connected to the same Tailscale network as the remote server, then run:

```bash
./scripts/run_drtc_experiment_with_remote_server.sh \
--remote-server-host <TAILSCALE_DOMAIN> \
--config examples/experiments/configs/baseline.yaml
```

## API Usage

After getting familiar with the quick start you will likely want to interact with the DRTC client and server APIs directly. Reference implementations can be found in:

- Client: `examples/tutorial/async-inf/robot_client_drtc.py`
- Server: `src/lerobot/async_inference/policy_server_drtc.py`

### Minimal Client API Usage Example

```python
import threading

from lerobot.async_inference.robot_client_drtc import RobotClientDrtc
from lerobot.async_inference.configs_drtc import RobotClientDrtcConfig
from lerobot.cameras.opencv import OpenCVCameraConfig
from lerobot.robots.so101_follower import SO101FollowerConfig

camera_cfg = {
"camera1": OpenCVCameraConfig(
index_or_path="/dev/video0",
width=800,
height=600,
fps=30,
fourcc="MJPG",
use_threaded_async_read=True,
allow_stale_frames=True,
),
"camera2": OpenCVCameraConfig(
index_or_path="/dev/video2",
width=800,
height=600,
fps=30,
fourcc="MJPG",
use_threaded_async_read=True,
allow_stale_frames=True,
),
}

robot_cfg = SO101FollowerConfig(
port="/dev/ttyACM0",
id="so101_follower",
cameras=camera_cfg,
)

client_cfg = RobotClientDrtcConfig(
robot=robot_cfg,
server_address="127.0.0.1:8080",
policy_device="cuda",
policy_type="smolvla",
pretrained_name_or_path="jackvial/so101_smolvla_pickplaceorangecube_e100",
actions_per_chunk=50,
fps=60,
s_min=15,
epsilon=2,
rtc_sigma_d=0.2,
rtc_full_trajectory_alignment=False,
num_flow_matching_steps=None,
action_filter_mode="butterworth",
action_filter_past_buffer_size=10,
action_filter_butterworth_cutoff=3.0,
action_filter_butterworth_order=2,
action_filter_gain=1.4,
metrics_diagnostic_enabled=True,
control_use_deadline_clock=True,
obs_fallback_on_failure=True,
obs_fallback_max_age_s=2.0,
trajectory_viz_enabled=True,
trajectory_viz_ws_url="ws://localhost:8089",
)

client = RobotClientDrtc(client_cfg)

if client.start():
observation_thread = threading.Thread(
target=client.observation_sender,
name="observation_sender",
daemon=True,
)
action_thread = threading.Thread(
target=client.action_receiver,
name="action_receiver",
daemon=True,
)

observation_thread.start()
action_thread.start()

try:
client.control_loop(
"Pick up the orange cube and place it on the black X marker with the white background"
)
finally:
client.stop()
observation_thread.join(timeout=2.0)
action_thread.join(timeout=2.0)
```

### Minimal Server API Usage Example

```python
from lerobot.async_inference.configs_drtc import PolicyServerDrtcConfig
from lerobot.async_inference.policy_server_drtc import serve_drtc

serve_drtc(
PolicyServerDrtcConfig(
host="0.0.0.0",
port=8080,
fps=30,
warmup_passes=2,
trajectory_viz_enabled=True,
trajectory_viz_http_port=8088,
trajectory_viz_ws_port=8089,
)
)
```

Empty file.
40 changes: 40 additions & 0 deletions examples/experiments/configs/baseline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Mixture of faults -- drops, duplicates, reordering, and disconnect combined
name: baseline_cloud_raspberry

# Hardware
robot_type: so101
gpu: RTX 4090
client_host: raspberrypiv5
server_host: cloudserver4090

# Policy
policy_type: smolvla
pretrained_name_or_path: jackvial/so101_smolvla_pickplaceorangecube_e100

# DRTC parameters
estimator: jk
cooldown: true
latency_k: 1.5
epsilon: 1
actions_per_chunk: 50
s_min: 20
latency_alpha: 0.125
latency_beta: 0.25

# Timing
duration_s: 25.0
fps: 60

# Flow matching / RTC
num_flow_matching_steps: 8
rtc_enabled: true
rtc_sigma_d: 0.2
rtc_prefix_attention_schedule: linear

# Butterworth filter
action_filter_mode: butterworth
action_filter_butterworth_cutoff: 3.0
action_filter_gain: 1.4

# Diagnostics
full_diagnostics: true
56 changes: 56 additions & 0 deletions examples/experiments/configs/lww_mixture_of_faults.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Mixture of faults -- drops, duplicates, reordering, and disconnect combined
name: mixture_of_faults_cloud_raspberry

# Hardware
robot_type: so101
gpu: RTX 4090
client_host: raspberrypiv5
server_host: cloudserver4090

# Policy
policy_type: smolvla
pretrained_name_or_path: jackvial/so101_smolvla_pickplaceorangecube_e100

# DRTC parameters
estimator: jk
cooldown: true
latency_k: 1.5
epsilon: 1
s_min: 20
latency_alpha: 0.125
latency_beta: 0.25

# Timing
duration_s: 25.0
fps: 60
actions_per_chunk: 50

# Butterworth filter
action_filter_mode: butterworth
action_filter_butterworth_cutoff: 3.0
action_filter_gain: 1.4

# Flow matching / RTC
num_flow_matching_steps: 8
rtc_enabled: true
rtc_sigma_d: 0.2
rtc_prefix_attention_schedule: linear

# Diagnostics
full_diagnostics: false

# Fault injection
drop_obs:
- {start_s: 4.0, duration_s: 2.0}
drop_action:
- {start_s: 7.0, duration_s: 2.0}
dup_obs:
- {start_s: 10.0, duration_s: 2.0}
dup_action:
- {start_s: 13.0, duration_s: 2.0}
reorder_obs:
- {start_s: 16.0, duration_s: 3.0}
reorder_action:
- {start_s: 20.0, duration_s: 3.0}
# disconnect:
# - {start_s: 22.0, duration_s: 2.0}
45 changes: 45 additions & 0 deletions examples/experiments/configs/spikes_jk.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Compare estimators under spike conditions
defaults:
# Hardware
robot_type: so101
gpu: RTX 4090
client_host: raspberrypiv5
server_host: cloudserver4090

# Policy
policy_type: smolvla
pretrained_name_or_path: jackvial/so101_smolvla_pickplaceorangecube_e100

# DRTC parameters
cooldown: true
latency_k: 1.5
epsilon: 1
s_min: 20
latency_alpha: 0.125
latency_beta: 0.25

# Flow matching / RTC
num_flow_matching_steps: 8
rtc_enabled: true
rtc_sigma_d: 0.2
rtc_prefix_attention_schedule: linear

# Timing
duration_s: 25.0
fps: 60
actions_per_chunk: 50

# Butterworth filter
action_filter_mode: butterworth
action_filter_butterworth_cutoff: 3.0
action_filter_gain: 1.4

# Diagnostics
full_diagnostics: false

experiments:
- name: spikes_jk_cloud_raspberry
estimator: jk
spikes:
- {start_s: 5.0, delay_ms: 500}
- {start_s: 15.0, delay_ms: 1000}
45 changes: 45 additions & 0 deletions examples/experiments/configs/spikes_max_last_10.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Compare estimators under spike conditions
defaults:
# Hardware
robot_type: so101
gpu: RTX 4090
client_host: raspberrypiv5
server_host: cloudserver4090

# Policy
policy_type: smolvla
pretrained_name_or_path: jackvial/so101_smolvla_pickplaceorangecube_e100

# DRTC parameters
cooldown: true
latency_k: 2.0
epsilon: 2
s_min: 20
latency_alpha: 0.125
latency_beta: 0.25

# Flow matching / RTC
num_flow_matching_steps: 8
rtc_enabled: true
rtc_sigma_d: 0.2
rtc_prefix_attention_schedule: linear

# Timing
duration_s: 25.0
fps: 60
actions_per_chunk: 50

# Butterworth filter
action_filter_mode: butterworth
action_filter_butterworth_cutoff: 3.0
action_filter_gain: 1.4

# Diagnostics
full_diagnostics: false

experiments:
- name: spikes_max_last_10_cloud_raspberry
estimator: max_last_10
spikes:
- {start_s: 5.0, delay_ms: 500}
- {start_s: 15.0, delay_ms: 1000}
Loading