-
-
Save bearoff/982a8ecbb786f68c5306c47358e4b5ab to your computer and use it in GitHub Desktop.
drone FORK!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const pdrone = require('pdrone'); | |
const drone = pdrone({id: 'mambo', debug: false}); | |
var f_long = true; | |
/** Helper function */ | |
function sleep(ms) { | |
return new Promise(a => setTimeout(a, ms)); | |
} | |
function sleepTillTact(tact_num) { | |
var curr_ts = Date.now() / 1000; | |
var shift = 4 * (tact_num-3); | |
if (f_long) { | |
shift = 4 * (tact_num-1); | |
} | |
var desired_ts = started_time + shift; | |
var sleep_time = desired_ts - curr_ts; | |
if (sleep_time <= 0) { | |
sleep_time = 0.001; | |
} | |
return sleep(sleep_time * 1000); | |
} | |
function stop_moving(drone) { | |
drone.fly({ | |
roll: 0, | |
pitch: 0, | |
yaw: 0, | |
gaz: 0 | |
}); | |
} | |
var started_time; | |
drone.on('connected', async () => { | |
try{ | |
// drone.flatTrim(); // use flatTrim() everytime you want the drone to calm down | |
drone.takeOff(); | |
await sleep(1000); | |
drone.fly({ | |
roll: 0, | |
pitch: 0, | |
yaw: 0, | |
gaz: 50 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleep(1000); | |
drone.flip({direction: 'front'}); | |
await sleep(1000); // before-tact, 1 sec | |
started_time = (Date.now() / 1000); | |
if (f_long) { | |
await sleepTillTact(3); | |
drone.flip({direction: 'back'}); | |
await sleepTillTact(4); | |
drone.flip({direction: 'front'}); | |
} | |
await sleepTillTact(4.5); | |
drone.flip({direction: 'front'}); | |
await sleepTillTact(5); | |
drone.fly({ | |
roll: 100, | |
pitch: 0, | |
yaw: 0, | |
gaz: 25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(6); | |
drone.fly({ | |
roll: -100, | |
pitch: 0, | |
yaw: 0, | |
gaz: 0 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(7); | |
drone.fly({ | |
roll: 0, | |
pitch: 100, | |
yaw: 0, | |
gaz: 0 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(8); | |
drone.fly({ | |
roll: 0, | |
pitch: -100, | |
yaw: 0, | |
gaz: 0 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(9); | |
drone.fly({ | |
roll: 0, | |
pitch: 0, | |
yaw: 100, | |
gaz: 50 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(10); | |
drone.fly({ | |
roll: 0, | |
pitch: 0, | |
yaw: 100, | |
gaz: 50 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(11); | |
drone.fly({ | |
roll: 0, | |
pitch: 0, | |
yaw: 100, | |
gaz: -50 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(12); | |
drone.fly({ | |
roll: 0, | |
pitch: 0, | |
yaw: 100, | |
gaz: -25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(13); | |
drone.fly({ | |
roll: 100, | |
pitch: 0, | |
yaw: 0, | |
gaz: 25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(13.5); | |
drone.flip({direction: 'left'}); | |
await sleepTillTact(14); | |
drone.fly({ | |
roll: -100, | |
pitch: 0, | |
yaw: 0, | |
gaz: -25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(15); | |
drone.fly({ | |
roll: -100, | |
pitch: 0, | |
yaw: 0, | |
gaz: 25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(15.5); | |
drone.flip({direction: 'right'}); | |
await sleepTillTact(16); | |
drone.fly({ | |
roll: 100, | |
pitch: 0, | |
yaw: 0, | |
gaz: -25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(16.5); | |
drone.flip({direction: 'front'}); | |
if (f_long) { | |
// basic position | |
await sleepTillTact(17); | |
drone.fly({ | |
roll: 100, | |
pitch: 0, | |
yaw: 25, | |
gaz: 25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(18); | |
drone.fly({ | |
roll: -100, | |
pitch: 0, | |
yaw: -25, | |
gaz: -25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(19); | |
drone.fly({ | |
roll: -100, | |
pitch: 0, | |
yaw: -25, | |
gaz: 25 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
await sleepTillTact(20); | |
drone.fly({ | |
roll: 100, | |
pitch: 0, | |
yaw: 25, | |
gaz: 0 | |
}); | |
await sleep(1000); | |
stop_moving(drone); | |
// basic position | |
} | |
await sleep(1000); | |
drone.flip({direction: 'front'}); | |
await sleep(1000); | |
drone.land(); | |
await sleep(1000); | |
drone.emergency(); // immediately stops the drone, that's what is inside stop.js | |
await sleep(1000); | |
} catch (e) { | |
console.log(e); | |
} | |
process.exit(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment