Isaac Sim Version
[√] 4.5.0
Operating System
[√] Ubuntu 22.04
I currently have a mobile robot with four-wheel independent steering and four-wheel independent driving. I would like to use the Action Graph to implement a controller that takes linear_vel
and angular_vel
from a ROS 2 topic, parses them into individual wheel speeds and steering angles, and feeds them to the Articulation Controller.
However, Isaac Sim does not currently provide a built-in controller for this configuration.
So I would like to ask: Is it possible to create a custom controller within the Action Graph?
Thank you!
Hi @revesreveilles! It is possible to create a custom controller within the action graph. Please refer to this documentation ROS 2 Python Custom OmniGraph Node — Isaac Sim Documentation
Hi @zhengwang
, Thank you for your quick reply! I’ve followed the tutorial you mentioned and successfully created a custom C++ OmniGraph node. However, I’m still a bit confused.
How can I create an OmniGraph node that subscribes to a custom ROS 2 topic, and a custom controller that receives and processes the data from that topic? The tutorial didn’t provide much detail on this aspect.
Would it be possible for you to share any example or reference that covers this kind of use case? I’d really appreciate it!
What do you mean by custom ROS2 topic? Do you mean you give certain name to the ROS2 topic or using customized ROS2 messages?
If you want give a certain name to the ROS2 topic, you can make such change on Isaac Sim side. For example, here is a generic publisher ROS 2 Generic Publisher and Subscriber — Isaac Sim Documentation and you can change the name in the field topicName
.
If you want to use customized ROS2 message, you can refer to ROS2 tutorial Creating custom ROS 2 msg and srv files — ROS 2 Documentation: Crystal documentation.
Thank you for your reply. After switching to Isaac Sim 5.0
, I was able to successfully create a custom controller as an OmniGraph node. I’m currently testing the stability and performance of the controller.
Sorry to bother you @zhengwang
,Laterly I’ve encountered an issue: when I use the Articulation Controller’s position command to control the steering wheels, I noticed that in Isaac Sim, the joint rotation appears to treat clockwise as positive.
Since we usually assume counterclockwise rotation as positive, I’m not sure whether this is defined behavior in Isaac Sim, or if there might be a problem with my USD file. I’ve checked the steering joints — they are all set to rotate around the Z-axis, and the Y-axis directions follow the right-hand rule as expected.
I would appreciate any clarification or suggestions you could provide.
@revesreveilles could you please share your USD file? The direction of the Z-axis also matters.
Sorry, I’m not able to share my USD file at the moment. However, I can confirm that the Z-axis orientation of the steering wheel joints is consistent with the Z-axis direction defined in Isaac Sim, as shown in the image below(the blue axis represents Z, and the red axis represents X.).