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.