Developing the Arm

The arm was the single most time consuming and difficult
aspect of the project. Once I had finished my programs for driving and playing
music, Farid asked, “What next?” The idea was then born: we would build an arm.
At first this seemed like a pretty simple task, yet it proved to be a
challenge.

We had to
determine what we wanted the arm to do, and decided that simple up/down and
open/close motions would be best. Then the first problem popped up: what do we
build it with? Much to my chagrin, we concluded that LEGOs would be the most
reasonable and the easiest materials. I essentially grew up playing LEGOs, and
was eager to experience my beloved pastime again.

However, before
we started building, we had to make sure we could actually control the
movements we wanted the arm to perform. Since there would be four different
states (up/down/open/close), we discovered that we could use the two LED lights
on the top of the Roomba to trigger the motions. The lights had a specific
opcode and can be turned on individually or together. The two lights would
provide the four states: both on, both off, SPOT light on / CLEAN light off,
SPOT light off / CLEAN light on.

The next problem
was finding enough energy for the arm to make the motions (with its own weight)
and lift a small object. We found that not only can the LEDs be turned on
separately, but also the vacuum motor, which can provide around 15 Volts of power.
It was then a matter of wiring the LEDs and the vacuum motor source to a
circuit board we designed. The circuit board would convert the energy flowing
from the vacuum, and the status of the lights to turn on the motors.

Then I began
building the arm. There were various LEGO pieces and two LEGO motors. One motor
would be for up/down, and the other would be for open/close. My first model was
not the best, but it did show many factors that would need to be considered in
the design process. Such factors included pulley vs. gear, the placement of the
motors, and claw and arm stability. I built a couple more models, each evolving
as more modifications needed to be performed.

A main problem
was the speed of the arm, for we did not want it to move too fast in going up
and down. This problem was solved in the use of very large and very small
gears. By using a series of small to big to small to big, the speed of the arm
was reduced to the perfect speed.

The placement of
the motors was a difficult part of the design as well, yet it became apparent
that one motor would have to be at the base for up/down, while the other would
be at the end of the arm itself to control open/close. In the latter motor, the
direction of the gear on the motor needed to be changed in order for the claw
to open horizontally and not vertically. We used a spiral type gear that could
change the vertical motion to a horizontal motion, and this worked fairly well,
especially in terms of speed.

Having the arm
built, it then became a question of how to actually place it on the Roomba
itself. We wanted to make the arm easily removable, with little modifications
to the Roomba. This part of the project allowed me to do some sawing and
drilling. We placed two small pieces of wood towards the front of the Roomba,
and then drilled a LEGO platform onto the wood. Therefore, the arm with a LEGO
base could be placed on and taken off of the LEGO platform. The circuit board
sat on the back of the arm base and could be plugged in quite easily.

In the end, the
circuit board, the arm, and the attaching of the arm worked perfectly. As I have
mentioned, this was undoubtedly the most tenuous aspect of the project, yet I consider
it the most fulfilling.