John Hallam, 25 Feb 1994.
One of the proposals which met with some enthusiasm at our recent meeting was the one that we build a robotic cat. Cats are highly autonomous creatures that deal with humans on their own (i.e. the cats') terms and cannot easily be trained to do any useful task! Nevertheless, they like to be around people and often interact with the humans they know, e.g. to demand food. The robot cat would have the following (similar) specification: 1) it would live on D or E floor, for a long period (weeks or months); 2) it would follow people around sometimes; 3) it would be able to recharge itself when necessary; 4) it would keep out of the way of the cleaners; 5) it would ask to be 'fed' if necessary; 6) it would sometimes play with objects it found; 7) it would 'enjoy attention'; 8) it would not fall down stairs! A possible way of approaching this is to build on the ISC Lego technology. The cat would be a Lego vehicle, probably with a more specialised motor drive system than the plastic Lego one so that mechanical wear in the drive is not a problem. Sufficient sturdiness can be achieved by cross-bracing the Lego while the plastic components mean the robot will be fairly light. The robot will need a collection of sensors of greater variety than are available for the ISC vehicles. These might include: Sound detection systems; Sound Communication systems; Pyroelectric sensors for detecting people; Magnetic sensors (flux-gate compass or linear hall-effect); A variety of proximity and contact sensors; Chemosensors (e.g. gas, smoke, etc.); Simple vision sensors (e.g. strip camera); Ultrasonic sensing systems (e.g. home made sonar); Strain sensors and other force measurement systems; Motion detection systems such as shaft encoders; Position measurement (potentiometers on rack & pinion gearing); Remote-control code communications systems; Possibly others. In addition to the above, the basic sensor systems from the Lego robots could be used -- switch sensors, light-level sensors, active infra-red proximity sensors. Such a robot could be controlled by a conventional ISC Brain Brick, probably using the C programming environment for code efficiency and size, and would need a rather more extensive battery power system than is currently available to permit automatic recharging and sleep-mode control (cats sleep on average 16 hours per day!). The mechanical problems of recharging would also need to be sorted out but these ought to be fairly straightforward in view of the relatively low currents involved. The 'cat' would also need a simple manipulator of some kind so that it can do more with the world than just push it -- for example it might shift things around, catch balls, build a nest, or whatever. Only some of these can be done without an explicit manipulator and pushing things on a high friction surface like carpet is energy-inefficient. This project would be an interesting research exercise since no one has demonstrated complex autonomous behaviour in an agent with a long lifespan (as far as I know) and this agent would be fairly complex with lots of sensors. It would also be a lot of fun and probably relatively cheap to do. Resources available include John's and Gill's departmental allocation of money (some of it), money from the lab. projects fund (if we can subvert it for such a purpose) and some of John's bionics contingency money. It would also make a very good demonstration so some publicity money might be available for it too. Open questions: Power -- can we make a sufficiently power-efficient system that the complete agent stays awake for a fair proportion of its lifetime (e.g. 25%)? Manipulations -- can we make something small enough and light enough that a Lego chassis can carry it without becoming cumbersome? Recharging -- can we design and make a reasonably effective recharging station? Upgrades -- can we arrange to be able to upgrade the 'cat' while it is running or will we have to put it down in order to change its brain contents? Perhaps we could upgrade the brain when it's asleep? Programming -- what sort of programming strategy and environment should we go for to make it straightforward to build, extend and debug? Size & Weight -- can we build something that is light enough not to need too much energy to move around, but which carries enough sensorium to be interesting? The largest feasible Lego vehicle is about 50cm long and 30cm wide, though this is much too big in my view for what we want; the 'cat' should probably be about 30cm long at most and maybe 20cm wide; reasonably agile (manoeuvrable); and fairly fast. Perhaps four Lego vehicle batteries to provide the power. No bumpers but bristling with tactile and non-contact proximity sensors instead. It would be very nice to have several of these systems -- say three for definiteness -- to allow for down time and for multi-agent interaction. One possible policy is that first year robotics PhD students (and perhaps MSC/UG project candidates) be required to implement something interesting on the cats or to build a piece of hardware for them...