Installation

Pour l’installation de la plateforme vous devez disposer d’un PC Linux ou un Mac avec Wifi.

Jakopter est constituée d’un module central (« core ») requis pour toute installation. Ce module assure les fonctions de contrôle de l’AR Drone 2 (principalement, envoi de commandes et réception de données de navigation, dites navdata). Le module de réception/traitement du flux vidéo, ainsi que les bindings Lua de la bibliothèque, sont optionnels et nécessitent des dépendances supplémentaires.
Deux programmes annexes, leap et jakopter-keyboard, peuvent s’interfacer avec le module d’entrée utilisateur présent dans core pour permettre un contrôle intuitif du drone via, respectivement, le Leap Motion et le clavier. Des exemples d’interfaçage, écrits en Lua, sont disponibles dans le dossier scripts du répertoire de Jakopter.

Les dépendances pour les différentes installations possibles de Jakopter sont listées ci-dessous :

  • Installation basique (module de contrôle seul) :

cmake (≥ 2.8)
Compilateur gcc ou clang (toute version supportant le standard C99 devrait convenir).

  • Bindings Lua :

Lua ≥ 5.2 (sous Debian, Ubuntu et dérivés : liblua5.2-dev) ou 5.1.

  • Module vidéo :

SDL2 (libsdl2-dev)
SDL2_ttf (libsdl2-ttf-dev)

SDL2_image (libsdl2-image-dev)
libavcodec (libavcodec-dev)
libavutil (libavutil-dev)

ou alternativement à SDL2, ViSP.

Nécessite aussi libpostproc-dev.

  • Programmes de contrôle :
    • jakopter-keyboard : curses (libncurses5-dev)
    • leap : SDK Leap Motion (voir ici).
    • jakopter-vicon: Vicon Tracker SDK

Par défaut, le script Cmake active la compilation de tous les éléments dont les dépendances sont présentes.

Linux

Pour le téléchargement du logiciel : voir la page http://jakopter.irisa.fr/?page_id=32.

 

Une fois l’ensemble des éléments installés, dans le répertoire jakopter faire :

  1. cmake . (la configuration est remise à zéro avec le script ./clear_cmake_generated_files)
  2. make

 

Mac OS X

Sur Mac OS X vous devez aussi rajouter cette ligne LUA en début de chaque script :

package.cpath = package.cpath .. ";?.dylib"

pour permettre à LUA de reconnaître la bibliothèque libjakopter.dylib.

Brew

Les paquets à installer sont:

  • pkgconfig
  • git
  • cmake
  • ffmpeg
  • lua
  • sdl2 sdl2_ttf sdl2_image

Macports

Pour installer toutes les dépendances, le script macports.sh est livré avec le projet dans le répertoire d’installation de Jakopter. Vous devez d’abord vous assurer d’avoir git:

port installed | grep git

Si rien ne s’affiche, faire:

sudo port install git

Pour le téléchargement du logiciel, exécutez la commande dans votre répertoire utilisateur(appelé aussi $HOME ou ~):

git clone https://github.com/Jakopter/Jakopter Jakopter

puis:

cd Jakopter
Attention: si ffmpeg est déjà installé:

port installed | grep ffmpeg

Sa dépendance vers libsdl provoque un conflit avec libsdl2. Le script d’installation ci-dessous installe ffmpeg en retirant ffplay, pensez donc à désinstaller ffmpeg auparavant avec:

sudo port uninstall ffmpeg

Une fois le logiciel téléchargé, dans le répertoire Jakopter exécutez le script:

./macports.sh

puis

cmake .
make
Le script ne gère pas l’installation du SDK Leapmotion ni de ViSP.

 

Tester l’installation

  1. Mettre en route le drone et connecter le PC au Wifi du drone
  2. Aller dans le répertoire []/Jakopter/build/DEBUG
  3. Lancer l’interpréteur LUA et taper les commandes LUA suivantes (vous pouvez aussi utiliser le script test_video.lua dans Jakopter/scripts) :
    l=require("libjakopter")
    l.connect_video()
    l.connect()
    while true do
      -- lecture des paramètres de vol sur le channel 1
      bat = l.read_int(1, 0)
      alt = l.read_int(1, 4) -- altitude (reste à zéro tant que le drone n'a pas décollé)
      pitch = l.read_float(1, 8) / 1000
      roll = l.read_float(1, 12) / 1000
      yaw = l.read_float(1, 16) / 1000
      --envoi des données à la vidéo pour incrustation (channel 2)
      l.write_int(2, 0, bat)
      l.write_int(2, 4, alt)
      l.write_float(2, 8, pitch)
      l.write_float(2, 12, roll)
      l.write_float(2, 16, yaw)
    end