Planar Robot Simulator with
Obstacle Avoidance (Configuration Space)

(Requires Java enabled browser: Please allow 60-200 seconds to load)

Prof. Ken Goldberg, UC Berkeley.
The original version of this program was written by Jeff Wiegley at USC.
The Java version based on Wiegley's C code, is by Eric Lee at UC Berkeley.

This applet simulates the motion of a 2 link robot arm that you define.
There are two window areas.

In the left area of the window, click, drag, click to create the first robot link, then again to create the second robot link. This defines your robot arm. You can now click anywhere in the left area with the RIGHT mouse button and the arm will move to place the robot at that point.

In the right area of the window is the Configuration Space, showing the arm configuration based on the angle of the first joint (X axis) and the angle of the second joint (Y axis). Any configuration of the robot arm in the left window corresponds to the a point in the Configuration Space. To test this, click anywhere in the right window with your LEFT mouse button. The robot will move accordingly.

Obstacles: Things get fun when you start defining obstacles in the robot's environment. To do this, use your LEFT mouse button in the Left window to click, drag edges of a polygonal obstacle (end the obstacle by clicking anywhere near the first point). Be sure the obstacle does not intersect the robot in its current configuration. The corresponding obstacle will be computed and displayed in the right window.

You can now move the robot in either window as before, and add additional obstacles by LEFT clicking in the Left window area.

Thanks! Please send comments or suggestions to

Eric Lee (

Go Back to Eric's Page