Skip to content

Instantly share code, notes, and snippets.

@bearoff
Forked from saval/dronefly.js
Created June 24, 2018 16:45
Show Gist options
  • Save bearoff/982a8ecbb786f68c5306c47358e4b5ab to your computer and use it in GitHub Desktop.
Save bearoff/982a8ecbb786f68c5306c47358e4b5ab to your computer and use it in GitHub Desktop.
drone FORK!
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