Balance case issue and no slip conditions
Hi everyone,
I have a specific question related to the way a balance situation is handled in Gazebo. To give you an example, I have a mass which is linked to a rail (prismatic joint), this rail can rotate at its center but at the beginning of the simulation it is supposed to be aligned with the world y axis and the mass is at the center is this rail.
Now if the position of the mass changes, the whole system will rotate (the rail and the mass attached to it).
But in a perfect case (beginning of simulation), the system should not move and stay in balance except if an external force acts on the system.
You have the picture now. I have tried to model this kind of system and it appears that the system stays at balance for a certain time and then rotate for "no reasons". I've looked at the possible reasons and I might have a theory.
I've streamed the center of gravity of the mass with a plugin and I've got interesting results.
First the center of the magnet is never at position 0 (center of rail), which is expected since a float or a double can't give you a perfect representation of the number 0. It appears then that the CoG values wobble for a certain time around 0, then at some point the values add up and make the whole system to rotate. Is there a way to avoid this behaviour (such as a threshold on the value precision before using it to compute the dynamics) ?
Second, how can you set a (precise as possible) Pi angle in an sdf file ? I'm writing down 1.5707 (approximation of pi/2) which is maybe not precise enough.
Finally the second part of my question is about a no slip condition simulation. Is there a convenient way to tell gazebo (and/or the ODE engine) to adapt the mu factors in order to get a no slip condition on a ball moving on a plane for example ?
Thanks in advance for your enlightenments.
Best regards.
EDIT:
I went a bit through the ODE documentation, it is said that one can set the mu friction parameter to dInfinity to get a no slip condition. How can I set this condition into the SDF file since the range is from 0 to 1 (why 0 to 1 anyway ?) ?