Hugo Hadfield
Cambridge University PhD student, Signal Processing and Communications Laboratory
Hugo Hadfield
2nd Dec 2024
Trinity College
Cambridge University Signal Processing and Communications Laboratory
What if we want the full orientation of the endpoint?
Can we construct a rotor from origin to endpoint?
Construct the base rotors
Construct the first link's translation rotor
Construct the elbow and link 2 translation rotor
The combined rotor is the product of all of them
Just like chaining together 4x4 matrices
Consider a point transformed from the body frame to the world frame
Let's take some derivatives
Now we need to use the fact rotors are identity magnitude
The quantity
is often defined, this quantity is
always a bivector. This is the twist of the body.
These results are well known in Screw Theory
P
Gravity
A simple rod pendulum is attached to a pivot point at one end. The pivot is at point P in the world frame.
In the body frame the point A is the attachment point. In the world frame this point is labelled P.
Forces have a line of action, an orientation, and a magnitude
We can therefore naturally encode a force as an infinite line in CGA
force magnitude
force direction
3d point through which the line passes
Note we have used the dual construction of the line here, ie. F is a bivector
Both dual force lines and our bivector moments are screws, and specifically because they carry forces/moments they are known as wrenches (see [12])
If h is 0 then we have a force line
Iif m is 0 magnitude we have a pure moment
The general form of a screw is:
We can add and subtract screws at will and we will still stay on the screw manifold
Define an inertia tensor Q which transforms between body frame screw momentum and the body frame twist
The power done by a virtual wrench T acting against a body frame twist is given by this, where v is a scalar power:
In the case of a constraint, v must always be 0 as we do no work against it.
After doing an enormous amount of boring algebra we get this equation:
We now have an equation to solve for Wb:
We need to know what form T should take. For a pin constraint we can construct a virtual wrench that connects the centre of mass of the object C with the pivot point P.
Believe it or not, this is basically just Ax = b
Write the left hand side linear operator as M and the resulting multivector as N. Splitting W_b into S_b and F_b we get:
If we have a linear mapping of a multivector $M$ we can represent this mapping as a matrix of real coefficients \[c_{ij}$ acting on a vector of multivector coefficients for a given basis $X_i$ by the following construction:
And we can just solve this with whatever numerical linear algebra solver we like. As it is a point we will just pick a basis of any three perpendicular lines that go through the pivot point
We can set up the whole simulation as follows:
And then we can plug it into whatever numerical ODE solver we like. For example, RK4.
Nothing fancy here, virtual power is a very old technique
P
Gravity
Lots of algebra, easy to make mistakes in the setup of all of these constraint problems. I will send through a notebook with my implementation in case people are interested
(If \(P^2 < 0 \) then y is out of reach)
Construct a sphere at the base, \(n_0\)
Construct a sphere at the endpoint, y
Intersect the spheres to give a circle
Define a vertical plane through the endpoint and base
Intersect the circle and the plane to give a point pair
Choose one of the elbow position solutions
Get the pseudo-elbow point \(A_i\)
Construct a sphere about the pseudo-elbow
The intersection of the three spheres (one from each limb) correspond to the two possible possitions of the centre of the end plate
If \(T_i^2 < 0\) then the target point is unreachable
Construct three possible elbow position circles
Construct three possible elbow position spheres
Intersect each sphere with its corresponding circle and select one possible intersection solution per limb
Finally get the motor angles
R_t
An object moves along a path with a time varying rotor.
We wish to track its motion.
We observe frames along its length
We can set up a state space model to track the object using a constant momentum process.
If you don't know the mass of the object just guess 1kg and spherical distribution of mass.
Never observe the rotation object directly, always observe its action on an object. Periodicity is annoying here.
Imagine the transform acts on a few test vectors, calculate where they would be. Compare that with the positions your measured transform would put them at. Do residuals in position space.
Imagine we have some cost function and we want to know where it is minimised but we want to optimise to find the rotor that works best.
Eg. Reprojection error in 3D SLAM
We can simply parameterise this in bivector space. Then solve by wrapping in scipy.optimize.minimize
By Hugo Hadfield
This talk covers the applications of algebras for geometry with regard to the day-to-day work of a robotics engineer. http://hh409.user.srcf.net
Cambridge University PhD student, Signal Processing and Communications Laboratory