I'm learning about the MLCP formulation and have begun to experiment with different friction approaches:
1) The 'Iterative dynamics with temporal coherence' approach with two vectors spanning the cospace of the contact normal and choosing an estimate for the normal force, solving -mg mu <= lambda_friction <= mg mu.
2) The (Stewart/Tinkle) cone approximation with:
J_f v -e gamma _|_ beta
mu lambda_normal - |sum beta|_1 >= 0 _|_ gamma
3) (Haven't yet tried) An iterative approach:
-a) Solve 1) with -mu normal_est <= lambd_friction <= mu normal_est
- b) Use computed contact normal force to update normal_est, goto a)
What I have noticed is:
1) is easy to use, but gives odd friction dynamics.
2) looks really great and gives very cool friction dynamics (tilting stacks have the top blocks peeling off 1 by 1). But its harder to solve. The PGS iteration works, but you have to damp the iteration (a value of 0.3 worked) and it converges more slowly.
Also, I have noticed that since the direction of the friction force is not unique with the cone approximation (you have vectors spanning both the positive and negative directions of the tangent space) the solution of the LCP is not unique. This makes me think I will have problems using subspace methods that try to solve reduced linear systems for the active variables...
3) Has anyone tried this method? It might be promising, since one would think friction forces wouldn't significantly change the normal forces (except maybe where an object is resting at an incline on one object and and the floor:
|__
|\ \
| \ \
| \ \
---===-----------------
Also, has anyone tried using Newton's method to solve 1 or 2? Preliminary experiements show that the method might be fast enough for realtime, with a matrix free gmres solver for the reduced linear steps. However, using formulation 2) the gmres solver is having trouble, probably because the reduced matrices are singular.
Anyway, any thoughts/experiences would be helpful. Thanks!
Friction approaches
-
- Posts: 117
- Joined: Fri Aug 12, 2005 3:47 pm
- Location: Newyork, USA
Re: Friction approaches
Hi,
to answer your no 3): Yes, that type of methods has been around for some times. The latest paper:
http://www.cs.ubc.ca/labs/sensorimotor/ ... sigasia08/
The problem with these methods is that you cannot prove convergence in theory. Even in run time, some implementations DO converge after a "reasonable" iterations.
About applying Newton methods, the answer is also yes. I got to run now so cannot find the link, but you can google for Jong Shi Pang, Newton, and B-differential .
The best Newton method like implementation (or should I say the only good solver for MCP) is PATH
http://www.cs.wisc.edu/cpnet/cpnetsoftware/
to answer your no 3): Yes, that type of methods has been around for some times. The latest paper:
http://www.cs.ubc.ca/labs/sensorimotor/ ... sigasia08/
The problem with these methods is that you cannot prove convergence in theory. Even in run time, some implementations DO converge after a "reasonable" iterations.
About applying Newton methods, the answer is also yes. I got to run now so cannot find the link, but you can google for Jong Shi Pang, Newton, and B-differential .
The best Newton method like implementation (or should I say the only good solver for MCP) is PATH
http://www.cs.wisc.edu/cpnet/cpnetsoftware/
-
- Posts: 39
- Joined: Mon Oct 12, 2009 6:23 pm
Re: Friction approaches
Thanks for the references, I'll do some reading!!
I'm getting a stack of papers on this stuff about 2 feet tall in the living room
I'm getting a stack of papers on this stuff about 2 feet tall in the living room

