> I have started to use this on my website at:
> I don't want to plagiarise anyones work, so if you have the time, I'd
> appreciate if you could check the credits.
I think what you have done is good. The combined equations of linear and
angular motion are sometimes called the Newton-Euler equations of motion
since Newton originated the linear and Euler the angular.
> I am planning to see if I can use this notation to try to find a general
> solution for 3D collision response. I don't have Featherstones book, its
> quite expensive, so perhaps I will try to work it through myself.
The Featherstone book would not help much on the collision problem anyway.
Collision involves two problems, 1) finding the interference between two
polygonal models. The best algorithms for this that I know are the OBBTree
work of Ming Lin, Dinesh Manocha, etc (see SIGGRAPH 96), and 2) computing
the collision forces from the interference by estimating the force from the
penetration and converting this linear force to a spatial force on the
bodies (see slide 14 of hybridgdc.pdf).
> I would also like to incorporate your ideas about jointed structures, but
> this is such a big subject area, I don't know when I will get time.
Yes, a very tough subject. The robotics community favors the structurally
recursive articulated body dynamics approach and the graphics community
favors either the Witkin/Baraff Lagrange multiplier approach or the sparse
linear system approach. Since the linear system approach is so much easier
to learn I would suggest that your web page skip the structurally recursive
approach. I think that systems like the one used by Xiaoyuan Tu and Demetri
Terzopolous for their fish can also be used for general articulated bodies.
Then you have just one big mass-spring-damper linear system to solve with
sparse matrix methods. Maybe not quite as efficient as the Brandl version
of the Featherstone structural recursion but far simpler. David Baraff told
me that one reason that he came up with the Lagrange multiplier approach was
that he couldn't understand the structural recursion approach. :)
From: "Martin Baker"
Subject: Re: dynamics on your web page
Date: 06 November 2002 16:21
Thank you again for you e-mails which have helped me a lot.
I think that I am making some progress on calculating collision response for
However, I am still stuck in some areas, such as:
1) What are the general equations for an object initially rotating about an axis which is not a principal moment of inertia.
2) Given an object with an inertial tensor matrix defined in the objects local coordinates. How do I calculate the inertial tensor matrix terms in
absolute coordinates when the object is rotating?
3) How can I limit the direction of the collision to be in the direction of the normal to the surface, with no rotational impulse? If possible I would like to do this using matrix notation, so that I don't have to change notations part way through the solution.
I thought that your last reply would be useful to others, so I have linked
to it from this page.
If this is a problem I can easily remove it.
To: "Martin Baker"
Subject: Re: dynamics on your web page
Date: 06 November 2002 23:36
> 1) What are the general equations for an object initially rotating about an
> axis which is not a principal moment of inertia.
I may not be addressing the issue you are after here but...
Given the spatial velocity expressed in some frame (see slide 10 of hybridgdc.pdf), the angular position at time t+1 expressed as normalized Euler parameters (quaternion) is obtained by integrating the angular velocity. The quaternion qe = <qe0 qe1 qe2> (where |qe0 qe1 qe2 qe3| = 1) must be updated by deltaT * angular velocity (see slide 21). Alex Reshetov came up with the following clever method. The delta qe = deltaT * angular velocity. Normalize this to get qe3, then compute the delta rotation matrix
dA from the delta quaternion (see slide 21). Then dA*A is the new rotation matrix for the object.
Of course, if you use spring-damper meshes for all your "rigid" bodies you never have to worry about this because point masses have only linear motion and the behavior of the springs automatically gives you all of the angular magic. Um, well there is the efficiency issue.
> 2) Given an object with an inertial tensor matrix defined in the objects
> local coordinates. How do I calculate the inertial tensor matrix terms in
> absolute coordinates when the object is rotating?
I avoid this by having the inertia matrix expressed once in the body fixed frame and also compute all the accelerations forces etc in body fixed frame. Then transform the resulting motion to vworld coords.
> 3) How can I limit the direction of the collision to be in the direction
> the normal to the surface, with no rotational impulse? If possible I would
> like to do this using matrix notation, so that I don't have to change
> notations part way through the solution.
Again I'm probably not addressing the problem you are after. A force normal
to the surface does impart rotation except for a sphere with centered mass.
The component of reaction force F in the direction of normal N is F'=(FdotN)N.
Just to toot the horn for spring meshes again, all you have to do is constrain the motion of the point masses that are colliding, the springs do the rest. :) In other words just crank the sparse matrix solver to get the t+1 velocities and positions, then "adjust" the positions and velocities that you don't like.
|Correspondence about this page|
Book Shop - Further reading.
Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.
Game Physics - This book has some useful stuff, its more of a textbook, not a step by step guide (although it does have a disc with a lot of C++ code). About the first third of the book is a physics textbook with theoretical exercises, the middle bit covers physics engine topics, and the last third of the book covers mathematical topics. I think I would use this book as a reference book to lookup the theory behind something I might be working on rather than a book to work through in order.Robot Dynamics Algorithms (Kluwer International Series in Engineering and Computer Science, 22)
Commercial Software Shop
Where I can, I have put links to Amazon for commercial software, not directly related to the software project, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.
This site may have errors. Don't use for critical systems.