Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
d98c027
Refactor benchmark to pinned clip protocol
BotRunner64 Jul 1, 2026
9c8e65a
Update benchmark tracking metrics
BotRunner64 Jul 2, 2026
6d26580
Increase action rate penalty
BotRunner64 Jul 3, 2026
3b22b0f
Add optional OpenNeck sim2real worker
BotRunner64 Jul 7, 2026
33a660c
Add OpenNeck diagnostic script
BotRunner64 Jul 7, 2026
a7d51f5
Add OpenNeck config to Pico sim2real
BotRunner64 Jul 7, 2026
474223b
Add O6 somehand hand-pose support
BotRunner64 Jul 8, 2026
d695afd
Rename LinkerHand dev test script
BotRunner64 Jul 8, 2026
9018e6f
Configure ONNX Runtime CPU budget
BotRunner64 Jul 8, 2026
f457f64
Enable CPU pinning for Pico sim2real
BotRunner64 Jul 8, 2026
553842d
Revert "Enable CPU pinning for Pico sim2real"
BotRunner64 Jul 9, 2026
82ab90b
Revert "Configure ONNX Runtime CPU budget"
BotRunner64 Jul 9, 2026
3473215
Harden OpenNeck and RealSense shutdown
BotRunner64 Jul 9, 2026
5b2c94e
Avoid pico-bridge camera extra
BotRunner64 Jul 9, 2026
ba50d77
feat: update sim2real recording dataset format
BotRunner64 Jul 15, 2026
a396273
feat: record OpenNeck actions in sim2real datasets
BotRunner64 Jul 15, 2026
523b643
Fix OpenNeck fixed-neutral head mapping
BotRunner64 Jul 15, 2026
434e75a
Update OpenNeck angle control integration
BotRunner64 Jul 15, 2026
71c6a6e
Drive OpenNeck from Pico HMD pose
BotRunner64 Jul 15, 2026
99285a0
Add OpenNeck pitch gain
BotRunner64 Jul 15, 2026
f67cfd0
Add synchronized sim2real recording reviewer
BotRunner64 Jul 16, 2026
2805cd6
feat: add high-level policy sim2real runtime
BotRunner64 Jul 16, 2026
f45a367
fix: cold-start GMR on mocap entry
BotRunner64 Jul 19, 2026
2fd01b1
Handle transient RealSense frame timeouts
BotRunner64 Jul 19, 2026
850be5e
fix: harden high-level policy entry
BotRunner64 Jul 20, 2026
7f7dd27
Increase high-level policy entry timeout
BotRunner64 Jul 20, 2026
3dd3bfa
Increase high-level policy entry ramp duration
BotRunner64 Jul 20, 2026
97f9fa4
Allow discontinuous high-level policy references
BotRunner64 Jul 20, 2026
7302700
Increase high-level policy reference grace period
BotRunner64 Jul 20, 2026
a528e81
Project small high-level policy joint limit violations
BotRunner64 Jul 20, 2026
9cf046c
Harden Pico video failure handling
BotRunner64 Jul 20, 2026
68c14b7
Clip high-level policy neck targets
BotRunner64 Jul 21, 2026
03ce49a
Relax high-level policy action watchdog
BotRunner64 Jul 21, 2026
54c6ff8
Support 50-frame policy action horizons
BotRunner64 Jul 21, 2026
296553d
Add high-level policy camera diagnostics
BotRunner64 Jul 22, 2026
b5da980
Simplify high-level policy takeover
BotRunner64 Jul 22, 2026
7a1baa4
Add minimal RealSense stall diagnostics
BotRunner64 Jul 23, 2026
c0a4471
Reconnect high-level policy RealSense camera
BotRunner64 Jul 23, 2026
a5696a2
Hardware-reset stalled policy camera
BotRunner64 Jul 23, 2026
682bdd9
Make high-level policy chunk-synchronous
BotRunner64 Jul 23, 2026
e3084f7
Move Pico bridge diagnostic to dev scripts
BotRunner64 Jul 25, 2026
69d5541
Update Pico and G1 bridge diagnostics
BotRunner64 Jul 25, 2026
f5a4ed0
Restore asynchronous high-level policy replanning
BotRunner64 Jul 27, 2026
e76e947
Lower standing return Kp ramp floor
BotRunner64 Jul 27, 2026
3d1be2c
Restore standing return Kp ramp floors
BotRunner64 Jul 27, 2026
b667cc4
Revise documentation structure and workflows
BotRunner64 Jul 29, 2026
72fea17
docs: refresh Pico deployment guides and diagrams
BotRunner64 Jul 29, 2026
439a7e5
docs: document selectable robot models
BotRunner64 Jul 29, 2026
746baee
docs: reorganize reference guides and resources
BotRunner64 Jul 29, 2026
9b080a2
Update G1 tracking asset variants
BotRunner64 Jul 30, 2026
89c8f41
Bump somehand to 0.3.0
BotRunner64 Jul 30, 2026
e6ee6fb
feat: expose hand and neck state readback
BotRunner64 Jul 30, 2026
b805c74
feat: record hand and neck state
BotRunner64 Jul 30, 2026
438f804
feat: update high-level policy observation protocol
BotRunner64 Jul 30, 2026
046dc66
docs: trim advanced workflows from README
BotRunner64 Jul 31, 2026
be5434e
docs: publish imitation learning deployment guide
BotRunner64 Aug 3, 2026
cb7a256
docs: replace project logo with teleoperation photo
BotRunner64 Aug 3, 2026
2b3fc01
chore: release v0.5.0
BotRunner64 Aug 3, 2026
559b60a
docs: refresh README navigation links
BotRunner64 Aug 3, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ outputs/
benchmark_results/
logs/
ckpt/
ckpt_restore/
wandb/
*.log
# Training - downloaded reference assets (re-downloadable)
Expand Down
80 changes: 63 additions & 17 deletions AGENTS.md

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog

