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.
Rover
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.

New Sensors


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.
Control program
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.
Source code
The source code for the Rover control program is available for download here.
Please let me know if you find this code of use.
|