Development Toolbook and Tutorial for the Enhanced Software Package Used on the Denning Mobile Robot




Second Edition


(For EE462-EE464)


Roman Mach




©1991 Roman Mach

Second Edition

This manual is intended to be referenced in a corresponding Master’s Thesis.  If this manual appears alone, the following distribution clause takes effect: This manual may be freely reproduced at the University of Washington only for scholarly purposes, consistent with “fair use” as prescribed in the U.S. Copyright Law.  Any other reproduction for any purpose or by any means shall not be allowed without my written permission.  Future editions must contain this notice.

I can be contacted at:


This manual would not have been possible without the assistance of a number of individuals.  Dr. Robert W. Albrecht has provided the creative criticism and has been the primary reviewer of this document.  Kurt Teschendorf, from Denning Mobile Robotics, provided help regarding the details of operation of the robot while LLAMA was begin developed;  it would not have the capabilities it has without his help.  I would like to thank Ramnath Rajesh for his assistance with the “DEMO” macro.  David Land provided the basic SDLC multiprocessing queue controller upon which the inter-process communication is based.  Daryl Rochette improved the speech processor’s capabilities while hand-coding many of the basic built-in allophone phrases.  The “Obstacle Avoider” examples are based on a module that has been incorporated into LLAMA created by Aaron Pulkka and Scott Cawlfield.  I would like to thank Joe Greene for his useful observations in the development of the primitive and macro functions.  Thanks to Bob Nansel for providing assistance on the behavior of FORTH and for clarifying some of the Threaded Interpreter issues upon which this system is based.  I would like to thank Dr. Albrecht’s students who gave suggestions for improvements to LLAMA and the LLAMA manual, some of which are incorporated within.

This manual was produced using Aldus Page Maker 4.0 for Microsoft Windows 3.1 using a modified “Manual 2” template.  Photographs were taken by Roman Mach on black-and-white film and digitized using Applescan into TIFF-format files at 150 dpi using an adaptive filter.


Mobile Robotics Laboratory
c/o Dr. Robert W. Albrecht [ed: Dr. Albrecht has retired]
Dept. of Electrical Engineering FT-10
University of Washington
Seattle, WA 98195



This manual was written as a reference for using the LLAMA operating system.  The anticipated users of this document are students developing robot interfaces and performance orders from some host system such as GENSYM’s G2 expert system.  The manual is organized such that more advanced topics appear later in the document.  This is to provide fast access to quickly needed data, while supporting detailed system information.

This manual supplements a Master’s Thesis in Electrical Engineering entitled, LLAMA—A Multitasking Mobile Robot Control Language Designed and Optimized For Inter-system Communication To An Expert System.  For more detailed information on system behaviors, please consult this document.  In addition, if a C function is to be added to the system, please have the source code available and refer to the appropriate Appendix topic.

A “pancake” analogy can be used to define the role of the LLAMA system.  Imagine the top-most pancake on a stack to be the actual user interface.  This can take the form of G2.  LLAMA is next in this hierarchy of functional conversions.  Next appears the various Expert Modules on the robot and finally the hardware.  Operating systems provide the “syrup”, or the means to enhance the capabilities of the individual functions.  G2 runs under UNIX while LLAMA is written in K&R C for Microware’s OS-9, a multi-tasking operating system.

LLAMA provides an adaptable control structure through the creation of macros in what are called colon definitions (after the similar FORTH function).  This allows the system functions to be “tuned” to the particular application.  It is even possible to auto-start a macro on power-up, with the theoretical possibility of autonomous behavior.  If a structure doesn’t perform as desired, it can be rewritten during operation.  The major restriction in performance, currently, is the speed of operation; the system is fast but can be slowed by complex constructs.

Unnecessary processing burden on the host system is removed by using LLAMA’s conditionals to control the robot’s program flow.  This allows for near real-time operation of G2 and LLAMA.  For special applications, such as obstacle avoidance, one may incorporate C procedures into the base system if performance improvements are desired.

LLAMA, pronounced, la-ma or ya-ma, is named after the load-bearing South American animal.