arswarm is a set of bash and expect scripts to connect and configure multiple Parrot ar drones 2 on the same unencrypted network.
arswarm is distributed under the CeCILL-B license. In a few words, "if the initial program is under CeCILL-B, you can distribute your program under any license that you want (without the need to distribute the source code) provided you properly mention the use that you did of the initial program" (from the CeCILL FAQ ).
See the file LICENSE.txt for more information.
Gildas Morvan - mail - homepage
with Dylan Cossart, Julien Jonathan, Louis Mortreux and Nathan Planchez from the department GEII of IUT de BĂ©thune.
arswarm should run on macOS (Darwin) and Linux-based systems since Bash, Expect and a Telnet client are installed.
To connect multiple ar drones, first edit the arswarm.sh file.
Set the name of the wifi interface of your computer using the variable interface
(OS X: generally en0
or en1
; Linux : generally eth0
or eth1
). For instance:
interface=en1
Set the list of drone ids (last 6 digits of the drone SSIDs) to connect to using the variable ardronesnetworks
. For instance:
declare -a ardronesnetworks=(090658 290876)
Specify the name of the unencrypted network you want to connect to using the variable network. For instance:
network=DRONES
By default, the wifi access point IP address is supposed to be 192.168.1.1. The IP address of the computer that runs the script will be set to 192.168.1.2.
The drones IP addresses will be set to 192.168.1.3-x. It can be changed using the variable ip
.
Then, authorize the scripts to be executed
chmod a+x arswarm.sh arswarm.expect
Finally, run the main script
./arswarm.sh
You can now control all the drones at the same time using, e.g., using the node.js ar-drone module.
The following code
var arDrone = require('ar-drone');
var drones = [
arDrone.createClient({ip: '192.168.1.3'}),
arDrone.createClient({ip: '192.168.1.4'})
];
drones.forEach(function(drone){
drone.takeoff();
drone.after(6000,function(){
this.stop();
this.land();
});
});
should give something like this.