Configuration space and C-obstacles
The mental shift that makes motion planning tractable: stop thinking about the robot as a shape moving through the world. Think of it as a point moving through a higher-dimensional space.
Motion planning became a tractable field the day someone wrote down configuration space. The idea sounds abstract but the payoff is concrete: every planning algorithm you'll ever use — A*, PRM, RRT — operates in C-space, not the robot's physical workspace.
The bad idea
A robot arm is a complicated 3D object. Planning its motion seems to require reasoning about every link, every joint, every surface, and how they interact with obstacles. Collision checking is expensive, the state is high-dimensional, and the geometry is a mess.
The insight: don't plan in the world. Plan in the space of robot configurations.
What is a configuration?
A configuration q is the complete list of joint values that specifies where every part of the robot is.
- For a 2-link arm:
q = (θ1, θ2)— a point in 2D - For a 6-DOF arm:
q = (θ1, ..., θ6)— a point in 6D - For a mobile robot with orientation:
q = (x, y, θ)— a point in a 3D space (with a quirky topology because θ wraps around) - For a humanoid:
qis 30+ dimensions
The configuration space C is the set of all possible configurations. Every valid motion of the robot is a curve in C.
C-obstacles: the world, seen from C-space
Here's the magic. In the real world, an obstacle is a 3D shape. But in configuration space, it becomes a different shape: the C-obstacle C_obs, which is the set of configurations where the robot would collide with the obstacle.
Inside C-space, the robot is just a point. A configuration q is either collision-free (q ∈ C_free) or it's in collision (q ∈ C_obs). Motion planning becomes: find a continuous curve in C_free from the start configuration to the goal.
A point moving through an obstacle field. That's it. That's the planning problem.
A concrete picture: the 2-link arm
Imagine a 2-link arm on a table with one cylindrical obstacle. In the world, the arm is a pair of capsules; the obstacle is a cylinder. Complicated geometry.
In configuration space (θ1, θ2), plot every configuration on a grid. For each grid cell, check: does the arm collide with the cylinder at this configuration? Mark red if yes. You get a picture where C_obs is some wacky blob and C_free is everything else.
Now plan by finding a path on this 2D grid from the start θ to the goal θ. 2D pathfinding is trivial (A* works). The hard part — the arm's geometry, the obstacle shape, collision detection — all got baked into C_obs.
The three properties that make C-space powerful
- Collision is a pointwise property. "Is
qin collision?" is a yes/no question. No trajectory reasoning needed. - Linear interpolation is motion. Moving the robot from
q1toq2is a straight line in C-space. (Modulo dynamics and joint limits — we'll come back.) - Dimensionality matches DOF. A 6-DOF arm has a 6D C-space, regardless of how big or complicated its links are.
C-space has topology
For a 2-link arm with revolute joints, C-space is a torus: θ1 and θ2 each wrap around every 2π. The grid above is not a flat square — the left edge connects to the right edge, and the top to the bottom.
For wheeled robots with heading, C is R² × S¹ — a cylinder. For SE(3), C is R³ × SO(3) — euclidean position cross the rotation group. Planners like RRT have to sample this topology correctly or they produce invalid paths.
Why we can't build C-obs explicitly
The 2-link example plotted C_obs as a picture. For a 6-DOF arm, C_obs is a subset of 6D space, and there's no practical way to enumerate it. Most planners never materialize C_obs explicitly — they only answer the pointwise question "is q collision-free?" by checking physical geometry on demand.
This is the key engineering move. Motion planners are mostly implicit algorithms: they sample configurations, collision-check them on the fly, and connect the ones that work.
Configuration space vs task space
- Configuration space (C-space): joint values. Native to planning and control.
- Task space: positions and orientations you care about — usually the end-effector pose. 6D for a rigid body.
Some problems are naturally posed in task space ("move the gripper to this point"), others in C-space ("avoid this joint configuration because it's close to a singularity"). The two are connected by the forward/inverse kinematics covered in the Kinematics track.
What to take away
- A robot's configuration is a point in a high-dimensional space.
- Obstacles in the world become C-obstacles in that space.
- Motion planning is "point moves through free space," with geometry hidden inside a collision checker.
- Every serious planner — A*, PRM, RRT, trajectory optimization — is a way to search this space without enumerating it.
Next
With this mental model in hand, the next lessons build up: graph search (A*, Dijkstra), sampling-based planning (PRM, RRT), and trajectory optimization. Each one is a different answer to "how do I find a curve in C_free?"
Comments
Sign in to post a comment.