Velocity Kinematics and the Jacobian

Published on 2026-11-04·v1.0

Learning Objectives

  • Write the end-effector velocity as v=Jv(q)q˙\mathbf v=J_v(\mathbf q)\dot{\mathbf q} and ω=Jω(q)q˙\boldsymbol\omega=J_\omega(\mathbf q)\dot{\mathbf q}, and read each column of the Jacobian as the motion produced by one joint alone.
  • Build the geometric Jacobian column by column from the link frames, with the revolute rule (zi−1×(p−oi−1), zi−1)\big(\mathbf z_{i-1}\times(\mathbf p-\mathbf o_{i-1}),\ \mathbf z_{i-1}\big) and the prismatic rule (zi−1, 0)(\mathbf z_{i-1},\ \mathbf 0).
  • Check a Jacobian against central finite differences, including the angular rows, and choose the step size.
  • Define the analytic Jacobian, relate it to the geometric one through the matrix TT of the chosen orientation angles, and say when the two coincide and when they diverge.

Context & Motivation

Forward kinematics answers "where is the tool". Control needs "how fast does the tool move when the joints move", because motors are commanded in joint velocities and tasks are written in Cartesian ones. inverse-kinematics-and-workspace already used the answer inside Newton's method: the matrix of partial derivatives J=∂f/∂qJ=\partial f/\partial\mathbf q of a planar arm. That matrix was obtained by differentiating a formula, which works for position. Orientation is different. A rotation matrix is not a vector, and its rate of change is described by an angular velocity ω\boldsymbol\omega that is not, in general, the derivative of any three numbers. This lesson builds the Jacobian directly from the geometry of the chain, rows for ω\boldsymbol\omega included, and checks it numerically.

Core Theory

Conventions: classic DH frames as in the-denavit-hartenberg-convention, so joint ii moves about or along zi−1\mathbf z_{i-1}, whose origin is oi−1\mathbf o_{i-1}. All vectors are expressed in the base frame. The tool point is p\mathbf p. The Jacobian stacks linear rows on top, J=(JvJω)J=\begin{pmatrix}J_v\\J_\omega\end{pmatrix}. Modern Robotics stacks them the other way, angular on top.

Velocity kinematics is the chain rule

If p=p(q(t))\mathbf p=\mathbf p(\mathbf q(t)), the multivariable chain rule of partial-derivatives-and-the-multivariable-chain-rule gives p˙=∑i(∂p/∂qi) q˙i\dot{\mathbf p}=\sum_i(\partial\mathbf p/\partial q_i)\,\dot q_i, one term per route from p\mathbf p to tt. So column ii of JvJ_v is the tip velocity when joint ii moves at unit rate and every other joint is still. The relation is linear in q˙\dot{\mathbf q} and nonlinear in q\mathbf q: the matrix changes with the posture.

Building the geometric Jacobian column by column

A unit rate at a revolute joint spins everything beyond it about the axis zi−1\mathbf z_{i-1} through oi−1\mathbf o_{i-1}. A rigid body spinning at ω\boldsymbol\omega about an axis through o\mathbf o moves its point p\mathbf p at ω×(p−o)\boldsymbol\omega\times(\mathbf p-\mathbf o). A unit rate at a prismatic joint slides everything beyond it along zi−1\mathbf z_{i-1} without turning it. Hence

Ji=(zi−1×(p−oi−1)zi−1) (revolute),Ji=(zi−10) (prismatic).J_i=\begin{pmatrix}\mathbf z_{i-1}\times(\mathbf p-\mathbf o_{i-1})\\ \mathbf z_{i-1}\end{pmatrix}\ \text{(revolute)},\qquad J_i=\begin{pmatrix}\mathbf z_{i-1}\\ \mathbf 0\end{pmatrix}\ \text{(prismatic)}.

Angular velocities of a serial chain add, each joint contributing its axis times its rate, so the angular rows are just the joint axes. Every quantity needed, zi−1\mathbf z_{i-1} and oi−1\mathbf o_{i-1}, is the third and fourth column of 0Ti−1{}^0T_{i-1}, which forward kinematics already computes. In the modified convention joint ii sits on zi\mathbf z_i at oi\mathbf o_i, and the same rule applies with that index.

Naming: what "geometric" means where

This (p˙,ω)(\dot{\mathbf p},\boldsymbol\omega) Jacobian is what many texts call the geometric Jacobian. Modern Robotics uses the name for its space and body Jacobians, which map q˙\dot{\mathbf q} to a twist, and notes in a footnote that the term has also been used for this mixed form, which it calls "hybrid". The difference is only in the linear part. The space Jacobian's linear part is the velocity vs\mathbf v_s of the point of the moving body that is momentarily at the base origin, and p˙=vs+ω×p\dot{\mathbf p}=\mathbf v_s+\boldsymbol\omega\times\mathbf p. Before comparing a Jacobian with another source, check which velocity it produces.

