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.

By 11 min read

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.

Velocity experiment

Which tool velocities fit the joint-rate budget?

The links measure 2 m and 1 m. Every selected rate pair has Euclidean norm 1 rad/s. The shaded set contains the tool velocities produced by all joint-rate pairs with norm at most 1 rad/s.

90.000°
-90.000°
0.000°

α selects (cos α, sin α) in joint-rate coordinates. It is independent of the direction of motion in the world. θ₂ measures the elbow relative to the first link.

Arm position in world axes (m)

Two-link arm with tool at (1.000, 2.000) metersThe open circles mark the base and elbow; the filled circle marks the tool. Both axes use the same meter scale. This panel shows one fixed configuration.-3-30033xy
The arm sets the Jacobian. Changing only α keeps this configuration fixed.

Tool velocity in world axes (m/s)

Position manipulability filled ellipse; selected velocity (-2.000, 1.000) meters per secondBoth axes share the same velocity scale. The blue solid principal diameter follows u1; the blue dashed diameter follows u2. The amber arrow and open endpoint mark the selected tool velocity. Principal half-lengths are 2.288246 and 0.874032 meters per second. At rank one the set collapses to a segment, and a unit input can map inside that segment.-3-30033xy
This set contains instantaneous velocities at the displayed configuration. It does not trace a tool path or show reachable positions. Both plot axes keep the same scale as the pose changes.
  • Blue solid diameter: major axis u₁
  • Blue dashed diameter: minor axis u₂
  • Amber arrow and open circle: selected velocity
Tool position (m)
(1.000, 2.000)
Selected joint rates (rad/s)
(1.000, 0.000)
Selected tool velocity (m/s)
(-2.000, 1.000)
Selected speed (m/s)
2.236068
Major singular value σ₁ (m/rad)
2.288246
Minor singular value σ₂ (m/rad)
0.874032
Yoshikawa index (m²/rad²)
2.000000
Velocity ellipse area (m²/s²)
6.283185
Condition number κ₂(J)
2.618034
Position task rank
2
Major output axis u₁
(0.851, -0.526)
Minor output axis u₂
(0.526, 0.851)

Multiply each singular value by the 1 rad/s rate budget to get its velocity half-axis in m/s. Axis vectors have unit length; reversing either axis describes the same ellipse. At rank one, u₂ marks the perpendicular direction with zero extent.

Position Jacobian J, in m/rad
OutputShoulderElbow
ẋ-2.0000.000
ẏ1.0001.000

Selected velocity: (-2.000, 1.000) m/s. The position task has rank 2. Its condition number is 2.618.

Small nonzero singular values can round to zero in the readouts or become too thin to see. The rank calculation uses the exact displayed pose condition: only θ₂ = 0° or ±180° is singular. The best-condition preset retains its computed angle beyond the displayed decimals.

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