Have anyone had success with Mecanum wheels on isaac?

Have anyone had success with Mecanum wheels on isaac?

2 Likes

our Kaya robot uses mecanum wheels. you can find it here:

  • USD setup: under Create-> Isaac->Robots → From library → Mobile Bases → kaya
  • URDF import: Isaac Examples-> import robots → kaya
  • gui control examples: Isaac examples → input devices → kaya_gamepad,
  • standalone examples for holonomic controllers: standalone_examples/api/omni.isaac.kaya/move_kaya

@qwan
Out team pointed out that Kaya robot doesn’t use mecanum wheels
Kaya robot uses omniwheels

-BR
AV
image (3)
image (2)

1 Like

Yes, I’m working on a model with four Mecanum wheels. I don’t have data yet to know if it’s moving precisely like the real deal, but so far the movement looks correct.

1 Like

Hi @daniel.romaniuk1 , can you please share your process of development here… It would be great if you can give some insights on the navigation of the robot in the environment also.

Hi @rafism1997 . There have been a few challenges in getting a stable model. The robot we’re modelling has an incomplete CAD file, so we had to put a lot of time on the wheels. We did the 3D model work in Blender then imported to Isaac Sim and added joints and physics. Tricky bit is getting the joints for those little rollers at the right positions and orientations.

The robot makes lots of little jumps and sometimes goes airborne unless you do some additional tweaks:

  • Make a floor under your robot using a Cube mesh, instead of using a GroundPlane directly.
  • Use CollisionGroups to avoid self-collision between wheel elements.
  • In the PhysicsScene settings, go with PGS instead of TGS and turn the GPU off.

The robot moves slower if you run physics on the GPU instead of the CPU.

youbot

Hello @daniel.romaniuk1
Thank you very much for your input.
I have tried to follow your advise, but my robot still shows signs of self collision
Could you explain a bit more how did you do the:

  • Use CollisionGroups to avoid self-collision between wheel elements.

I will leave a small video of my robot trying to walk in the y direction.

Any help would be well appreciated.

Hi Bezerra,

From what I can tell, there are two ways to disable self-collision. I am using the second one:

  1. 5. Rigging Robots — Omniverse Robotics documentation
    Add → Physics → Articulation Root. Under properties, disable the ‘Self collision’ check box.

  2. Rigid-Body Simulation — Omniverse Create documentation
    Create - Physics - Collision group, and name it
    Add all the elements you wish to it (or just a parent of all those elements)
    In the Includes, add the collision group that you are defining. This prevents self-collision.

Hello @daniel.romaniuk1 ,
Thank you very much for your reply!
I tried to use both of the methods that you used, but it still shows almost the same behavior as before.
Do you have any additional thing that you have done?
Such as adjusting the position of the collision, and what type of collision approximation are you using?

Hi guys, I was having the same issues that @daniel.romaniuk1 mentioned earlier, including the same jumping behavior, I was trying to import a robot in URDF format created with Fusion 360 and the Fusion2PyBullet plugin, everything works fine until I pressed play in Isaac Sim. For me the problem was that the plugin exported the robot with a silver material, so in the simulation the chassis of a tiny robot weights like 16kg when in reality its about 3kg, that gravity force pushed the tiny wheels of my omni wheels too much, causing them to much into the grid causing overlap between them (this is the cause of the random mini jumpings). I just change the mass value of the chassis (in the property tab) to 3kg and all the problems were gone.

Please take a look at the O3dyn model in the Isaac Folder - It has mecanum wheels modeled.

The biggest challenge is that the rollers have variable radius so that the whole wheel has a perfect circular shape.
So you can’t approximate rollers with a cylinder or a single sphere, otherwise it will become jumpy as the wheel as a whole will have variable radius.

In O3dyn we approximate the rollers with 6 spheres spreading out from the center. Given that the simulation as a whole is in time-steps, this approximation doesn’t hurt the simulalton smoothnes, as long as the wheel maintains contact with the ground.

Another key point you need to change is the simulation time steps per second - The reason for that is that rollers are tiny bodies running at a large velocity, this gives them a very short window of contact with the ground, and if that window is smaller than the simulation time step, that contact is not registered in the simulation and your robot will sink into the ground. By the next time-step, there will be a large error in the collision with the ground, and it will cause a big jerk up, making the robot jump.

It seems that rescaling the o3dyn wheels works best for us while attempting to implement holonomic movement to our robot. However we would like to reproduce our own wheels which have more rollers in model. In order to do so several questions remain:

  • Can this logic be extended to other types of mecanum wheels?
  • Are they already existing assets with mecanum wheels besides o3dyn?
  • Has anyone had success reproducing the o3dyn logic to oher wheels?
2 Likes