Coder son propre drone et le rendre intelligent avec JavaScript

Avez-vous déjà rêvé de coder un drone, le votre ? Parrot, avec son Ar.Drone 2.0 vous le permet. Et avec la sortie des nouveaux drones de la célèbre marque Française Parrot, l’Ar.Drone se vend pour quasiment rien !

De plus, je vous propose de coder en Javascript qui est un langage assez simple à prendre en main. Attachez vos ceintures, ont décollent !

Pour les incultes (je rigole 🙂 ) coder un drone n’est pas à but « pratique » mais réellement dans le sens d’un bidouilleur geek. Mis à part que, en codant son drone, nous pouvons le rendre « intelligent », ou plutôt « autonome » en l’automatisant pour certaines actions.

Je pars du principe que vous disposez déjà d’un Ar.Drone 2.0, la manipulation est sensée fonctionner aussi avec les 1.0, mais je ne vous promets rien.

Installer Node.js

Comme dit plus haut, nous allons utiliser Javascript par Node.js. C’est un petit interpréteur Javascript et très léger qui s’utilise en ligne de commande.

Pour le télécharger, rendez-vous ici puis installez le. Lorsque vous l’exécutez, Node.js ressemble à ça :

node.js console lignes de commande

L’interface de Node.js

C’est une console. Ce n’est pas évident à utiliser du premier coup d’oeil, mais vous comprendrez aisément que c’est d’une simplicité déconcertante une fois qu’on a compris comment ça marche.

Il faut aussi installer la bibliothèque nécessaire pour que l’Ar.Drone soit détecté par Node, qui s’appelle « NodeCopter ».

Pour cela, allez dans l’invite de commande (recherchez CMD dans le menu démarrer sous Windows), tapez cd chemin/vers/node (dans mon cas, cd C:\Program Files\nodejs), entrée, puis npm install ar-drone.

Pour contrôler votre Ar.Drone depuis votre ordinateur, branchez la batterie, attendez 30 secondes et recherchez le ensuite dans vos réseaux WiFi.

Wifi ArDrone connexion

Contrôlez votre Ar.Drone avec Node.js et NodeCopter

Après avoir installé la bibliothèque NodeCopter et vous être connecté au réseau WiFi, démarrez Node.js et entrez les lignes de commandes suivantes :

var Drone = require("ar-drone");
var Sender = Drone.createClient();

Ces deux lignes permettront à votre programme de contrôler le drone. On se servira ensuite de Sender pour envoyer des instructions à notre engin.

Par exemple, essayez ces deux lignes, l’une après l’autre, pour faire respectivement décoller et atterrir le drone :

Sender.takeoff();
Sender.land();

Attention, l’exécution est instantanée : dès que vous appuyez sur entrée, le drone va décoller. Prévoyez donc une pièce dégagée, et la coque d’intérieur pour ne pas abîmer ni le drone ni les éléments extérieurs.

Vous avez désormais compris à quoi servait la console Node.js : on peut saisir du code directement dedans.

Vous pouvez aussi essayer la commande suivante, pour faire tourner le drone :

Sender.clockwise(0.5);

Ou carrément lui faire faire un flip :

Sender.animate('flipLeft', 15);

Les scripts pour que le drone soit « autonome »

La console ainsi que tout faire manuellement, c’est bien. Mais automatiser, c’est mieux !

Je vous invite à télécharger Notepad++, bien que ce ne soit pas obligatoire : vous pouvez tout faire au bloc-note, ce petit éditeur de texte minimaliste de Windows !

Rentrons dans le vif du sujet : jusqu’ici, vous codiez avec des commandes dans une console. Maintenant, on va commencer à vraiment coder, c’est-à-dire à créer des scripts : des listes de commandes qui s’exécutent toutes seules, les unes à la suite des autres.

Par exemple, vous voulez que votre drone décolle et que 2 secondes plus tard il fasse un tour sur lui même et que 3 secondes plus tard il atterrisse.

Pour que le programme attende, il faut utiliser Sender.after(temps, function() {}), en mettant le code à exécuter entre les accolades. Dans les accolades, Sender est renommé en this (ce qui veut dire « ce truc là » en anglais) car c’est sur ce Sender qu’on demande au programme d’attendre.

Et, dans notre exemple, on mettrait ça dans Notepad++ (ou le bloc note) :

var Drone = require('../Program Files/nodejs/node_modules/ar-drone');
var Sender = Drone.createClient();
// Sender.takeOff();
Sender.after(2000, function() {
this.clockwise(1.0);
});
Sender.after(3000, function() {
 this.land();
});

