Skip to content

Instantly share code, notes, and snippets.

@iamnasirudeen
Forked from shaikh-shahid/voice.js
Created May 16, 2019 14:44
Show Gist options
  • Select an option

  • Save iamnasirudeen/b45bae4d52b75bf9937d3a7ed44afb46 to your computer and use it in GitHub Desktop.

Select an option

Save iamnasirudeen/b45bae4d52b75bf9937d3a7ed44afb46 to your computer and use it in GitHub Desktop.

Revisions

  1. @shaikh-shahid shaikh-shahid created this gist Mar 27, 2019.
    101 changes: 101 additions & 0 deletions voice.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,101 @@
    const express = require('express');
    const bodyparser = require('body-parser');
    var arDrone = require('ar-drone');
    const router = express.Router();
    const app = express();
    const commands = ['takeoff', 'land','up','down','goleft','goright','turn','goforward','gobackward','stop'];

    var drone = arDrone.createClient();
    // disable emergency
    drone.disableEmergency();
    // express
    app.use(bodyparser.json());
    app.use(express.static(__dirname + '/public'));

    router.get('/',(req,res) => {
    res.sendFile('index.html');
    });

    router.post('/command',(req,res) => {
    console.log('command recieved ', req.body);
    console.log('existing commands', commands);
    let command = req.body.command.replace(/ /g,'');
    if(commands.indexOf(command) !== -1) {
    switch(command.toUpperCase()) {
    case "TAKEOFF":
    console.log('taking off the drone');
    drone.takeoff();
    break;
    case "LAND":
    console.log('landing the drone');
    drone.land();
    break;
    case "UP":
    console.log('taking the drone up half meter');
    drone.up(0.2);
    setTimeout(() => {
    drone.stop();
    clearTimeout();
    },2000);
    break;
    case "DOWN":
    console.log('taking the drone down half meter');
    drone.down(0.2);
    setTimeout(() => {
    drone.stop();
    clearTimeout();
    },2000);
    break;
    case "GOLEFT":
    console.log('taking the drone left 1 meter');
    drone.left(0.1);
    setTimeout(() => {
    drone.stop();
    clearTimeout();
    },1000);
    break;
    case "GORIGHT":
    console.log('taking the drone right 1 meter');
    drone.right(0.1);
    setTimeout(() => {
    drone.stop();
    clearTimeout();
    },1000);
    break;
    case "TURN":
    console.log('turning the drone');
    drone.clockwise(0.4);
    setTimeout(() => {
    drone.stop();
    clearTimeout();
    },2000);
    break;
    case "GOFORWARD":
    console.log('moving the drone forward by 1 meter');
    drone.front(0.1);
    setTimeout(() => {
    drone.stop();
    clearTimeout();
    },2000);
    break;
    case "GOBACKWARD":
    console.log('moving the drone backward 1 meter');
    drone.back(0.1);
    setTimeout(() => {
    drone.stop();
    clearTimeout();
    },2000);
    break;
    case "STOP":
    drone.stop();
    break;
    default:
    break;
    }
    }
    res.send('OK');
    });

    app.use('/',router);

    app.listen(process.env.port || 3000);