docs: guide for simulating robots with Isaac Sim using omnigraph#462
docs: guide for simulating robots with Isaac Sim using omnigraph#462
Conversation
| 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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
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). |
| `topic_based_ros2_control/TopicBasedSystem` hardware interface plugin | ||
|
|
||
| ``` | ||
| ghcr.io/aica-technology/topic-based-ros2-control:v0.1.0 |
There was a problem hiding this comment.
Has to be docker pulled first right? Should we add that instruction?
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
maybe?
| 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**. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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). |
There was a problem hiding this comment.
or set to be the same in general I imagine
There was a problem hiding this comment.
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)
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: