-
Notifications
You must be signed in to change notification settings - Fork 0
Add copy-only cross-embodiment retargeting (G1 ⇄ GR1) #78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,65 @@ | ||
| # Copyright (c) 2026, The Isaac AutoData Project Developers. | ||
| # All rights reserved. | ||
| # | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| # Retarget descriptor: Unitree G1 -> Fourier GR1T2 pick-and-place (bimanual humanoids). | ||
| # | ||
| # The right arm picks the object and transports it; the left arm does a support motion. Self-contained: | ||
| # the per-EEF `subtasks` below segment the source demo and track the carried object during transport | ||
| # (replacing the old auto carry-detection). | ||
|
|
||
| name: g1_to_gr1_pick_place | ||
| description: G1 -> GR1T2 humanoid picks an object with the right arm and transfers it. | ||
| write_datagen_info: true # write full datagen_info -> output is a drop-in generate_dataset source | ||
|
|
||
| source_embodiment: ../embodiments/g1_ik_abs.yaml | ||
| target_embodiment: ../embodiments/gr1_ik_abs.yaml | ||
| target_env_name: Isaac-PickPlace-GR1T2-Abs-v0 | ||
|
|
||
| hand_policy: binary | ||
| init_robot_from_ik: false | ||
| replay_speed: 2.0 | ||
| reference_pose: eef_pose | ||
| eef_reference_link: controlled | ||
| retarget_frame: world | ||
| scene_translation: [0.0, 0.0, 0.30] | ||
|
|
||
| segment_settle_steps: 0 | ||
|
|
||
| default_object_tracking: | ||
| interpolation_step_start: 15 | ||
| interpolation_step_after: 5 | ||
|
|
||
| subtasks: | ||
| right: | ||
| - object_ref: world | ||
| description: Approach and grasp the object with the right hand. | ||
| subtask_end: | ||
| method: gripper_close | ||
| offset: 10 | ||
|
|
||
| - frame_ref: world | ||
| description: Place the object in the bin. | ||
| subtask_end: | ||
| method: gripper_open | ||
| object_tracking: object | ||
|
|
||
| - object_ref: world | ||
| description: Go back to iddle | ||
|
|
||
| left: | ||
| - object_ref: object | ||
| description: Approach and grasp the object with the left hand. | ||
| subtask_end: | ||
| method: gripper_close | ||
| offset: 10 | ||
|
|
||
| - frame_ref: world | ||
| description: Move the object next to the right end | ||
| subtask_end: | ||
| method: gripper_open | ||
| object_tracking: object | ||
|
|
||
| - object_ref: world | ||
| description: Go back to iddle | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,69 @@ | ||
| # Copyright (c) 2026, The Isaac AutoData Project Developers. | ||
| # All rights reserved. | ||
| # | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| # Retarget descriptor: Fourier GR1T2 -> Unitree G1 pick-and-place (bimanual humanoids). | ||
| # | ||
| # The right arm picks the object and transports it; the left arm does a support motion. Self-contained: | ||
| # the per-EEF `subtasks` below segment the source demo and track the carried object during transport | ||
| # (replacing the old auto carry-detection). | ||
|
|
||
| name: gr1_to_g1_pick_place | ||
| description: GR1T2 -> G1 humanoid picks an object with the right arm and transfers it. | ||
| write_datagen_info: true # write full datagen_info -> output is a drop-in generate_dataset source | ||
|
|
||
| source_embodiment: ../embodiments/gr1_ik_abs.yaml | ||
| target_embodiment: ../embodiments/g1_ik_abs.yaml | ||
| target_env_name: Isaac-PickPlace-Locomanipulation-G1-Abs-v0 | ||
|
|
||
| hand_policy: binary | ||
| # The G1 target's locomanipulation action has a body channel; hold it at this default during replay. | ||
| target_channel_defaults: | ||
| body: [0.0, 0.0, 0.0, 0.72] | ||
| init_robot_from_ik: false | ||
| replay_speed: 0.5 | ||
| reference_pose: target_eef_pose | ||
| eef_reference_link: controlled | ||
| retarget_frame: world | ||
| scene_translation: [0.0, 0.0, -0.30] | ||
|
|
||
| segment_settle_steps: 0 | ||
|
|
||
| default_object_tracking: | ||
| interpolation_step_start: 15 | ||
| interpolation_step_after: 5 | ||
|
|
||
| subtasks: | ||
| right: | ||
| - object_ref: world | ||
| description: Approach and grasp the object with the right hand. | ||
| subtask_end: | ||
| method: gripper_close | ||
| offset: 10 | ||
|
|
||
| - frame_ref: world | ||
| description: Place the object in the bin. | ||
| subtask_end: | ||
| method: gripper_open | ||
| object_tracking: object | ||
|
|
||
| - object_ref: world | ||
| description: Go back to iddle | ||
|
|
||
| left: | ||
| - object_ref: object | ||
| description: Approach and grasp the object with the left hand. | ||
| subtask_end: | ||
| method: gripper_close | ||
| offset: 10 | ||
|
|
||
| - frame_ref: world | ||
| description: Move the object next to the right end | ||
| subtask_end: | ||
| method: gripper_open | ||
| object_tracking: object | ||
|
|
||
| - object_ref: world | ||
| description: Go back to iddle | ||
|
|
||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win 🔎 Supported by static analysis🏁 Script executed: rg -n 'end-of-file-fixer|yamllint|yaml' .pre-commit-config.yaml pyproject.toml setup.cfg .yamllint* 2>/dev/null
python - <<'PY'
from pathlib import Path
p=Path("autodata_examples/retarget/gr1_to_g1_pick_place.yaml")
print(repr(p.read_bytes()[-24:]))
PYRepository: isaac-sim/AutoData Length of output: 323 🏁 Script executed: set -eu
printf '%s\n' '--- pre-commit relevant config ---'
sed -n '1,50p' .pre-commit-config.yaml
printf '%s\n' '--- candidate lint/config files ---'
find . -maxdepth 2 -type f \( -name '*yamllint*' -o -name '.yamllint' -o -name '.yamllint.yaml' -o -name '.yamllint.yml' -o -name 'pyproject.toml' -o -name 'setup.cfg' \) -print
printf '%s\n' '--- target line and byte structure ---'
nl -ba autodata_examples/retarget/gr1_to_g1_pick_place.yaml | tail -n 8
python3 - <<'PY'
from pathlib import Path
p = Path("autodata_examples/retarget/gr1_to_g1_pick_place.yaml")
b = p.read_bytes()
print("size:", len(b))
print("endswith_one_newline:", b.endswith(b"\n") and not b.endswith(b"\n\n"))
print("trailing_newlines:", len(b) - len(b.rstrip(b"\n")))
print("last_bytes:", repr(b[-40:]))
print("last_lines_repr:", repr(b.splitlines(keepends=True)[-4:]))
PYRepository: isaac-sim/AutoData Length of output: 2294 Remove the extra blank line at end of file. The file ends with two newline characters after line 68. The configured 🧰 Tools🪛 YAMLlint (1.37.1)[error] 69-69: too many blank lines (1 > 0) (empty-lines) 🤖 Prompt for AI Agents |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: isaac-sim/AutoData
Length of output: 313
🏁 Script executed:
Repository: isaac-sim/AutoData
Length of output: 843
Add the final newline.
The checked-in
end-of-file-fixerhook applies to this file. The file ends withb'Go back to iddle', without a newline, so the hook will modify it.🤖 Prompt for AI Agents