Robotics

Configuration Space (C-Space)

The abstract space where the whole robot becomes a single point

Configuration space, or C-space, is the abstract space of every possible configuration a robot can take, where one point encodes a complete pose of the entire machine. The number of coordinates needed equals the robot's degrees of freedom: a planar mobile base lives in the 3-dimensional space SE(2) with coordinates (x, y, θ), while a six-axis industrial arm lives in a 6-dimensional space, one angle per joint. Physical obstacles map to C-obstacles — every configuration that would cause a collision — and the leftover collision-free region is the free space C_free. The payoff is enormous: instead of steering an extended, jointed body around clutter, motion planning reduces to finding a continuous path for one point through C_free. This idea, introduced by Tomás Lozano-Pérez in 1983, is the foundation of essentially all modern robot motion planning.

  • One pointEncodes the full-body pose
  • Dimension= degrees of freedom (DOF)
  • Planar bodySE(2), 3-D: (x, y, θ)
  • Rigid 3D bodySE(3), 6-D
  • ObstaclesMap to curved C-obstacles
  • IntroducedLozano-Pérez, 1983

Interactive visualization

Press play, or step through manually. The visualization is yours to drive — try it before reading on.

Open visualization fullscreen ↗

Watch the 60-second explainer

A condensed visual walkthrough — narrated, captioned, under a minute.

Why configuration space matters

Motion planning is deceptively hard. A robot arm is an extended object with elbows and wrists that sweep through space; asking "can this whole shape get from here to there without hitting anything?" seems to require reasoning about the geometry of every link at once. Configuration space collapses that difficulty. By choosing coordinates that fully describe the robot's state — its joint angles, or the pose of its base — every distinct configuration becomes a single point, and the machine's entire physical extent is baked into how obstacles look in that new space.

  • Universal reduction. Whether the robot has 2 joints or 30, the planning problem always becomes "steer one point through a free region."
  • Separation of concerns. Collision geometry is handled once, when the workspace obstacle is mapped to its C-obstacle; the planner never sees links again.
  • Foundation of sampling planners. PRM, RRT, RRT*, and BIT* all operate directly on C-space points.
  • Cross-domain. The same formalism plans self-driving cars (SE(2) with nonholonomic constraints), 6-DOF pick-and-place, and 30-DOF humanoid whole-body motion.
  • Manipulability and singularities. Because joint space and C-space coincide for arms, the same coordinates expose Jacobian singularities and joint-limit boundaries.

How it works, step by step

The construction is the same for every robot; only the coordinates change.

  1. Choose coordinates. Pick the minimal parameters q = (q₁, …, q_n) that fix the location of every point on the robot. For a serial arm these are the joint angles; for a free-flying rigid body they are position plus orientation.
  2. Define the C-space. The set of all valid q is the configuration space C. Its dimension n is the number of degrees of freedom.
  3. Map the robot. A function A(q) returns the set of workspace points the robot body occupies at configuration q.
  4. Build C-obstacles. For each workspace obstacle O_i, the C-obstacle is CB_i = { q ∈ C : A(q) ∩ O_i ≠ ∅ } — every configuration that collides.
  5. Take the free space. C_free = C \ (⋃ CB_i ∪ self-collision ∪ joint-limit violations). Only these configurations are physically valid.
  6. Plan a path. Find a continuous curve τ: [0, 1] → C_free with τ(0) = q_start and τ(1) = q_goal. Any such curve is a guaranteed collision-free motion.

The elegance is that step 6 knows nothing about links, joints, or obstacle shapes. It only steers a point through an open set.

The Minkowski-sum picture and why 2D is already hard

For the simplest non-trivial case — a convex robot that can only translate (no rotation) among convex obstacles — the C-obstacle has a clean closed form. If the robot body is a set A and the obstacle is a set O, and we track the robot by a reference point, then the C-obstacle is the Minkowski sum of the obstacle with the reflected robot:

CB = O ⊕ (−A) = { o − a : o ∈ O, a ∈ A }

