Issac SIM ROS2 Humble Robot Front issue with Ackermann Tutorial

Isaac Sim Version

[* ] 4.2.0
4.1.0
4.0.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

[*] Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model:
  • Driver Version:

Topic Description

Detailed Description

Tried to create a ROS2 Nav2 version of the Forklift C in Nvidia Isaac Assets.
successful in simulating ackermann drive but when adding odometry info the direction of odometry is always perpendicular to the direction of forklift movement.

Steps to Reproduce

  1. Followed the Ackermann steering tutorial in ROS2 Isaac sim Tutorial
  2. Tried to create action graph to publish odometry to RVIZ
  3. Odometry angle perpendicular to the forklift motion
    (Add more steps as needed)

Screenshots or Videos

What I’ve Tried

Setting Robot front property in compute odometry in the Action Graph.
Setting robot base_link frame and references.

Hey @suryaveer01. Welcome to the community! Could you please provide a video or the whole USD file for us to replicate and better understand your issue?
I created a rough scene but it seems working fine (I didn’t generate and publish a map so I was using odom as fixed frame).


In the video I used:
ros2 topic pub /ackermann_cmd ackermann_msgs/msg/AckermannDriveStamped “{header: { frame_id: ‘base_link’}, drive: {steering_angle: -0.5, acceleration: 30}}”

USD:
warehouse_forklift.zip (40.7 KB)

Hey @suryaveer01! Thanks for your video. According to your video, the odometry visualization seems normal.
In Rviz2, the “odom arrow” represents a visual depiction of a robot’s estimated position and orientation based on its odometry data, essentially showing where the robot thinks it is located in the world at a given time, with the arrow pointing in the direction the robot is facing.

In the video you shared it doesn’t show the reference for the direction.
But if you rotate the vehicle in a circle it point outwards like in this below attached video.

Command used : ros2 topic pub /ackermann_cmd ackermann_msgs/msg/AckermannDriveStamped “{header: { frame_id: ‘base_link’}, drive: {steering_angle: -0.5, acceleration: 30}}”

Is there anyway to resolve it. I see a robot front property in Ros2 Publish Odometry Node.


This does not seem to have any effect.

Thank you for taking the time to respond to my problem. Its truly appreciated.

Is this what you mean? I visualize the TFs in Isaac Sim. The x axis of base_link is pointing to the left of the forklift. While the forklift is moving, the odometry direction aligns with the base_link because odometry in Isaac Sim is ground truth position in odom frame.

I think this might be related how the robot articulation root is set up. Let me pass it to our internal team on how to change it.

Hey @suryaveer01! I confirmed with the internal team that this is an issue with the forklift asset in Isaac Sim 4.2. This issue has been resolved in Isaac Sim 4.5. Our internal team says manually correcting the asset in Isaac Sim 4.2 is a fairly complicated process and we would like to suggest that you wait for 4.5 to come out. Thanks for your patience and understanding!

Thank you for the update. Looking forward to the new version.

Also how could I add the ackermann steering controller from ros2_control to this forklift C asset in the current version of Isaac sim. Since I do not have a correct URDF because the frames are all incorrect and ros2_control requires robot_description to be set up. Is there a workaround here that you can suggest to get the controller part up and running before the new version?

I still suggest you to wait for the new version coming out and use USD to URDF exporter to get the correct URDF file. I don’t see an easy workaround at the moment unfortunately.