Model slips over surface even though both has mu set to 1.0
I am running a simulation with a 4-wheeled robot on a surface given as a mesh. The ground model has following surface setting.
<collision name="collision">
<geometry>
<mesh>
<uri>model://garden/meshes/garden.dae</uri>
<scale>0.17 0.17 0.17</scale> <!--0.17-->
</mesh>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
</friction>
</surface>
</collision>
The mu
and mu2
are set to 1.0. If I put a primitive box on the slope somewhere on the ground model, the box does not slip.
The robot is implemented in URDF code and has following code in <gazebo>
tags
<gazebo reference="right_drive_wheel_link">
<mu1>1.0</mu1>
<mu2>1.0</mu2>
</gazebo>
<gazebo reference="left_drive_wheel_link">
<mu1>1.0</mu1>
<mu2>1.0</mu2>
</gazebo>
And so I wou;d assume the robot will not slip over the ground. Yet is does slip. It slips even when perpendicular to a gradient of the slope (slips sideways from driving direction). How is this possible? What else needs to be set?
UPDATE
I found out the model slips much less when I decrease the simulation step. When I run the simulation with the step size of 0.001 the robot slips all the way to the bottom of the slope it is standing at in 22 minutes of simulation time. When I run the simulation with the step size of 0.0001 the robot moves less than 1/20 of the slope length during the same time.
Is there any way how to make the physics of sliding and friction work properly with larger step sizes? I can't wait two hours to simulate 20 minutes.