How do I set up <mu> and <slip> for a skid steer robot?

I am attempting to model a Pioneer3-AT mobile robot in Gazebo and control it from ROS. I have been reasonably successful except for one final touch, rotation control.

If I set the MaxForce() for each wheel joint to something very high such as 50, the robot will turn in place very close to the commanded rate. But with this setting any linear motion request causes the robot to do a flip.

If I reduce the MaxForce() for each wheel to 3, the linear response is very close to what I see on the real robot but the rotational control is very slow, perhaps only 1% of the correct speed.

This makes me think that I need to configure mu, mu2, slip1, slip2 for each wheel properly to get the desired performance but I'm not sure how to choose reasonable values. After many frustrating rounds of guess-and-check, the best I was able to get is a robot that kinda responds to the desired velocity commands but slides all over the place (+/- 1m) when attempting to rotate in place.

Additionally, when I watch the joints rotating in Gazebo, I see that each of the wheels will 'slip' for a very short time and this is probably the source of the sliding. I wonder if I could use a single force to rotate both wheels on the same side of the robot. (like using a belt between two wheels on the same side of the robot driven from a single motor.) I think this might help too.

Relevant Files: model.sdf

rosmodelplugin.cc

edit retag close merge delete

Hi. I'm very interested in model of P3-AT. If you have updated version - can you share it somehow? Many thanks.

( 2013-05-22 03:34:55 -0600 )edit

Sort by ยป oldest newest most voted

Hi,

You should also fix the inertia values. These can be computed with the help of this wikipedia page:

For example if you choose the chassis to be a cuboid the ixx, iyy, izz values need to be:
1/12*m(h^2+d^2) (where m = mass, h = height, d = depth):

<link name="chassis">
<inertial>
<mass>14.0</mass>
<inertia>
<ixx>1/12*m(h^2+d^2)</ixx>
<ixy>0.0</ixy>
<ixz>0.0</ixz>
<iyy>1/12*m(h^2+d^2)</iyy>
<iyz>0.0</iyz>
<izz>1/12*m(h^2+d^2)</izz>
</inertia>
</inertial>


As for mu, mu2, slip1, slip2 they are explained here, notice that the values are between [0..1]. For more information check out this ODE page and just search for mu, mu2, slip1, slip2 it will be more deeply explained.

Cheers

more

Thank you very much for the inertia wiki link. That's exactly what I needed! The mu, mu2, slip1, slip2 links do tell me what each parameter is for, but would you have any links that talk about how to configure them?

( 2013-02-26 09:52:48 -0600 )edit

Hi, well in your model.sdf file you change the values between 0 and 1. 0 - meaning no friction and 1 - maximum friction. But you should know that in gazebo there is no rotating friction. So you just have to play with the values to see which fits you best. (was this what you where asking for? if not please explain more with what you meant by "how to configure them". Cheers

( 2013-02-26 10:46:38 -0600 )edit

So, its just a guess and check operation then? Thank you!

( 2013-02-28 21:59:13 -0600 )edit

I guess it is faster than figuring out values after these formulas http://www.ode.org/ode-latest-userguide.html#sec_3_11_1 :)

( 2013-03-01 10:12:58 -0600 )edit

Just in case the values of 1 were not satisfying you can also use higher values, it's never enforced so far for these values to actually be between 0 and 1 and ODE just suggests them to be around 1. Other models and mine inclusive usually use a lot higher values for the friction coefficients.

You can also have a look at an example of a castor wheel here: http://answers.gazebosim.org/question/1340/double-caster-wheel-problem/

more

Further guess-and-check has yielded reasonable results so far:

MaxForce = 5.0;

<mu>1</mu> <mu2>1</mu2> <slip1>0.5</slip1> <slip2>0</slip2>

It would still be nice to have a better understanding of these parameters however.

more