What instantaneous motion can one joint generate?
ENG-654 · Session 1 · Lecture 2
Exponentials, PoE & URDF
How does one geometric motion become a robot model that mathematics and simulation can share?
We will move from instantaneous motion, to finite rigid motion, to Product of Exponentials—and then read the same kinematic ideas directly from URDF.
The narrative
Three languages answer three different questions
The lecture follows one custom_3R robot through geometry, kinematics, and simulation.
How do joint motions compose into forward kinematics?
How is the robot communicated to software?
Act I · Notation before use
A motion has a frame, a point, and a rate
These symbols will be used throughout the lecture; each has one job.
\(W\): fixed world frame.
\(B\): moving body frame.
\(q_i\): coordinate of joint \(i\).
\(\theta\): rotation travelled about an axis.
\(\boldsymbol\omega\in\mathbb R^3\): angular-velocity axis and rate.
\(\mathbf v\in\mathbb R^3\): linear component of a rigid-body twist.
\(\boldsymbol\xi=(\boldsymbol\omega,\mathbf v)\in\mathbb R^6\): twist coordinates.
\([\boldsymbol\omega]_\times\): skew matrix satisfying \([\boldsymbol\omega]_\times\mathbf p=\boldsymbol\omega\times\mathbf p\).
\(\widehat{\boldsymbol\xi}\in\mathfrak{se}(3)\): matrix form of a twist.
\(\exp(\cdot)\): matrix exponential.
\(R\in SO(3)\): orientation.
\(\mathbf t\in\mathbb R^3\): translation.
\(T\in SE(3)\): homogeneous transformation.
\(M\): home pose when all \(q_i=0\).
Act I · A 2D warm-up
Constant angular velocity naturally produces an exponential
Before using a \(3\times3\) or \(4\times4\) matrix exponential, follow one point and one frame rotating in the plane.
Define the \(90^\circ\) rotation generator
Instantaneous motion: \(\dot{\mathbf p}(t)=\omega J\mathbf p(t)\).
Accumulate small rotations: \(\mathbf p(t+\Delta t)\approx(I+\omega J\Delta t)\mathbf p(t)\).
Take the continuous limit:
Takeaway: the exponential is not arbitrary notation—it is what repeated infinitesimal rotations converge to.
Act I · From rate to motion
The exponential answers a time-evolution question
If a matrix generator \(A\) produces the instantaneous change of a state, its exponential produces the finite change.
Begin with a constant linear differential equation.
The generator \(A\) tells us the tangent direction at each instant.
The unique finite evolution is
For rigid motion, the generator lies in \(\mathfrak{se}(3)\), while the result lies in \(SE(3)\).
Takeaway: exponentiation converts an instantaneous motion rule into a finite motion.
Act I · Angular velocity
Angular velocity describes how orientation changes
Its direction is the instantaneous rotation axis; its magnitude is the angular speed.
For a point \(\mathbf p\) attached to a body rotating about an axis through the origin,
Because the matrix is skew-symmetric, \([\boldsymbol\omega]_\times^T=-[\boldsymbol\omega]_\times\).
Act I · Linear velocity
A screw couples rotation and translation
Every instantaneous rigid-body motion is a rotation about an axis combined with translation along that axis.
Let the axis pass through point \(\mathbf r\), with unit direction \(\boldsymbol\omega\), and pitch \(h\).
The first term locates the axis; the second adds translation along it.
\(\|\boldsymbol\omega\|=1,\ h=0\)
\(\|\boldsymbol\omega\|=1,\ h\neq0\)
\(\boldsymbol\omega=\mathbf0,\ \|\mathbf v\|=1\)
Act I · Twist coordinates
The hat operator turns six numbers into a generator
The matrix form is chosen so it acts on homogeneous points and exponentiates into a homogeneous transformation.
A six-vector is convenient for storage and Jacobians.
The hat matrix is convenient for applying the exponential map.
Act II · Interactive screw motion
One twist generates a family of poses
Change angle and pitch. Watch rotation around the axis and translation along it remain coupled.
Act II · Rodrigues derivation 1/3
The skew generator has only three independent powers
Let \(K=[\boldsymbol\omega]_\times\), where \(\|\boldsymbol\omega\|=1\). We first simplify powers of \(K\) before expanding the exponential.
Apply \(K^2\) to any vector \(\mathbf p\).
The vector triple-product identity gives
Multiply once more by \(K\).
Because \(K\boldsymbol\omega=\boldsymbol\omega\times\boldsymbol\omega=\mathbf0\),
Consequence: every higher power reduces to either \(K\) or \(K^2\).
Act II · Rodrigues derivation 2/3
Regroup the exponential into odd and even powers
Substitute \(K^3=-K\) and \(K^4=-K^2\) into the Taylor series.
Act II · Rodrigues derivation 3/3
Rodrigues’ formula is the closed-form exponential
Insert the sine and cosine series, then interpret how the three terms act on a vector.
starts from the original vector
moves in the tangential direction
supplies the radial correction
Act II · From rotation to rigid transformation
The same exponential generates the full pose
Rodrigues provides the rotational block; integrating the twist’s linear component provides the translation.
Using \(K=[\boldsymbol\omega]_\times\), the same translation can be written as
Act II · The adjoint map
One physical motion, different twist coordinates
The adjoint is the \(6\times6\) coordinate-change matrix induced by a rigid transformation. It rotates both components and accounts for the shift of origin.
\({}^{A}\boldsymbol\xi=[{}^{A}\boldsymbol\omega;\,{}^{A}\mathbf v]\): twist coordinates expressed in \(A\).
\({}^{A}T_B=(R,\mathbf t)\): pose of \(B\) expressed in \(A\).
\(\operatorname{Ad}_T\): adjoint representation of \(T\).
Why the lower-left block? Moving the coordinate origin changes linear velocity by \(\mathbf t\times\boldsymbol\omega\), even though the rigid-body motion is unchanged.
Express a joint axis from its local URDF frame in world or tool coordinates.
Convert between space and body Jacobians: \(J_s=\operatorname{Ad}_{T}J_b\).
Move spatial or body twists between sensor, base, and end-effector frames.
Wrenches use the inverse transpose: \(\mathcal F_A=\operatorname{Ad}_{T}^{-T}\mathcal F_B\).
Act II · Interactive frame transformation
Move the observer, not the screw
The red screw is fixed in world geometry. Move frame \(B\) and observe how the same screw’s coordinates change.
Takeaway: the adjoint gives portability between motion coordinates and frame transformations.
Act III · Notation before PoE
PoE stores one screw per joint and one home pose
We use the space form: every screw axis is expressed in the fixed world frame at the home configuration.
Space screw of joint \(i\), expressed in \(W\), evaluated at \(q=\mathbf0\).
Joint displacement: radians for revolute, metres for prismatic.
End-effector pose \({}^{W}T_E\) at \(q=\mathbf0\).
End-effector pose after applying all joint motions.
Act III · Build custom_3R
Read each screw directly from the home geometry
For a revolute joint through \(\mathbf r_i\) with unit axis \(\boldsymbol\omega_i\), use \(\mathbf v_i=-\boldsymbol\omega_i\times\mathbf r_i\).
| Joint | \(\boldsymbol\omega_i\) | Point \(\mathbf r_i\) on axis | \(\mathbf v_i\) |
|---|---|---|---|
| 1 | \([0,0,1]^T\) | \([0,0,0.5]^T\) | \([0,0,0]^T\) |
| 2 | \([0,1,0]^T\) | \([1,0,1]^T\) | \([-1,0,1]^T\) |
| 3 | \([0,0,1]^T\) | \([3,1.25,1]^T\) | \([1.25,-3,0]^T\) |
Act III · custom_3R forward kinematics
Compose the three joint exponentials
Move the joint coordinates and inspect each factor, the end-effector path, and the resulting \(T(q)\).
Act IV · From equation to model file
PoE computes motion; URDF describes the mechanism
A simulator needs names, topology, geometry, limits, mass properties, and interfaces—not only forward kinematics.
Compact and geometric, but it does not say which STL belongs to which link or how much a link weighs.
<robot name="custom_3r">
<link name="base_link"/>
<joint name="joint_1" type="revolute">
...
</joint>
</robot>URDF is a machine-readable kinematic tree with physical metadata.
Act IV · URDF anatomy
A URDF robot is a rooted graph of links and joints
Declare the structure before reading individual XML tags.
A rigid body and its visual, collision, and inertial descriptions.
The allowed relative motion from one parent link to one child link.
The joint or property frame relative to its parent, using xyz and rpy.
Act IV · Link contents
One link carries three different models
Rendering, contact, and dynamics have different requirements, so URDF keeps them separate.
<visual>AppearanceGeometry, mesh scale, local origin, color, or named material.
<mesh filename="...stl"/>
<material name="teal"/><collision>Contact geometryOften simplified boxes, cylinders, spheres, or low-resolution meshes.
<box size="1 .2 .2"/><inertial>DynamicsMass, centre of mass, and the symmetric inertia tensor in the inertial frame.
<mass value="2.4"/>
<inertia ixx="..." .../>Act IV · Joint contents
A joint defines topology, motion, and admissible range
Each child has one parent; the joint origin is the child joint frame at zero displacement.
<joint name="joint_2" type="revolute">
<parent link="link_1"/>
<child link="link_2"/>
<origin xyz="1 0 .5" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit lower="-3.14" upper="3.14"
effort="100" velocity="2"/>
</joint>fixed, revolute, continuous, prismatic, floating, planar
damping and friction describe simple joint losses.
Relates one scalar joint coordinate to another.
Optional controller-oriented metadata.
Act IV · Actuation and validation
Transmission is related to URDF, but not kinematics
A transmission maps actuator effort and motion to a joint interface; simulators and control frameworks interpret it.
<transmission name="joint_2_drive">
<type>transmission_interface/
SimpleTransmission</type>
<joint name="joint_2">...</joint>
<actuator name="motor_2">
<mechanicalReduction>80</mechanicalReduction>
</actuator>
</transmission>- Kinematics: links, joints, origins, axes.
- Dynamics: mass, inertia, friction, damping.
- Actuation: transmissions and simulator/control extensions.
- Validation: collision geometry and joint limits.
Act IV · Bidirectional URDF laboratory
Edit the model—or drag its frames
Upload any rooted URDF tree or edit the XML directly: every declared link and joint origin is rebuilt as a synchronized frame graph.
xyz value, or drag any non-root frame. The source and rendering update immediately.Act V · URDF to DH
PUMA 560 reveals why conversion is not mechanical
URDF joint frames may be placed for CAD convenience; DH frames must satisfy geometric rules between consecutive axes.
URDF gives
- A parent-to-child joint origin \(T_{\mathrm{origin},i}\)
- A joint axis expressed in the joint frame
- Mesh frames unrelated to DH placement
DH requires
- \(z_{i-1}\) coincident with joint axis \(i\)
- \(x_i\) along a common normal
- Special choices for intersecting or parallel axes
For the PUMA wrist, three axes intersect: the DH model is compact, but several valid frame choices can describe the same geometry.
Act V · URDF to PoE
PoE extraction follows the geometry directly
No common-normal construction is required: place every joint axis in a shared reference frame at the home pose.
Compute each joint-frame pose \({}^{W}T_{J_i}\) at \(q=0\).
\(\boldsymbol\omega_i={}^{W}R_{J_i}\mathbf a_i\), where \(\mathbf a_i\) is the URDF axis.
\(\mathbf r_i={}^{W}\mathbf t_{J_i}\), \(\mathbf v_i=-\boldsymbol\omega_i\times\mathbf r_i\).
\(M={}^{W}T_E(0)\).
Act V · Honest limitations
URDF is a tree language, not a universal mechanism language
URDF handles branched rooted trees well, but one child cannot have two parents—so closed kinematic loops cannot be represented directly.
Serial robots, branched trees, mobile manipulators, sensors, rigid attachments, standard one-DOF joints.
Parallel mechanisms and closed loops; rolling contact; antiparallelogram couplings; cable or tendon constraints; nonstandard multi-body joint laws.
Synthesis · Choose the representation for the question
Minimal, geometric, and executable are complementary
No single representation dominates every stage of robot design and validation.
DH
Minimal kinematic structureFour scalars per link expose design conditions and enable synthesis.
PoE
Geometric motion structureScrew axes are coordinate-portable through the adjoint and connect naturally to velocities and the Jacobian.
URDF
Unified simulation languageGeometry, topology, limits, collision, and inertia support kinematic/dynamic validation and digital twins.
Conclusion
One robot, three useful abstractions
They turn angular and linear velocity geometry into finite homogeneous transformations.
It provides a direct geometric forward-kinematics model and prepares us for Jacobians.
It makes the kinematic tree, geometry, limits, and dynamic metadata available to software.
Use DH for compact synthesis, PoE for motion geometry, and URDF for simulation and validation.