The analytic Jacobian

Suppose orientation is described by three angles ϕ\boldsymbol\phi, for instance ZYX angles with R=Rotz(α) Roty(β) Rotx(γ)R=\mathrm{Rot}_z(\alpha)\,\mathrm{Rot}_y(\beta)\,\mathrm{Rot}_x(\gamma) (yaw, pitch, roll, about the moving axes). Differentiating ϕ(q)\boldsymbol\phi(\mathbf q) gives the analytic Jacobian JA=∂(p,ϕ)/∂qJ_A=\partial(\mathbf p,\boldsymbol\phi)/\partial\mathbf q. The angle rates and ω\boldsymbol\omega are related by ω=T(ϕ)ϕ˙\boldsymbol\omega=T(\boldsymbol\phi)\dot{\boldsymbol\phi}, where each column of TT is the axis of one elementary rotation, expressed in the base frame:

T=(ezRotz(α)eyRotz(α)Roty(β)ex)=(0−sαcαcβ0cαsαcβ10−sβ),det⁡T=−cβ.T=\begin{pmatrix}\mathbf e_z & \mathrm{Rot}_z(\alpha)\mathbf e_y & \mathrm{Rot}_z(\alpha)\mathrm{Rot}_y(\beta)\mathbf e_x\end{pmatrix}=\begin{pmatrix}0&-s_\alpha&c_\alpha c_\beta\\0&c_\alpha&s_\alpha c_\beta\\1&0&-s_\beta\end{pmatrix},\qquad \det T=-c_\beta.

Therefore

JA=(I00T(ϕ)−1)J,J_A=\begin{pmatrix}I&0\\0&T(\boldsymbol\phi)^{-1}\end{pmatrix}J,

valid wherever TT is invertible. Three consequences:

  • The linear rows always coincide, because both Jacobians use p˙\dot{\mathbf p} in the base frame.
  • The angular rows coincide only when T=IT=I. A planar arm is the standard case: its single orientation angle ϕ=θ1+θ2+θ3\phi=\theta_1+\theta_2+\theta_3 has ϕ˙=ωz\dot\phi=\omega_z.
  • At β=±90∘\beta=\pm90^\circ, TT is singular and JAJ_A does not exist, even if the arm can rotate freely. This is a representation singularity, a property of the chosen angles, not of the robot. Every Euler-angle sequence has one, at some value of its middle angle.

The analytic Jacobian is what you need when the task is written in those angles, for example a controller that tracks a yaw-pitch-roll trajectory. The geometric one is what you need for physical questions such as tool speed, forces through JTJ^T, and robot singularities.

Worked Examples

Example 1: the articulated arm, column by column

Use the arm and table of the-denavit-hartenberg-convention (d1=0.4d_1=0.4 m, a2=0.5a_2=0.5 m, a3=0.4a_3=0.4 m, assumed lengths) at q=(30∘,45∘,−60∘)\mathbf q=(30^\circ,45^\circ,-60^\circ). From the frames already computed there:

text
i axis z_(i-1) origin o_(i-1) p - o_(i-1) 1 (0, 0, 1) (0, 0, 0) (0.6408, 0.3700, 0.6500) 2 (0.5, -0.866, 0) (0, 0, 0.4) (0.6408, 0.3700, 0.2500) 3 (0.5, -0.866, 0) (0.3062, 0.1768, 0.7536) (0.3346, 0.1932, -0.1035)

Taking the cross products,

J=(−0.3700−0.21650.08970.6408−0.12500.051800.73990.386400.50.50−0.866−0.866100).J=\begin{pmatrix}-0.3700&-0.2165&0.0897\\0.6408&-0.1250&0.0518\\0&0.7399&0.3864\\0&0.5&0.5\\0&-0.866&-0.866\\1&0&0\end{pmatrix}.

Read the columns. Joint 1 moves the tip horizontally, perpendicular to the arm, at a speed equal to the horizontal reach r=0.7399r=0.7399 m, and has no vertical effect. Joints 2 and 3 share an axis direction, so their angular columns are equal. Joint 2's linear column has vertical component 0.73990.7399, again the horizontal reach, because the shoulder lifts the tip in proportion to how far out it is. The same columns come from differentiating the position formula of that lesson: ∂p/∂θ1=(−s1r, c1r, 0)=(−0.3700, 0.6408, 0)\partial\mathbf p/\partial\theta_1=(-s_1r,\ c_1r,\ 0)=(-0.3700,\ 0.6408,\ 0).

