{"id":31140900,"url":"https://github.com/robotis-git/robotis_lab","last_synced_at":"2026-04-10T05:03:11.196Z","repository":{"id":306897697,"uuid":"1019503597","full_name":"ROBOTIS-GIT/robotis_lab","owner":"ROBOTIS-GIT","description":"This repository provides tutorials for reinforcement learning and imitation learning using ROBOTIS robots, and supports Sim2Real functionality for deploying the learned policies on real robots.","archived":false,"fork":false,"pushed_at":"2025-09-18T05:39:08.000Z","size":27047,"stargazers_count":49,"open_issues_count":1,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-18T07:27:31.617Z","etag":null,"topics":["imitation-learning","isaaclab","isaacsim","reinforcement-learning","robotics","robotis","robots","sim2real"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ROBOTIS-GIT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-14T12:30:59.000Z","updated_at":"2025-09-18T03:25:27.000Z","dependencies_parsed_at":"2025-09-09T08:20:21.005Z","dependency_job_id":null,"html_url":"https://github.com/ROBOTIS-GIT/robotis_lab","commit_stats":null,"previous_names":["robotis-git/robotis_lab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ROBOTIS-GIT/robotis_lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROBOTIS-GIT%2Frobotis_lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROBOTIS-GIT%2Frobotis_lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROBOTIS-GIT%2Frobotis_lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROBOTIS-GIT%2Frobotis_lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ROBOTIS-GIT","download_url":"https://codeload.github.com/ROBOTIS-GIT/robotis_lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROBOTIS-GIT%2Frobotis_lab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275771602,"owners_count":25525892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["imitation-learning","isaaclab","isaacsim","reinforcement-learning","robotics","robotis","robots","sim2real"],"created_at":"2025-09-18T12:55:24.886Z","updated_at":"2025-09-18T12:55:26.779Z","avatar_url":"https://github.com/ROBOTIS-GIT.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# robotis_lab\n\n[![IsaacSim](https://img.shields.io/badge/IsaacSim-4.5.0-silver.svg)](https://docs.omniverse.nvidia.com/isaacsim/latest/overview.html)\n[![Isaac Lab](https://img.shields.io/badge/IsaacLab-2.0.0-silver)](https://isaac-sim.github.io/IsaacLab)\n[![Python](https://img.shields.io/badge/python-3.10-blue.svg)](https://docs.python.org/3/whatsnew/3.10.html)\n[![Linux platform](https://img.shields.io/badge/platform-linux--64-orange.svg)](https://releases.ubuntu.com/22.04/)\n[![License](https://img.shields.io/badge/license-Apache2.0-yellow.svg)](https://opensource.org/license/apache-2-0)\n\n![ISAAC_FFW_RL_reach_train (1)](https://github.com/user-attachments/assets/5ca984e9-acbb-4505-95d8-a2b04d3b3980)\n\n## Overview\n\n**robotis_lab** is a research-oriented repository based on [Isaac Lab](https://isaac-sim.github.io/IsaacLab), designed to enable reinforcement learning (RL) and imitation learning (IL) experiments using Robotis robots in simulation.\nThis project provides simulation environments, configuration tools, and task definitions tailored for Robotis hardware, leveraging NVIDIA Isaac Sim’s powerful GPU-accelerated physics engine and Isaac Lab’s modular RL pipeline.\n\n\u003e [!IMPORTANT]\n\u003e This repository currently depends on **IsaacLab v2.0.0** or higher.\n\u003e\n\n## Installation\n\n- Install Isaac Lab by following the [installation guide](https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/index.html). We recommend using the conda installation as it simplifies calling Python scripts from the terminal.\n\n- Clone the robotis_lab Repository (i.e. outside the `IsaacLab` directory):\n\n  ```bash\n  git clone https://github.com/ROBOTIS-GIT/robotis_lab.git\n  ```\n\n- Install the robotis_lab Package\n\n  ```bash\n  cd robotis_lab \u0026\u0026 python -m pip install -e source/robotis_lab\n\n  ```\n\n- Verify that the extension is correctly installed by running the following command to print all the available environments in the extension:\n\n  ```bash\n  python scripts/tools/list_envs.py\n  ```\n\n## Try examples\n\n\u003e [!NOTE]\n\u003e If you want to control a **SINGLE ROBOT** with the keyboard during playback, add `--keyboard` at the end of the play script.\n\u003e\n\u003e ```\n\u003e Key bindings:\n\u003e =========================== =========================\n\u003e Command                     Key\n\u003e =========================== =========================\n\u003e Toggle gripper (open/close) K      \n\u003e Move arm along x-axis       W / S   \n\u003e Move arm along y-axis       A / D\n\u003e Move arm along z-axis       Q / E\n\u003e Rotate arm along x-axis     Z / X\n\u003e Rotate arm along y-axis     T / G\n\u003e Rotate arm along z-axis     C / V\n\u003e =========================== =========================\n\u003e ```\n\n### Reinforcement learning\n\nOMY Reach task\n\n```bash\n# Train\npython scripts/reinforcement_learning/rsl_rl/train.py --task RobotisLab-Reach-OMY-v0 --num_envs=512 --headless\n\n# Play\npython scripts/reinforcement_learning/rsl_rl/play.py --task RobotisLab-Reach-OMY-v0 --num_envs=16\n```\n\nOMY Lift task\n\n```bash\n# Train\npython scripts/reinforcement_learning/rsl_rl/train.py --task RobotisLab-Lift-Cube-OMY-v0 --num_envs=512 --headless\n\n# Play\npython scripts/reinforcement_learning/rsl_rl/play.py --task RobotisLab-Lift-Cube-OMY-v0 --num_envs=16\n```\n\nOMY Open drawer task\n\n```bash\n# Train\npython scripts/reinforcement_learning/rsl_rl/train.py --task RobotisLab-Open-Drawer-OMY-v0 --num_envs=512 --headless\n\n# Play\npython scripts/reinforcement_learning/rsl_rl/play.py --task RobotisLab-Open-Drawer-OMY-v0 --num_envs=16\n```\n\nFFW-BG2 reach task\n\n```bash\n# Train\npython scripts/reinforcement_learning/rsl_rl/train.py --task RobotisLab-Reach-FFW-BG2-v0 --num_envs=512 --headless\n\n# Play\npython scripts/reinforcement_learning/rsl_rl/play.py --task RobotisLab-Reach-FFW-BG2-v0 --num_envs=16\n```\n\n### Imitation learning\n\nOMY Stack task (Stack the blocks in the following order: blue → red → green.)\n\n```bash\n# Teleop\npython scripts/tools/record_demos.py --task RobotisLab-Stack-Cube-OMY-IK-Rel-v0 --teleop_device keyboard --dataset_file ./datasets/dataset.hdf5 --num_demos 10\n\n# Annotate\npython scripts/imitation_learning/isaaclab_mimic/annotate_demos.py --device cuda --task RobotisLab-Stack-Cube-OMY-IK-Rel-Mimic-v0 --auto --input_file ./datasets/dataset.hdf5 --output_file ./datasets/annotated_dataset.hdf5 --headless\n\n# Mimic data\npython scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \\\n--device cuda --num_envs 100 --generation_num_trials 1000 \\\n--input_file ./datasets/annotated_dataset.hdf5 --output_file ./datasets/generated_dataset.hdf5 --headless\n\n# Train\npython scripts/imitation_learning/robomimic/train.py \\\n--task RobotisLab-Stack-Cube-OMY-IK-Rel-v0 --algo bc \\\n--dataset ./datasets/generated_dataset.hdf5\n\n# Play\npython scripts/imitation_learning/robomimic/play.py \\\n--device cuda --task RobotisLab-Stack-Cube-OMY-IK-Rel-v0 --num_rollouts 50 \\\n--checkpoint /PATH/TO/desired_model_checkpoint.pth\n```\n\nFFW-BG2 Pick and Place Task (Move the red stick into the basket.)\n\n```bash\n# Teleop\npython scripts/tools/record_demos.py --task RobotisLab-PickPlace-FFW-BG2-IK-Rel-v0 --teleop_device keyboard --dataset_file ./datasets/dataset.hdf5 --num_demos 10 --enable_cameras\n\n# Annotate\npython scripts/imitation_learning/isaaclab_mimic/annotate_demos.py --device cuda --task RobotisLab-PickPlace-FFW-BG2-Mimic-v0 --input_file ./datasets/dataset.hdf5 --output_file ./datasets/annotated_dataset.hdf5 --enable_cameras\n\n# Mimic data\npython scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \\\n--device cuda --num_envs 20 --generation_num_trials 300 \\\n--input_file ./datasets/annotated_dataset.hdf5 --output_file ./datasets/generated_dataset.hdf5 --enable_cameras --headless\n\n# Train\npython scripts/imitation_learning/robomimic/train.py \\\n--task RobotisLab-PickPlace-FFW-BG2-IK-Rel-v0 --algo bc \\\n--dataset ./datasets/generated_dataset.hdf5\n\n# Play\npython scripts/imitation_learning/robomimic/play.py \\\n--device cuda --task RobotisLab-PickPlace-FFW-BG2-IK-Rel-v0  --num_rollouts 50 \\\n--checkpoint /PATH/TO/desired_model_checkpoint.pth --enable_cameras\n```\n\n## Sim2Real Deployment\nWe provide a Sim2Real pipeline to deploy policies trained in Isaac Lab simulation directly onto the real OMY robot.\n\n\u003cdetails\u003e\n\u003csummary\u003e🎥 Show demo video\u003c/summary\u003e\n\nhttps://github.com/user-attachments/assets/6c27bdb1-3a6b-4686-a546-8f14f01e4abe\n\n\u003c/details\u003e\n\n\u003e [!IMPORTANT]\n\u003e More on OMY Hardware Setup:\n\u003e For details on how to set up and operate the OMY robot, please refer to the [open_manipulator repo](https://github.com/ROBOTIS-GIT/open_manipulator.git)\n\nIn this pipeline:\n- The trained policy (exported as a TorchScript .pt file) is executed on the real robot using ROS 2.\n- The robot receives joint state feedback and sends joint trajectory commands via a ROS 2 control interface.\n- A TF frame for the sampled target pose is broadcast for visualization and debugging.\n\nPrerequisites\n- A trained policy (under logs/rsl_rl/reach_omy/\u003cTIMESTAMP\u003e).\n- ROS 2 Jazzy installed and sourced.\n- Robot hardware must be ready and controllable via the joint trajectory interface.\n\n\nRun Sim2Real Reach Policy on OMY\n\n```bash\n# Train\npython scripts/reinforcement_learning/rsl_rl/train.py --task RobotisLab-Reach-OMY-v0 --num_envs=512 --headless\n\n# Sim2Real\npython scripts/sim2real/OMY/reach/run_omy_reach.py --model_dir=\u003c2025-07-10_08-47-09\u003e\n```\n\nReplace \u003c2025-07-10_08-47-09\u003e with the actual timestamp folder name under:\n```bash\nlogs/rsl_rl/reach_omy/\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotis-git%2Frobotis_lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobotis-git%2Frobotis_lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotis-git%2Frobotis_lab/lists"}