Drag the piano; it stops at walls and furniture. Rotate with the
θ slider, the mouse wheel, or Q/E.
Arrow keys nudge it. Park it in the green goal spot.
Configuration space — slice at θ = 0°
free configurations
C-obstacle
goal
current configuration — drag it!
The piano mover's problem is a classic robotics challenge:
find a collision-free path that moves a bulky object through a cluttered space.
The piano's pose is fully described by three numbers — its position
(x, y) and rotation θ — called its
configuration. The set of all configurations is the
configuration space (C-space), and in C-space the whole piano
shrinks to a single point! Configurations where the piano would overlap an
obstacle (or poke out of the room) form the dark
C-obstacles. The full C-space here is 3-D
(x, y, θ); the right panel shows the 2-D slice at the current
θ, with the real obstacles outlined for comparison.
Things to try:
In the Cluttered room, get the piano into the green
goal spot in the top-left corner. It can't be done flat, and it can't
be done upright either: the only way in is the slot between the bed
and the dresser, and the ceiling above it is too low to stand the
piano up. You have to tilt it, push it up through the slot at a
slant, lean it over into the top of the room, then flatten it out.
In C-space that's a route that keeps changing θ slice —
the goal is only green at the right θ. With Trace path on,
any motion of the piano draws a curve through C-space: planning a
motion means finding a curve that stays out of the C-obstacles.
In the Doorway room, set θ = 90°
and watch the doorway slam shut in C-space — the free space
splits in two. Explore mode (checkbox) unlocks the
free controls: click to teleport the piano, drag it through
obstacles, or shrink its length and width and see the C-obstacles
deflate until they match the real obstacles: a point robot's C-space
is its workspace.