Robotics on the QL - David Buckley
20 August 2006
My involvement with computer controlled robots first started when I built Quester a micro-mouse using an Acorn System-1 6502 based dual eurocard microcontroller with a hex keypad, LED display and tape interface. Writing routines in 6502 code proved quite easy after I realised that the monitor listing in the manual was wrong and disassembled the actual monitor in the ROMs! I don't think Acorn documentation ever improved. Soon after I moved on to a ZX-81 and then a 16k Spectrum and then a 48k Spectrum. But this article is about robotics on the QL.
In the early 80s Robin Bradbeer, who had started this country's first computer club at the (then) Poly of North London, and myself were talking in his kitchen when he said "we ought to start a robot company". I had already designed Zeaker, a desktop mobile robot, which was being sold by Colne Robotics alongside their Armdroid robot arm and Colvis vision system. So since it seemed everybody then (and now!) expected robots to be the next big thing we recruited a few more people and founded Inter Galactic Robots (IGR). Robin did always like to think big and since we couldn't call ourselves International without actually being international, InterGalactic it was, as he said "let them try and prove otherwise".
Zeaker was designed to run from a ZX-81 and was first and foremost a mobile robot with six bump sensors, two user LEDs, a user horn and most importantly a pen which could be raised and lowered under program control. This allowed Zeaker to draw simple graphics after the style of the MIT (Massachusetts Institute of Technology) LOGO Turtles.
I decided that IGR's first product should be a mobile robot capable of executing LOGO style graphics which meant it must be positionally accurate and have a pen. The outcome of some intense design work was Zero2. Originally named Zeaker-II, Robin wishing to avoid the problem of an innocuous name when translated to some foreign language meaning 'your mother is a pig', or some such, decided that Zero universally meant zero and so the robot became Zero2.
Zero2 had two wheels each driven by a stepper motor; a sliding toe to prevent it tipping over; a stepper motor controlled pen which could be raised and lowered; two user LEDs; three infra-red photosensors and two infra-red LEDs grouped to use as a line sensor for white or black lines; and an expansion bus. Power and control signals reached Zero2 over an Umbilical and the control signals were RS232 at 4800 baud allowing Zero2 to be run from all the main personal computers on sale at the time.
Richard Moyle wrote ZeroDrive, a Z80 machine code program which allowed full control of Zero2 using high level calls and which could be hooked into Sinclair LOGO on the Spectrum + Interface-1, or used directly from Basic on other Z80 based computers.
ZeroDrive was a very nice piece of code but it was only an interface, to get Zero2 to do something, you still had to write high level commands in another language. I wrote a Sinclair-LOGO program to allow Zero2 to move three pallets in a Towers of Hanoi fashion but found that editing a list was not some thing which was native to Sinclair-LOGO. There had to be a better way. There was, I had a QL.
The result was a 54k Superbasic program which consisted mainly of functions and procedures invoked directly by the user from the command line. Lists of commands can be remembered and replayed forwards or backwards, saved to long term memory, included by name in other lists, learning can be turned on or off and all the robot moves can be drawn on the QL screen. Not only that, but because the program only runs insofar as a procedure or function is executed it can be edited without really quitting anything and moves in short-term memory are retained.
Sadly after writing the QL program IGR was forced into liquidation by the teachers strike of 1986 since schools were no longer buying Zero2s.
Recently someone inquired about the workings of Zero2 which prompted me to go through my old papers and the screen shots are the result of running the program under QPCII. There should be no reason to prevent Zero2 working from QPCII but at the moment having lent out my serial-port-to-umbilical interface I can't even run a Zero2 from a QL.
Maybe after this I will go back to the program and add the code so that Zero2 will search for and follow a line and draw it. Also one thing which never got designed was the infra-red obstacle sensors. With them, or even simple contact switch sensors, the program could build and interpret maps and plan routes which was what prompted it all those years ago.
If anybody wants to see the program (54k) I can email it to them.