This page started on 11/18/00 and last updated 11/19/00

Previous | Index | Next

The Earth Explorer Project


Robot control architecture

So how do I control this thing?

For years I have been a fan of a dual controller architecture for controlling medium to large scale things. Using two controllers allows the high level and low level functionallity to be separated. The low level controller is integrated directly with the hardware and is programmed using real time software techniques. The high level controller can be programmed using any techinque that seems appropriate at the time. The communications between the two can be a simple command and status protocol.

Which controller should I use? And should I use a dual processor configuration? Or should I just use a single controller and make it do everything which is necassary. I had to examine my requirements to see what would fit my design. Here is a list of things to be added and also it's interface requirement.


Some of my requirements for planned peripherals

Item Requirement
Aviator wireless network PCMCIA adapter slot
Imagenation video frame grabber PC ISA bus
Motorola GT Oncore GPS receiver Async serial
Dual PIC-SERVO motor controller Async serial
Laser triangulation range finder Async serial or Bus
Polaroid sonar I/O bits and timer
"Scott Edwards" type sonar I/O bits and timer
Vector 2X compass Clocked serial
Contact sensors I/O bits
Infrared proximity sensors I/O bits

These devices can be put into three catagories:

  • Requires an IBM PC compatible system (Laptop or motherboard)
  • Requires serial port
  • Requires custom hardware interface

The wireless network requires a laptop computer or PC motherboard with a PCMCIA adapter. The devices that require a serial port can connect to anything that has a serial port. The devices that require a custom hardware interface are a little more specific. This hardware interface can be a single chip microprocessor. Or it can be periperal chips attached to a microprocessor system. Or it can be a custom I/O board which would plug into an ISA slot on a PC motherboard.

The wireless network is a key component to my design. So I must use either a laptop computer or IBM PC motherboard to support it. If I choose to not use a PC compatible system then I need to come up with a different type of wireless communication system.

Using a laptop computer or a PC motherboard also brings up the choice of operating systems. At the moment I would consider Microsoft Windows, Linux or plain old DOS. The choice here will be more important as I start to write software.

The Imagenation digitizer is not a critical component so I may not use it. If I use a laptop then I have no place to plug it in.

So what are the differences between my laptop (a Toshiba Satellite 205CDS or an older AST4/25SL) and using a motherboard?

  • The laptop has it's own built-in power supply. I have to supply power for a motherboard.
  • The laptop has only one serial port. A mother board can have 1-4 serial ports.
  • Both the laptop and motherboard have one printer port. I can add an extra to the motherboard.
  • None of my current computers have USB. So I won't consider it.
  • If I use a two controller configuration then I will use either the serial port or printer port for master/slave communication. Both the laptop and motherboard have both interfaces so it is not an issue.
  • The laptop has keyboard and display built-in. If I use a motherboard I would choose one that has most of the peripherals built-in. (Like serial, printer and video.)

So the laptop limits my serial port. I can not plug the Imagenation digitzer into the laptop. I can add several expansion boards to a motherboard. So if I go with a single controller system I will probably use a motherboard for the expansion capabilities. If I go with a dual controller system then I can use either a laptop or motherboard.

There are two big advantages to using a motherboard. First, you can get used ones real cheap, sometimes free. Second, you can pick the amount of processing power you need. If you want something slow you can use one of the original 8088 motherboards Although they need several expansion boards to get them to work. If you need lots of processing power you can put in the latest, hottest board that is available. And they are all basically interchangeable because they have to fit in the standard cases. If you pick one, make sure you check the difference between AT and ATX power requirements. And you may want to get a motherboard that has everything included. Like serial, printer, video, sound, USB and ethernet. Or pick and choose what you want on it before you buy one. Keep in mind that each thing you add will probably take more electrical power to run it.


Low level controller

What would I use for a low-level controller? I have tons of boards on hand that I could use. So what would be the requirements for choosing a low-level controller? I need something that can talk to the high level controller by either the serial port or the printer port. It must have lots of built-in peripherals which are suited for robot control or can easily be added. It would be good if the architecture was suited to a real time embedded environment.

I have several on hand to choose from:

  • Ampro Little Board PC286 - IBM compatible single board computer, 286 class the size of a 5-1/4" disk drive.
  • Megatel Quark - IBM compatible single board computer, 286 class the size of a 3-1/2" disk drive. Has built in video and LCD driver.
  • BOTBoard 1 - 68HC11 board. BOTBoard 1&2 and BOTBoard +
  • BOTBoard 2 - 68HC11 board with 32K RAM and RS232 convertor. BOTBoard 1&2
  • ??? - 68HC12 board. (It's lost at the moment...)

Or I could build a new controller based on a 64180 or a V25.

There are lots of choices if I want to buy something new. The MiniRoboMind board looks real attractive. It has a 68332 processor and comes with a CD that contains all the documentation and several development systems. Another good choice may be the Rabbit 2000 which is being sold as a module by Z-World.

When it comes to choosing a processor I like to get one that is highly integrated. That is, a processor that has lots of peripherals right on the CPU chip. Some chips that fall into this catagory are the Motorola 68HC11, 68HC12, 68332, the Zilog/Hitachi 64180, the NEC V25. The Intel 8051 family is integrated, but it isn't usually my first choice. A single board computer may have peripherals on the board in addition to the CPU. Also keep in mind that some peripherals are better than others. I would pick the Motorola 68HC11 type counter/timers over the counter/timers of an Intel 8051. They are simply better, from a hardware specifiers point of view. The 8051 counter/timers have no outputs. So it is almost impossible to generate an output pulse at a specific time. That is because the timer has to interrupt the processor when it times out and the processor is required to do the actual setting or clearing of an I/O pin. Due to variable interrupt latencies you will end up with "jitter" on your signals. The Motorola structure allows you to create the timing pulse at exactly the right time. (At the resolution of the clock being used.) But I like the Intel 8253 counter/timer chip because it is quite flexible and will generate precise timing. So I consider it a good choice as an add-on peripheral.

Another option for low-level controllers is the Basic Stamp type of controller. Although these may work better as slave processors as opposed to being the main line low-level controller. Parallax has the Basic Stamps. Net Media has the BX01 and the BX24.

Speaking of slave processors, you may want to go with lots of small processors. You can use processors from Micro Chip or the SX18 or SX28 from Scenix. You can connect lots of these small processors together and make each sensor smart if you would like to.

You also need to take into account which processor fits your design preferences. This may be based on your past experience. Or what development environments are available for the chip or the board you want to use.

So to sum up, there are lots of choices for low-level control...


Previous | Index | Next

Visit Twin Cities Robotics Group
Back to my Home Page http://www.pobox.com/~jsampson

This page is currently maintained by Jeff Sampson