The Roomba's a great product for cleaning your house, but there's a lot more you can do with it - and a lot of potential to make it smarter. We realized that a Roomba serves as a precise and convenient motorized based for a moving platform. One of us owned a similar product - a knockoff Eufy - so we wanted to look into re-purposing it to do something cool.
When we arrived at HackMIT, we found that the drinks would often be located on the other side of the room, far from our table! We wanted to build a bot to carry them over to us and other folks.
What it does
Troomba is a transporting Roomba. It has a small container at its top to hold a few drinks, and autonomously navigates around the room. It can also be remotely controlled over a Wi-Fi connection. Additionally, Troomba has emotive light strips and rings to communicate with its users. Finally, Troomba streams a webcam feed over a Wi-Fi connection so that you can monitor it!
How we built it
The model of Eufy we had used an IR remote to manually control it. We first reverse engineered the protocol that the IR remote uses, by using an IR receiver to record the data the remote sent for different button presses. We then connected up an IR LED and used an Arduino to play back those codes and control the Roomba.
We then hooked up a Raspberry Pi to the Arduino over Serial. The Pi handled higher level computation and planning, and relayed lower level commands over to the Arduino.
We built a frame on top of the Roomba out of some empty Soylent boxes, and added LEDs rings and strips, a webcam, and an ultrasonic sensor.
We set up a webserver with a camera to receive a live feed from Troomba as well as have Troomba be controllable over Serial commands, and developed a simple autonomous obstacle avoiding algorithm.
Challenges we ran into
Reverse engineering the IR protocol was a bit tricky.
Setting up a Raspberry Pi headless (we didn't have a monitor or a keyboard) was very, very painful. Since the HackMIT Wi-Fi blocked SSHing between devices on the same network, we had to use our own, which was a pain.
Accomplishments that we're proud of
We were able to build a nice, friendly-looking robot in a pretty short amount of time!
What we learned
We became a lot more familiar with how IR works, how Arduino components work, and how to interface with a Raspberry Pi and use systemd.
What's next for Troomba
The navigation algorithm could be greatly improved.