Skip to content

Locomanipulation with Improved IK Control, G1 teleoperation and Locomotion policy #3150

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

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

michaellin6
Copy link

@michaellin6 michaellin6 commented Aug 12, 2025

⚠️ Note for reviewers: This PR stack on top of #3149 if you want to review with smaller diffs please on the "Files changed" tab select all the commits except for the first two (those commits correspond to the other PR's)

Description

Contributors: @huihuaNvidia2023, @rwiltz, @life1ess, @peterd-NV, @yanchangNvidia

These changes introduce new environments: Isaac-PickPlace-Locomanipulation-G1-Abs-v0 and Isaac-PickPlace-FixedBaseUpperBodyIK-G1-Abs-v0. These environments, specially the locomanipulation one, feature:

  1. The G1 robot with the retargeter for 3-finger dexterous hand to operator hands tracked by Apple Vision Pro
  2. A locomotion policy trained with RL that enables G1 to walk and follow a input velocity command (vx, vy, wz, h) linear velocity in two axes, angular velocity around its pelvis' z-axis, and height distance of the pelvis from the feet.
  3. Integration with upper body controller that is driven by Inverse Kinematics.

Below is a diagram showing the high level controller composition. The environments introduced have the waist controlled by IK, but it is possible to configure it such that waist DOFs are controlled by the lower body policy as well.
image

This code has been tested through the Mimic pipeline, and the output dataset was used to train a robomimic policy that achieves a success rate of 92% from 50 policy rollouts.

Fixes # (issue)

Some fixes included in these changes:

  1. Previously, Inverse kinematics relied on an input URDF of the robot to load a pinocchio kinematics model. This URDF was exported from the robot asset USD through USD to URDF export extension, however, if the extension is not setup properly, the joint ordering can change causing unexpected behavior due to mismatch of joint ordering between the IK controller and that of Isaac Lab. For the G1 asset, we are for now using a URDF asset directly instead of relying on the URDF exporter.
  2. Previously, the Inverse Kinematics controller assumed that for its kinematics model, only the joints that are being controlled by IK need to be updated, but when combined with other controllers on other joints this assumption breaks. Added a new kinematics configuration class:PinkKinematicsConfiguration that allows for all joints of an articulation to be updated while only a subset are controlled by IK.

Type of change

  • New feature (non-breaking change which adds functionality)

Screenshots

Locomanipulation Teacher Policy - Robomimic Policy
Robomimic policy for PickPlace trained with the Locomanipulation environment. We achieve 92% success rate from 50 rollouts.

Checklist

  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

⚠️ This PR depends on #3149 and should only be merged after that PR

…ed testing

- Add NullSpacePostureTask for natural shoulder/waist joint postures during manipulation
- Refactor IK with damping, null-space control, and joint optimization
- Improve testing framework with JSON-based configurations and stricter tolerances (1mm/1° vs 30mm/10°)
- Apply IK improvements across all environments (PickPlace, NutPour, ExhaustPipe)
- Add waist-enabled manipulation environments and target_eef_link_names mapping
- Disable IK joint limits safety checks so that it always produces a
  solution
@michaellin6 michaellin6 changed the title Implement Locomanipulation with Improved IK Control, G1 teleoperation and Locomotion policy Locomanipulation with Improved IK Control, G1 teleoperation and Locomotion policy Aug 12, 2025
@michaellin6 michaellin6 force-pushed the team/locomanipulation-integration branch from ac61052 to d2e5558 Compare August 12, 2025 01:38
michaellin6 and others added 7 commits August 14, 2025 15:51
the locomanipulation environment for G1. Moved policy inference to
action term. Adding test files for controllers in each environment.
Adds G1 fixed base teleop support, G1 retargeter with hand rotation
fixes, comprehensive unit tests with pytest, and mock device testing.
- Migrate from command manager to using retargeter.
- Enhance pink IK with kinemaitcs model accounting for non-pink-controlled joints, and introducing pink task LocalFrameTask that can specify ee goal poses relative to any robot link reference frame.
- Generalize observation functions for manipulation and locomanipulation tasks.
- Added locomotion and locomanipulation policies with agile observation
- Enhanced IK controller with gravity compensation and tuned gains
- Expanded test coverage for ik
- Added unit tests for new pink kinematics config class, and new custom
  pink frame task
@michaellin6 michaellin6 force-pushed the team/locomanipulation-integration branch from d2e5558 to 6951dbf Compare August 14, 2025 22:52
Copy link
Contributor

@rwiltz rwiltz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM from the teleop side of things.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants