ROS_DifferentialBase - Errors

I am successfully test creating differential robot in Omniverse Isaac Sim. It runs okay when target velocity is applied. But when I add ROSDifferentialBase component I get the following errors on the terminal window.

2021-07-21 06:11:20 [7,993,421ms] [Error] [omni.isaac.dynamic_control.plugin] DcGetRigidBodyAngularVelocity: Invalid or expired body handle
2021-07-21 06:11:20 [7,993,429ms] [Error] [omni.isaac.dynamic_control.plugin] DcGetRigidBodyPose: Invalid or expired body handle
2021-07-21 06:11:20 [7,993,429ms] [Error] [omni.isaac.dynamic_control.plugin] DcGetRigidBodyPose: Invalid or expired body handle
2021-07-21 06:11:20 [7,993,429ms] [Error] [omni.isaac.dynamic_control.plugin] DcGetRigidBodyLinearVelocity: Invalid or expired body handle
2021-07-21 06:11:20 [7,993,429ms] [Error] [omni.isaac.dynamic_control.plugin] DcGetRigidBodyAngularVelocity: Invalid or expired body handle

I am not sure what I need to do to make it work in this simple custom robot (base + L and R wheels). It works fine with the Carter_ROS example. I tried to replicate it but not successful yet.

Any help/suggestions will be appreciated it.


Here is more information to understand my misunderstanding:

Error when trying to create ROS DifferentialBase.

2021-07-21 08:41:40 [2,706,460ms] [Warning] [omni.isaac.dynamic_control.plugin] DcPeekObjectType: Function called while not simulating
2021-07-21 08:41:40 [2,706,460ms] [Error] [omni.isaac.ros_bridge.plugin] chassisPrim is not a valid articulation



A little question: Is your chassisPrim (which must be defined by clicking on the Add Target button inside Raw USD Properties, if you are using the graphical interface) an Articulation Root?

Can you share screenshots of your stage and prim properties?

Like toni said, you need to make sure the prim specified in the chassisPrim property for the ROS Differential Base component has an Articulation Root, which you can see in the property panel.


Thanks for the replies.

I have tried different configurations as I thought make sense but I am begin to feel that I need the basics of simulation setup because I find myself struggling to figure out what goes where and what comes first (links, joints, and specially physics of it). Is there a simple document(s) that I can follow to create the simple robot as I have posted here (please see attached photo)?

Next I will attempt to import turtlebot3 URDF and try to add ROS_DifferentialBase to it (I have a feeling I will get the same errors). I will report back once I have tested it.

Again thank you for all the support/help.

Okay, after importing the turtlebot3_waffle URDF model, I added the ROS_DifferentialBase and received similar errors as I do with the simple robot I created earlier.


Hi, Yes I have set the chassisPrim as an Articulation Root.

Please see my replies.

Thanks for your help.

Hi @nvidia-xavier-orin

Here you can find the steps I followed to import the turtlebot robot and control it using the ROS_DifferentialBase component.

These steps are taken from the following Isaac Sim samples:

  1. Import the .urdf file with the Fix Base Link unchecked (because it is a mobile robot) and the joint drive type set to Velocity

    I generated the .urdf file from the .xacro file provided by this repository GitHub - ROBOTIS-GIT/turtlebot3: ROS packages for Turtlebot3

  2. Add a ground plane (Create > Physics > Ground Plane) and drag it to the top level in the stage

  3. Create a new physics material (Create > Physics > Physics Material) and assign it to the robot’s rear block to treat its contact with the ground plane as frictionless

  4. Add the ROS_DifferentialBase component and set up it by defining the chassisPrim target (/turtlebot3_burger) and the leftWheelJointName (wheel_left_joint) and rightWheelJointName (wheel_right_joint) respectively.

  5. Start the simulation and control the robot using the available topics

The next video shows an example using rqt (open this topic in Chrome if the video is not displayed in Firefox 😅)


Thank you for the detail descriptions. I was able to run run the tb3 with ROS_DifferentialBase component. Thank you for your help.

Though I am still struggling to create a simple robot from scratch (picture below) with body and left and right wheels.

Again, thank you for your help.

Hi @nvidia-xavier-orin

I recommend you to watch the video tutorial about how to Import Robots — Omniverse Robotics documentation

Starting from minute 03:30 your will find details about all things required to rigging and drive your own robot in Isaac Sim,

Will do. Plus I read this as well: Physics — Omniverse Extensions documentation

Helped a lot.

I think I am good for now. Though I have another question coming on Lidar(s). Hope you could help me on that as well.

Thanks again for all your help.