-
Hi, I have a setup where I use an Action Graph with the Ackermann Steering node to drive my robot. However, it doesn't articulate the joints in my orbit sim when I use a preconfigured 3.0 speed. I have tested that it works in regular Isaac Sim. How does orbit work with Action Graphs, and can I use my Action Graph's interface for the Actions of my RL agent (i.e. speed and steeringAngle fields)? |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
I believe you'll need to implement your action graphs as standalone python script using omni graph accounting for the specific ros version your system is running. This is not really a well documented feature so you might need to actually open up the isaac sim code base in vs-code and read through the ogn.rst which can be found in the exts/omni.isaac.ros_bridge and ext/omni/isaac_ros2_bridge. This will have all the omnigraph nodes along with their input and outputs documented. You then pretty much manually specify all the wire connections between your nodes. If your workflow in orbit involves directly updating primitive transformation then you might need to disable fabric and run orbit simulation on your CPU. I personally found that simply turning off fabric is not enough you need to apply the following configuration as well.
Please note if you're running a large number of robot instances this might cause a significant slow down. |
Beta Was this translation helpful? Give feedback.
-
Hi, That is an interesting question. I believe if you want to make full use of parallelization, going through OmniGraphs may not work as expected. You can write your custom action term for Ackermann steering. We did a sample implementation for differential steering here: https://isaac-orbit.github.io/orbit/source/api/orbit/omni.isaac.orbit.envs.mdp.html#omni.isaac.orbit.envs.mdp.actions.actions_cfg.NonHolonomicActionCfg |
Beta Was this translation helpful? Give feedback.
-
Thank you for your answers, they were very helpful! I was able to implement a custom AckermannAction with inspiration from the NonHolonomicAction and some of the equations from AckermannSteeringHelper.py. Thanks for clairfying about the OmniGraphs not working as expected. Going into this project I thought they would be the main interface for interacting with the robot, as the Isaac Sim tutorials spend a fair amount of time explaining these. |
Beta Was this translation helpful? Give feedback.
Hi,
That is an interesting question. I believe if you want to make full use of parallelization, going through OmniGraphs may not work as expected. You can write your custom action term for Ackermann steering.
We did a sample implementation for differential steering here: https://isaac-orbit.github.io/orbit/source/api/orbit/omni.isaac.orbit.envs.mdp.html#omni.isaac.orbit.envs.mdp.actions.actions_cfg.NonHolonomicActionCfg