I was inspired by the sheer size and amount of people/things happening at HackMIT, since I had never been to a college hackathon before. I didn't want to miss out on any of the action, but I also obviously could not be more than one place at once, so I thought: why don't I just make a robot that I can control wirelessly to take my phone and scope out the events? I thought it would also be fun to use the Leap Motion to communicate with the robot so it would be a no touch remote control, which was what I implemented.

What it does

The robot moves according to certain gestures that the Leap Motion tracks. If you hold your hand flat, the robot goes forward. Index finger extended (only) makes it turn left, and pinky finger extended (only) makes it turn right. When you make a fist, the robot stops.

How I built it

I used the Hercules robotics kit from Intel, as well as the Intel-Edison and Arduino extended boards. These acted as a parallel computer to my own, allowing cross platform communication. The Intel Edison is connected to my computer through wifi. The Leap Motion pushes data that it processes through my computer and the Leap Motion API onto a static localhost server run through flask. The Intel-Edison CPU unit then sends continuous GET requests to this server, downloading the output strings and using those as "commands" for its motor functions.

Challenges I ran into

First off, there were several different very specific manuals for building the Hercules, but no comprehensive one, so I just figured out all the wiring and connections on my own. As someone with very little background experience in electronic circuits, this was a difficulty I did not anticipate (as I thought the manual would guide me through it). My second challenge was that I thought that the Intel-Edison already communicated with the computer, hence why it was originally guided by keypresses. However, since the Intel-Edison is its own computer, the keyboard merely acted as a wirelessly connected keyboard instead of the Edison actually retrieving data from the computer. I did not realize there was no communication between the platforms, so setting up a static server as a proxy proved to be the most difficult part of the code by far.

Accomplishments that I'm proud of

I am proud that I actually was able to have hack that was very heavy in both hardware and software components, since I usually tend to focus on only one or the other. Additionally, I had never set up a static server and used ajax for post/get requests before, so I'm glad that the "data-transfer" actually worked out.

What I learned

I learned how to use flask to set up a static server, how to use ajax/json for data input/output requests, and how to effectively wire an electronics system.

What's next for Hand Roller

Although the Leap Motion API is a good start, it is not a very extensive API and therefore does not have the best hand mapping functions built in. Next time, I hope to create a wrapper class and define my own gestures, in order to have more accurate tracking for the remote control.

Share this project: