Skip to content

louislelay/kinova_isaaclab_sim2real

Repository files navigation

🦾 Kinova Gen3 RL & Sim2Real Toolkit

Overview

This repository provides a modular framework for training reinforcement learning (RL) agents on the Kinova Gen3 robot using Isaac Lab, and deploying trained models either in Isaac Sim, or on the real robot via ROS2.

Built as a standalone Isaac Lab extension, it allows isolated development.

Important

The Sim2Real pipeline runs entirely with ROS2 and does not require Isaac Lab or Isaac Sim to be installed. And for convenience, pre-trained models are provided so you can get started immediately without training.

Section What you’ll find
🛠️ Installation How to install Isaac Lab, clone this repo, and install the Python package.
🚀 Training & Basic Testing Commands to train a reach-task policy with rsl_rl or rl_games and replay it in Isaac Lab.
🤖 Sim-to-Real Deployment (ROS 2) Step-by-step instructions to test on fake hardware, then execute the exact same policy on the physical Kinova Gen3.
🌟 Acknowledgements Credits to Isaac Lab, Kinova, community help, and INIT Lab.
kinova_demo.mp4

🛠️ Installation

  1. Install Isaac Lab by following the official installation guide (conda recommended).
  2. Clone this repo outside the IsaacLab directory.
  3. Install from the repository:
python -m pip install -e source/gen3

🚀 Training & Basic Testing

You can train a policy on the Kinova Gen3 Reach Task using either rsl_rl or rl_games library:

python scripts/rsl_rl/train.py --task Gen3-Reach-v0

After training, a quick way to validate the behavior is to use play.py:

python scripts/rsl_rl/play.py --task Gen3-Reach-v0

This helps confirm that the learned policy performs as expected in Isaac Lab before attempting transfer.

🤖 Sim2Real Deployment (ROS2)

The Sim2Real pipeline focuses on deploying trained reinforcement learning policies directly onto the real Kinova Gen3 robot using a minimal ROS2-based interface, with no dependency on Isaac Lab or Isaac Sim at runtime.

Fake-hardware test

You can first try to simulate the Kinova Gen3 in ROS2 using fake hardware mode:

ros2 launch kortex_bringup gen3.launch.py robot_ip:=yyy.yyy.yyy.yyy use_fake_hardware:=true

To test movement commands, send a simple joint trajectory:

ros2 topic pub /joint_trajectory_controller/joint_trajectory trajectory_msgs/JointTrajectory "{
  joint_names: [joint_1, joint_2, joint_3, joint_4, joint_5, joint_6, joint_7],
  points: [
    { positions: [0, 0, 0, 0, 0, 0, 0], time_from_start: { sec: 1 } },
  ]
}" -1

Run the Reach Task with the trained policy to go to a certain predefined position:

python3 scripts/sim2real/run_task_reach.py

Real robot test

The next step is to connect the same interface to the real Kinova Gen3 and execute the learned Reach Task in real-world conditions — using the exact same model and runtime logic validated in simulation.

For that you'll run:

ros2 launch kortex_bringup gen3_lite.launch.py robot_ip:=192.168.1.10

And in the same way as simulation, in another terminal:

python3 scripts/sim2real/run_task_reach.py

Now your robot should be alternating between three positions.

🌟 Acknowledgements

About

Codebase for Kinova Gen3 training in Isaac Lab, sim2real transfer and ROS deployment.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages