A General Purpose Robotic Architecture

by Carlos Puchol, Glenn Currie, Vadim Konradi and David VomLehn


Goal of the project:

An experimental learning multipurpose mobile robot.
 

Special Interests:

Integration of mechanical robots and their sensing and control systems with "intelligent" software systems.
 

Keywords:

Microcontrollers, real-time systems, sensors.
 

Sensors/actuators used:

IR, audio, vision, bumpers, encoders, and DC motors.


Description of the project:

The ultimate goal of the project is to provide a nice and effective development environment for general purpose robotic projects. Many people have intervened in focusing this goal as a useful one.

On the hardware side, we would like to achieve a network of microcontroller boards that would be reconfigurable. It is appealing the possibility of connecting small, cheap boards based on the Motorola HC11 chip with a single, more powerful board with the Motorola 68332 chip. This network would communicate via a high-speed serial interface and allow for distributed control of parts of a robot. The software on the larger board would be a more general purpose real-time operating system which will allow for complex operations, such as strategic planning and pattern recognition. The software on the smaller board would be tactically focussed, such as reacting to small irregularities in surfaces and planning details of limb movement. We are currently working with the MIT Miniboard as the smaller board and the Motorola BCC (or also VESTA 332 board) as the more powerful board. One of the goals of the network is that it has to be reconfigurable to be able to suit multiple purposes. Another goal is that it has to be reliable, since the electromagnetic noises in the robotic environment may be strong thus we need to provide some degree of error detection at least.

This network will not allow for the use of high data rates, thus video data is not planned to be used at this level. We would like to experiment with vision systems, though. We can use one of those small cameras which are widely available and one of the widely available (small) video transmitters to send video images from the robot to the external world. The Linux box has a frame grabber which can digitize up to 5 images per second. We need some image processing routines to be done at this point.

The microcontroller network (or more concretely the BCC) will be connected to the world by a data radio link which is basically a wireless serial connection. The external world at this moment is a 486 DX2-66 PC running Linux and the X Window System. Currently some plans are under way to achieve this serial link by using an FM radio link in one way (from Linux to the robot) and on the other (robot to Linux), the use of the audio channel of the video transmitter. From Linux to the robot, we will use a small inexpensive Radio Shack wireless FM mike and the robot will use a tiny FM radio. From the robot to Linux, the audio channel of the video transmitter can be used, and the receiver side will pick it up. We will still need the use of some modulating equipment on both sides, but it is unclear currently what will be done.

On the software side, we want to be able to program both microcontroller boards in C. Currently we have developed a C/C++ programming environment in the Linux machine. We have the GNU (From the Free Software Foundation) cross compiler which is compiling in the Linux box and producing code for both the Miniboard or the Motorola BCC, depending on the settings. We also have this setting set up in Sun Workstations. It was ported easily thanks to the fact that both are good UNIX environments. We are working on being able to use the GNU GDB debugger in this environment, since it provides remote symbolic debugging capabilities through a serial line. We have a code downloader for both the BCC and the Miniboard and we have developed a small terminal emulator to enable the use of the C standard IO routines (printf/scanf, etc) in both systems through their respective serial lines.

Along the lines of system software, we have several things that remain to be completed. Among the things achieved so far, one is the complete easy-to-use Miniboard C library with the GNU C compiler. This was achieved with the collaboration of several people in the net. Fred Martin provided the initial assembler primitives. Some other people ported the GNU C compiler for the HC11. This library allows the use of C level calls to interface the sensors, and it should be easily portable. An example of its use follows:

  • #define TEMP_PORT 1
  • #define LEFT_MOTOR 0
  • #define RIGHT_MOTOR 1
  • #define LEFT_SERVO 0
  • #define RIGHT_SERVO 1

  • t = analog(TEMP_PORT); /* Read temperature */
  • motor(RIGHT_MOTOR, 10);
  • motor(LEFT_MOTOR, -10); /* Make the thing spin fast! */
  • servo(RIGHT_SERVO, 0); /* 0 degrees */

  • if (digital(RIGHT_BUMPER)) back_left();
  • if (digital(LEFT_BUMPER)) back_right();
  • ... etc.

There is also code to drive the SPI port. The design is done but the implementation needs testing. For the Miniboard, we would like to implement the subsumption architecture in C such that things can be tested with the Miniboard.

For the BCC, we have completed a port of a C library that allows the use the the STDIO through the serial port. We are in the process or porting a real-time operating system called Chimera from CMU whose sources are accessible to us. This process is somewhat stalled now. There is also the need to implement SPI some code to use the SPI port in the BCC. (Bill Craig contributed some code here, and the design is half done, but no implementation has been tested yet.)

To be able to run some experiment in "intelligent" systems, we still need to interface the BCC to some Lisp or SML interpreter in the Linux box and try different of the robot architectures proposed in the literature.

As an application of all this ... we have a small mobile platform graciously contributed by Vadim Konradi. This mobile platform which is approx. 1'x 1'x 1' is actually a prototype of two bigger platforms that Vadim Konradi and Glenn Currie have now developed with wheelchair motors, big batteries, power motor drivers, etc. These platforms are almost finished, and the concepts here developed are going to be put in use in them in the future. Some things to be done in this end are interfaces to sonar sensors.


To Be Done:

  • Porting Chimera to the BCC (or some other small RTOS).
  • Image processing algorithms (for the Linux box).
  • SPI code for the BCC, and possible retouching the Miniboard SPI code.
  • Radio link from the Linux box (or any computer for that matter) to the platform.
  • Using the background connector of the BCC from unix (maybe using the DOS emulator from Linux? if not, this may be a long shot).
  • Sonar sensors interfacing for the Miniboard or the BCC.


The Robot Group

back   Top of Page

Last changes: