The AR Drone includes:
- 2 HD Cameras that can be streamed back to a home computer
- Onboard 1 GHz Linux board
- Altitude sensors
- Full IMU (Inertial Measurement Unit)
- Protective foam padding (for when I inevitably crash it into something)
The drone comes ready to fly with IOS and Android apps that are available. Right off the bat, I was able to record some video directly from the drone:
The other reason I got this drone was for the Node.js implementation. Node.js is a javascript platform for building network applications that is getting really popular because of its simplicity. There are events called Nodecopter events that program these quadcopters using using the simple Node framework. I am using this framework for my project, along with OpenCV (the definitive computer vision library). So, I made a quick video of a script I wrote in Node.js to control the drone with the arrow keys on my computer. Here is the video and the code below.
This code simply allows me to drive the Parrot AR Drone
var keypress = require('keypress');var stdin = process.stdin;var arDrone = require('ar-drone');var client = arDrone.createClient();var inair = false;client.config('general:navdata_demo', 'TRUE');client.disableEmergency();keypress(stdin);stdin.on('keypress', function (ch, key){console.log('Got keypress:',key.name);if (key && key.ctrl && key.name == "c" || key.name == "q"){process.exit();}else if (key && key.name == "space" && inair == false){stdin.pause();console.log('Takeoff');client.takeoff();inair = true;stdin.resume();}else if (key && key.name == "space" && inair == true){stdin.pause();console.log('Landing...');client.stop();client.land();inair = false;stdin.resume();}else if (inair == true){if (key && key.name == "up"){stdin.pause();client.front(0.25);client.after(10,function(){client.stop();stdin.resume();});}else if (key && key.name == "down"){stdin.pause();client.back(0.25);client.after(10,function(){client.stop();stdin.resume();});}else if (key && key.name == "left"){stdin.pause();client.counterClockwise(0.35);client.after(10,function(){client.stop();stdin.resume();});}else if(key && key.name == "right"){stdin.pause();client.clockwise(0.35);client.after(10,function(){client.stop();stdin.resume();});}else if(key && key.name == "s"){stdin.pause();client.stop();client.after(50, function(){stdin.resume();});}}});process.on('exit', function(){console.log('Exiting...');})stdin.setRawMode(true);stdin.resume();
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.