For a joint velocity q˙=(0.2,−0.1,0.3)\dot{\mathbf q}=(0.2,-0.1,0.3) rad/s, Jq˙=(−0.0254, 0.1562, 0.0419 m/s; 0.1, −0.1732, 0.2 rad/s)J\dot{\mathbf q}=(-0.0254,\ 0.1562,\ 0.0419\ \text{m/s};\ 0.1,\ -0.1732,\ 0.2\ \text{rad/s}).

Example 2: checking against finite differences

Position rows: perturb one joint by ±h\pm h and take (p(q+hei)−p(q−hei))/2h\big(\mathbf p(\mathbf q+h\mathbf e_i)-\mathbf p(\mathbf q-h\mathbf e_i)\big)/2h. Angular rows: the rotation matrices are not vectors, but R˙ RT\dot R\,R^T is the skew-symmetric matrix of ω\boldsymbol\omega, so take R˙≈(R(q+hei)−R(q−hei))/2h\dot R\approx\big(R(\mathbf q+h\mathbf e_i)-R(\mathbf q-h\mathbf e_i)\big)/2h and read ω\boldsymbol\omega off the entries (3,2)(3,2), (1,3)(1,3), (2,1)(2,1) of R˙RT\dot RR^T. The largest difference from the geometric JJ, over all 18 entries:

text
h 1e-2 1e-4 1e-6 1e-8 1e-10 max diff 1.7e-05 1.7e-09 7.0e-11 ~1e-08 ~5e-07 to 9e-07

The central difference has truncation error of order h2h^2, which dominates on the left, and rounding error of order εmach/h\varepsilon_{\text{mach}}/h, which dominates on the right. The last two entries are rounding noise: their digits change with how the forward kinematics is coded, only their order of magnitude is stable. The best step is near h=10−6h=10^{-6}, about the cube root of machine precision. An off-by-one in the origins, using oi\mathbf o_i instead of oi−1\mathbf o_{i-1} (easy when switching conventions), shows up as an entry off by 0.390.39, nine orders above this floor. A time-domain check agrees too: (p(q+q˙ δ)−p(q−q˙ δ))/2δ\big(\mathbf p(\mathbf q+\dot{\mathbf q}\,\delta)-\mathbf p(\mathbf q-\dot{\mathbf q}\,\delta)\big)/2\delta with δ=10−6\delta=10^{-6} s reproduces (−0.0254, 0.1562, 0.0419)(-0.0254,\ 0.1562,\ 0.0419) m/s.

The relation of the naming section also checks out here: for each column, −zi−1×oi−1-\mathbf z_{i-1}\times\mathbf o_{i-1} (the space-Jacobian linear part) plus zi−1×p\mathbf z_{i-1}\times\mathbf p reproduces the corresponding column of JvJ_v.

Example 3: a prismatic joint

Use the SCARA of the-denavit-hartenberg-convention (assumed shoulder height 0.50.5 m, links 0.40.4 m and 0.30.3 m) at (30∘,45∘,0.1 m)(30^\circ,45^\circ,0.1\text{ m}), with tip p=(0.4241,0.4898,0.4000)\mathbf p=(0.4241,0.4898,0.4000). Axes z0=z1=(0,0,1)\mathbf z_0=\mathbf z_1=(0,0,1) with origins (0,0,0)(0,0,0) and (0.3464,0.2,0.5)(0.3464,0.2,0.5), and z2=(0,0,−1)\mathbf z_2=(0,0,-1) because the quill's positive travel is down.

J=(−0.4898−0.289800.42410.0776000−1000000110).J=\begin{pmatrix}-0.4898&-0.2898&0\\0.4241&0.0776&0\\0&0&-1\\0&0&0\\0&0&0\\1&1&0\end{pmatrix}.

The third column is just z2\mathbf z_2 on top and zeros below: sliding moves the tool down at 1 m/s per m/s and does not turn it. Rows 4 and 5 are zero, so this arm can never tilt its tool, and the 6×36\times3 matrix has rank 3 at best. Finite differences with h=10−6h=10^{-6} agree to 7.0×10−117.0\times10^{-11}.

Example 4: geometric versus analytic, away from any singularity

For the articulated arm at (30∘,45∘,−60∘)(30^\circ,45^\circ,-60^\circ) the tool's ZYX angles are (α,β,γ)=(30∘,15∘,90∘)(\alpha,\beta,\gamma)=(30^\circ,15^\circ,90^\circ): yaw equals θ1\theta_1, pitch equals −(θ2+θ3)-(\theta_2+\theta_3), roll stays 90∘90^\circ. So the angular rows of JAJ_A are

