Page 1 of 1

Box on an inclined plane... friction?

Posted: Thu May 12, 2011 11:44 am
by schteppe
Hi everyone!

I'm doing some tests with several physics simulation tools and I've found something interesting when it comes to friction in Bullet.
I have a box on an plane. The plane is inclined by an angle phi. The friction parameter "mu" is set to 0.35 on both of them.
Analytically, one can show that the box should start to slide on the plane when the plane is inclined by phi=19.3 degrees. This is the case in all the other simulation tools, but not Bullet... The box starts to slide at phi=6 degrees.

The "box" is not really a box, it's a tetrahedron made out of 4 composite spheres. Why? Because I want to avoid any possible artifacts when having more than 3 contacts at the same time. Also, not all of the simulation tools support rigid body boxes.
The plane is just a static rigid body box.
I set the friction with btRigidBody->setFriction(0.35) on both bodies. I also tried to set the friction to higher values and that seem to make the "box" stay on the plane. This indicates the friction is there at least.

How can I make this test physically correct with Bullet? Or is this even possible?

Stefan

Re: Box on an inclined plane... friction?

Posted: Thu May 12, 2011 1:13 pm
by DannyChapman
schteppe wrote: I have a box on an plane. The plane is inclined by an angle phi. The friction parameter "mu" is set to 0.35 on both of them.
Normally the friction coefficient in physics engines is calculated either by a lookup table, or by multiplying a friction parameter on each surface. So, assuming the latter is done in Bullet, then the friction coefficient = 0.35*0.35. The box should then start to slide at atan(0.35*0.35) = 7 degrees. That suggests Bullet is basically right.

PhysX, for example, allows you to combine the friction values in different ways (average, max, min, multiply), and actually defaults to average. However, I think multiplication is the most sensible.

Re: Box on an inclined plane... friction?

Posted: Mon May 16, 2011 12:13 pm
by schteppe
Thanks! That did it. I set the friction to sqrt(0.35) instead, hence the contact friction will become sqrt(0.35)*sqrt(0.35)=0.35.
The angle in which the box starts to slide is now 18.1 degrees. Not perfect but still close to the analytical solution 19.3.

Do you have any hints for parameter tweaks to get this number more close to the real solution? That is, without changing the timestep size or friction.