## [0.5.0] - 2026-08-03

- 新增独立的 host high-level-policy sim2real 运行时:使用严格的 msgpack/ZeroMQ 协议、异步 receding-horizon replanning、时间戳对齐调度,以及 50 Hz 输出安全校验和限速。
- 扩展 G1 外设支持:加入 OpenNeck 0.2.0 物理角度控制、Pico HMD 主动视觉映射、LinkerHand O6 somehand 0.3.0 手势控制,以及手部和颈部状态回读。
- 更新 sim2real 录制与审阅流程:采用 `schema.json`、`episodes.jsonl`、逐 episode HDF5 和压缩 MP4 布局,记录可选手部/颈部状态与动作,并新增同步 recording viewer。
- 新增匹配的 G1 模型/策略组合:默认 `g1_29dof.xml` 配合 `ckpt/track_g1.{pt,onnx}`,neck-and-O6 版本配合 `g1_29dof_neck_o6.xml` 和 `ckpt/track_g1_neck_o6.{pt,onnx}`。
- 更新 OmniXtreme-style benchmark,并增强 Pico/RealSense 故障恢复、GMR mocap-entry cold start、high-level-policy watchdog 和引用安全处理。

### 迁移说明

- v0.4 的根目录 `track.{pt,onnx}` 路径已替换为 `ckpt/track_g1.{pt,onnx}`;neck-and-O6 运行时必须使用对应的模型和策略组合。
- 旧的 attribute-based sim2real HDF5 格式不再支持;录制、转换和审阅工具使用当前 manifest-based source layout。
- Host-policy 网络协议不提供旧 envelope 兼容,OpenNeck 旧 normalized API 也不再支持;Teleopit 与 companion runtime 必须使用匹配版本。

## [0.4.0] - 2026-06-25

- 改进 Pico 实时控制:支持 pico-bridge 0.2.1、`ARMS` 模式,以及保留 retargeter warm-start 的模式切换/暂停恢复。
Expand Down
82 changes: 25 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="assets/teleopit_logo.jpg" width="80" alt="Teleopit">
<img src="assets/teleopit.png" width="720" alt="Teleopit whole-body teleoperation demo">
</p>

<h1 align="center">Teleopit</h1>
Expand All @@ -11,11 +11,9 @@
</p>

<p align="center">
<a href="https://botrunner64.github.io/teleopit-page/">Project Homepage</a> &bull;
<a href="https://BotRunner64.github.io/Teleopit/">Documentation</a> &bull;
<a href="https://BotRunner64.github.io/Teleopit/zh-Hans/">中文文档</a> &bull;
<a href="https://BotRunner64.github.io/Teleopit/tutorials/pico-sim2sim">Pico Sim2Sim</a> &bull;
<a href="https://BotRunner64.github.io/Teleopit/tutorials/pico-sim2real">Pico Sim2Real</a> &bull;
<a href="https://BotRunner64.github.io/Teleopit/tutorials/training">Training</a>
<a href="https://BotRunner64.github.io/Teleopit/zh-Hans/">中文文档</a>
</p>

