Download HANDOFF.md from Dengliming/StreamPIReal6_3w: direct link, hf CLI and curl.
- Browser
- Download file 5.91 kB
-
https://huggingface.co/Dengliming/StreamPIReal6_3w/resolve/main/HANDOFF.md
- Command line
-
hf download hf://Dengliming/StreamPIReal6_3w/HANDOFF.md
-
curl -L -o HANDOFF.md https://huggingface.co/Dengliming/StreamPIReal6_3w/resolve/main/HANDOFF.md
30k candidate: default checkpoint is
checkpoints/29999. L40 and physical-robot acceptance are still pending. Do not publish or treat as frozen.
StreamPI Piper-X Real6 Deployment Handoff
1. Release identity
| Item | Value |
|---|---|
| Release | StreamPI-PiperX-Real6 |
| Configuration | pi05_stream3_piper_x_real_6tasks |
| Checkpoint | checkpoints/20000 |
| Dataset asset | real_piper_x_6tasks |
| Model | StreamPI based on π0.5 |
| History horizon | 3 observations |
| History interval | 5 dataset frames |
| Prediction horizon | 10 actions |
| Execution length | 5 actions per inference |
| State dimension | 14 |
| Action dimension | 14 |
State and action order:
left_joint_1 ... left_joint_6,
left_gripper,
right_joint_1 ... right_joint_6,
right_gripper
Camera order:
cam_high
cam_left_wrist
cam_right_wrist
2. Action semantics
Training uses delta actions for the 12 arm joints.
The 14-dimensional action layout is:
6 left-arm joints,
1 left gripper,
6 right-arm joints,
1 right gripper
The arm-joint dimensions use delta-action training semantics. The two gripper dimensions remain absolute gripper commands.
During inference, AbsoluteActions converts the arm-joint predictions back to
absolute joint positions. The policy server therefore returns:
action_type=absolute_joint_position
The robot client must not apply an additional delta-to-absolute conversion.
3. Environment installation
Install the server environment:
cd /path/to/StreamPI-PiperX-Real6
bash scripts/setup_server_env.sh
Optionally install an independent client environment:
cd /path/to/StreamPI-PiperX-Real6
bash scripts/setup_client_env.sh
An existing compatible Python interpreter may instead be selected explicitly:
export OPENPI_PYTHON=/path/to/python
4. Release verification
cd /path/to/StreamPI-PiperX-Real6
export OPENPI_PYTHON=/path/to/python
bash scripts/verify_release.sh
Expected final markers include:
CHECKPOINT_STRUCTURE_OK
CONFIG_REGISTRATION_OK
DELTA_TO_ABSOLUTE_TRANSFORM_OK
SERVER_CLIENT_PROTOCOL_OK
RELEASE_VERIFY_OK
5. Synthetic loopback test
The loopback test starts a local policy server and sends synthetic camera images and robot states. It does not connect to robot hardware.
cd /path/to/StreamPI-PiperX-Real6
export OPENPI_PYTHON=/path/to/python
export LOOPBACK_GPU=0
export LOOPBACK_PORT=18080
export LOOPBACK_MAX_LATENCY_SECONDS=2.0
bash scripts/test_loopback.sh
Expected markers:
POLICY_WARMUP_OK
SMOKE_CLIENT_OK
LOOPBACK_TEST_OK
The script should stop its policy-server subprocess automatically when it exits.
6. Start the deployment server
cd /path/to/StreamPI-PiperX-Real6
export OPENPI_PYTHON=/path/to/python
export POLICY_GPU=0
export POLICY_HOST=0.0.0.0
export POLICY_PORT=8000
bash scripts/start_policy_server.sh
WebSocket endpoint:
ws://SERVER_IP:8000
Only one robot/policy session should use each server process.
7. Warm-up before connecting hardware
The first inference calls for history lengths 1, 2 and 3 may trigger separate JAX compilation. Complete all warm-up requests before enabling robot torque.
With the policy server already running:
cd /path/to/StreamPI-PiperX-Real6
export OPENPI_PYTHON=/path/to/python
export POLICY_HOST=127.0.0.1
export POLICY_PORT=8000
export WARMUP_STEPS=3
bash scripts/warmup_policy.sh
The warm-up client uses synthetic inputs and does not access robot hardware.
8. Client integration
Reference adapter:
deployment/piperx_client.py
The robot-side integration must:
- Supply all three camera observations using the documented names.
- Supply a 14-dimensional measured state in the documented order.
- Execute only the returned
execute_actions, normally 5 actions. - Feed the latest measured robot state into the next policy request.
- Call
reset_episode()before every new episode. - Keep one WebSocket connection for one robot episode.
- Never reuse observation history from the preceding episode.
Do not execute all 10 predicted actions and then make the next request as though only 5 actions had been executed. The training and deployment contract is predict 10, execute 5, and then replan.
9. Required robot-side safety
The policy server does not implement complete hardware safety. The robot controller must independently enforce:
- joint-position limits;
- joint-velocity and joint-acceleration limits;
- command timeout and watchdog;
- communication-loss handling;
- collision and workspace limits;
- emergency stop;
- torque-disable recovery;
- gripper-command bounds;
- gripper-command rate limiting.
The synthetic loopback observed small arm-joint chunk-boundary gaps but larger gripper-command changes. Gripper limiting must remain enabled during both dry-run and real-robot evaluation.
10. Known non-fatal logs
On an NVIDIA machine, JAX may print unsuccessful backend probes such as:
Unable to initialize backend 'rocm'
Unable to initialize backend 'tpu'
These messages do not indicate CUDA inference failure.
Orbax may also report that it cannot read the optional
EXPERIMENTAL_ORBAX_USE_DISTRIBUTED_PROCESS_ID flag. The checkpoint is
considered valid when restoration completes and the verifier produces:
RELEASE_VERIFY_OK
11. Acceptance scope
Completed:
- checkpoint structure verification;
- configuration registration verification;
- delta-to-absolute action-semantics verification;
- WebSocket server/client protocol verification;
- three-frame streaming-history verification;
- episode-reset verification;
- warmed L40S synthetic-loopback verification.
Pending:
- zero-torque robot communication test;
- low-speed dry-run;
- per-task real-robot success-rate evaluation;
- final robot safety acceptance.