Split Impulses and Joints

Please don't post Bullet support questions here, use the above forums instead.
Antonio Martini
Posts: 126
Joined: Wed Jul 27, 2005 10:28 am
Location: SCEE London

Post by Antonio Martini »

Erin Catto wrote:Split impulses are a weak attempt to mimic a more accurate solver. It is fortunate that they work so well for contact. :)
However, they don't work well with spherical joints.
there is something that is not clear to me here, SI don't work well with spherical joints, however i have never heard of this about PGS or better GS(just equality constrants), however you state elsewhere that PGS and SI are equivalent? aren't Ageia,ODE,Jiglib using GS processes that seem to work reasonably well with spherical joints?

cheers,
Antonio
Erin Catto
Posts: 316
Joined: Fri Jul 01, 2005 5:29 am
Location: Irvine

Post by Erin Catto »

Actually, I think it could optimized further. In a pivoting method we have an active and an inactive set. For a multibody tree, the active set elements are known joint torques at one of their torque limits. The inactive set elements are prescribed joint velocities/accelerations. The solution that the pivoting method needs is the resulting joint torques for the inactive set and the velocities/accelerations for the active set. The entire computation can be performed in order N time (no big matrices need to be computed).

It makes sense that we can do this in order N time because motors maintain the tree topology. We could also use coherence of the active set to reduce the number of pivots.

It might be a bit tricky to architect this. You would need to easily switch a joint from having prescribed motion to having prescribed torque. It shouldn't be too difficult to simulate a tree that has partially prescribed joint motion.
Erin Catto
Posts: 316
Joined: Fri Jul 01, 2005 5:29 am
Location: Irvine

Post by Erin Catto »

AntonioMartini wrote: there is something that is not clear to me here, SI don't work well with spherical joints, however i have never heard of this about PGS or better GS(just equality constrants), however you state elsewhere that PGS and SI are equivalent? aren't Ageia,ODE,Jiglib using GS processes that seem to work reasonably well with spherical joints?
Oh, I was talking about Split Impulses, not Sequential Impulses. Split Impulses is a hacky method for dealing with position drift. Sequential Impulses with Baumgarte works fine for spherical joints (with the usual caveats for an iterative solver).
Antonio Martini
Posts: 126
Joined: Wed Jul 27, 2005 10:28 am
Location: SCEE London

Post by Antonio Martini »

Erin Catto wrote: You would need to easily switch a joint from having prescribed motion to having prescribed torque. It shouldn't be too difficult to simulate a tree that has partially prescribed joint motion.
prescribed torque = forward dynamics
prescribed motion = inverse dynamics
the hybrid dynamics algorithm of Featherstone allows for the mixed inverse/forward dynamics case on selected joints. The algorithm is described in his book.

cheers,
Antonio
Antonio Martini
Posts: 126
Joined: Wed Jul 27, 2005 10:28 am
Location: SCEE London

Post by Antonio Martini »

Erin Catto wrote:
AntonioMartini wrote: there is something that is not clear to me here, SI don't work well with spherical joints, however i have never heard of this about PGS or better GS(just equality constrants), however you state elsewhere that PGS and SI are equivalent? aren't Ageia,ODE,Jiglib using GS processes that seem to work reasonably well with spherical joints?
Oh, I was talking about Split Impulses, not Sequential Impulses. Split Impulses is a hacky method for dealing with position drift. Sequential Impulses with Baumgarte works fine for spherical joints (with the usual caveats for an iterative solver).
ok, i probably confused the split impulse with the total impulse mentioned in one of your gdc presentations. confession: i haven't read the full thread;)

cheers,
Antonio
raigan2
Posts: 197
Joined: Sat Aug 19, 2006 11:52 pm

Post by raigan2 »

David Wu's "physics and character animation" papers mention similar ideas: using Featherstone-type root->leaves and leaves->root traversal to solve forward and inverse dynamics together, as well as changing nodes/links from kinematic to dynamic on-the-fly when the required torques violate limits.

I don't have a great understanding of the actual math though, but I'm sure you'll be able to get a lot out of them: http://pseudointeractive.com/files/Char ... ch2004.ppt
http://pseudointeractive.com/files/Phys ... DC2003.doc
che
Posts: 4
Joined: Mon Nov 17, 2008 2:55 pm

Re: Split Impulses and Joints

Post by che »

Hello,

I would like to pop up this thread about split impulses. Everybody speaks about split impulses but I haven't found any proper explanation or description of that method..

does anybody knows where to find out about it ?

thanks
Steinmetz
Posts: 26
Joined: Sat Dec 15, 2007 12:03 am

Re: Split Impulses and Joints

Post by Steinmetz »

Hello,

I would like to pop up this thread about split impulses. Everybody speaks about split impulses but I haven't found any proper explanation or description of that method..

does anybody knows where to find out about it ?

thanks
The best would be to look at Erin Catto's slides
http://www.gphysics.com/files/GDC08_Cat ... torial.zip

You could also download Box2d Lite and have a look in the code, you can find an well arranged implementation of split impulses there.
Basically "split impulses" just means, that you put the position error that you want to correct into a separate velocity (bias velocity) by applying a separate impulse (split impulse) on the body, dependent on how big the error is. Split impulses is sort of an opposite to "baumgarte", where you just feed the position error back into the velocity. This has the disadvantage, that bodies can get high velocities if they penetrate a lot.

I hope I'm right, please correct me if not :)
che
Posts: 4
Joined: Mon Nov 17, 2008 2:55 pm

Re: Split Impulses and Joints

Post by che »

Thanks. I will have a look on that.