Issues with Joint Configuration and Gear Constraints in a Rocker-Bogie Setup

Isaac Sim Version

5.1.0
5.0.0
4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: GeForce RTX 4080
  • Driver Version: 580.95.05

Topic Description

Detailed Description

I am trying to simulate a robot with a pair of rockers and a internal averaging mechanism. Similar to this mechanism:

The problem is that I am unable to properly set gear joints constrains in the simulation. As the video will show, the robot whole starts to tilt at a constant velocity when a force is applied (as shown in the video). The idea of the mechanism is to allow the wheels to have constant contact with the ground/surface, to achieve that the mechanism forces the rockers to rotate in opposite directions, while the chassis only rotates by half.

Steps to Reproduce

  1. Load Rover_v2.usd

  2. Run simulation.

  3. Apply a force using shift+right click and drag.

Screenshots or Videos

Additional Information

What I’ve Tried

I have tried different configurations of the joints. Initially I emulated the mechanism behavior by creating a dummy joint as the middle gear/joint. Then, I created 2 gear constrains between the dummy and each rocker. This didn’t work because the chassis would tilt when a force was applied or the CoM was off center. Also tried to remove the dummy completely and create the gear joints directly between rockers and chassis, but since one extra joint would be needed (since I only have 2, one for each rocker) I would only use the 2 rocker joints, this causes the robot to jitter fast.

Related Issues

I was unable to find related issues

Additional Context

The desing of the mechanism is inspired by planetary robots such as ispace Sorato and this paper: Design and Optimization of a Mars Rover’s Rocker-Bogie Mechanism.

I also share the files of my design so far.

Robot_v2.zip (16.4 KB)

Hi, What’s your Gear Ratio setting for your GearJoint? In the USD you shared I saw it’s -1.0 but if I change it to 1.0 I don’t see the weird behavior.

Yes, thanks for the comment. The weird behavior disappears when changing the gear ratio to 1, but the rockers would not have the desired functionality since they would behave as a single solid instead of 2 independent articulations

Tinkering a bit I went back to my original setup. I added rigid joints in the chassis, left rocker and right rocker links, that fixed each with the ground. In the video I enabled only the left_rocker rigid joint, which made the robot “float”, as intended, when I ran the simulation. I added limits to the joints, but it also “works”/behaves the same without them, and applied a force to the chassis or the other rocker. I found that the behavior I want seems to be kind of working, but the joints are not “strong” enough and behave like a spring instead of a rigid gear mechanism. I then disabled that rigid joint and enabled the one with the chassis/ground and indeed the rockers move in different directions as expected (set to ‘inf’ both rockers revolute joint limits to make it more visible/obvious) and the spring like behavior also shows there.

PS: Without the rigid joints, or with them disabled, the chassis just flops back again to the ground in the new gear joints configuration (now is slower because I set the correct weights/mass).
I am sharing the updated USD of the robot with the changes I made.

Rover_v3.zip (17.2 KB)

Thanks for the update. Let us know if you need further help.