Beispiel #1
0
client.on("connect", function () {
    		console.log('Connected to ATC server '+gatewayUrl );
			uav = bebop.createClient({ip:aircraftIP});
			if (testMode == true) {
				uavStatus.connected=true;
				updateFlightStatus();	
				console.log('Ready to fly');
			}
			else {
				uav.connect(function() {
					uavStatus.connected=true;
					console.log('Connected to aircraft. Binding events');
					createEventListeners();
					console.log('Applying settings.');
					updateUavSettings();
					updateFlightStatus();
					console.log('Ready to fly. You are cleared for takeoff.');
	
				});
			}
});
Beispiel #2
0
// Trying to create a replacement flight control app for the Parrot Bebop drone
// Based on example app using Cylon.js to communicate with drone
var cylon = require("cylon");
var bebop = require("node-bebop");
var broadwayplayer = require("broadway-player");
var fs = require('fs');
var drone = bebop.createClient();
var http = require("http");

var toUint8Array = function (parStr) {
  var raw = atob(parStr);
  var array = new Uint8Array(new ArrayBuffer(raw.length));

  Array.prototype.forEach.call(raw, function (data, index) {
    array[index] = raw.charCodeAt(index);
  })

  return array;
};

var player = broadwayplayer.Player();

drone.connect(function() {
    cylon.start();
  drone.on('video', function(data) {
      player.decode(toUint8Array(data.toString('base64')));
  });
});

// Sensitivity controls for left/right sticks
var stickSensitivity = 0.2;
Beispiel #3
0
var bebop = require('node-bebop'),
    realDrone = bebop.createClient(),
    _ = require('lodash'),

    allowedFns = 'on getPngStream'.split(' '),
    allowedObjects = 'GPSSettings WifiSettings'.split(' ');

var client = {
    connect: function(callback) {
        realDrone.connect(function() {
            console.error('Node lib connected to DRONE!\n')
            console.error('Dumping real drone methods:\n********* (HOW TF is e.g. "takeOff" missing????)\n');
            console.error(_.keys(realDrone).join(', '), '\n');
            realDrone.on('battery', _.bind(console.error, console, 'Battery:', _, '%'));
            callback.apply(client, arguments);
        });
    },
    ______REAL_DRONE: realDrone
}

// add allowed, delegated methods
_.each(allowedFns, function(fn) {
    client[fn] = function() {
        return realDrone[fn].apply(realDrone, arguments);
    }
});

// add allowed settings / objects
_.each(allowedObjects, function(v, objectName) {
    client[objectName] = realDrone[objectName];
});
app.on('ready', function() {

  win = new browserWindow({
    width: 800,
    height: 600,
    resizable: true,
    show:false
  });

  win.loadUrl('file://' + __dirname + '/www/index.html');

  var webContents = win.webContents;
  webContents.on('did-finish-load', function() {
    win.openDevTools();
    win.show();
  });

  win.on('closed', function() {
    win = null;
  });

  var drone = bebop.createClient();

  drone.connect(function() {
    console.log("\n\n ** Connected to Drone ** \n\n");

    ipc.on('electron-message', function(event, arg) {
      switch (arg) {
        case "connect":
        event.sender.send('electron-message-reply', 'connect');
        break;
        case "takeOff":
        console.log("\ntakeOff\n");
        drone.takeOff();
        break;
        case "land":
        console.log("\nland\n");
        drone.land();
        break;
        case "stop":
        console.log("\nstop\n");
        drone.stop();
        break;
        case "up":
        console.log("\nup\n");
        drone.up(5);
        break;
        case "down":
        console.log("\ndown\n");
        drone.down(5);
        break;
        case "left":
        console.log("\nleft\n");
        drone.left(5);
        break;
        case "right":
        console.log("\nright\n");
        drone.right(5);
        break;
        case "forward":
        console.log("\nforward\n");
        drone.forward(5);
        break;
        case "backward":
        console.log("\nbackward\n");
        drone.backward(5);
        break;
        case "clockwise":
        console.log("\nclockwise\n");
        drone.clockwise(5);
        break;
        case "counterClockwise":
        console.log("\ncounterClockwise\n");
        drone.counterClockwise(5);
        break;
        case "frontFlip":
        console.log("\nfrontFlip\n");
        break;
        case "backFlip":
        console.log("\nbackFlip\n");
        break;
        case "rightFlip":
        console.log("\nrightFlip\n");
        break;
        case "leftFlip":
        console.log("\nleftFlip\n");
        break;
        case "emergency":
        console.log("\nemergency\n");
        drone.emergency();
        break;
      }
    });

  });

});