-
- Posts: 117
- Joined: Fri Aug 12, 2005 3:47 pm
- Location: Newyork, USA
Re: Friction approaches
Out of curiosity: Do you have any aims reading those papers?
ST method and most popular physics engines handle friction differently. ST method focus more on scientific simulation but the friction model is non-convex and in general, it's NP-hard. Bullet, Box2D,etc... are using a simpler version that can produce friction-like behavior. If you just want something visually plausible then I suggest stick to Bullet. You may not be able to do much better than Bullet.
If you are interest in scientific simulation and dont mind to pile your stack of papers higher then come here:
http://twiki.cs.rpi.edu/twiki/bin/view/ ... chProjects
We have a journal version of the work coming.
ST method and most popular physics engines handle friction differently. ST method focus more on scientific simulation but the friction model is non-convex and in general, it's NP-hard. Bullet, Box2D,etc... are using a simpler version that can produce friction-like behavior. If you just want something visually plausible then I suggest stick to Bullet. You may not be able to do much better than Bullet.
If you are interest in scientific simulation and dont mind to pile your stack of papers higher then come here:
http://twiki.cs.rpi.edu/twiki/bin/view/ ... chProjects
We have a journal version of the work coming.
-
- Posts: 39
- Joined: Mon Oct 12, 2009 6:23 pm
Re: Friction approaches
Thanks much, I'll look at the papers.
Having implemented approach 3) over the weekend, I'll say that I'm pretty happy with the results. I'm using 2-3 passes, and the latter passes generally go quicker than the first (not always). I also use some damping on the normal_Force that I pass to the next stage friction ranges, which (maybe) makes it more like a continuation method.
Bricks stick and then slide off inclines as the normal direction gets steeper and steeper. Very nice. I guess the bullet method would do this as well, but it would not sense the normal force decaying as the slope tips; it would only see the increased weight on the friction resistance.
I guess the only drawback here is that at some point I will hit a speed barrier (extra passes=extra cost).
There may be a balance here between: do you want 30 objects with realistic friction at realtime, or 200 objects with bullet-type friction at realtime...
I wonder what the conditions for the nonconvergence of 3) are, and how much of a plague that will be....
From the link, it looks like you're doing this for work, Kudos!! My aim at reading the papers is keep my math PhD from becoming completely fallow! These solvers are very challenging, quite impressed. Bullet is an incredible resource, since it works, and quite well. It is a great tool to measure various ideas against....
Having implemented approach 3) over the weekend, I'll say that I'm pretty happy with the results. I'm using 2-3 passes, and the latter passes generally go quicker than the first (not always). I also use some damping on the normal_Force that I pass to the next stage friction ranges, which (maybe) makes it more like a continuation method.
Bricks stick and then slide off inclines as the normal direction gets steeper and steeper. Very nice. I guess the bullet method would do this as well, but it would not sense the normal force decaying as the slope tips; it would only see the increased weight on the friction resistance.
I guess the only drawback here is that at some point I will hit a speed barrier (extra passes=extra cost).
There may be a balance here between: do you want 30 objects with realistic friction at realtime, or 200 objects with bullet-type friction at realtime...
I wonder what the conditions for the nonconvergence of 3) are, and how much of a plague that will be....
From the link, it looks like you're doing this for work, Kudos!! My aim at reading the papers is keep my math PhD from becoming completely fallow! These solvers are very challenging, quite impressed. Bullet is an incredible resource, since it works, and quite well. It is a great tool to measure various ideas against....
-
- Posts: 39
- Joined: Mon Oct 12, 2009 6:23 pm
Re: Friction approaches
sorry for being a bit of a windbag, but another question:
with the full Stewart-Tinkle friction approach, how does one enforce that the friction coefficients are unique? For example suppose we have directions
(1,0) (-1,0) (0,1) (0,-1)
and the resultant friction force vector is (2,0). I can write this as either 2*(1,0) or 3*(1,0) + 1*(-1,0). (I was seeing this phenomenon when comparing PGS, Newton and Lemke solvers).
But the magnitude constraint applies differently to these solutions, because E^T(2,0,0,0) is less than E^T(3,1,0,0).
Was it a mistake that my solvers were choosing different friction values, or did I need another complementary condition to enforce that if (1,0) had a nonzeo coefficient (-1,0) had a zero coefficient?
with the full Stewart-Tinkle friction approach, how does one enforce that the friction coefficients are unique? For example suppose we have directions
(1,0) (-1,0) (0,1) (0,-1)
and the resultant friction force vector is (2,0). I can write this as either 2*(1,0) or 3*(1,0) + 1*(-1,0). (I was seeing this phenomenon when comparing PGS, Newton and Lemke solvers).
But the magnitude constraint applies differently to these solutions, because E^T(2,0,0,0) is less than E^T(3,1,0,0).
Was it a mistake that my solvers were choosing different friction values, or did I need another complementary condition to enforce that if (1,0) had a nonzeo coefficient (-1,0) had a zero coefficient?
-
- Posts: 117
- Joined: Fri Aug 12, 2005 3:47 pm
- Location: Newyork, USA
Re: Friction approaches
Erhh, you meant friction impulse magnitude along each direction, right? because friction coefficients are constant.dneckels wrote: with the full Stewart-Tinkle friction approach, how does one enforce that the friction coefficients are unique? For example suppose we have directions
(1,0) (-1,0) (0,1) (0,-1)
Also, based on your friction directions, it seems to me that you are dealing with what we call 2.5D situation. Means an object can never leave a flat surface. Is that right?
You are right about the fact that friction impulses are not unique. This is the problem with linearization of a full quadratic Coulomb friction. For example, in your cases: the resultant friction force is: a(1,0)+b(-1,0)+c(0,1)+d(0,-1) with f_c = [a b c d] is the friction impulse variable we looking for. Then it's obvious that there are unlimited choice of f_c that result in one final force of [1 0] for example. But you can notice that even there are many values for f_c, there are usually only one value for resulting force (for ST, no one ever proves that friction force is unique) based on my experience.dneckels wrote: and the resultant friction force vector is (2,0). I can write this as either 2*(1,0) or 3*(1,0) + 1*(-1,0). (I was seeing this phenomenon when comparing PGS, Newton and Lemke solvers).
But the magnitude constraint applies differently to these solutions, because E^T(2,0,0,0) is less than E^T(3,1,0,0).
Was it a mistake that my solvers were choosing different friction values, or did I need another complementary condition to enforce that if (1,0) had a nonzeo coefficient (-1,0) had a zero coefficient?
Kudos for choosing such a hard problem just to brush you math.
