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:

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.