top of page

2002 - Coffee Bot

David

This started out as a request (challenge) from Carol 'Could a robot bring us morning coffee in bed?' This is quite a challenge, the kitchen with the coffee machine is at one end of the apartment and the bedroom at the other, a total distance of around 26 meters. Three ideas came to mind, a line-follower, a system of light beacons, or some form of dead-reckoning.

The Line-follower was the simplest to implement, however, no one was very keen on a black line across the floor. I tried light beacons for a bit but couldn't get them to work at any distance, particularly when the ambient light levels are very changeable. So that left dead-reckoning. After a number of attempts I've arrived at the version below, which is capable of arriving at the bedroom most mornings although it is unfortunately too small to carry coffee, which anyway would be cold by the time it arrived! Still I think that it is an interesting illustration of Lego robotics and worth a bit of description.

The Robot

The robot is a tricycle having two independently driving wheels and a rear caster. There are three sensors, a rotation sensor linked to each driving wheel and a downward facing light sensor at the front. The light sensor is surrounded with a shield to try and reduce changes in ambient light under the robot. Mounted on the rear caster are two contacts which feed into the 9 Volt dc input of the RCX. These are used to pick up power from a dc adaptor while the robot is stationary. In normal operation the robot is set up during the evening, it then 'sleeps' until the following morning when it starts it's journey. I found that during this 'sleep' period the robot uses up a large amount of the battery life (6 x 7.2 Volt Nickel Hydride). To get around this the during the 'sleep' period the robot is connected to an overhead power gantry, once it wakes up it moves forwards and leaves the dc supply. The robot is programmed in C and runs under legos.


📷

Navigation

The robot navigates by dead-reckoning between a series of A4 tiles placed 2.5 to 3 meters apart. Each tile is bordered by a reflective strip and a black tape spiral. When the light sensor detects the border (it is the most reflective surface on the robot's path) followed by the black line the robot enters a line-following routine and moves around the tile following the edge of the black line. At the center of the spiral is another reflective strip. When it detects this the robot turns until the edge between the reflective strip and the black line, this is the reference point of the tile. The robot then turns through a defined amount (stored in an array in the code) to face the next tile. The robot then moves forward using a PID routine (see Refs) to keep the robot going straight until it reaches the next tile. If the robot has traveled more than a defined amount without reaching the next tile it 'concludes' that it has missed the tile and so enters a hunt routine. In the hunt routine the robot gradually spirals outward until it reaches the tile. As a safety feature if the robot does not find the tile within two minutes of starting the hunt routine the robot stops. As an additional precaution the robot monitors it's forward speed; if this suddenly changes it concludes that it has hit something, and stops. The accuracy of the navigation depends critically upon the robot being at both a defined position and orientation when it reaches the center of tile. To obtain this I've found it best that the robot moves slowly on the tile and turns through several right angles, hence the spiral pattern. Also a timer started when the robot first arrives on a tile stops the robot heading off again until it has traveled through a least two right angles.





Issues and problems

At the moment there are a couple of issues. Firstly, and most seriously the robot moves too slowly particularly on the tiles, but I have not been able to increase the speed without reducing accuracy. Secondly, although the navigation is pretty reliable when the tiles are on the hard surface, on carpet the performance is very much worse. I think this may be due to the tile moving under the robot but have had no time to look into this. Thirdly, at low battery levels the rotation sensors become very unreliable and the robot starts going around in small circles!


Refs

�

5 views0 comments

Recent Posts

See All

Commentaires


bottom of page