VacBot 1 (finished,
sort of) A vacuum cleaning omnidirectional drive bot. Only standard LEGO®
parts were used except for a piece of nylon stocking as a filter to keep the
dust in the retainer. The vacuum system worked!
It could vacuum small pieces of news paper pages (about 1/2x1/2" or 1x1cm)
up into the dust box (formed by two duplo tube bases). Robot movement sort
of worked. After a few straights/turns it would loose synchronisation of
the axles. I did not solve that. At that time I did mostly programming at work
and working on the robot software felt exactly the same. The concept of recreational
programming did not grasp for me. - Three two-wheel platforms - two motor/rotation
sensor pairs per platform placed at 90 degree - in total 6motors, 6 rotation
sensors, 2 RCX One RCX can drive 3 motor/rotation sensor pairs. That means
one and a half wheel platform. The third wheel
platform had to be controlled by both RCXs. The problem got worse
because a single platform should be able to rotate on the spot. Platform rotation
was done with large turntables. However, when the turntable rotates, wheels
rotate in opposite directions (that's why differentials are needed). This
opposite rotation results in a rotation of the drivetrain (that goes through
the middle of the turntable). No problem if the drivetrain motor can rotate. But
it had a worm gear for compactness and power.
So... When a platform rotates
the drivetrain motor has to be run at the same time to compensate for the drivetrain
rotation. Of course at another speed because of different gear ratios... If this
isn't done precisely the worm gears will jump (resulting in malfunction of
the whole unit).
Wait, One platform was controlled by two RCXs! How can
the turntable/drivetrain rotation be synchronized? All RCX connectors are
already in use. Solution: The RCXs use infrared
to coordinate the turning of the third platform.

Robot
on its base. Wheels and platforms can rotate freely here. Essential for testing.
When transferring the software to the RCX by IR it was mandatory that only
one RCX was active at the time. 
In
front of the propeller is the piece of nylon stocking that acts as a filter. Propeller
axle was driven with belts (adding a certain ratio for more speed) for low
noise. And yes, these are ZNAP beams keeping the duplo tube holders in place: 
While
the dust tube seems to be in the way for IR communication it works anyway. One
RCX was the master, the other the slave. Because every motor had a rotation
sensor connected one problem could be solved most elegantly: collision
detection. As soon as the sensor doesn't turn as fast as the motor is
triggered, it's clear that the wheels don't turn because of an obstacle. 
The
duplo tube did not reach the ground evenly. A tire was added to make up for that:

Back view shows
the two technic motors that drive the propeller. Also, the wheel platform
closest to the viewer shows how motor and rotation sensor were supposed to
work together. Belt wheel on foremost rotation sensor for zeroing of turntable.

In theory axles
could be turned so that the whole assembly could rotate around its center.
I did not try to program that however: 
Nozzle
must almost touch the ground. If distance is too big wind speed decreases
and vacuuming will stop working: 
Good
view of the vacuum system: 
It
did not work as expected. It would go through 4 or 5 go/stop/turn/go combinations,
then errors would accumulate and axles would start driving in different directions.
Which is not good and accompanied by the sound of jumping worm gears. I
still don't know what the reason is. Two possible explanations:
1. motor
steps have to be computed precisely. If a motor is stopped when a certain count
is reached it still needs time to stop. I took care of that but not good enough. 2.
Rotation sensor is directly connected to motor and can't count as fast as the
motor turns. I think I had the motors running slowly but don't remember anymore,
it was two years ago. I think the firmware is too slow for that but I could
have changed to legOS... That was the point when I lost interest. Here's
the code: vacbot.zip Don't expect
too much, after all I wrote it for myself. Summary:
To make this a reliable omnidirectional drive two things are needed: 1.
Switch to BrickOS for increased rotation sensor precision. 2. Add a third
RCX for reliable zeroing of the platforms. |