Skip to content

Comments

docs: guide for simulating robots with Isaac Sim using omnigraph#462

Open
yrh012 wants to merge 6 commits intomainfrom
feat/topic-based
Open

docs: guide for simulating robots with Isaac Sim using omnigraph#462
yrh012 wants to merge 6 commits intomainfrom
feat/topic-based

Conversation

@yrh012
Copy link
Collaborator

@yrh012 yrh012 commented Feb 23, 2026

Description

This PR solves the issue by developing a new that explains in details how to interface Isaac Sim with AICA core using omnigraphs and ROS2 control for simulation purposes

Review guidelines

Estimated Time of Review: 5 minutes

Checklist before merging:

  • Confirm that the relevant changelog(s) are up-to-date in case of any user-facing changes

Copy link
Contributor

@SprGrf SprGrf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work!

import application from './assets/omnigraph-aica-bridge-control-application.png';
import integration from './assets/omnigraph-aica-bridge-control-integration.webm';

# Using Isaac Sim as a simulator
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

General comment for the section: there seem to be some differences in phrasing between the two guides. We could make them the same, or to reduce repetition, move this introduction in the NVIDIA Isaac intro page.

But since I guess the guides are meant to be standalone entities, I would maybe make them the same.

interface or real hardware) and Isaac Sim simply mirrors its motion. In that setup, Isaac Sim does not participate in
the control loop, it only visualizes the robot's state.

This guide covers a different direction: **using Isaac Sim as the simulated hardware**. Here, Isaac Sim hosts the robot
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we keep this structure, something I will assume for the next comments as well, we should refer to it as it was written in the visualization guide. That is Control a simulated robot in Isaac Sim from an AICA application.

This guide covers a different direction: **using Isaac Sim as the simulated hardware**. Here, Isaac Sim hosts the robot
with full physics simulation, and AICA Studio treats it as if it were real hardware. The data flow is bidirectional:

- **AICA Studio - Isaac Sim**: AICA Studio sends joint commands (positions, velocities, or efforts) to Isaac Sim via
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: for this and the next I would maybe add arrows or "to" instead of a dash.

## Prerequisites

This guide builds on the same Isaac Sim and ROS 2 setup described in the
[visualizer guide](/core/examples/nvidia-isaac/omnigraph-aica-bridge-visualization#prerequisites). Make sure you have:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3rd link to the visualization guide in 30 lines. Not a real suggestion here, I like the tip, maybe I would remove one of the others.

## Setting up a simple simulation environment

The scene setup is the same as in the
[visualizer guide](/core/examples/nvidia-isaac/omnigraph-aica-bridge-visualization#setting-up-a-simple-simulation-environment).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even more now.

`topic_based_ros2_control/TopicBasedSystem` hardware interface plugin

```
ghcr.io/aica-technology/topic-based-ros2-control:v0.1.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Has to be docker pulled first right? Should we add that instruction?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not needed, I think it will first locally on your machine then on the github container registry

ghcr.io/aica-technology/topic-based-ros2-control:v0.1.0
```

Your launcher configuration should look similar to the image below:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would maybe focus only on the left side of the screen to make it a bit easier to read.

Now that I think about it though, we might not have followed that in different guides.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good point 👍


### Creating a New Hardware with a Topic-Based ROS 2 Interface

First, create a new hardware in AICA Studio to communicate with Isaac Sim. This involves duplicating an existing
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe?

Suggested change
First, create a new hardware in AICA Studio to communicate with Isaac Sim. This involves duplicating an existing
First, create a new URDF in AICA Studio to communicate with Isaac Sim. This involves duplicating an existing

1. In AICA Studio, go to the **Hardware** tab.
2. Click on the `Generic six-axis robot arm` to open it and use **Save As** to create a copy with a new name. Name it
`Generic six-axis robot arm (Topic-Based Interface)`.
3. In the URDF editor, replace the content of the URDF with the following and click **Save**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mention to just replace the plugin. For sure it's easier to provide the whole thing and replace everything, but maybe only showing the difference of the two is between the plugins will make it clearer that it's otherwise the same model, and help users understand how to do it in their/other robots.

EDIT: scratch the above, spoke too soon. You provide the necessary plugin below. I would maybe stress a bit more that it's the only part that needs replacing, maybe in the warning you already have.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I initially was going in this direction of letting the user do the edits themselves, yet I think it is easier to just copy the URDF for the sake of simplicity of the guide.

I will expand on the line below to say that it is only thing that needs to be changed


If the robot does not move or behaves unexpectedly, verify the following:

- The ROS 2 Domain ID is set to `30` in both Isaac Sim (ROS2 Context node) and AICA Studio (Launcher configuration).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or set to be the same in general I imagine

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, it doesn't matter which ID, I think having direct examples feels easier to follow and this what I also did in visualization guide (yet this is just a personal preference)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants