STATUS
Resolved:
Bought a couple of old Polaroid Pronto Sonar cameras on eBay and salvaged the sonar transducers and associated measurement circuitry out of them. I have mounted the sonar module on a pcb which houses some support logic and successfully interfaced it to the C8051F020 and have achieved some very good accuracy (1 centimeter resolution or better I believe). The minimum range of the module appears to be around 25-30cm with the maximum range being somewhere around 10m. This rangefinder will probably be mounted on a rotating mast and will be used to sweep roughly a 180 degree sector in front of the vehicle. I am considering mounting a second transducer on a rear-facing mast which could sweep out the rear sector of the vehicle. A relay would act as a simple analog mux between the two transducers and the ranging module.
Various motors tested. Selected 4-phase, 1-ohm dc stepper motors due to their very high torque ability.
After months of layout and debugging, the original 68020-based design was discarded after minor noise issues rendered SRAM unreliable.
A deprecated proprietary 68360-based processor module was recently powered up and passed the smoke test, however there were severe reliability issues, possibly due to replacing required cpld logic, or possibly the reason the board was consigned to the stockroom shelves.
Purchased Cygnal C8051F020 microcontroller development platform. This microcontroller features a 25 mips 8051 core, several ADCs of various resolution up to 500ksps, 2 12-bit DACs, 2 analog comparators, >4k internal ram, 64k internal flash, uarts, timer array, watchdog, I2C, SPI, up to 64 digital I/O pins, all in a 100-pin tqfp package.
I am working with the identical development board on a control project at work, so there should be no wasted effort on either end.
I constructed a simple steel frame to house everything. Even welded together some tic-tac-toe games with leftovers which were well received at Christmas.
UPDATE July 23, 2003
So about a year has passed since the last writing... I have ditched the stepper motors in favor of a pair of reversable geared photocopier motors with PWM speed control and tachometer output. The dead-reckoning accuracy should be improved by the tach output even at the expense of not directly being able to step the motors (they have on-board logic).
Oh, and the thoughts on multiplexing rotating sonar transducers worked fine. Small relay switches the high voltage pulses between transducers and the microcontroller times the flight times and controls the angle of the transducers.
The steel frame was way too small to accommodate everything so I redesigned in 3/8" lexan with aluminum angles. It is quite rugged now and can even support my own weight! The power supply is a pair of 12V sealed lead acid batteries to provide 24V for the motors (which are rated at 36V, but run fine at the lower voltage.. thankfully -- getting very heavy). A 6V sealed lead acid battery supplies power to the logic (motors, sonar, microcontroller). I'm currently still using the Cygnal development kit for the C8051F020 to prototype, but I will lay out a custom PCB with the microcontroller onboard (probably move to a C8051F310 - I managed to use one of these in my MAME Arcade Cabinet - even managed to etch down to 10 mil pitch!)
The wheels are 6" rubber-treaded plastic wheels which I mounted on a 3/8" shaft and affixed some custom sprockets to a chain-drive which is connected to the motors. All shafts ride smoothly on ball-bearings to reduce friction. At full power, I am certain I could drive myself around on the chassis, although I have yet to try.
Unresolved:
Still trying to dream up a central control system for the robot. The microcontrollers could probably perform all low-level functioning such as obstacle avoidance and motor control, sensor monitoring, etc. But for the overall path planning and mapping systems, I am of the opinion that some more horsepower is in order. I have access to some powerpc processor modules with PCI mezzanine connectors, etc. It would be trivial to either control the low-level subsystems over I2C or via UART. With I2C, I could have dedicated controllers for different subsystems -- it is always nice to not have to multitask so many realtime control loops. The PCI mezzanine connector could probably be adapted to accept standard PC form-factor PCI cards, opening up the possibility to easily add wireless connectivity or audio interfaces. (although the microcontrollers have 10 and 12 bit ADCs which operate in the hundreds of KHz, they have limited offload capacity).
Still need to work out a method for determining how many bottles are present in the rack, and whether they are full or empty. Considering some sort of flex sensor or series of photodetectors of some sort in conjunction with a weight-countering spring. Any off the shelf solutions would be preferable, like a pressure sensor perhaps.
Pictures. I will get some pictures online if I ever get around to taking any. I'm sure some people would like to see something solid after approximately 5 years of planning and procrastinating.