[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