AirLib auf einer echten Drohne#

Die AirLib-Bibliothek kann auf dem Begleitcomputer einer echten Drohne kompiliert und bereitgestellt werden. Für unsere Tests haben wir einen extrem kompakten PC vom Typ Gigabyte Brix BXi7-5500 auf der Drohne montiert, der über USB mit dem Pixhawk-Flugcontroller verbunden ist. Der Gigabyte-PC läuft unter Ubuntu, sodass wir uns per SSH über WLAN verbinden können.

Flamewheel

Sobald Sie verbunden sind, können Sie MavLinkTest mit dieser Kommandozeile ausführen

MavLinkTest -serial:/dev/ttyACM0,115200 -logdir:. 
Dies erzeugt eine Log-Datei des Fluges, die dann für die Wiedergabe im Simulator verwendet werden kann.

Sie können auch -proxy:192.168.1.100:14550 hinzufügen, um MavLinkTest mit einem Remote-Computer zu verbinden, auf dem Sie QGroundControl oder unser PX4 Log Viewer ausführen können, was eine weitere praktische Möglichkeit ist, zu sehen, was mit Ihrer Drohne passiert.

MavLinkTest bietet dann einige einfache Befehle zum Testen Ihrer Drohne, hier ist ein einfaches Beispiel für einige Befehle

arm
takeoff 5
orbit 10 2

Dies schaltet die Drohne scharf, hebt auf 5 Meter ab und führt dann ein Orbitmuster mit einem Radius von 10 Metern bei 2 m/s durch. Geben Sie '?' ein, um alle verfügbaren Befehle zu finden.

Hinweis: Einige Befehle (z. B. orbit) haben in MavLinkTest und DroneShell unterschiedliche Namen und unterschiedliche Syntax (z. B. circlebypath -radius 10 -velocity 21).

Wenn Sie die Drohne landen, können Sie MavLinkTest stoppen und die generierte *.mavlink-Logdatei kopieren.

DroneServer und DroneShell#

Wenn Sie sicher sind, dass MavLinkTest funktioniert, können Sie auch DroneServer und DroneShell wie folgt ausführen. Führen Sie zuerst MavLinkTest mit einem lokalen Proxy aus, um alles an DroneServer zu senden

MavLinkTest -serial:/dev/ttyACM0,115200 -logdir:. -proxy:127.0.0.1:14560
Ändern Sie ~/Documents/AirSim/settings.json so, dass dort "serial":false steht, da wir möchten, dass DroneServer nach dieser UDP-Verbindung sucht.

DroneServer 0

Zuletzt können Sie nun DroneShell mit dieser Instanz von DroneServer verbinden und die DroneShell-Befehle verwenden, um Ihre Drohne zu fliegen.

DroneShell
==||=>
        Welcome to DroneShell 1.0.
        Type ? for help.
        Microsoft Research (c) 2016.

Waiting for drone to report a valid GPS location...
==||=> requestcontrol
==||=> arm
==||=> takeoff
==||=> circlebypath -radius 10 -velocity 2

PX4-spezifische Tools#

Sie können die MavlinkCom-Bibliothek und die MavLinkTest-App ausführen, um die Verbindung zwischen Ihrem Begleitcomputer und dem Flugcontroller zu testen.

Wie funktioniert das?#

AirSim verwendet die von @lovettchris entwickelte MavLinkCom-Komponente. MavLinkCom verfügt über eine Proxy-Architektur, bei der Sie eine Verbindung zu PX4 entweder über eine serielle Schnittstelle oder über UDP öffnen können und dann andere Komponenten diese Verbindung teilen. Wenn PX4 eine MavLink-Nachricht sendet, erhalten alle Komponenten diese Nachricht. Wenn eine Komponente eine Nachricht sendet, wird sie nur von PX4 empfangen. Dies ermöglicht es Ihnen, beliebig viele Komponenten mit PX4 zu verbinden. Dieser Code öffnet eine Verbindung für LogViewer und QGC. Sie können bei Bedarf etwas hinzufügen.

Wenn Sie QGC + AirSim zusammen verwenden möchten, müssen Sie QGC erlauben, den seriellen Port zu besitzen. QGC öffnet eine TCP-Verbindung, die als Proxy fungiert, sodass jede andere Komponente eine Verbindung zu QGC herstellen und MavLinkMessage an QGC senden kann und QGC diese Nachricht dann an PX4 weiterleitet. Sie weisen AirSim also an, eine Verbindung zu QGC herzustellen und QGC den seriellen Port zu überlassen.

Für das Begleitboard haben wir es so gemacht, dass wir den Gigabyte Brix auf der Drohne hatten. Dies ist ein vollwertiger x86-Computer, der sich über USB mit PX4 verbindet. Wir hatten Ubuntu auf dem Brix und führten DroneServer aus. Der DroneServer erstellte einen API-Endpunkt, mit dem wir über C++-Clientcode (oder Python-Code) kommunizieren konnten, und er übersetzte API-Aufrufe in MavLink-Nachrichten. Auf diese Weise können Sie Ihren Code gegen dieselbe API schreiben, ihn im Simulator testen und dann denselben Code auf einem tatsächlichen Fahrzeug ausführen. Das Begleitboard führt also DroneServer zusammen mit dem Client-Code aus.