• michaellin6's avatar
    Enhances Pink IK controller with null-space posture control and improv… (#3149) · b3f6b316
    michaellin6 authored
    # Description
    
    <!--
    Thank you for your interest in sending a pull request. Please make sure
    to check the contribution guidelines.
    
    Link:
    https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html
    -->
    
    Enhance Pink IK Controller with Null Space Posture Control
    
    This PR improves the Pink IK controller integration for better humanoid
    robot control and more natural postures.
    
    **Note**: Original this PR was staged in the internal repo (#547). It
    has been moved here due to new Github workflow.
    
    
    ## Key Changes
    ### New Null Space Posture Task
    - Added NullSpacePostureTask to enforce postural constraints on
    shoulder/waist joints while prioritizing end-effector tasks
    - Maintains natural robot poses during manipulation
    ### Controller Improvements
    - Tuned low level PD controller gains
    - Support mixed task types (FrameTask + NullSpacePostureTask)
    ### Testing & Environment Updates
    - Redesigned pink controller test script to use JSON-based
    configurations to program test motions.
    - Updated all environments (PickPlace, NutPour, ExhaustPipe) with null
    space control, damping tasks, and improved tracking
    - Added `Isaac-PickPlace-GR1T2-WaistEnabled-Abs-v0` env that is
    identical to `Isaac-PickPlace-GR1T2-Abs-v0` but enables the Waist DOFs.
    - Added target_eef_link_names mapping for clearer link specification
    
    Fixes # (issue)
    These changes help fix the following problems from [VDR
    feedback](https://docs.google.com/document/d/1saB1QA5r_WlD1l17q7C04WWNltnBW-K0ydI2UB8jxAs/edit?tab=t.0)
    - [Enable Waist DOF](https://nvbugspro.nvidia.com/bug/5235527)
    - Discourage elbow flare
    - Make controller low-latency and low-jerk. **We improved the unit test
    for the pink controller and reduced our position and rotation accuracy
    tolerance from 30 mm, 10 degrees to 1 mm, 1 degree.**
    - Develop metric for controller performance
    - Added a flag to disable failure due to joint limits. Previously, any
    commanded pose that ended in joint limit violation would result in no
    solution and the controlled robot freezing in place. This change gets
    the solver to still provide a solution and instead issue a warning for
    joint limit violations.
    
    ## Screenshots
    
    These controller changes have been tested through the Mimic pipeline
    (teleop_se3_agent.py, record/replay_demos.py). Here are videos showing
    teleoperation of all three environments working.
    
    ### PickPlace-GR1T2-Abs
    ![IK Improvements - Pick Place
    Wheel](https://github.com/user-attachments/assets/98bd5a70-e5fc-4b5b-954a-848c8dbe85d4)
    
    ### NutPour-GR1T2
    ![IK Improvements -
    NutPour](https://github.com/user-attachments/assets/b3603dd4-73cb-4ee7-9963-c68a32dffc60)
    
    
    ### ExhaustPipe-GR1T2
    ![IK Improvements -
    ExhaustPipe](https://github.com/user-attachments/assets/28cd1a4b-29cc-402c-9ec4-7082b2c64d98)
    
    
    ### Successfully Trained Robomimic Model Rollout on PickPlace task
    For the two robomimic tasks: `Isaac-PickPlace-GR1T2-Abs-v0` and
    `Isaac-NutPour-GR1T2-Pink-IK-Abs-v0`, if we collect a new dataset, we
    achieve a success rate of 96 and 92% respectively.
    ![IK Improvements - GR1T2 Waist Enabled Model Rollout
    Trimmed](https://github.com/user-attachments/assets/d270e8a8-ed72-41f3-84ac-bdc2c02d190d)
    ![IK Improvements - GR1T2 Nut Pour Model Rollout
    Trimmed](https://github.com/user-attachments/assets/1434721a-5dce-4b76-845a-6ac1379982f5)
    
    
    ## Checklist
    
    - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
    `./isaaclab.sh --format`
    - [x] I have made corresponding changes to the documentation
    - [x] My changes generate no new warnings
    - [x] I have added tests that prove my fix is effective or that my
    feature works
    - [x] I have updated the changelog and the corresponding version in the
    extension's `config/extension.toml` file
    - [x] I have added my name to the `CONTRIBUTORS.md` or my name already
    exists there
    
    <!--
    As you go through the checklist above, you can mark something as done by
    putting an x character in it
    
    For example,
    - [x] I have done this task
    - [ ] I have not done this task
    -->
    
    ---------
    Co-authored-by: 's avatarKelly Guo <kellyg@nvidia.com>
    b3f6b316