Mario's Lego Robotics Archive


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:
  • Remote control: Otto may be assigned simple tasks to be performed when the user send specific messages with the remote control.
  • Motion: this subsystem by default try to go forward as long as possible. When it detects an obstacle with the IRPD sensor, raise a request to stop and look for a new possible direction (this is done turning the head left and right looking for a free direction). If one or both the main wheel get blocked, it asks for a back-and-change-direction manouver.
  • Arm/hand: when triggered by the P1 proximity sensor, this subsystem requests to protrude the arm, open the hand, and close it again after a few seconds (to grab the object). When triggered again, it opens the hand to drop the object, then closes it again and retracts the arm.
  • Mood: Otto has three different moods: happy, tired and bored. This subsystem drives the transition between the states. Otto is basically always happy, but gets bored if nothing happens for a minute or so, and gets tired if too many things happen in a short time. The current mood is expressed both with a choice of different melodies and changing the attitude raising the front with the pneumatic cylinder C3.
The supervisor uses a priority based system to decide what to do, and pass the requested action to a command processor that expands it into actual motor commands.

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.

Copyright © 1996-2013 by Mario Ferrari. All Rights Reserved.

This page is not connected with or endorsed by The LEGO Company. LEGO, LEGO TECHNIC and LEGO MINDSTORMS are trademarks of The LEGO Company.