The adjoint: moving tangent vectors between frames
"Nudge the pose by $\tau$" is ambiguous in a non-commutative group. The nudge can be applied in the body's own frame, $X\operatorname{Exp}(\tau)$, or in the world frame, $\operatorname{Exp}(\tau)X$, and the two land in different places. Every Lie library picks one convention, and many bugs come from mixing them. The adjoint is the linear map that converts a perturbation from one side to the other. Once you have it, left and right become a bookkeeping choice instead of a source of errors, and the adjoint goes on to transform velocities, Jacobians and covariances.
Left or right: the same numbers, different moves
Body frame versus world frame
A right perturbation, $X\oplus\tau = X\operatorname{Exp}(\tau)$, is expressed in the local (body) frame: "move $0.6$ forward, where forward is wherever I am facing". A left perturbation, $\tau\oplus X = \operatorname{Exp}(\tau)X$, is expressed in the global (world) frame: "move $0.6$ along world $x$, and turn about the world origin". With the same six (or three) numbers these differ. They agree only when there is a vector that, placed on the left, does the same job as $\tau$ on the right:
Drag the robot and set a perturbation. Blue applies it on the right, magenta dashed applies the same numbers on the left, and the hollow outline applies $\operatorname{Ad}_X\tau$ on the left, landing exactly on blue.
The adjoint of SO(3) is the rotation itself
Re-expressing an axis in another frame
Conjugating a skew matrix by a rotation rotates the vector inside it, $R[\tau]_\times R^\top = [R\tau]_\times$. (Check it on any vector: both sides map $v$ to $R(\tau\times R^\top v) = (R\tau)\times v$.) Exponentiating both sides:
A small rotation about a body-frame axis $\tau$ is the same as a small rotation about the world-frame axis $R\tau$. That is the relation $\omega_s = R\,\omega_b$ from Part 4, now seen as an adjoint. In the demo, the body axis (drawn attached to the body) and its world image $R\tau$ produce the same final orientation.
The adjoint of SE(3) and the lever arm
A body rotation is a world rotation plus a world translation
For $T = (R, t)$ and $\tau = (\rho, \phi)$, conjugation gives
The rotation part transforms like $SO(3)$: $\phi_{\text{world}} = R\phi$. The translation part picks up $t\times R\phi$. A body spinning in place at a point $t$ away from the world origin, seen as a world-frame twist, is a rotation about an axis through the origin plus a translation $t\times\omega$ that keeps the body where it is. It is the same arithmetic as a wrench and its lever arm. Slide the body away from the origin and watch the world twist gain a translational part, although the body twist is pure rotation.
The body spins about its own vertical axis (body twist: $\rho=0$, $\phi$ along body $z$). The magenta arrow is the translational part $t\times R\phi$ of the equivalent world twist; the ghost poses are $\operatorname{Exp}(s\operatorname{Ad}_T\tau)\,T$ for several $s$. Drag to orbit.
Adjoint identities, checked
A homomorphism and its derivative
The adjoint is a group homomorphism into matrices: it respects products and inverses. Its derivative at the identity is the small adjoint $\operatorname{ad}_a$, the matrix of "bracket with $a$". For $SO(3)$ that is $\operatorname{ad}_a = [a]_\times$. For $SE(3)$ it is a $6\times6$ block matrix:
The last identity is the bridge to Part 9: the Jacobians of Exp are power series in $\operatorname{ad}$. The button below draws random poses and twists and checks each identity numerically on $SE(3)$.
Conventions you will meet
What a "delta" means in each library
Two questions settle almost every convention mismatch. Does the perturbation compose on the right (body frame) or the left (world frame)? Does the tangent vector list translation or rotation first? The table summarises common choices; always confirm against the documentation of the version you use.
| Source | Pose tangent order | Default perturbation |
|---|---|---|
| Solà, Deray & Atchuthan, "A micro Lie theory" / manif | $(\rho, \theta)$: translation first | right, $X\operatorname{Exp}(\tau)$; left versions also given |
| Barfoot, State Estimation for Robotics | $(\rho, \phi)$: translation first | left, $\operatorname{Exp}(\epsilon^\wedge)\bar T$ |
GTSAM Pose3 | $(\omega, v)$: rotation first | right, $T\operatorname{Exp}(\xi)$ |
Sophus SE3 | $(\upsilon, \omega)$: translation first | provides Exp, Log and group products; the side you perturb on is your choice (its Dx_this_mul_exp_x_at_0 helper is the right-perturbation derivative) |
Ceres QuaternionManifold | rotation only | left, $\operatorname{Exp}(\delta)\,q$, with $\delta$ a half-angle vector |
| This series | $(\rho, \phi)$: translation first | right, unless stated |
Converting between them is mechanical. A right-perturbation Jacobian $J_r$ becomes a left one by $J_l = J_r\operatorname{Ad}_X^{-1}$, a covariance by $\Sigma_l = \operatorname{Ad}_X\Sigma_r\operatorname{Ad}_X^\top$ (Part 11), and a reordering of the tangent is a permutation matrix applied on both sides.