Portée plus de 50 m annoncé par le fabricant.
4 mars 2014

Autopilotage : AR Drone & OpenCv

ardrone L’objectif de ce tutoriel est de montrer comment faire suivre à l’AR. Drone 2.0 un ballon vert à l’aide des scripts du Dr Simon Levy
Ces scripts Python et C nécessitent  :

  • ARDrone SDK 2.0
  • Python 2.7
  • OpenCV
  • Linux Ubuntu

Le principe est assez simple : à l’aide de la bibliothèque OpenCv Python on va déterminer le centre de gravité des pixels « verts » de l’image, puis on calcule le déplacement qu’il faut effectuer pour que ce centre de gravité se trouve au centre de l’image capturée par la caméra frontale de l’AR. Drone. Cette dernière étape se fait via l’API fournit par Parrot le SDK 2.0.

1. Installer AR. DRONE Open Api

Après avoir téléchargé et décompressé l’archive ARDrone_SDK_2_0_1.tar.gz sur la page du https://projects.ardrone.org/ pour compiler les sources C :

    • Le minimum pour compiler des sources :
 
sudo apt-get install build-essential
    • Les dépendances

Dans un Terminal lancer les commandes ci-dessous :

sudo apt-get install libgtk2.0-dev libsdl1.2-dev libiw-dev libxml2-dev  libudev-dev libncurses5-dev libncursesw5-dev
    • Éditer le fichier ARDrone_SDK_2_0_1/ARDroneLib/Soft/Build/custom.makefile avant de compiler.
      il faut préciser l’ OS en passant de no à yes

 

 USE_LINUX = yes
    • Il ne reste plus qu’à compiler dans le répertoire /ARDrone_SDK_2_0_1/ARDroneLib/Soft/Build  on exécute
      make
    • Maintenant on compile l’exemple ardrone_navigation dans le répertoire /ARDrone_SDK_2_0_1/Examples/Linux/Navigation/Build éditer le fichier « Makefile », pour ajouter la ligne suivante aux environs de la ligne 159 :
      GENERIC_LIBS+= -lm

      Ensuite on compile

      make
    • Il ne reste plus qu’à tester l’installation. Mettre le drone sous tension, se connecter au wifi du drone, brancher une manette ou joystick.
    • Dans le répertoire /ARDrone_SDK_2_0_1/Examples/Linux/Build/Release/  lancer
./ardrone_navigation

2. Autopylot Compiler et utiliser les scripts Dr Simon Levy

Tous les scripts et infos proviennent de la page  http://home.wlu.edu/~levys/software/ardrone_autopylot/

    • Dans un premier temps et si ce n’est pas déjà fait on installe OpenCv et Python-dev
sudo apt-get install python-dev 
sudo apt-get install python-opencv
    • Télécharger et décompresser l’archive ardrone_autopylot dans le répertoire ARDrone_SDK_2_0_1/
    • Il est nécessaire de préciser le type de Gamepad qui va être utiliser pour cela on doit récupérer son identifiant avant de compiler les sources C.Brancher votre gamepad dans un Terminal saisir
       lsusb

      noter cet identifiant, dans mon cas il s’agissait d’un ThrustMaster id : 044fb320

      puis modifier l’identifiant hexadecimal du gamepad en éditant ARDrone_SDK_2_0_1/ardrone_autopylot/autopylot.makefile

      j’ai commenté la ligne 27 GAMEPAD = GAMEPAD_LOGITECH_ID=0x046dc215
      j’ai décommenté la ligne 28 et modifié l’identifiant GAMEPAD = GAMEPAD_PS3_ID=0x044fb320

    • Toujours dans le fichier autopylot.makefile ligne 24 indiquer dans quel répertoire ce
      trouve le Ardone SDK, pour moi ça donne
SDK_DIR:=/home/ubuntu/ARDrone_SDK_2_0_1/
    • Télécharger et Placer les deux scripts Python greenball_tracker.py and autopylot_agent.py
      dans le même répertoire ARDrone_SDK_2_0_1/ardrone_autopylot/. Puis il faut ajouter ce répertoire à la variable d’environnement PYTHONPATH pour qu’à la compilation des sources C il trouve nos deux scripts Python
export PYTHONPATH=$PYTHONPATH:chemin du repertoire ou vous avez installé les 2 scripts python  
    • Reste plus qu’à compiler dans un Terminal :
make
    • Maintenant on doit avoir un exécutable ardrone_autopylot

Une fois qu’on a connecté le drone en WIFI, on lance ./ardrone_autopylot puis avec le gamepad 9 start pour démarrer le drone et 4 carré pour débuter l’autopilotage et c’est à vous de jouer.

Voici une petite démo réalisée avec mes enfants et un de leur copain :

Prolongements Possibles

AR. Drone devant la télé, avec le script de détection de Visages.

AR. Drone devant la télé, avec mon script de détection de visages. Flippant !

je travaille aussi sur la détection de visage avec OpenCV. À l’aide du flux vidéo de l’AR. Drone on peut identifier des visages. Il suffit d’adapter le script greenball_tracker.py pour avoir un drone suiveur de visages. Plutôt flippant, non ?. Idem pour des formes le drone suivra par exemple un cercle. On pourra alors le guider avec un cerceau par exemple. Bons projets.