Enregistrez ce programme sous le nom de ScriptDrone.js (le nom importe peu, mais il faut que l’extension soit .js) dans un emplacement facilement repérable. Pour l’exemple je vais prendre C:\Drone\.

Sauvegarder script js

Sauvegarder le script

Vient ensuite le moment de l’exécuter : cela ce fait sous la console Windows (CMD), c’est pour cela qu’il est important de garder un chemin court (plus rapide).

Dans la console Windows, vous devrez écrire node chemin\vers\votre\script.js, et donc dans le cas de l’exemple que je vous ai donné : node C:\Drone\ScriptDrone.js.

Et là, comme par magie, votre drone s’anime !

Pour aller plus loin, vous pouvez apprendre le JavaScript et Node.js sur OpenClassrooms, et aller voir toutes les fonctions disponibles sur le site de NodeCopter.

Share this post

  1. Pixel Conscient 27 septembre, 2015 at 15:42

    Très intéressant cet article ! Ça donne envie d’avoir un AR drone et d’essayer de lui faire faire des circuits aériens de manière autonome 😉
    Mon blog a pour sujet l’ère numérique de manière générale seriez-vous intéressé par un échange de liens ? Je sens une certaine compatibilité ! 😉

  2. Drones | Pearltrees 16 octobre, 2015 at 11:15

    […] Coder son propre drone et le rendre intelligent avec JavaScript. Avez-vous déjà rêvé de coder un drone, le votre ? Parrot, avec son Ar.Drone 2.0 vous le permet. Et avec la sortie des nouveaux drones de la célèbre marque Française Parrot, l’Ar.Drone se vend pour quasiment rien ! De plus, je vous propose de coder en Javascript qui est un langage assez simple à prendre en main. Attachez vos ceintures, ont décollent ! Pour les incultes (je rigole ) coder un drone n’est pas à but « pratique » mais réellement dans le sens d’un bidouilleur geek. Je pars du principe que vous disposez déjà d’un Ar.Drone 2.0, la manipulation est sensée fonctionner aussi avec les 1.0, mais je ne vous promets rien. […]

  3. Ned 16 novembre, 2015 at 09:01

    bonjour,

    merci pour cet article pour le moins alléchant 🙂
    Juste une question : dans l’article vous mentionnez

    « Dans les accolades, Sender est renommé en this (ce qui veut dire « ce truc là » en anglais) car c’est sur ce Sender qu’on demande au programme d’attendre. »

    or le code d’exemple qui suit est

    « Sender.after(2000, function() {
    Sender.clockwise(1.0);
    }); »

    ne devrait-ce pas être

    « Sender.after(2000, function() {
    this.clockwise(1.0);
    }); »

    ?

  4. Hakim 5 février, 2016 at 12:46

     » l’Ar.Drone se vend pour quasiment rien ! » 250 euros pour toi c’est quasiment rien ? ..
    de plus, quels sont les drones compatible ? obligatoirement un Ar drone ? ils sont super cher.

  5. Baptiste HUTTEAU 5 février, 2016 at 20:37

    300€ pour un paquet de pâtes c’est énorme. 300€ pour un drone avec un Linux embarqué, 2 caméras donc une HD, une liaison WiFi, un gyro, un capteur à ultrasons, et j’en oublie, c’est on ne peut plus raisonnable, surtout si tu m’apprends qu’on peut l’avoir pour 250€. On ne parle pas d’un drone de 10cm. Cela dit, va voir le prix des hélicos de modélisme, ou même des drones un peu plus haut en gamme, tu m’en diras des nouvelles.

    Oui, seuls les Ar.Drone sont compatibles. Il existe des bibliothèques compatibles avec plus de drones, mais ça ne s’adresse plus à des grands débutants comme ici.

    Si tu les trouves « super cher », sache qu’il existe des drones dans toutes les gammes de prix. Cependant, n’espère pas les coder, en particulier si tu ne veux pas bouger de ton clavier. Les drones IR doivent pouvoir se contrôler avec une Arduino/RaspberryPI, mais encore une fois, c’est pas orienté grand débutant. Après, d’occasion, ça doit se trouver (après une recherche de 5 secondes sur Google, je trouve un ArDrone 2.0 Snow Edition pour 150€, et un ArDrone 1.0 pour 100€, sur LeBonCoin).

    Ce mini tuto se veut pour tout le monde, et sans achat de matos (outre le drone en lui même). Ainsi, je n’ai pu couvrir que l’Ar.Drone. Cela dit, avec notre grand ami Google, tu trouveras aisément ton bonheur si tu as déjà un drone à très bas prix.

    J’espère t’avoir donné satisfaction, bonne soirée !

Post a new comment