Skip to content

Perceptive Learning for Legged Robots in IsaacLab. | LocoTouch: Learning Dynamic Quadrupedal Transport with Tactile Sensing (CoRL'25)

Notifications You must be signed in to change notification settings

linchangyi1/LocoTouch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Perceptive Learning for Legged Robots in IsaacLab

IsaacSim Isaac Lab Ubuntu

Table of Contents

  1. Overview
  2. Key Features
  3. Installation
  4. Training, Play, and Deployment
  5. Known Issues
  6. Notes

Overview

This repository provides code for training perceptive policies for legged robots using the manager-based workflow in IsaacLab. Network architectures, distillation methods, and other configurations can be easily customized through parameters. The learned policies can be tested with MoCap or deployed on an onboard Mac Mini computer.

Please note that the official implementation of LocoTouch is built on IsaacSim 4.5 and IsaacLab 1.40. To reproduce LocoTouch with Ubuntu 20.04, please refer to the ubuntu-20 branch.

Key Features

  • LocoTouch Implementations

    • Quadrupedal Transport Policy with Tactile Sensing
    • Adaptive Symmetric Locomotion Gait (via Symmetricity Reward Function)
  • Flexible Network Architectures for RL/IL

    • MLP Policy w/wo MLP/CNN Encoder, w/wo RNN Module
    • Transformer Policy
    • Diffusion Policy
  • Teacher-Student Pipelines

    • "ROA" (Regularized Online Latent Supervision)
  • Policy Deployment

    • Signal Reading and Processing for Distributed Tactile Sensors
    • MoCap-Robot Communication via NaNet and ROS
    • IsaacLab-compatible depoyment code for Locomotion, State-Based Transport, and Tactile-Aware Transport polcies
    • Mac Mini Setup with Custom-Designed Shell (MacMini-for-Onboard-Robotics)
  • Evaluated Perception Modalities

    • Proprioception (Motor / IMU)
    • Tactile Sensing
    • Visual Sensing (Depth / RGB)
    • Other Modalities (e.g., LiDAR)

Please note that the unimplemented features are not part of LocoTouch, and there is no estimated timeline for their release.

Installation

System and Software requirements:

  • Ubuntu 22.04 (x64)
  • GelForce RTX 4090 GPU (recommended)
  • NVIDIA GPU Driver 570.169
  • NVIDIA CUDA 12.8

Install IsaacSim and IsaacLab:

  • Follow the guide to install IsaacSim 5.0.
  • Follow the guide to install IsaacLab 2.2.1 inside a Conda environment.

Install LocoTouch:

Using a python interpreter where IsaacLab is installed, install LocoTouch and Loco_RL:

cd LocoTouch
pip install -e .
cd loco_rl
pip install -e .
cd ..

Verify the installation by playing the teacher and student policies:

  • Teacher Policy:
    python locotouch/scripts/play.py --task Isaac-RandCylinderTransportTeacher-LocoTouch-Play-v1 --num_envs=20 --load_run=2025-09-01_21-03-58
  • Student Policy:
    python locotouch/scripts/distill.py --task Isaac-RandCylinderTransportStudent_SingleBinaryTac_CNNRNN_Mon-LocoTouch-Play-v1 --num_envs=20 --log_dir_distill=2025-09-02_23-27-14 --checkpoint_distill=model_7.pt

Training, Play, and Deployment

Locomotion (Optional)

  • RL Training:
    python locotouch/scripts/train.py --task Isaac-Locomotion-LocoTouch-v1 --num_envs=4096 --headless
  • Play:
    python locotouch/scripts/play.py --task Isaac-Locomotion-LocoTouch-Play-v1 --num_envs=20
  • Deployment: Follow the guide in Go1-Policy-Deployment for installation, and run:
    python teleoperation/joystick.py
    python deploy/locomotion.py

State-Based Object Transport (Teacher Policy)

  • RL Training (recommend 15k+ iterations):
    python locotouch/scripts/train.py --task Isaac-RandCylinderTransportTeacher-LocoTouch-v1 --num_envs=4096 --headless
  • Play:
    python locotouch/scripts/play.py --task Isaac-RandCylinderTransportTeacher-LocoTouch-Play-v1 --num_envs=20
  • Deployment: Follow the guide in Go1-Policy-Deployment for installation, and run:
    python teleoperation/joystick.py
    python mocap/run_optitrack.py
    python deploy/transport_teacher.py

Tactile-Aware Object Transport (Student Policy)

  • Distillation:

    python locotouch/scripts/distill.py --task Isaac-RandCylinderTransportStudent_SingleBinaryTac_CNNRNN_Mon-LocoTouch-v1 --training --num_envs=405 --headless --load_run=2025-09-01_21-03-58

    Additional options are supported, e.g.:

    python locotouch/scripts/distill.py --task Isaac-RandCylinderTransportStudent_SingleBinaryTac_CNNRNN_Mon-LocoTouch-v1 --training --num_envs=405 --headless --load_run=2025-09-01_21-03-58 --checkpoint=model_15000.pt --headless --distill_lr=0.0005
  • Play (replace with your own log_dir_distill folder):

    python locotouch/scripts/distill.py --task Isaac-RandCylinderTransportStudent_SingleBinaryTac_CNNRNN_Mon-LocoTouch-Play-v1 --num_envs=20 --log_dir_distill=2025-09-02_23-27-14 --checkpoint_distill=model_7.pt
  • Deployment: Follow the guide in Go1-Policy-Deployment for installation, and run:

    python teleoperation/joystick.py
    python tactile_sensing/run_tactile_sensing.py
    python deploy/transport_student.py

Known Issues

  • Python is not installed:
    conda install python=3.11
  • Error occurs after running "./isaaclab.sh --install":
    pip install --upgrade pip
  • Visualization error occurs after running "python source/standalone/tutorials/00_sim/create_empty.py":
    conda remove --force xorg-libxcb xorg-libx11 xorg-libxext libxcb libxkbcommon mesa-glu libglvnd

Notes

  • Mitigating from IsaacLab 1.40 to 2.0: omni.isaac.lab. -> isaaclab. omni.isaac.lab_assets -> isaaclab_assets omni.isaac.lab_tasks -> isaaclab_tasks omni.isaac.lab_tasks.utils.wrappers.rsl_rl -> isaaclab_rl.rsl_rl obs, extras = env.get_observations() ->
    env_obs = env.get_observations()
    obs = env_obs["policy"]
    extras = {"observations": {k: v for k, v in env_obs.items()}}
    obs, rwd, dones, extras = self.env.step(action) ->
    next_obs, _, dones, extras = self.env.step(action)
    extras = {"observations": {k: v for k, v in next_obs.items()}}
    quat_rotate_inverse -> quat_apply_inverse quat_rotate -> quat_apply

VScode Setting

Press ctrl + shift + p; choose Open Workspace Settings; modify and paste the following settings:

{
    "python.analysis.extraPaths": [
        "${workspaceFolder}/_isaac_sim",
        "${workspaceFolder}/../IsaacLab/source/isaaclab_assets",
        "${workspaceFolder}/../IsaacLab/source/isaaclab_rl",
        "${workspaceFolder}/../IsaacLab/source/isaaclab",
        "${workspaceFolder}/../IsaacLab/source/isaaclab_tasks",
        "${workspaceFolder}/../IsaacLab/source/isaaclab_mimic",
        "${workspaceFolder}/loco_rl"
    ]
}

Reference

@article{lin2025locotouch,
  title={LocoTouch: Learning Dynamic Quadrupedal Transport with Tactile Sensing},
  author={Lin, Changyi and Song, Yuxin Ray and Huo, Boda and Yu, Mingyang and Wang, Yikai and Liu, Shiqi and Yang, Yuxiang and Yu, Wenhao and Zhang, Tingnan and Tan, Jie and others},
  journal={arXiv preprint arXiv:2505.23175},
  year={2025}
}

About

Perceptive Learning for Legged Robots in IsaacLab. | LocoTouch: Learning Dynamic Quadrupedal Transport with Tactile Sensing (CoRL'25)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published