Rossum | Tools | MotionApplet | ||

click Here for more information.

Source code for this applet is available at MotionApplet03.zip

Michael Gauland created the Java applet shown above to illustrate different algorithms for computing the path of a small wheeled robot. As you adjust the inputs for wheel speed, transit time, and initial orientation, MotionApplet computes the robot's path using two different methods.

The first method models its *true path* which is shown as a set of
parallel lines (green, blue, and red). A series of blue triangles shows
intermediate positions. The second method computes an an *approximated
path* using a simplified technique. The results of the approximation method
are shown in the gray area that shadows the true path. In the text area in the
panel on the right of the display, columns marked "DR" and "DR2" show the
results of two slightly different ways of performing the approximations.

Because many small robots have limited computing resources, their builders
often elect to use the simpler method for determining position. Of course, doing
so requires the loss of some accuracy. How much loss is too much? By showing you
the results from the two techniques, MotionApplet helps you decide which is best
for your own robot application.

The robot modeled by MotionApplet uses a wheel configuration know as the
*Differential Steering* system. It's the same system as that used in a
wheel chair. Two independently powered wheels permit the vehicle to make precise
turns or travel in a straight path. Additional passive wheels (usually casters)
provide support. Because Differential Steering systems are simple, reliable, and
inexpensive, they are a popular choice for small robots.

Motion applet allows you to control the path of the robot by changing the speed of its wheels. If you set both wheels to the same speed, the robot travels in a straight line. If increase the speed of the left wheel, the robot turns to its right. The triangle icon shows you its orientation and the text display at the bottom of the applet shows you its computed position.

Recently, The Rossum Project
posted a web page describing a set of calculations that could be used to find
the path of a robot using a differential steering system (see Gary's
Paper). The page provided equations for both the true path and for the
approximation (see equations [5] and [6], respectively). Michael used those
calculations for his MotionApplet.

As noted above, the gray area shows the consequences of using the
approximation. The robot's path is controlled by the relative speed of its
wheels. When both wheels travel at the same speed, the robot follows a straight
line. If they travel at different speeds, *and if their speeds remain
constant*, the robot's path will follow a circular arc. So it turns out that
the true-path calculation isn't especially complicated. It simply makes a direct
computation for the circular arc.

The approximation attempts to compute the robot's position by treating the circular arc as a series of straight line segments. Clearly, doing so involves some loss of accuracy. But by using shorter segments -- evaluating the robot's position more frequently and over shorter periods of time -- you can improve its results.

The *Dead Reckoning Interval* slider bar under the timing tab in
MotionApplet allows you to do just that. When you shorten the time interval
between position calculations, the gray shadow area showing the approximated
path converges with the robot's true trajectory.

If you would like to read more about robot navigation, differential steering,
drive systems, sensors, and many other interesting topics, you should consider
downloading Johann Borenstein's Where Am I?
which is available on the web as an Adobe Acrobat (PDF) document. At over 13
megabytes, it's quite a hefty download, but packed full of useful information.
Dr. Borenstein himself offers the straight-line approximation as a technique for
dead-reckoning robot position (see page 19).

Incidentally, the original version of MotionApplet did not provide the ability to consider wheel acceleration (it assumed a constant speed). Jing YE, a student at the University of Melbourne, upgraded the applet to include a model for acceleration. The Rossum Project would like to thank both Michael Gauland and Jing YE for their work in providing this open-source software tool to the robotics community.

*Updated June, 2004:* Tom Brown of the University of Illinois at
Urbana-Champaign proposed an improvement to the approximation presented in both
Professor Borenstein's document and Gary's paper. He adapted the MotionApplet to
include that improvement (which is shown in the text area under the column
"DR2". You may read more about it in the
differential steering tutorial.

Or contact MotionApplet's author directly at MikeGauland@users.sourceforge.net