https://github.com/hijimasa/isaac-ros2-control-sample
This repository provides various utilities (operation with ros2_control, automatic sensor generation and sensor data publishing) for easy use of Isaac Sim.
https://github.com/hijimasa/isaac-ros2-control-sample
isaac-sim ros2 ros2-control ros2-humble sensor-simulation
Last synced: 11 days ago
JSON representation
This repository provides various utilities (operation with ros2_control, automatic sensor generation and sensor data publishing) for easy use of Isaac Sim.
- Host: GitHub
- URL: https://github.com/hijimasa/isaac-ros2-control-sample
- Owner: hijimasa
- License: mit
- Created: 2023-06-12T01:46:58.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2026-01-18T14:02:02.000Z (6 months ago)
- Last Synced: 2026-01-18T21:15:53.250Z (6 months ago)
- Topics: isaac-sim, ros2, ros2-control, ros2-humble, sensor-simulation
- Language: Python
- Homepage: https://hijimasa.github.io/isaac_ros2_utils/
- Size: 29.1 MB
- Stars: 103
- Watchers: 7
- Forks: 8
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# isaac-ros2-control-sample
- ros2_control Demo

- LiDAR output Demo

- Camera output Demo

- Arm robot Demo

This repository shows how to control the robot from ros2_control to make Isaac Sim easier to use.
Important packages are "topic_based_ros2_control" and "isaac_ros2_scripts".
"topic_based_ros2_control" provide hardware_interface class and send the commands from ros2_control to "isaac_ros2_scripts".
"isaac_ros2_scripts" is needed bacause Isaac Sim needs specific python environment.
"isaac_ros2_scripts" has the python script to launch and control Isaac Sim.
The features of this repository are below:
- This shows how to control a robot on Isaac Sim with ros2_control.
- This provides a Dockerfile where Isaac Sim and ROS2 Humble can coexist.
- This currently supports prismatic and rotational joints using position and velocity control.
- This sends joint status (position, velocity and effort) to ros2_control from Isaac Sim.
- This launches sensors from URDF description.
- This spawns URDF model at the desired timing and position.
- This launchs sensors and controller at the desired timing.
- This sets stiffness, damping and friction from URDF description.
## Prerequisite
1. Docker
1. Isaac Sim Docker Image (Tested using image based on nvcr.io/nvidia/isaac-sim:5.1.0)
## How to use
1. Install Docker and pull Isaac Sim Docker Image.
refer to https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/install_container.html
2. Clone the repo to your ros2 workspace
```bash
git clone https://github.com/hijimasa/isaac-ros2-control-sample.git
```
3. Get git submodules
```bash
cd isaac-ros2-control-sample
git submodule update --init --recursive
```
4. Build a docker image with shell script.
```bash
cd docker
./build_docker_image.sh
```
5. Launch a docker container
```bash
./launch_docker.sh
```
6. Build ros2 source codes
```bash
colcon build && source install/setup.sh
```
7. Launch the package
7.1. For Mobile Robot
- To launch simulator
```bash
ros2 run isaac_ros2_scripts launcher
```
- To spawn robot (another terminal)
```bash
docker exec -it isaac-sim /bin/bash
ros2 launch isaac_diffbot_sim diffbot_spawn.launch.py
```
- To launch teleop_twist_keyboard (another terminal)
```bash
docker exec -it isaac-sim /bin/bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard
```
7.2. For Arm Robot
- To launch simulator
```bash
ros2 run isaac_ros2_scripts launcher
```
- To spawn robot (another terminal)
```bash
docker exec -it isaac-sim /bin/bash
ros2 launch franka_moveit_config demo.launch.py
```
> [!NOTE]
> For the first time, launching Isaac Sim takes a very long time.
> Isaac Sim must be fully launched to spawn the robot.
## Next
You can make URDF for Isaac Sim with [this documentation](https://hijimasa.github.io/isaac_ros2_utils/).
## Bug
- LaserScan topic do not published when 2D Lidar config file is used.
- You should uncheck "Normarize Image" in your depth topic in RViz2 if you get black depth image.