explainer
Manipulability: read a robot’s velocity ellipse
Map a joint-rate budget into a robot’s possible tool velocities. Read the ellipse’s singular values, compare area with conditioning, and understand singular poses, units, and the limits of force duality.
What you will learn
- Map a joint-rate ball into a filled tool-velocity ellipse.
- Interpret principal axes, singular values, area, and condition number.
- Explain the effects of singular poses and coordinate scaling.
- State the assumptions behind a force ellipsoid.
Before you start
A robot can move its tool faster in some directions than others. Its pose changes that balance, even when the motors keep the same joint-rate budget. A manipulability ellipse makes those directional limits visible.
This lesson uses a planar arm with links of 2 m and 1 m. You will calculate its velocity ellipse, flatten it into a line segment, and compare two different meanings of a useful pose.
Give the joint rates a budget
Let θ₁ measure the shoulder angle from the world x-axis. Let θ₂ measure the elbow angle relative to the first link. Positive angles turn counterclockwise, and derivatives use radians.
The tool position p has two world coordinates. At one fixed configuration, its position Jacobian maps joint rates into physical tool velocity:
ṗ = J(θ)θ̇
‖θ̇‖₂ ≤ Ω, with Ω = 1 rad/s
The budget allows (1, 0) rad/s and (0, 1) rad/s. It also allows (0.6, 0.8) rad/s because 0.6² + 0.8² = 1. The pair (1, 1) exceeds this shared budget.
Normalize the rates as z = θ̇/Ω. Every allowed z lies inside a unit disk. Applying ΩJ to that filled disk gives every tool velocity allowed by this model at this pose.
Independent limits on each motor would give a square in joint-rate coordinates. Its image would generally be a parallelogram. The ellipse therefore includes a specific choice of rate constraint.
Read the principal axes
The singular value decomposition writes J = UΣVᵀ. The columns of V identify orthogonal directions in joint-rate coordinates. The columns of U identify orthogonal directions in tool-velocity coordinates.
Jvᵢ = σᵢuᵢ
JJᵀuᵢ = σᵢ²uᵢ
For σ₁ ≥ σ₂ > 0, the output set is a filled ellipse. Its principal half-lengths are Ωσ₁ and Ωσ₂. The longer axis shows the largest speed available under the rate budget; the shorter axis shows the smallest boundary speed.
Each uᵢ is a unit vector. The half-axis endpoint is Ωσᵢuᵢ, which includes both direction and length. Reversing an axis vector describes the same ellipse.
These axes summarize a local velocity map. The ellipse does not describe positions reachable after a second of motion, because J changes as the joints move. Modern Robotics explains this velocity construction.
Calculate a right-angle example
Set θ₁ = 90° and θ₂ = −90°. The elbow sits at (0, 2) m, and the tool sits at (1, 2) m. Differentiating its position gives:
J =
[ −2, 0 ]
[ 1, 1 ]
JJᵀ =
[ 4, −2 ]
[ −2, 2 ]
The eigenvalues of JJᵀ solve λ² − 6λ + 4 = 0. They are 3 + √5 and 3 − √5. Taking their square roots gives σ₁ ≈ 2.288246 m/rad and σ₂ ≈ 0.874032 m/rad.
One choice of principal directions is u₁ ≈ (0.850651, −0.525731) and u₂ ≈ (0.525731, 0.850651). With Ω = 1 rad/s, the velocity half-lengths have those same numerical singular values in m/s.
Select θ̇ = (1, 0) rad/s. Matrix multiplication gives ṗ = (−2, 1) m/s, with speed √5 ≈ 2.236068 m/s. This lies on the ellipse boundary, between the two extreme speeds.
Explore the velocity ellipse
Change α to sweep (cos α, sin α) around the unit joint-rate circle. The amber velocity endpoint moves around the ellipse when J has rank 2. The arm stays still because this experiment compares instantaneous rates at one configuration.
Turn only the shoulder and watch the ellipse rotate. Its singular values stay fixed because the elbow angle controls their magnitudes for this arm. Then compare the straight, near-straight, and best-condition presets.
Watch the ellipse collapse
For these link lengths, det J = 2 sin θ₂ in m²/rad². A straight or folded arm has θ₂ = 0° or ±180°, so J has rank 1. Its smaller singular value becomes zero.
At the straight pose with θ₁ = 0°, the Jacobian is:
J =
[ 0, 0 ]
[ 3, 1 ]
ṗ = (0, 3θ̇₁ + θ̇₂)
Every velocity lies on the world y-axis. The unit rate disk maps to a segment from (0, −√10) to (0, √10) m/s. A unit input can now reach the segment’s interior: θ̇ = (1, −3)/√10 rad/s produces zero tool velocity.
A small nonzero elbow angle retains rank 2. At 1°, σ₂ is about 0.011038 m/rad, so the ellipse looks very thin. Rounded readouts can hide small values; rank and display precision answer different questions.
This singularity belongs to the position task. The arm’s full planar pose Jacobian still has two independent columns. The kinematic singularities lesson examines that task choice in more detail.
Compare area and conditioning
The Yoshikawa manipulability index for this position map is w = √det(JJᵀ) = σ₁σ₂. In two dimensions it scales the input disk’s area. The actual velocity ellipse area includes π and the squared rate budget:
w = σ₁σ₂
Area = πΩ²w
κ₂(J) = σ₁/σ₂, when σ₂ > 0
Our right-angle pose has w = 2 m²/rad² and area 2π m²/s². Its condition number is about 2.618. The condition number measures elongation; κ₂ = 1 would describe a circle, called an isotropic configuration.
This arm cannot achieve that circle under the chosen metric. To check, set c = cos θ₂. Then tr(JJᵀ) = 6 + 4c and w = 2√(1 − c²).
Since tr(JJᵀ)/w = κ₂ + 1/κ₂, minimizing that ratio also minimizes κ₂. Differentiation gives c = −2/3, or |θ₂| ≈ 131.810315°. The minimum condition number is (1 + √5)/2 ≈ 1.618034.
At that pose, w ≈ 1.490712, below the maximum w = 2 at ±90°. Area and conditioning therefore favor different elbow angles. Neither measure alone specifies a task direction, joint-limit margin, or collision clearance.
Choose units and rate weights
The entries of this position Jacobian have units m/rad. Its singular values share those units, and w has units m²/rad². Expressing the same lengths in centimeters multiplies every singular value by 100 and w by 10,000; the condition number stays unchanged.
Joint-rate weights also change the comparison. Suppose Ω₁ and Ω₂ define an ellipsoidal rate budget. Write θ̇ = Dz, where D = diag(Ω₁, Ω₂), and constrain ‖z‖₂ ≤ 1. The relevant velocity map becomes JD, so its singular values describe the weighted budget.
A full pose vector mixes linear and angular velocity. Adding their raw squares chooses a scale between translation and rotation without explaining it. Define a task metric, such as a characteristic length that converts angular rate to a comparable linear scale, or analyze the two tasks separately.
For a robot planner, this choice determines which rate demands count as expensive. For a learned differentiable kinematics model, the same Jacobian geometry describes local output sensitivity to joint inputs. A wide velocity ellipse alone provides no guarantee about prediction accuracy or tracking performance.
State the force assumptions
The robot statics relation maps a tool force f to joint torque through τ = Jᵀf. Here the task includes a planar force at the tool, with no tool couple. Use the same pose and world axes as the position Jacobian.
Assume ideal static transmission and a Euclidean torque budget ‖τ‖₂ ≤ τ₀. Ignore gravity, friction, inertia, and structural limits. Substitution gives:
‖Jᵀf‖₂² = fᵀJJᵀf ≤ τ₀²
At a nonsingular pose, this force set is an ellipse with the same principal directions and half-lengths τ₀/σᵢ, using the usual radian convention. A long velocity axis corresponds to a short force axis under these specific budgets. Modern Robotics derives the underlying torque relation.
At a singular pose, the ideal force set becomes unbounded along a direction in the null space of Jᵀ. Real hardware has finite strength. The calculation only says that this torque constraint fails to bound that force component.
For a requested velocity along a weak axis, an inverse solve needs large joint rates. Continue with numerical inverse kinematics to see how local Jacobian information guides a sequence of position updates.
Verify the numbers in Python
This standard-library example computes the right-angle ellipse from J. The analytic determinant gives the product of its two singular values. Dividing that product by σ₁ avoids subtracting nearly equal numbers to recover σ₂ near a singular pose.
from math import atan2, cos, hypot, pi, sin, sqrt
J = ((-2.0, 0.0), (1.0, 1.0))
xx = sum(v*v for v in J[0])
xy = sum(a*b for a, b in zip(J[0], J[1]))
yy = sum(v*v for v in J[1])
det = J[0][0]*J[1][1] - J[0][1]*J[1][0]
s1 = sqrt((xx + yy + hypot(xx - yy, 2*xy))/2)
s2 = abs(det)/s1
angle = atan2(2*xy, xx-yy)/2
u1 = (cos(angle), sin(angle))
u2 = (-u1[1], u1[0])
qdot = (1.0, 0.0)
velocity = tuple(sum(a*b for a, b in zip(row, qdot)) for row in J)
ellipse = sum(
(sum(v*u for v, u in zip(velocity, axis))/s)**2
for axis, s in ((u1, s1), (u2, s2))
)
print(f"singular values: ({s1:.6f}, {s2:.6f})")
print(f"index: {abs(det):.6f}")
print(f"area: {pi*abs(det):.6f}")
print(f"condition: {s1/s2:.6f}")
print(f"velocity: ({velocity[0]:.6f}, {velocity[1]:.6f})")
print(f"ellipse equation: {ellipse:.6f}")
assert abs(ellipse-1.0) < 1e-12
Expected output:
singular values: (2.288246, 0.874032)
index: 2.000000
area: 6.283185
condition: 2.618034
velocity: (-2.000000, 1.000000)
ellipse equation: 1.000000
The final line checks (u₁ᵀṗ/σ₁)² + (u₂ᵀṗ/σ₂)² = 1 numerically with Ω = 1. This snippet assumes both singular values are positive for that check. For general matrices, use a tested SVD implementation; determinant arithmetic can itself lose accuracy.
Practice with two configurations
Exercise 1. At the right-angle pose, reduce Ω from 1 to 0.5 rad/s. What happens to the largest speed, velocity ellipse area, Yoshikawa index of J, and condition number?
Show solution 1
The largest speed halves to about 1.144123 m/s. Every velocity half-axis halves, so the area drops to one quarter: π/2 ≈ 1.570796 m²/s².
J stays unchanged. Its index remains 2 m²/rad², and its condition number remains about 2.618034. The singular values of the normalized-input map ΩJ do halve, which is why stating the rate budget matters.
Exercise 2. Fold the arm to θ₁ = 0°, θ₂ = 180°. Find J, the attainable velocity segment for Ω = 1 rad/s, and a nonzero unit joint-rate pair that gives zero tool velocity. Does zero ellipse area mean the tool cannot move at all?
Show solution 2
The tool lies at (1, 0) m, and J has rows (0, 0) and (1, −1). Its singular values are √2 and 0, so the velocity segment runs from (0, −√2) to (0, √2) m/s.
The rate pair (1, 1)/√2 rad/s has unit norm and maps to zero velocity. The pair (1, −1)/√2 reaches the positive endpoint. Zero area records the missing x-velocity direction; motion along y remains available at this instant.
Sources and further reading
- Kevin Lynch and Frank Park, Modern Robotics, section 5.4: Manipulability. Velocity ellipsoids, scalar measures, and force duality.
- Tsuneo Yoshikawa, Manipulability of Robotic Mechanisms (1985). The original paper proposing the manipulability measure and studying robot configurations.
- MIT OpenCourseWare, Singular Value Decomposition. Input and output singular vectors and the relation to symmetric matrix eigenvalues.
- Kevin Lynch and Frank Park, Modern Robotics, section 5.2: Statics of Open Chains. Power and the Jacobian transpose relation between tool loads and joint torques.