UFR DES SCIENCES

Node.js et Leap Drone

Procédure d’installation et d’utilisation

Jaleed RIAZ 12/13/2013

Ce document a pour but de vous pré senter la dé marche per mettant d’installer et utiliser le paquet Node Package Manager (NPM) et Node.js pour pouvoir interagir avec l’AR drone à l’aide du Leap motion. Sommaire Introdution ...... 2 Moteur V8 ...... 2 Le modèle non bloquant ...... 2 Procédure d’installation et d’utilisation du paquet ...... 3 Sous Windows ...... 3 Sous ...... 3 Sous Mac ...... 3 Leapdrone-master ...... 4 Connexion en mode sécurisé WPA2 ...... 4 Phase de test ...... 5 Erreurs ...... 6 Erreur 1 : ...... 6 Erreur 2 : ...... 6 Erreur 3 : ...... 7

1

Introdution

Node.js est un environnement côté serveur permettant de programmer du JavaScript sur le serveur, donc en dehors du navigateur. Le langage JavaScript étant toujours utilisé côté client jusque-là, grâce à Node.js, le développement côté serveur permettant de générer des pages webs est maintenant possible sans programmer avec les langages serveur. Node.js remplace donc les langages serveur tel que PHP, Java EE, etc. Il ne s’agit pas là d’un framework mais d’un environnement très bas niveau. Étant donné que le langage JavaScript est basé sur les évènements, de ce fait Node.js l’est aussi. C’est pourquoi, la création d’applications comme : un serveur de chat ou un système d’upload très rapide peuvent tirer profit de cet environnement de développement. La rapidité de Node.js vient du moteur V8 et son fonctionnement non bloquant. Pour en savoir plus sur cet environnement, Node.js dispose d’un site web : http://nodejs.org/

Moteur V8

Le moteur V8 est un outil open source crée par Google dont le rôle est d’analyser et exécuter du code JavaScript très rapidement. Avant la sortie de Chrome, les navigateurs perdaient beaucoup de temps à lire le code JavaScript et à le transformer en langage machine compréhensible pour le processeur. Cependant, le moteur V8 de réutilisé par Node.js fonctionne différemment. Il fait ce qu’on appelle de la compilation JIT ( Just In Time ). Il tranforme le code JavaScript très rapidement en code machine et l’optimise en utilisant des procédés complexes ( code inlining, copy elision, etc ).

Le modèle non bloquant

Prenons un exemple de programme dont le but est de télécharger un fichier sur Internet, d’afficher ce fichier et ensuite effectuer d’autres tâches. Avec le modèle non bloquant, le programme lance le téléchargement du fichier en question, effectue d’autres actions et une fois le téléchargement terminé, affiche le fichier. Une fonction appelée fonction de callback est appelée pour effectuer les actions (pour notre exemple, la fonction de callback va permettre d’afficher le fichier).

NPM est le gestionnaire de paquets de Node.js (équivalent de la commande apt sous linux mais pour les extensions Node.js) permettant d’installer de nouveaux modules (ou paquets) développés par la communauté. De plus, NPM gère également les dépendances des paquets, ce qui signifie que si un module requiert l’installation d’un autre module pour fonctionner, alors NPM le téléchargera automatiquement. NPM dispose d’un site web séparé à Node.js : http://npmjs.org

2

Procédure d’installation et d’utilisation du paquet

Sous Windows

Rendez-vous à l’adresse suivante pour installer Node.js : http://nodejs.org/download/

Choisissez la version correspondant à votre système d’exploitation. Si vous avez un doute, choisissez la version 32 bits. Néanmoins, vous pouvez télécharger le fichier .exe ou le .msi, le résultat restera le même. Une fois le téléchargement effectué, lancez-le et laissez-vous guider par les étapes. Pour l’utiliser, lancez « Node.js command prompt » : il s’agit d’un interpréteur de commande pour Windows.

Remarque : À l’installation de Node.js, le gestionnaire de paquets de Node.js (NPM) a également été installé avec.

Sous Linux

Pour l’installation sous Linux, il est recommandé d’installer plusieurs autres commandes si celles-ci ne figurent pas dans votre système. Il faudra peut-être télécharger installer les paquets python-software-properties, python, g++ et software-properties-common, pour cela, effectuez la ligne de commande suivante :

‹ sudo apt-get install python-software-properties python g++ ‹ sudo apt-get install software-properties-common

Ce dernier paquet (sotfware-properties-common) permet d’avoir la commande add-apt- repository, utile pour la suite.

Sur un terminal, tapez ces quelques commandes pour installer le paquet nodejs :

‹ sudo apt-get install python-software-properties python g++ make ‹ sudo add-apt-repository ppa:chris-lea/node.js ‹ sudo apt-get update ‹ sudo apt-cache showpkg nodejs ‹ sudo apt-get install nodejs

Remarque 2 : Le paquet nodejs installe également le gestionnaire de paquets à savoir NPM.

Sous Mac

La procédure d’installation est quasiment la même que sous Windows. Il suffit de se rendre sur le site de Node.js, sur la page de téléchargements :

3 http://nodejs.org/download/

Choisissez le .pkg, car celui-ci ouvre un assistant d’installation, facile d’utilisation.

Leapdrone -master

