Learn · 6 of 6
Robot Modeling
Forward kinematics as a product of motors, Jacobians as multivector matrices, and what geometric objectives buy in control.
With primitives and transformations in place, a kinematic chain can be described entirely inside the algebra. This page sketches how, and points to the papers that develop each piece.
Forward kinematics
The forward kinematics of a chain of joints is a product of motors. For revolute joints, the forward motor at configuration is
where the constant motors place each joint's local frame and the joint's own motion is a rotor about its bivector :
Each joint contributes one rotor, the chain is their ordered product, and the result is a single motor carrying the end-effector pose. No homogeneous matrices and no conversions appear anywhere in the expression.
Jacobians
The literature distinguishes the analytic and geometric Jacobian, and both have direct counterparts here.
The analytic Jacobian is the derivative of the forward motor with respect to the joint angles,
a multivector matrix whose entries are motors. Each partial derivative inserts the joint's bivector into the product:
The geometric Jacobian is obtained by transforming each joint's rotation bivector by the motor up to that joint,
so its columns are bivectors — screw axes — rather than stacked linear and angular blocks. The velocity relationship follows directly, and the usual representation-specific mapping between the two Jacobians is a product in the algebra.
Recursive algorithms for the dynamics follow the same pattern, propagating motors, twists and wrenches along the chain. That is the subject of Recursive Forward Dynamics.
Geometric objectives in control
The reason for doing all of this shows up in how tasks are written. A control objective is stated as a relation between geometric primitives — a point on a line, a plane tangent to a sphere, an axis pointing at a point — and because the primitives live in one algebra, one formula covers cases that would otherwise each need their own derivation.
Two consequences matter in practice:
-
Cost functions are uniform across primitives. The same expression for "distance to " works whether is a point, line, plane, circle or sphere, so an optimal control problem does not acquire a new term per task type. This is developed in Geometric Algebra for Optimal Control.
-
Nullspaces come for free. Constraining a pose to a primitive of lower dimension leaves a nullspace that is structurally present in the formulation rather than something to be computed separately, and secondary objectives can use it. This is central to Cooperative Geometric Primitives.
The multi-arm case generalises without new machinery: the Cooperative Dual-Task Space is expressed with a cooperative point pair, and the multi-arm extension replaces it with cooperative primitives related by similarity transformations, so a bimanual system, a humanoid and a multi-fingered hand are described the same way as a single arm.
Implementation
The algorithms above are implemented in gafro, a C++ library for
geometric algebra targeted at robotics, with Python bindings in pygafro and a ROS
interface in gafro_ros.