Rossum -> Tools -> MotionApplet

</COMMENT> No JDK 1.1 support for APPLET!!

If the MotionApplet does not run from your browser
click Here for more information.

The MotionApplet now includes the abilty to model acceleration.
Source code for this applet is available at

About MotionApplet

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.

Differential Steering

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.

The Gray Area

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.

A Good Book

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.

Questions? Comments?

Feel free to post a notice on The Rossum Project Open Discussion Forum.
Or contact MotionApplet's author directly at

About The Rossum Project

The Rossum Project is an attempt to collect open-source software and other resources for robotics application. To find out more, visit our web page by clicking the icon to the right.

  The Rossum Project Home Page