Afin de pouvoir piloter le drone avec le leap motion, il faut télécharger le paquet correspondant à l’adresse suivante : https://github.com/liebeskind/leapdrone

Ensuite, il suffit de décompresser l’archive dans un dossier. Si vous ne souhaitez pas établir une connexion sécurisé sur le réseau de votre drone ou bien si vous manipulez sous Windows, alors vous pouvez passer l’étape suivante et vous reporter à la Phase de test. Cette étape consiste à mettre en pratique les différents paquets et configuration mises au point jusque-là.

Connexion en mode sécurisé WPA2

La connexion en mode sécurisé WPA sur le réseau du drone est compatible uniquement sous Linux et Mac. Pour ce faire, rendez-vous à l'adresse suivante pour savoir la procédure d’installation du module : https://github.com/daraosn/ardrone-wpa2

Téléchargez le zip et décompressez-le et rendez-vous dans ce dossier. Effectuez les procédures d'installation comme indiqué sur le projet en ligne github à savoir :

‹ script/install

Si vous rencontrez une erreur du type : « curl : commande introuvable », reportez-vous à l’erreur n°3. Après avoir suivi les instructions indiquées à la section de l’erreur n°3, relancez la commande ci-dessus. Pour effectuer une connexion sécurisée WPA2, vous devez être connecté au réseau du drone au préalable, et effectuez la ligne de commande suivante :

‹ script/connect "" -p "" -a

-d

Pour avoir de l’aide :

‹ script/connect -h

4

Phase de test

Pour démarrer le drone, voici les étapes à suivre :

1. Sur votre console, vous devez vous rendre dans le dossier leapdrone-master précédemment extrait. 2. Positionnez votre main au-dessus du leap motion 3. Exécutez la commande suivante sur votre console : ‹ node server.js 4. Ensuite, vous devez simuler un clic gauche avec l’index de la main situé au-dessus du leap motion pour faire décoller le drone 5. Pour le diriger, une inclinaison de la main vers la droite, gauche, vers l’avant, ou l’arrière devrait avoir un effet notoire sur le drone dans les directions respectives. 6. Pour l’atterrissage, il s’agit de la même étape que pour le décollage : simulation d’un clic gauche avec l’index de la main situé au-dessus du leap motion

Pour en savoir plus sur le mode de pilotage, vous pouvez vous rendre à l’adresse suivante, qui explique brièvement en vidéo le fonctionnement : http://startupdestiny.com/2013/11/19/why-i-hacked-an-ar-drone-with-leap-motion-and- node-js-part-1-of-2/comment-page-1/#comment-149

5

Erreurs

Erreur 1 :

Si vous rencontrez des problèmes du type « npm http 304 … » pour installer un quelconque paquet, effectuez les lignes de commandes suivantes sur un terminal :

‹ rm ~/tmp

Ou bien

‹ sudo npm cache clear ‹ sudo npm install –g

Après avoir effectué l’une des deux méthodes, l’installation du paquet en question devrait fonctionner. Si l’erreur persiste, veuillez nous faire parvenir votre erreur afin que nous nous y mettions tous pour la résoudre.

Erreur 2 :

Si vous rencontrez une erreur du type « error this fails on your system : node-gyp clean rebuild… », alors deux hypothèses sont possibles :

- Soit le paquet node-gyp n’est pas installé - Soit il s’agit d’une erreur venant du paquet que vous souhaitez installer (par exemple nodecopter-leap) qui fait appel à node-gyp auquel cas une erreur est produit.

Dans le 1er cas , installez le paquet node-gyp en effectuant comme d’habitude la commande suivante :

‹ sudo npm install –g node-gyp

Si une erreur est produite, alors téléchargez le zip du paquet node-gyp à l’adresse suivante : https://github.com/TooTallNate/node-gyp Ensuite décompressez-le de préférence dans : ~/node_modules/ Et via un terminal, rendez-vous dans ce dossier pour effectuer la ligne de commande suivante :

‹ sudo npm install -g

(Ne pas donner de nom de paquet, car vous vous situez déjà dans le dossier du paquet à installer, donc la commande indiquer ci-dessus va regarder dans le fichier package.json pour voir les dépendances et effectuer l’installation du paquet). L’installation du paquet souhaité devrait fonctionner. Relancez la commande d’installation du paquet souhaité.

6

2ème cas : Si vous avez déjà installé le paquet node-gyp, et si l’Erreur 2 persiste toujours alors téléchargez le repository du paquet que vous voulez installer. Prenons comme exemple, le paquet « nodecopter-leap ». Rendez-vous donc à l’adresse suivante : https://npmjs.org/package/nodecopter-leap

Allez sur le lien github de ce projet, ou bien pour faire plus simple, allez à l’adresse suivante : https://github.com/gillesruppert/nodecopter-leap

Téléchargez le zip, et décompressez-le dans : ~/node_modules/ Sur un terminal, allez à l’intérieur de ce dossier après la décompression, et faites les lignes de commandes suivante (en root de préférence) :

‹ sudo node-gyp configure ‹ sudo node-gyp build ‹ sudo npm install

Erreur 3 :

Si vous rencontrez des erreurs « curl : commande introuvable », cela veut dire que le paquet curl n’est pas installé. Pour l’installer, il suffit d’effectuer la ligne de commande suivante :

‹ sudo apt-get install curl

7