Cybermaster based Rover
My current Cybermaster based project is to construct a mapping robot. The system makes use of a mobile rover that traverses the area to be mapped and carries sensors. The other part of the system is a PC based application written in C++ that communicates with the Rover via a radio link. The C++ application builds up the map and is responsible for route planning and obstacle avoidance.
After much experimentation the current version of the Rover I'm using can be seen below.
It is constructed as a variant on the standard Cybermaster tracked vehicle. I've added two bump sensors for obstacle detection.
The sensor system works reasonably well but only provides good coverage when moving forwards and turning. I am still trying to find a good 360-degree bump sensor design. The other major fault with the current system is that it does not provide sufficient flex in some situations. Even when traveling at low speed the Rover can be knocked off course when the sensors strike an object.
The drive system has also been geared down to reduce the speed of the Rover and increase the accuracy.
After trying various designs the latest version of the bump sensors are shown above. I've switched to the inverted V shape to provide better handling of side impacts (during turns), and I've also added a further hinge and elastic band to provide more flex upon impact.
The C++ control program gains access to the Rover via the standard Lego Spirit.ocx ActiveX control. It uses this to down load a small set of tasks that provide communication with the main application and control the Rovers movements.
The main application provides route planning and map building using a variant of the A* algorithm (for more details of path finding techniques take a look at Marksu Jonsson's thesis on Path finding Theory) . The display shows the current map, rover position, obstacles, planned route and actual Rover route. The left hand panel provide status information.
The downloaded tasks provide control of the Robots movement by monitoring the built in tachometers to ensure the Rover moves in a straight line (or turns evenly). They also monitor the connection back to the main application and the state of the bump sensors and halt the current move if required.
The source code for the Rover control program is available for download here. Please let me know if you find this code of use.