And you can now plug this into your favourite initial value problem solver (eg. RK4) and simulate away!
The Free Spinning Cuboid
A cuboid set in motion spinning about its intermediate axis will not be stable in its rotation
Cuboid flips every so often, centre of mass (if moving) translates linearly as expected
Reaction Forces by Virtual Power
A common technique in constrained dynamics is that of virtual power
An virtual force \(T\) is imagined to align with the degree of freedom being constrained along with the condition that this force must be do no work in a given instant, ie.no virtual power
Take our rotor equation and substitute in rotor time derivatives, leads to:
\ddot{B} = M^{-1}[\dot{\tilde{R}}\Omega R + \tilde{R}\Omega\dot{R}] + M^{-1}[W_b]
Differentiating our state derivative equation again leads to:
(U\times M^{-1}[W_b]) = \text{function of } R, \Omega, U
Substitute in and rearranging leads to a linear function of \(W_b\) which can be split as \(W_b = F + S\):
(U\times M^{-1}[F]) = -(U\times M^{-1}[S]) + \text{function of }R, \Omega, U
Reaction Wrench Force Basis
We want to solve for F:
F is a linear combination of the screw basis bivectors but it is not a full rank problem we need to provide a valid basis for the reaction wrench and can then solve via standard matrix methods
A valid basis for a point pin reaction force is three non-colinear forces force lines passing through the point
The pinning technique we have shown here will work for any multivector - but the user must provide a valid basis to solve it
(U\times M^{-1}[F]) = -(U\times M^{-1}[S]) + \text{function of }R, \Omega, U
Pinning in PGA
In PGA all of the flat elements are available to be pinned
Points (3 rotational dof)
Line (1 translational dof, 1 rotational dof)
Plane (2 translational dof, 1 rotational dof)
Direction vector (3 translational dof)
Pinning in CGA
In CGA we have all of the flat blades of PGA available for pinning
Points (3 rotational dof)
Line(1 translational dof, 1 rotational dof)
Plane (2 translational dof, 1 rotational dof)
Direction vector (3 translational dof)
But also we can also pin with the round blades
Point-pair (1 rotational dof)
Circle (1 rotational dof)
Sphere (3 rotational dof)
Pinning the Spinning Top
Pin the tip of a spinning top in body space to the origin in world space
Add gravity and give it a spin about its axis, exhibits precession and nutation as expected
Pinning the Physical Pendulum
We can verify we our physics with simple checks, one of the simplest being the small angle swinging time period of a uniform rod
Closed form predicted time period
Dynamic Pinning
It is also possible to pin parametric functions of multivectors in one frame to other parametric functions in another
This allows you to pin one moving object in one frame to a moving (or still of course) one in another
Simply relax constraint that \(\dot{U}\) and \(\dot{V}\) must be 0, and rearrange as before
Can solve with the same force basis as the static case
(U\times M^{-1}[F]) = \text{Some function of }R, \Omega, U, \dot{U}, \ddot{U}, V, \dot{V}, \ddot{V}, S
Dynamic Pinning
Here we start the pendulum still but drive the attachment point sinusoidally:
Pinning Linear Functions
It is also possible to pin linear functions between spaces. This time U is a linear function of the image of V in the body space:
A\left[(\tilde{R}VR)\times M^{-1}[F]\right] = A\left[-((\tilde{R}VR)\times M^{-1}[S]) + \text{function of }R, \Omega, U, \dot{U}, \ddot{U}, V, \dot{V}, \ddot{V} \right]
Again this is linearly solvable but requires a little thought as to what basis is required to solve the problem
Pinning Linear Functions
For example: V might be a circle, \(\dot{U}\) and \(\dot{U}\) might be 0, and A an outer product with a body frame point P:
A[X] \mapsto P\wedge X
Forces world frame circle always incident with the body frame point, but otherwise allows free movement!
For the circle-point incidence case this produces a 4dof system
Pinning Linear Functions
Pinning the outer product of a CGA sphere and point to the value 0 gives a 5dof system
Why is Pinning Multivectors Useful?
No need to differentiate virtual power constraints for curved objects
Setting up the problem is very geometric and intuitive
Should generalise to higher dimensional algebras very easily, anything with motors and geometric primitives is a good target
Future Work
Higher dimensional algebras with more richness provide non trivial pinning primitives, eg. Can we pin dynamic rigid bodies to DCGA quadrics directly?
Currently we integrate the rotor R, over time with simple integration methods this will wander off the rotor manifold. Can we re-phrase entirely in the bivector (lie algebra) domain?
Game engines often use impulse driven physics engines, can we bring them into this framework?
There is a lot of very good and well established work in Screw Theory applied to articulated rigid body dynamics, swept surfaces, etc. Let's bring more into GA to make it understandable (good places to start: Helmut Pottmann, Roy Featherstone)
Conclusions
Screw Theory based dynamics embeds into both CGA and PGA very easily
Virtual power constraints work as expected in the GA formulation
Multivector pinning offers an alternative viewpoint on constraints and allows the geometric richness of an algebra to shine
Dynamic linear multivector function pinning is a very flexible way of defining constraints on a rigid body system