- Main host (the upper computer) — runs the policy server and the autonomous control loop.
- ZED box (the Jetson sender) — streams the three ZED-X One cameras.
Network setup
The two machines must be able to reach each other over the network. Configure each NIC with an IP however you like — DHCP on a shared switch, or static IPs (e.g.192.168.10.1/24 on the ZED box and 192.168.10.2/24 on the main host) over a direct ethernet cable. Find the ZED box’s IP (ip addr) and pass it to the main host as --robot_config.zed_host <zed-box-ip>. This is the same setup as the Data Collection quickstart.
Interface names vary by machine — the link might be eth0, enp3s0, eno1, and so on. Run ip link (or ip addr) on each machine to find the interface carrying the link, and substitute it for <iface> in the commands below.
PTP runs over whichever interface carries the link (zed.sync-clocks --iface). If the two machines are not on the same L2 segment (e.g. separated by a router rather than a switch), add --transport udpv4 to the clock-sync commands.
Prerequisites
- The
lerobotextra installed on the main host — the quick install includes it. For GPU inference thecudaextra is also needed, which the quick install does not include: on a development install runuv sync --extra lerobot --extra cuda(see Installation). - A trained checkpoint (local path or HuggingFace repo) and its policy type (
act,smolvla,pi0, …). - CAN set up on the main host (
can.setup) and motors verified (motor.info). pyzedinstalled on the ZED box (zed.install) and the three camera serial numbers on hand.- A network link between the two machines — either a direct ethernet cable or a shared router/switch (see Network setup).
ZED box (Jetson)
Open two terminals on the ZED box.Start clock sync (slave)
<iface> with the ZED box’s link interface (find it with ip link). Leave this running for the whole session.Stream the cameras
Ctrl+C. Note that IP — you’ll pass it to the main host as --robot_config.zed_host. Use the same --resolution and --fps the policy was trained on so the ZedCamera validation on the main host passes. See zed.stream.Main host (upper computer)
Open two terminals on the main host.Start clock sync (master)
<iface> with the main host’s link interface (find it with ip link). Leave it running for the whole session.Run the policy
192.168.1.42 with the ZED box’s IP.A PolicyServer child process is launched on localhost; the parent streams observations to it and applies the returned action chunks. --fps must match the rate the policy was trained on. For CPU inference add --device cpu. See run-policy for aggregation, chunking, and dataset-saving fields, and Command configuration for the draccus override syntax.Controlling a rollout
Whilerun-policy runs, control the episode from stdin in the run-policy terminal:
| Key | Action |
|---|---|
s | Save the rollout and end the episode |
r | Discard and re-record |
q | Discard and quit |
--episode_time_s is a safety cap (default 120 s) that falls back to the same [Enter]=save / r / q prompt if no key is pressed. If --repo_id is supplied, each saved episode is appended to a LeRobot-format dataset. Between episodes the arms return to the rest pose via a collision-aware IK trajectory.
Next steps
Data Collection
Record more episodes to improve the policy.
run-policy reference
Every flag, aggregation strategy, and threading detail.
