[ODE] Joint with two skew, non-perpendicular axes
Erin Catto
erincatto at sbcglobal.net
Fri Dec 10 09:38:26 MST 2004
You want a generalized universal joint. The constraint is that the dot
product of the two axes has a fixed value. That's the easy part. Computing
the joint angles for the limits is not simple. Here's how you could do it.
- Express the two rotations symbolically using axis-angle based rotation
matrices.
- Multiply the two rotation matrices symbolically.
- Express the full rotation matrix as dot products of the axes in the two
bodies.
- Now you have two rotation matrices that should be equal. This gives you 9
equations and two unknowns (the two rotation angles).
- Extract the rotation angles using the 9 equations. It is best to use atan2
rather than asin or acos, so you will need to combine multiple equations.
Erin
-----Original Message-----
From: ode-bounces at q12.org [mailto:ode-bounces at q12.org] On Behalf Of Holger
Urbanek
Sent: Friday, December 10, 2004 7:53 AM
To: ode at q12.org
Subject: [ODE] Joint with two skew, non-perpendicular axes
In our simulation we need a joint with two skew, non-perpendicular
axes with agular limitation on both of them. How could something like
this be done?
Using two hinge-joints with a almost zero-mass body to connect them is
no alternative, as it introduces quite an amount of nummerical
instabilities.
If it needs a rewriting of joints.cpp, perhaps somebody has already done
this?
Thanks,
Holger
_______________________________________________
ODE mailing list
ODE at q12.org
http://q12.org/mailman/listinfo/ode
More information about the ODE
mailing list