Flying JavaScript!

Last weekend, if you were interested in JS, Berlin was the place to be. The week started with RejectJS on Thursday and continued at Saturday and Sunday’s JSConf EU. For pure creative JS fuel, though, Friday’s Nodecopter hackathon was the pinnacle.

Organised by Felix Geisendörfer, Robin Mehner and the rest of the BerlinJS crew, this was somewhere between a Hackathon and a glimpse into a future where robots take over.

Node AR Drone

A few months ago, Felix, former NodeJS core member, published a library that allowed you to control a Parrot AR Drone 2.0 via a node server. Friday’s event was a chance to explore what kind of things that could lead to.

The drone is a flying, remote controlled machine with 4 propellers, 2 cameras (one down, one forwards) and a heap of clever electronics that automatically look after most of the tricky bits (staying level, not crashing into walls) leaving you the fun stuff.

The Event

The hackathon started at 10am in the Stadtbad Oderberger Straße – a large, empty, indoor swimming pool – and continued until about 7.30pm. The whole day had a true hackathon vibe as the library is quite new and doesn’t provide all the functionality available causing many JS devs to dig through the drone’s tech specs and calculate bitmasks and UDP control codes. Simultaneously, there were quite a few people trying hardware mods such as wiring a Wii nunchuck through an Arduino controlled via Johnny 5 (a JS framework) so that you could fly the drone with just your thumb. Chris Williams (founder of JSConf US), Matt Podwysocki and Fredrik Lassen took a similar approach to wire a Nintendo gamepad to control their drone.

There were quite a few attempts at image recognition, either by piping the video stream to OpenCV or (in the case of the overall winner), directly in JS. The most memorable example was James Halliday and Dominic Tarr‘s drone which was programmed to identify objects with large amounts of red and charge at them. It was memorable mostly for the image of Jed Schmidt adopting the traditional Matador stance in a bull-drone vs man stand-off.

Gaming was a popular theme with more than one team turning their drone, avatar-like into a first person shooter-style game. A less traditional gaming route was explored by Max Ogden, Brian Leroux and Matthew Smillie in their demo which turned the drone into a multiplayer game. One player had rotation control using their phone compass, one could make it go forwards by shouting “Brrrrrrumm” into their phone and one could give voice commands like “take off” and “flip” into their phone. At earlier points in the day, this did threaten to decapitate some of the other participants but, considering the amount of flying hardware, the injury count for the day was surprisingly low. The Nokia Maps team (of which I was a member) used their drone to automatically generate 360° panoramas.

Mid-way through the day, the big boys came around to play. There was a demonstration of the Octocopter – a professional-level drone, capable of carrying around 5kg of camera equipment. As one participant said “the Octocopter sounds like I think the robot apocalypse would sound.”

Here’s a video of the Octocopter in action.

The opportunities for advancing web technologies like JS beyond the web are endless. In the short-term, though, you may want to consider wearing a hard-hat while coding.