| Home page / LegoŽ / Robotics / Otto |
Disclaimer
This page is not connected with or endorsed by The LEGO Company. LEGO,
LEGOLAND, LEGO SYSTEM, LEGO TECHNIC, DUPLO, LEGO PRIMO and LEGO MINDSTORMS are
trademarks of The LEGO Company.
Otto
Otto was born mainly to answer my children's request of a R2-D2 style robot
capable of more things than the original DDK Lego model.
From the aesthetic point of view I wouldn't say the result is totally
satisfactory, but as for the behaviour we found it really amazing and funny.
The name "Otto" (in Italian means "Eight") comes from two reasons: because of
the octagonal shaped body, and because 8 sounds like a nickname for C1-P8, the
name of R2-D2 in the Italian version of the first three Star Wars movies (don't
ask me
why
"R2-D2" has been translated into "C1-P8", maybe for phonetic reasons).
Otto uses 2 RCXs, 7 motors, 2 (non-Lego) IRPD sensors, 3 rotation sensors, 1
light sensor, 3 pneumatic cylinders... and some hundreds of other Lego parts.
From a more organic point of view, Otto features a rotating head, two driving
wheels, a front pivoting wheel, a pneumatic arm with a pneumatic hand, a
pneumatic attitude modifier.
This diagram shows the connections among the RCXs and the different subsystems.
RCX1 (master) and RCX2 (slave) communicate throught their IR ports. RCX1 runs
the main program and control RCX2, which simply execute the required tasks. So
the communication mainly flows from RCX1 to RCX2, except for acknowledgements
and for possible problems RCX2 has to inform of (locked wheels).
In the diagram you can see three hardware subsystems: the head, the wheels and
the arm. The
head
can rotate right or left, and its motion is controlled by RCX2 through the
motor M3 and the rotation sensor R3. On the head there are a proximity sensor
(P2) and a light sensor (L1) used to "interpret" the environment (detect
obstacles and lights).
The
wheels
provide motion and direction control. Otto is a differential drive robot, with
two external legs that both contain a motor (M1 & M2) and a rotation sensor (R1
& R2). These sensors are used to provide a very simple but effective way to
detect obstacles that block Otto's motion: if the motors are on but the sensors
don't rotate, something's blocking the robot.
The front, pivoting wheel is hinged and connected to a pneumatic cylinder in a
way that allows Otto to raise his front side and get slanted R2-D2 style.
Two pneumatic cylinders control the retractile
arm
and its hand. The arm is safely kept inside Otto's body until needed to grab
and carry small objects. The P1 proximity sensor is used to detect objects you
can offer to Otto.
The three pneumatic cylinders are driven through motorized valves controlled by
RCX1, and the air is supplied by a double action compressor connected to a
battery box (not showed in the diagram).
Otto's software is written in NQC and is based on the subsumption architecture as described by Jonathan Knudsen in his Unofficial Guide to LEGOŽ MINDSTORMS Robots. In this setup a supervisor is in charge to decide what to do according to the requests of different subsystems. Otto has 4 of these software subsystems:
In this picture Otto carries around a soft ball. Notice that the cable are
"coded" with small plates to speed up the re-connection process after the RCXs
had been removed.
Rear view.
Detail of the right side. Each leg is actually an easily detachable system,
which incorporates a motor and a rotation sensor.
Inside Otto's body you may see the black battery box that supplies the
compressor.
The front wheel with the cylinder extended and the robot in his slanted
position.
A detail of the rear. With so many cables and pipes around, keeping them tidy
is essential.
You can see the back side of the compressor (bottom center), the pressure
switch that controls the compressor (top center), the cylinder that extends
the arm (top right), a green-marked manual valve to empty the pneumatic circuit
after usage (bottom right).
The arm is in its inner position, the hand is closed.
Side to the hand there's the P1 IRPD sensor. This and P2 are both from
Techno Stuff
and work very well. One notable feature they have is a range
selection switch, that allows Otto to use long range detection for P2 (that
looks for obstacles) and short range for P1 (that drives the hand).
To prevent the two IRPD sensors interfering each other, the software actually
supplies them only when a reading is needed, changing their type from passive
to active and then back to passive mode.
The arm is extended, the hand open.
Top view of the hand opening sequence: the arm is retracted...
...then extends outside the body...
...and finally the hand opens.
Close-up of the pneumatic arm removed from Otto.
The arm again, side view.
Inside Otto: two of the motorized valves that control the pneumatic cylinders.
Close-up of a valve: front...
...and rear.
The pressure switch triggers the compressor when the pressure si too low. I
used Ralph Hempel's
design
with just some minor changes. Thanks Ralph!
The double effect compressor.