---
Expand All @@ -35,15 +33,18 @@ pip install modelscope
python scripts/setup/download_assets.py --only robots gmr ckpt bvh
```

The canonical Unitree G1 robot model is downloaded to
`assets/robots/unitree_g1/g1_29dof.xml`. Training, sim2sim, retargeting, and FK
validation all use this same XML.
The default Unitree G1 robot model is downloaded to
`assets/robots/unitree_g1/g1_29dof.xml`, with additional model variants in the
same directory. Training can select a task-compatible XML with `--robot_xml`;
the quick-start command below uses the default model and its matching
`ckpt/track_g1.onnx` policy. The neck-and-O6 variant uses
`g1_29dof_neck_o6.xml` with `ckpt/track_g1_neck_o6.onnx`.

**3. Run**

```bash
python scripts/run/run_sim.py \
controller.policy_path=track.onnx \
controller.policy_path=ckpt/track_g1.onnx \
input.bvh_file=data/sample_bvh/aiming1_subject1.bvh
```

Expand All @@ -53,71 +54,38 @@ To show the simulated D435i RGB camera view, add the explicit `camera` viewer:

```bash
python scripts/run/run_sim.py \
controller.policy_path=track.onnx \
controller.policy_path=ckpt/track_g1.onnx \
input.bvh_file=data/sample_bvh/aiming1_subject1.bvh \
'viewers=[sim2sim,camera]'
```

For sim2real, viewers are disabled by default. Add `viewers=retarget` to show
the retargeted reference in an optional MuJoCo window.

## Pico Motion Recording

Record many Pico clips as training-ready G1 motion NPZ files:

```bash
pip install -e '.[pico4]'
python scripts/run/record_pico_motion.py
```

The recorder starts the Pico receiver and live Retarget viewer before waiting
for clip names, so preview keeps running while the terminal is idle. Enter a
semantic clip name, then use `R` to start, `S` to save, `D` to discard, `N` for
a new name, and `Q` to quit. Saved clips are written to
`data/pico_motion/clips/` using the semantic label in the filename, with no
sidecar JSON.

Merge recorded clips into the standard HDF5 shard dataset:

```bash
python train_mimic/scripts/data/build_dataset.py \
--spec data/pico_motion/pico_recorded.yaml --force
```

## Sim2Real HDF5 Recording
## Documentation

Pico sim2real can also record manual HDF5 episodes from the real G1:
Full docs at **[BotRunner64.github.io/Teleopit](https://BotRunner64.github.io/Teleopit/)**, covering installation profiles, all tutorials, configuration reference, and architecture.

```bash
pip install -e '.[recording]'
# If you use RealSense video, install pyrealsense2 manually for your platform.
# On Arm machines, prefer conda-forge:
# conda install -c conda-forge pyrealsense2
python scripts/run/run_sim2real.py --config-name sim2real_record \
controller.policy_path=track.onnx \
recording.task="walk forward"
```
## Changelog

Recording uses the terminal controls `R` start, `S` save, `D` discard, and `Q`
shutdown. `STANDING`, `MOCAP`, `ARMS`, and paused mocap can be recorded. Saved
episodes are written as `.h5` files under `data/recordings/sim2real_hdf5/episodes/`.
`sim2real_record.yaml` stores camera frames as compressed MP4 sidecar files under
`data/recordings/sim2real_hdf5/videos/` and keeps `frame_index` / `timestamp`
sync metadata in the HDF5 episode. The low-dimensional HDF5 schema records
`observation.state(68)`, `observation.mode(1)`, `action(36)` as the aligned
reference qpos sent to the policy path, and `action.hand(12)` as the latest
LinkerHand left/right 6D pose commands.
### v0.5.0 (2026-08-03)

## Documentation
- Added an independent host high-level-policy sim2real runtime with a strict msgpack/ZeroMQ protocol, asynchronous receding-horizon replanning, timestamp-aligned scheduling, and validated, rate-limited 50 Hz output.
- Extended G1 peripheral support with OpenNeck 0.2.0 physical-angle control, Pico HMD active-vision mapping, LinkerHand O6 hand-pose control through somehand 0.3.0, and hand/neck state readback.
- Updated sim2real recording and review around `schema.json`, `episodes.jsonl`, per-episode HDF5 files, compressed MP4 video, optional hand/neck state and action fields, and a synchronized recording viewer.
- Added matched G1 model/policy pairs: `g1_29dof.xml` with `ckpt/track_g1.{pt,onnx}`, and `g1_29dof_neck_o6.xml` with `ckpt/track_g1_neck_o6.{pt,onnx}`.
- Updated the OmniXtreme-style benchmark and hardened Pico/RealSense recovery, GMR mocap-entry cold start, the high-level-policy watchdog, and reference safety handling.

Full docs at **[BotRunner64.github.io/Teleopit](https://BotRunner64.github.io/Teleopit/)**, covering installation profiles, all tutorials, configuration reference, and architecture.
#### Migration notes

## Changelog
- The v0.4 root-level `track.{pt,onnx}` paths are replaced by `ckpt/track_g1.{pt,onnx}`; the neck-and-O6 runtime requires its matching robot model and policy.
- The old attribute-based sim2real HDF5 format is unsupported; recording, conversion, and review use the current manifest-based source layout.
- The host-policy protocol has no legacy envelope compatibility, and the old normalized OpenNeck API is unsupported; Teleopit and its companion runtimes must use matching versions.

### v0.4.0 (2026-06-25)

- Improved Pico realtime control with pico-bridge 0.2.1, `ARMS` mode, armed sim2real mocap entry, and retargeter-preserving pause/arms resets.
- Added optional LinkerHand L6/O6 sim2real control, including Pico gripper input and low-latency L6 `vr_hand_pose`.
- Added optional LinkerHand L6/O6 sim2real control, including Pico gripper input and low-latency L6/O6 `vr_hand_pose`.
- Added manual Pico sim2real HDF5 recording and an interactive Pico motion recorder for training NPZ clips.
- Refined the training data path with minimal HDF5 shards, explicit precompute, rewind sampling, and updated tracking rewards.

Expand Down
Binary file added assets/teleopit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
223 changes: 0 additions & 223 deletions docs/docs/configuration/config-reference.md

This file was deleted.

Loading
Loading