Intuitively, you "grow" every obstacle by the shape of the robot (reflected through its reference point), then shrink the robot to a single point. The point-robot can now slide freely anywhere the grown obstacles do not cover. This is exactly the trick behind "inflating" obstacles by a robot's radius in a costmap.

Now add rotation. A rigid robot in the plane has three degrees of freedom, so its C-space is not the flat 2D world — it is the 3-dimensional space SE(2) with coordinates (x, y, θ). For each fixed orientation θ, the C-obstacle is a Minkowski sum, but that footprint changes shape as θ varies: the robot's silhouette against the obstacle grows, shrinks, splits, and rejoins as it turns. Stacking all those slices along the θ axis produces a twisted three-dimensional solid. This is the headline result — even a robot that lives in a flat 2D world has a genuinely three-dimensional, curved configuration space, and this is before any joints are involved.

Dimension, topology, and the wrap-around problem

The dimension of C-space equals the degrees of freedom, but its shape is rarely a plain Euclidean box. Revolute joints and orientations are angles, and an angle of 0 is the same as 2π — so those coordinates wrap around. C-space is therefore a product of circles, tori, and rotation groups, not ℝⁿ.

Configuration space by robot type
RobotDOFC-spaceTopology
Point in a plane2ℝ²Flat plane
Single revolute joint1Circle
Planar 2R arm2T² = S¹ × S¹Torus (donut)
Planar mobile base3SE(2) = ℝ² × S¹Plane × circle
Rigid body in 3D6SE(3) = ℝ³ × SO(3)Space × rotations
6R industrial arm6T⁶ (six-torus)6 wrapped angles
Humanoid (whole body)30+SE(3) × TⁿHigh-dimensional

The wrap-around matters for planning: on a torus the shortest path between two joint angles may go the "long way around" 0/2π, and a naive Euclidean distance in radians gives the wrong nearest neighbor. Sampling planners must use a metric that respects this — for angles, the geodesic distance min(|Δθ|, 2π − |Δθ|); for 3D orientation, distance on SO(3) via quaternions.

The curse of dimensionality

Why not just discretize C-space into a grid and run a graph search like A*? Because the number of grid cells explodes. If each of n dimensions is split into k intervals, the grid has kⁿ cells.

Grid cells vs. dimension (k = 100 divisions per axis)
DOF (n)Cells = 100ⁿFeasible to enumerate?
210⁴Trivial
310⁶Easy
610¹²Impractical
1210²⁴Impossible
3010⁶⁰Beyond atoms in Earth

A 6-DOF arm at a modest 100 divisions per joint already needs 10¹² cells — and computing which cells are C-obstacles requires a collision check at each one. This is why explicit C-space construction is only ever done for teaching examples and 2-to-3-DOF planners. Everything at 4 DOF and above uses sampling: draw random configurations, keep the ones a collision checker accepts, and connect them. PRM builds a reusable roadmap; RRT grows a tree biased toward unexplored Voronoi regions. Both treat C-obstacles implicitly — they never build them, they just ask "is this point free?"

Worked example: 2R planar arm

Consider a two-link arm with revolute joints at angles θ₁ and θ₂, link lengths L₁ = 0.30 m and L₂ = 0.25 m, both joints free to spin ±180°. Because each joint is an independent circle, the configuration space is the torus T² = S¹ × S¹ — a square from −π to π on each axis with opposite edges glued.

The forward kinematics place the end-effector at

x = L₁cos θ₁ + L₂cos(θ₁ + θ₂),   y = L₁sin θ₁ + L₂sin(θ₁ + θ₂)

Here θ₁, θ₂ are joint angles (rad), L₁, L₂ are link lengths (m), and (x, y) is the tool position in the workspace (m). Now place a small obstacle post in the workspace. The set of (θ₁, θ₂) pairs where either link sweeps across the post forms a curved band — the C-obstacle — winding across the torus. A pose that looks safe for the forearm may collide with the upper arm at the same tool point, because a single (x, y) is reachable by two configurations ("elbow-up" and "elbow-down"). Planning a wrist motion that dodges the post becomes: draw a curve on the donut from the start point to the goal point that never crosses the obstacle band. The physical arm's swing is invisible; only the point on the torus matters.