(1000−1−1000),whileJω=(00.50.50−0.866−0.866100).\begin{pmatrix}1&0&0\\0&-1&-1\\0&0&0\end{pmatrix},\qquad\text{while}\qquad J_\omega=\begin{pmatrix}0&0.5&0.5\\0&-0.866&-0.866\\1&0&0\end{pmatrix}.

Both are correct, and they answer different questions: JAJ_A gives angle rates, JωJ_\omega gives the physical spin. Finite differences of the extracted ZYX angles reproduce T−1JωT^{-1}J_\omega to 8.4×10−118.4\times10^{-11}. The linear rows are identical.

Example 5: when only the analytic Jacobian blows up

Take a three-joint wrist with R=Rotz(q1)Roty(q2)Rotz(q3)R=\mathrm{Rot}_z(q_1)\mathrm{Rot}_y(q_2)\mathrm{Rot}_z(q_3), all joints revolute. Its angular Jacobian has columns ez\mathbf e_z, Rotz(q1)ey\mathrm{Rot}_z(q_1)\mathbf e_y and Rotz(q1)Roty(q2)ez\mathrm{Rot}_z(q_1)\mathrm{Rot}_y(q_2)\mathbf e_z, confirmed by finite differences to 8×10−118\times10^{-11}. Describe its orientation with ZYX angles and drive it toward q=(20∘,90∘,0)\mathbf q=(20^\circ,90^\circ,0), where the ZYX pitch reaches 90∘90^\circ:

text
q2 cond(J_omega) max |J_A entry| ZYX rates for qdot = (0.1, 0.1, 0.1) rad/s 40* 2.75 1.1 80 1.19 5.8 (0.68, 0.10, 0.57) 89 1.018 57.3 (5.83, 0.10, 5.73) 89.9 1.0017 573 (57.40, 0.10, 57.30)

(* row at q3=30∘q_3=30^\circ, the others at q3=0q_3=0.) At q2=89.9∘q_2=89.9^\circ the wrist is almost perfectly conditioned, it spins at ∣ω∣=0.173\lvert\boldsymbol\omega\rvert=0.173 rad/s, and yet yaw and roll must change at about 57 rad/s each. Near pitch 90∘90^\circ the yaw axis and the roll axis point in nearly opposite directions, so these two large rates nearly cancel. A controller written in ZYX angles would see a fault that the hardware does not have.

The reverse also happens. At q2=0q_2=0 the axes of joints 1 and 3 line up, JωJ_\omega has singular values (1.414,1,0)(1.414,1,0), and the wrist really cannot spin about one direction. That is a robot singularity, the subject of singularities-and-manipulability. The two kinds are told apart by asking which matrix loses rank: JJ (the robot) or TT (the angles).

Common Misconceptions & Pitfalls

  • "Angular velocity is the derivative of the Euler angles." It is T(ϕ)T(\boldsymbol\phi) times that derivative. In Example 4 the two differ at an ordinary posture.
  • "The geometric and analytic Jacobians differ everywhere." Their linear rows are always equal, and for a planar arm the angular row is equal too.
  • "A blow-up in JAJ_A means the robot is singular." In Example 5 the wrist had condition number 1.00171.0017 while JAJ_A had entries of 573.
  • "Prismatic columns look like revolute ones." They have the axis in the linear rows and zeros in the angular rows, and no cross product.
  • "Any finite-difference step works." The error was 1.7×10−51.7\times10^{-5} at h=10−2h=10^{-2} and of order 10−610^{-6} at h=10−10h=10^{-10}, against 7×10−117\times10^{-11} near 10−610^{-6}.
  • "The geometric Jacobian is the same in every book." Modern Robotics means a twist Jacobian, whose linear part is not p˙\dot{\mathbf p}. Check the velocity before comparing numbers.

Summary

The Jacobian maps joint rates to end-effector velocity, and its column ii is the motion produced by joint ii alone. From the link frames, a revolute joint contributes zi−1×(p−oi−1)\mathbf z_{i-1}\times(\mathbf p-\mathbf o_{i-1}) to the linear rows and zi−1\mathbf z_{i-1} to the angular rows, a prismatic joint contributes zi−1\mathbf z_{i-1} and zeros. For the articulated arm and the SCARA these columns matched central differences to 7×10−117\times10^{-11} at the best step, h=10−6h=10^{-6}. The analytic Jacobian differentiates a chosen set of orientation angles and equals diag⁡(I,T−1)J\operatorname{diag}(I,T^{-1})J: same linear rows, angular rows that differ unless T=IT=I as in a planar arm, and a blow-up wherever TT is singular. A ZYX wrist near pitch 90∘90^\circ showed angle rates of 57 rad/s while the hardware spun at 0.170.17 rad/s and was well conditioned.

Documentation Links