Programming autonomous flight for multiple drones


#1

Hi there,

I am brand new to drones/development and I was hoping someone advise me regarding the best drone to get or the limitations of different approaches.

My story is that I am a software developer and I am helping a friend of mine who is creating an art exhibition 6 weeks from now. It is a closed space and the idea would be to have several drones flying around in a “fly like” manner. There would be no people in the room itself but visitors would be able to look in through windows all across the space.

It seems to me that the parrot line of drones fit my needs as they support indoor flight out of the box and also have an open client API for programatic flight.

So far I have purchased the Mambo FPV to test and play with. I have tried a few javascript (nodejs) libraries with limited success so far. These all have connected to the drone over BLE. I have also found the excellently documented https://pyparrot.readthedocs.io which has actually taught me alot about the various sensors available on the mambo but have not tried it yet as I am not so familiar with python.

So to my questions:

  1. Firstly, has anyone ever done anything similar to this, are my plans unrealistic? Forgetting for the moment the short battery life and the issues arising from that, is the sensor data and rate at which it is sent accurate enough for me to avoid things such as collisions with walls and/or other drones?
  2. Connecting via BLE seems like it would be easier to do as I can connect to multiple devices without the restraint of joining each individual drone’s wifi network, but as I understand it not all sensor data is sent via this method. Is it true that the altitude is only available on WIFI?
  3. Does anyone have any suggestions as to the best way to connect to multiple drones via wifi? I was thinking maybe I could connect via multiple external wifi dongles but I’m not sure how reliable that would be. My experience so far (via free flight mini app) has been that connecting and controlling the drone via wifi has been quite flakey. I often find i am constantly restarting the drone, app and reconnecting/disconnecting to the drones wifi network and sometimes it “works” and other times it doesnt.

And of course, if anyone has another general advice I would supper appreciate all input.

Thanks!


#2

BLE is certainly the easiest to handle multiple drones on the same computer but it is very limited on sensor data. You can estimate position using the speed_x, and speed_y but they are very noisy due to the 2Hz sensor rate (please please @Jerome and @Djavan fix this!). I had the students doing multi-drone communication using a wifi connection in my class last semester but it was a bit of a hack (but hey, it worked). We had a separate laptop for each drone and then connected the laptops using USB. If you are interested, I can get you the technical specifications on what we used to make that approach work. It isn’t just a USB cable to a USB cable.

p.s. I’m glad you like my project!


#3

Hello! The technical specifications you mention would be very helpful indeed, thank you! Could you make them public…or what is the best way to contact you regarding that ? I suppose in a class room environment you already had enough laptops for the task…I wonder if I could substitute a few raspberry pi’s each with a wifi module running pyparrot to achieve the same effect…another thing to learn I guess, but thats also the fun part - I am sure your students really enjoy your lessons!

I think in the meantime I will look to getting pyparrot up and running on my mac to see the sensor data over wifi for myself. I apologise in advance for any stupid issues I may raise on github over the next coming weeks :slight_smile:


#4

My email is easily findable on the GitHub repository. I’ll dig up the part numbers for what we ordered. It involved a tiny bit of soldering also but I can send photos of what we used when you email!


#5

Forgot to update this, in the end I’ve managed (i think) to prove a working concept with a bunch of raspberry pis each connected to a drone via WiFi and in turn connected to eachother (and my laptop) via LAN. Current plan is to set up a python websocket server on each Pi to accept commands and relay sensor data, I will update this thread in future with my progress in case its of interest to anyone else!

ps: we also decided to go for the bebop2 due to battery concerns regarding the mambo, luckily though your library is also working like a charm for that too, really great work!