Minidrone-js - Parrot Minidrone library


#1

Over the last two weeks I’ve been building a new Parrot Minidrone library. It uses the Bluetooth command protocol and is really easy to use. It parses the xml spec to build commands and parse drone responses so it’s really easy to use.

I’ll be working on it some more once I’ve ordered new motors for my drone.

Documentation:
Documentation can be found here: https://mechazawa.github.io/minidrone-js

Example code:

const {DroneConnection, CommandParser} = require('minidrone-js');

const parser = new CommandParser();
const drone = new DroneConnection();


/* 
 * Commands are easily found by reading the xml specification
 * https://github.com/Parrot-Developers/arsdk-xml/blob/master/xml/
 */
const takeoff = parser.getCommand('minidrone', 'Piloting', 'TakeOff');
const landing = parser.getCommand('minidrone', 'Piloting', 'Landing');
const backFlip = parser.getCommand('minidrone', 'Animations', 'Flip', {direction: 'back'});



drone.on('connected', () => {
  // Makes the code a bit clearer
  const runCommand = x => drone.runCommand(x);

  runCommand(takeoff);

  setTimeout(runCommand, 2000, backFlip);
  setTimeout(runCommand, 4000, landing);
  setTimeout(process.exit, 5000);
});

#2

Hi @Mechazawa, this seems like one of the most advanced and up-to-date library out there.

Did you take inspiration from other libraries?

I am currently in the look for a JavaScript easy to use library to control a Parrot mambo with claw and canon on MacOS sierra.

So far most of the libraries I found are either:

  • imcomplete (missing commands, only wifi)
  • not working on high sierra (seems like recent changes in noble should make it work)
  • not maintained

Can you give me a bit more insights on your own library, will those issue ^ be solved?

Here are the libraries I had found (sorry cannot put direct links because forum rules, those are GitHub repos):

  • RIAEvangelist/node-parrot-drone (automatically parses XML files, but only wifi)
  • fetherston/npm-parrot-minidrone (missing commands, canon, claw)
  • gandhimonik/DroneJS (no mambo support?)
  • voodootikigod/node-rolling-spider (has mambo support, but missing commands and unmaintained)
  • Other libraries in python were Linux only

I will give a try at your library this weekend and tell you more. In the meantime I would love to hear some of your comments. Thanks!


#3

I have a python library that is fully functional and works across Mac/windows/linux.


#4

@CaptainSaavik thanks for chiming in, but I am specifically looking for a library that works on mac for Parrot mambo mission (bluetooth only so wifi out) and your library states:

If you want to use the BLE interface, it will work on older Mambos (without the FPV camera) but it will require a linux machine


#5

You are not reading that right. It works on Mac using wifi. That is what I do ALL my development on. @vvo


#6

You are reading the “if”. The main purpose is wifi. Unsure how to make that more clear…


#7

Hey,

To answer your questions:

  • It supports all commands but only works on bluetooth. I don’t have a Mambo FPV or something so I’m unable to test wifi connections.
  • It works just fine of High Sierra, I’ve made sure of that.
  • I’m currently maintaining it and I’ll be doing some more development for it as soon as my new drone motors arrive.

I’ve focused on mambo support but adding support for other devices is as easy as making sure they’re bundled during the build. I still have to find a clean way of lazy loading in the xml files but that should be easy enough.
http://minidrone-js/issues/4

In my experience other libraries didn’t work the way I wanted them to so I made my own when I had a little bit of free time.


#8

I fixed the description to be more clear:

Parrot Mambo: If you use the wifi interface, it requires a Mambo FPV (e.g. you need the camera). The wifi interface will work on Mac, Linux, or Windows.


#9

@CaptainSaavik I think @vvo only want to use BLE.
So, according to the description of your library, he can’t use it on MacOs if he wants to only use BLE communication.


#10

Correct. I mis-read him to have wifi. but he clarified and only has BLE so one won’t work.


#11

Hi @Mechazawa, I tried your library, the drone connection works well but then commands are not doing anything. Asking for TakeOff is not doing anything. Are you sure about the command format?

Let me know!

I solved those and left you comments in the repo.


#12

Building on minidrone-js I made https://github.com/algolia/pdrone. We used it at a programming event with success. Only the position information seems completely off but it’s either the drone or the reading of messages that is broken.

I have no idea :slight_smile:


#13

Thanks @vvo we will look into this!