Parrot AR Drone 2.0 mit Raspberry Pi steuern

Parrot AR Drone 2.0 mit Raspberry Pi steuern

 07.03.2017,  02.01.2020 -  Sebastian Pech -  ~4 Minuten

Die Parrot AR.Drone 2.0 Power Edition ist schon etwas älter, aufgrund der hervorragenden Entwicklungsumgebungen eignet sich der Quadrocopter jedoch sehr gut für ein Projekt mit dem Raspberry Pi. Im Folgenden soll die Steuerung mit Hilfe von, auf Node.js aufbauenden, Skripten erfolgen. Für das Fliegen über den Minicomputer sind keine Vorerfahrungen notwendig. Der Copter stabilisiert sich eigenständig in der Luft und die Kommunikation erfolgt direkt über WLAN. Das Linux Betriebssystem des Quadrocopter ist in Teilen konfigurierbar. Außerdem verfügt das Gerät über zwei Kameras welche sich zur Gesichtserkennung oder für Videoaufnahmen eignen.

Alle Befehle der Parrot AR.Drone 2.0 sind im AR.Drone Developer Guide beschrieben. Das mehrere hundert Seiten umfassende Werk bietet sich aber eher zum Nachschlagen an. Unter dem Projekt NodeCopter hacking ist eine Node.js basierende Skript Bibliothek entstanden. Diese bildet die Grundlage für die folgende Implementierung. Die Idee der Gesichtserkennung basiert dabei auf dem Artikel How to build an autonomous, voice-controlled, face-recognizing drone for $200 . In dem Artikel bilden die Microsoft Azure Cognitive Services die Grundlage. Für die Spracheingabe lässt sich auch IBM Watson nutzen.

Pakete installieren mit npm

Zuerst erfolgt das Anlegen eines Verzeichnisses in dem die Daten liegen. Die Initialisierung über npm (Node Package Manager) ist hierbei Optional. Das Tool generiert eine package.json in der später die Abhängigkeiten abgelegt werden, falls der Code beispielsweise auf github veröffentlicht werden soll.

$ mkdir ardrone
$ cd ardrone
#OPTIONAL
$ npm init
This utility will walk you through creating a package.json file.
name: (ardrone)
version: (1.0.0)
description: Parrot AR.Drone 2.0 Control
entry point: (index.js)
test command:
git repository:
keywords: Drone
author: Sebastian Pech
license: (ISC)
About to write to /home/pi/ardrone/package.json

Im Anschluss daran erfolgt die Installation der ar-drone Pakete.

$ npm install ar-drone
# ODER mit -save wenn die package.json über npm init erstellt wurde
$ npm install ar-drone -save

WLAN einrichten

Die Parrot AR.Drone stellt ein öffentliches und unverschlüsseltes WLAN zur Verfügung. Zum kontrollieren des Quadrocopter muss sich der Raspberry Pi mit diesem verbinden. Danach lassen sich die Steuerbefehle übermitteln.

$ sudo iwlist wlan0 scan

Nach dem Scan sollte in der Liste ein Eintrag mit ESSID:“ardrone2_123456″ oder ähnlichem erscheinen. Zu diesem soll nun die Verbindung hergestellt werden.

$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
network={
        ssid="ardrone2_123456"
        key_mgmt=NONE
}
# Bei mehreren WLAN Einträgen können diese priorisiert sein
network={
        ssid="ardrone2_123456"
        key_mgmt=NONE
        priority=1
}

Die korrekte Verbindung lässt sich dann wie folgt ermitteln.

$ wpa_cli status

Weitere Informationen im Fehlerfall finden sich im Setting WiFi up via the command line Artikel. Mit einem weiteren WLAN Empfänger können auch zwei Netze genutzt werden.

Drone steuern mit dem Raspberry Pi

Nun kommt der spannendste Teil des ganzen Projektes. Der Quadrocopter soll sich magisch in die Luft erheben, etwas drehen und dann wieder landen. Dazu dient der folgende Code vom Node Copter Projekt in einer Datei namens ardrone.js.

$ nano ardrone.js
# oder vi ;-)
var arDrone = require('ar-drone');
var client = arDrone.createClient();

client.takeoff();

client
  .after(5000, function() {
    this.clockwise(0.5);
  })
  .after(1000, function() {
    this.stop();
    this.land();
  });

Checkliste vor dem Ausführen:

  • Smartphone nicht verbunden (oder Pooling aktiviert)
  • Raspberry Pi mit der Drone verbunden
  • Akku voll
  • Indoor-Gehäuse angebracht
  • Kinder, Tiere, Glas, Papierblätter, … außer Reichweite gebracht
  • Keinen Mut angetrunken (Nüchtern! ;-))

Dann kann nicht mehr viel schief gehen (außer einige Crashes, usw.) … Viel Glück!

$ node ardrone.js

Sicherheit

Das WLAN der AR.Drone ist unverschlüsselt, ein Zugriff ist also jederzeit von jedem Gerät möglich! Das Anlegen eines WPA Schlüssels kann hier Abhilfe schaffen.

Grundsätzlich gelten alle Sicherheitsbestimmungen der Anleitung. Ich rate dazu, die Drone drinnen nur mit dem Indoor-Gehäuse zu fliegen. Die Bewegung der Quadrocopter ist dadurch etwas träger und schwammiger aber die Einrichtung wird es einem danken.

Um das Unsanfte Fallen der Drone ein bisschen zu verbessern kann ein Landegestell aus Kabelbindern helfen.

Probleme mit dem Video

Die Beispiele png-stream.js und tcp-video-stream.js setzen das veraltete FFmpeg voraus. Die Installation ist leider nicht ganz trivial. Dennoch gibt es ein paar gute Anleitungen für experimentierfreudige Bastler. How to compile ffmpeg on a Raspberry Pi und Compiling software from source code on the raspberry pi – the ffmpeg suite .

# Wenn mstorsjo-fdk-aac und faac-1.28 installiert sind:
git clone http://source.ffmpeg.org/git/ffmpeg.git
cd ffmpeg
./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass 
  --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus 
  --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
make && sudo make install
ffmpeg