A lot of other groups have posted interesting solutions for controlling multiple quads. The AR.Drones use 802.11 wireless networks for control, feedback, and video; some solutions we examined focus on reconfiguring all quads to use a common network and then use multiple computers to control them. Others go a step further and allow control of multiple quads from a single computer. However, no solution that we've encountered allows both control and feedback/video of multiple quads from a single computer (at least, not using stock AR.Drone firmware).
One of the students, Brenton Campbell, and I set out to
I should note that this solution draws on insights gleaned from the above-referenced posts, and also:
The solution described herein might void warranties, violate license agreements, and (though exceedingly unlikely) render your AR.Drone unusable. My description assumes a fair amount of familiarity with Linux, comfort using the command line, and a bit of C and Python programming skill. Use this information and code at your own risk!
The solution can be broken into three steps, each of which I discuss below:
- Reconfiguring network settings on individual AR.Drones
- Remapping UDP ports to unique ground-side port numbers
- Modifying the AR.Drone SDK and ardrone_autonomy package to customize UDP ports
Update 3/26/2014 - Following a discussion thread on the ardrone_autonomy GitHub project, another contributor, Kenneth Bogert, discovered an alternative to steps 2 and 3 above. It turns out that when the computer sends UDP probe datagrams to a quad's video and navdata ports, the quad captures the source ports and uses them as its destination ports. By modifying the SDK to use ephemeral client-side ports, both video and navdata work and no port remapping is necessary. Kenneth posted a pull request with his modifications here.
Update 11/20/2014 - An updated version of Kenneth's pull request was merged into ardrone_autonomy on the 9th.
Update 11/20/2014 - An updated version of Kenneth's pull request was merged into ardrone_autonomy on the 9th.