Common misconceptions and failure modes

  • "C-space is just the workspace." No — the workspace is where the robot's body is (meters); C-space is the space of its parameters. They differ in dimension and units.
  • "A 2D robot has a 2D C-space." Only a translating point does. A rigid body that can also rotate has 3 DOF and a 3D C-space, SE(2).
  • "C-obstacles have the same shape as the obstacle." They almost never do. C-obstacles are inflated by the robot's geometry and, with rotation, become curved 3D solids.
  • "One workspace point = one configuration." Inverse kinematics is generally many-to-one; a 6R arm can have up to 8 discrete solutions for one tool pose.
  • "Angles are like real numbers." Ignoring wrap-around gives wrong distances and disconnected roadmaps; use geodesic metrics on S¹ and SO(3).
  • "Grid + A* works everywhere." Above ~3 DOF the grid is astronomically large; sampling planners are mandatory.
  • "C_free is one connected blob." It can be split into disconnected components by obstacles; a path exists only if start and goal lie in the same component.

Frequently asked questions

What is configuration space?

Configuration space, or C-space, is the set of all possible configurations of a robot. A configuration is the minimal set of parameters that fully specifies the position of every point on the robot — for example the joint angles of an arm, or the (x, y, theta) pose of a mobile base. Each configuration collapses to a single point in C-space, so the whole physical robot becomes one dot. The dimension of C-space equals the robot's number of degrees of freedom.

What is a C-obstacle?

A C-obstacle is the image of a physical obstacle in configuration space: the set of all configurations at which the robot collides with (or penetrates) that obstacle. The free space C_free is everything left over — the configurations where the robot touches nothing. Even a simple polygonal obstacle in the workspace can produce a strangely shaped, curved C-obstacle, because the mapping depends on the robot's geometry and orientation. Planning happens entirely in C_free.

Why does path planning become moving a point?

Because a full robot pose is a single point in C-space, a continuous motion of the whole robot is just a continuous curve traced by that point. A valid, collision-free motion is therefore any path from the start point to the goal point that stays inside C_free and never enters a C-obstacle. This reduces the hard problem of moving an extended, articulated body around obstacles to the geometric problem of steering one point through a free region — regardless of how many links the robot has.

What is the dimension of configuration space?

The dimension of C-space equals the robot's degrees of freedom (DOF). A rigid body in the plane has 3 DOF, so its C-space is SE(2), a three-dimensional space (x, y, theta). A rigid body in 3D has 6 DOF, giving SE(3). A serial arm with n revolute joints has an n-dimensional C-space, one dimension per joint. A 6-axis industrial arm has a 6-dimensional C-space; a humanoid can exceed 30. High dimension is what makes motion planning computationally hard.

Why is a 2D robot's C-space complicated?

Even a rigid robot that only slides and turns in a flat 2D world has a 3-dimensional C-space, SE(2), because orientation theta is a third coordinate. Worse, the C-obstacle for a single polygonal obstacle is generally curved and changes shape at every orientation — as the robot rotates, its 'footprint' against the obstacle grows, shrinks, or splits. For a translating convex robot the C-obstacle is the Minkowski sum of the obstacle and the reflected robot; adding rotation twists that slice through the theta axis into a complex 3D solid.

How is configuration space searched in practice?

Explicitly building C-space is intractable above a few dimensions, so modern planners sample it instead. Probabilistic Roadmaps (PRM) scatter random collision-free configurations and connect nearby ones into a graph. Rapidly-exploring Random Trees (RRT and RRT*) grow a tree from the start, biasing toward unexplored regions and the goal. Both call a collision checker as a black box rather than computing C-obstacles, and are probabilistically complete: given enough samples, they find a path if one exists.

What is the difference between workspace and configuration space?

The workspace is the physical 2D or 3D space the robot moves through, measured in meters. Configuration space is the abstract parameter space of the robot's own joint values or pose, measured in radians and meters. A single point in the workspace can be reached by many configurations (multiple inverse-kinematics solutions), and a single point in C-space corresponds to exactly one full-body pose. Planning is done in C-space; execution and collision live in the workspace.