Introduction

A robot arm sweeping around a factory floor is a complicated object: every link and joint traces its own arc, and figuring out whether it will crash into a wall means tracking the shape of every part at every moment. That is exhausting to reason about directly.

Configuration space (C-space), introduced by Lozano-Pérez in 1983, cuts through the mess with a single idea: instead of tracking the whole body of the robot, represent its entire pose as a single point in an abstract space. Each axis of that space is one degree of freedom — an angle, a translation, a joint value. The robot's shape disappears; what remains is a point moving through a map.

The price of that simplicity is paid by the obstacles. A wall that the robot must not touch corresponds to a forbidden zone in configuration space — a region that expands to absorb all poses where any part of the robot would collide. Navigate the point around those forbidden zones and you have planned a collision-free path for the full robot body.

This transformation is the foundation of nearly every motion planner ever built, from factory arms to self-driving cars to surgical robots.

Try It

The demo below shows a 2-link planar arm pinned at a fixed base. The arm has two joints, each rotating freely, so its configuration space is a 2-D square — one axis per joint angle (θ1\theta_1 and θ2\theta_2, both in [0°,360°)[0°, 360°)).

<!-- {{c_demo_desc}} -->
<div class="panels">
  <div class="panel">
    <div class="panel-title">{{label_workspace}}</div>
    <canvas id="ws" width="220" height="220"></canvas>
  </div>
  <div class="panel">
    <div class="panel-title">{{label_cspace}}</div>
    <canvas id="cs" width="220" height="220"></canvas>
  </div>
</div>
<div class="sliders">
  <label>&#952;&#8321; <input id="t1" type="range" min="0" max="359" value="45"> <span id="t1val">45°</span></label>
  <label>&#952;&#8322; <input id="t2" type="range" min="0" max="359" value="90"> <span id="t2val">90°</span></label>
</div>
<div class="hint-box">{{hint_text}}</div>
/* {{c_layout_comment}} */
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: system-ui, sans-serif; color: #222; background: #fff; padding: 8px; }
.panels { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.panel { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.panel-title { font-size: .78rem; font-weight: 600; color: #555; letter-spacing: .02em; }
canvas { border: 1px solid #cdd9e3; border-radius: 6px; background: #f4f7fa; display: block; }
.sliders { display: flex; flex-direction: column; gap: 6px; margin: 10px auto; max-width: 460px; }
label { display: flex; align-items: center; gap: 8px; font-size: .88rem; font-weight: 500; }
input[type=range] { flex: 1; accent-color: #1d3557; }
span { min-width: 3em; text-align: right; font-variant-numeric: tabular-nums; }
.hint-box { font-size: .8rem; color: #555; line-height: 1.45; margin-top: 6px; max-width: 460px; }
// Code not found

The left panel shows the arm in physical space with one rectangular obstacle (the gray box). The right panel shows configuration space: the white region is reachable, and the red forbidden zone marks every (θ1,θ2)(\theta_1, \theta_2) pair where the arm would collide with the obstacle. Drag either joint slider and watch both panels update simultaneously — the arm moves on the left, and the point moves on the right.

Notice that a straight path between two points in configuration space may cut through the red zone even when both endpoints look fine. That is why path planning cannot simply interpolate joint angles: it must find a route that stays entirely in the white region.

The Real Complexity

C-space simplifies the representation of a robot's pose, but planning a path through it is a different story.

  • One collision check is easy. Given angles (θ1,θ2)(\theta_1, \theta_2), determining whether the arm intersects an obstacle takes time proportional to the complexity of the shapes.
  • The space itself is continuous. With dd degrees of freedom and nn obstacles, the forbidden zones carve a dd-dimensional region whose topology can be arbitrarily complicated — an exponential number of connected components in the worst case.
  • The general problem is PSPACE-hard. John Reif proved in 1979 that the piano-movers problem — "does a free rigid body have a collision-free path between two configurations?" — is PSPACE-hard when the number of degrees of freedom is part of the input. This places it above NP in the complexity hierarchy; even a polynomial-size witness is not enough to verify a solution efficiently.
  • Practical planners trade exactness for speed. Algorithms like RRT (Rapidly-exploring Random Trees) and PRM (Probabilistic Roadmap Method) sample random configurations and connect them, finding paths probabilistically rather than exactly. They are complete only in the limit of infinite samples — a practical concession to intractability.

The lesson is sharp: C-space turns the planning question into a pure geometry problem, but geometry in high dimensions is hard. A robot with 6 joints lives in a 6-D C-space; a humanoid with 30 joints inhabits a space so vast that exact planning is never used in practice.

Where It Matters

The C-space abstraction shows up wherever a system with multiple degrees of freedom must avoid forbidden states:

  • Industrial robot arms: welding, assembly and painting robots all use C-space planners to thread arms through cluttered fixtures without collision.
  • Autonomous vehicles: a car has a 3-D configuration (x, y, heading); planning around pedestrians and parked cars is C-space navigation with non-holonomic constraints.
  • Surgical robotics: minimally-invasive robots must navigate tight anatomical corridors; the configuration space encodes every pose that avoids cutting the wrong tissue.
  • Protein folding: the dihedral angles along a peptide backbone define a high-dimensional C-space; finding the low-energy fold is path planning in that space toward an energy minimum.
  • Video-game AI and virtual production: character animation uses motion-planning ideas from C-space to navigate crowds and produce natural-looking movement.

Understand C-space and you have the shared language of motion planning and a glimpse of why protein folding is so computationally expensive.

Conclusion

Configuration space is one of the most elegant ideas in robotics: instead of reasoning about a complicated body sweeping through physical space, you shrink the robot to a point and let the obstacles grow to match. Path planning becomes point navigation.

But elegance does not mean easy. The forbidden zones in a high-dimensional C-space can form structures of extraordinary complexity, and planning exactly through them is PSPACE-hard. The practical world answers with probabilistic samplers — RRT, PRM and their descendants — that trade guarantees for speed, accepting that finding the optimal path may be forever out of reach.

The next time you watch a robot arm reach gracefully around an obstacle, remember: behind that movement is a point threading its way through a maze in a space you cannot see — a space where every dimension is an angle and every wall is a collision waiting to happen.

Share this article

Pick a channel — or use your device's native share sheet.

Comments

Loading comments...

https://www.kipuhub.com/en/article/configuration-space/Content licensed under CC BY-NC 4.0.