Formation control of a team of drones

I have recently defended my PhD thesis titled "Distributed formation control for autonomous robots". Now I am wrapping up the results in the form of videos. Here it is just one of these results.

In the following video I show how a single control law for a team of drones can achieve simultaneously a desired shape, orientation and translational motion. By single I mean no cascade or different controllers. In fact it is just a single line of code.

The required information is very minimal. The drones can work in their own frames of coordinates, they do not need to share (communication) information, and they only interact locally with their neighbors but still achieve a global goal.

All the mathematical stuff, proofs, algorithm, etc can be found in the manuscript of the thesis. 

Sorry for the resolution of the video, but I was running four instances of X-Plane at the same time in my computer xD.

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • It's hard to say but surely interests me. Let me know if you have any thoughts on it and congratulations to your successful graduation!

  • Hi Garcia,

    Thank you for your quick response. I think I get what you mean. We modeled the quad as point mass and from the formation control law we get desired acceleration that turns out to become a feedforward desired attitude for quad to track. Similarly given desired velocity from a formation control law, quad's on board controller will track this desired velocity instead. From here I become interested in which will perform better, acceleration or velocity in practice. I'm also wondering if we're able to have both desired velocity and acceleration to do formation control, maybe it gives even better performance. 

  • Hi Zhen Jia,

    in particular, in this experiment the control action is giving the desired attitude angles ("feedforward accelerations"). 

    If you check in Chapter 7, Table 7.3, page 126 (xD), you will see that the algorithm can be tailored for giving either desired velocities or accelerations.

  • Hi good work but I wonder if your control law only gives the desired acceleration and no desired position and velocity computed for each individual quad. I ask this because in practice, maybe controlling the acceleration is often hard to get good performance. Thank you.

  • Hi Patrick,

    no, the control is completely autonomous. In this video I am running four XPlane-9 (one per each drone). They are in the same computer, but in practice they only need to be reachable in the network.

    I have a C++ program that runs four instances of the class "quadcopter". Each quadcopter has associated one simulator (so you can read from it and send commands to the motors) and their corresponding sensors (where we add noise and non perfect calibration). In addition to the standard sensors such as IMU or compass, we also include the relative position w.r.t. their neighbors (in the corresponding frame of coordinates of the quadcopter).

    The quadcopters also have an attitude controller. I have written a very simple one in order to control the accelerations at the body frame of the quadcopter.

    The algorithm that you see in the video is providing the setting points for the desired accelerations of the quadcopter, and this signal feeds the attitude controller. In fact, in order to keep the demonstration simple, as you can observe in the video, the vertical motion (altitude) has been decoupled from the lateral one.

    At certain point I guess I will release the C++ code... but to be honest, there are already too many examples out there about how to interface X-Plane.


    p.d. sorry about the multiposting, I do not know why my browser does not like so much this editor.

  • Hi, how to control all drones? do you use a serial communication to the Transmitter from each drone? maybe Taranis can control from outside ?

  • MR60

    Hello Hector, thx very much for the explanation. It is quite impressive what you've done !

  • Btw Hunges,

    I forgot to mention what are the practical consequences of these findings. It means that the drones do not need to share a common North, therefore if they have sensors installed on board, they do not need to be aligned or calibrated w.r.t. the ones from their neighbors (speaking about orientation).

    In fact, in the first part of my thesis I also proof that they do not need to be calibrated for the range/distance either. For example, the distance between A and B is 5, but A is measuring 5.1 and B is measuring 5, i.e. the range sensor of A is not well calibrated. It turns out, that the algorithm is robust against such an issue (without requiring exchange of information at all).

    Summarizing, you can install a "cheap" non-calibrated camera in A and a good one in B. The algorithm is still robust. Of course, this is just a particular example. In general we are talking about an arbitrary number of drones and sensors.

    Let me know whether you have further questions :P. I am happy to talk about these things.

  • Hi Hunges, 

    I will try to clarify your question (a good and fair one by the way).

    Consider two neighboring guys A and B with positions pA and pB w.r.t. a global frame of coordinates. The relative position (pA-pB) can be represented in an arbitrary frame of coordinates, either a global one (GPS) or in a local one. For example, the frame of coordinates of A can be located in an arbitrary position with an arbitrary orientation.

    Both guys, A and B need to know their relative position but each one w.r.t. their own frame of coordinates, i.e. same concept but with a different representation. For example, if I stay in front of you, for me my left is your right. What do I mean by "no communication"? How A tells B, hey man, let us go to the right? It turns out that in this algorithm they do not need such a thing. Both, A and B, have their own different understanding about the information, and they only do care about their own understanding.

    In fact, all the sensing can be done locally on board without an explicit communication link, i.e. to exchange information between the guys. You may believe this is trivial, but when you are adding more and more complexity/capabilities to an algorithm, it is not anymore.

  • MR60

    when you say "they do not need to share (communication) information, and they only interact locally with their neighbors", isn't it a contradiction ? if they interact, they obviously share information via vision or sonar or radar or ?

This reply was deleted.