How can i create custom controller for mobile robot which is four-wheel-independent steering and four-wheel independent driving

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.).

Let me consult the internal team.

@revesreveilles For your visualization, are you viewing it using global coordinates or local coordinates? You can switch between these two by clicking the center square of the Move button. It is local coordinates if it is highlighted.
image

Apologies, I missed that. I was viewing in global coordinates. After switching to local coordinates, I have confirmed that it was because my USD asset. Thanks for the reminder!
One more problem: After adding the RTX Lidar (Rotating) sensor and publishing point cloud data through Omnigraph by following the tutorial, and my FPS just dropped to ~10. Existing forum solutions didn’t help to much. Are there any suggestions to improve performance? I think i may open a new thread for this.
And marking this as resolved. Btw, here are my GPU specs:

1 Like

No worries and yes please open a new topic for performance optimization.
Here is a handbook I usually suggest user to try out Isaac Sim Performance Optimization Handbook — Isaac Sim Documentation
Also RTX 3090 satisfies the minimum specs of Isaac Sim but not ideal. It would be hard to achieve high FPS with relatively complex setup.

Sorry to bother you.

I’m currently experiencing an issue with the Compute Odometry node and was wondering if you might have time to take a look at what’s going on. Here’s the link:
Isaac Sim Omnigraph: Compute Odometry Node Not Returning Desired Position

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.