PX4 Setup für AirSim#
Der PX4 Software Stack ist ein Open-Source-Flugregler, der sehr beliebt ist und eine breite Palette von Boards und Sensoren unterstützt, sowie integrierte Funktionen für Aufgaben auf höherer Ebene wie die Missionsplanung. Besuchen Sie px4.io für weitere Informationen.
Warnung: Obwohl alle Versionen von AirSim immer mit PX4 getestet werden, um die Unterstützung sicherzustellen, ist die Einrichtung von PX4 keine triviale Aufgabe. Wenn Sie nicht mindestens über fortgeschrittene Kenntnisse des PX4-Stacks verfügen, empfehlen wir die Verwendung von simple_flight, das jetzt der Standard in AirSim ist.
Unterstützte Hardware#
Die folgende Pixhawk-Hardware wurde mit AirSim getestet
Version 1.11.2 der PX4 Firmware funktioniert auch auf den Pixhawk 4 Geräten.
PX4 Hardware-in-Loop einrichten#
Dazu benötigen Sie eines der oben genannten unterstützten Geräte. Für den manuellen Flug benötigen Sie außerdem eine RC + Sender.
- Stellen Sie sicher, dass Ihr RC-Empfänger mit seinem RC-Sender verbunden ist. Schließen Sie den RC-Sender an den RC-Port des Flugcontrollers an. Beziehen Sie sich auf Ihr RC-Handbuch und die PX4-Dokumente für weitere Informationen.
- Laden Sie QGroundControl herunter, starten Sie es und schließen Sie Ihren Flugcontroller an den USB-Port an.
- Verwenden Sie QGroundControl, um den neuesten PX4 Flight Stack zu flashen. Sehen Sie auch das Video zur anfänglichen Firmware-Einrichtung.
- Konfigurieren Sie in QGroundControl Ihren Pixhawk für HIL-Simulation, indem Sie den HIL Quadrocopter X Airframe auswählen. Nachdem PX4 neu gestartet ist, überprüfen Sie, ob "HIL Quadrocopter X" tatsächlich ausgewählt ist.
- Gehen Sie in QGroundControl zum Reiter "Radio" und kalibrieren Sie (stellen Sie sicher, dass die Fernbedienung eingeschaltet ist und der Empfänger die Bindungsanzeige anzeigt).
- Gehen Sie zum Reiter "Flugmodi" und wählen Sie einen der Schalter der Fernbedienung als "Moduskanal". Setzen Sie dann (z. B.) Stabilisiert und Attitude-Flugmodi für zwei Positionen des Schalters.
- Gehen Sie zum Abschnitt "Tuning" von QGroundControl und stellen Sie geeignete Werte ein. Zum Beispiel ergeben für die Fly Sky FS-TH9X Fernbedienung die folgenden Einstellungen ein realistischeres Gefühl: Schwebegas = Mitte + 1 Markierung, Roll- und Nickempfindlichkeit = Mitte - 3 Markierungen, Höhen- und Positionskontrollempfindlichkeit = Mitte - 2 Markierungen.
- In der AirSim-Einstellungen-Datei geben Sie PX4 für Ihre Fahrzeugkonfiguration wie folgt an:
{ "SettingsVersion": 1.2, "SimMode": "Multirotor", "ClockType": "SteppableClock", "Vehicles": { "PX4": { "VehicleType": "PX4Multirotor", "UseSerial": true, "LockStep": true, "Sensors":{ "Barometer":{ "SensorType": 1, "Enabled": true, "PressureFactorSigma": 0.0001825 } }, "Parameters": { "NAV_RCL_ACT": 0, "NAV_DLL_ACT": 0, "COM_OBL_ACT": 1, "LPE_LAT": 47.641468, "LPE_LON": -122.140165 } } } }
Beachten Sie, dass die PX4 [simulator] TCP verwendet, weshalb wir hinzufügen müssen: "UseTcp": true,. Beachten Sie, dass wir auch LockStep aktivieren, siehe PX4 LockStep für weitere Informationen. Die Barometer-Einstellung hält PX4 stabil, da der Standard-AirSim-Barometer etwas zu viel Rauschen erzeugt. Diese Einstellung reduziert dies etwas, was PX4 ermöglicht, schneller eine GPS-Sperre zu erreichen.
Nach der obigen Einrichtung sollten Sie eine Fernbedienung (RC) verwenden können, um mit AirSim zu fliegen. Sie können das Fahrzeug normalerweise bewaffnen, indem Sie beide Steuerknüppel der RC nach unten und zusammen nach innen bewegen. Sie benötigen QGroundControl nach der anfänglichen Einrichtung nicht mehr. Typischerweise bietet der Stabilisierte (statt Manuell) Modus eine bessere Erfahrung für Anfänger. Siehe PX4 Basic Flying Guide.
Sie können die Drohne auch über Python-APIs steuern.
Siehe Walkthrough Demo Video und Unreal AirSim Setup Video, die Ihnen alle in diesem Dokument beschriebenen Einrichtungsschritte zeigen.
PX4 Software-in-Loop einrichten#
Der PX4 SITL-Modus erfordert kein separates Gerät wie einen Pixhawk oder Pixracer. Dies ist tatsächlich der von der PX4-Community empfohlene Weg, PX4 mit Simulatoren zu verwenden. Die Einrichtung ist jedoch schwieriger. Bitte siehe diese spezielle Seite für die Einrichtung von PX4 im SITL-Modus.
FAQ#
Drohne fliegt nicht richtig, sie wird einfach "verrückt".#
Es gibt mehrere Gründe, die dazu führen können. Stellen Sie zuerst sicher, dass Ihre Drohne beim Start des Simulators nicht aus großer Höhe fällt. Dies kann passieren, wenn Sie eine benutzerdefinierte Unreal-Umgebung erstellt haben und der Player Start zu hoch über dem Boden platziert ist. Es scheint, dass bei diesem Szenario die interne Kalibrierung in PX4 durcheinandergerät.
Sie sollten auch QGroundControl verwenden und sicherstellen, dass Sie in QGroundControl richtig bewaffnen und starten können.
Schließlich kann dies in seltenen Fällen auch ein Problem mit der Maschinenleistung sein. Überprüfen Sie die Leistung Ihrer Festplatte.
Kann ich Arducopter oder andere MavLink-Implementierungen verwenden?#
Unser Code wurde mit der PX4 Firmware getestet. Wir haben Arducopter oder andere MavLink-Implementierungen nicht getestet. Einige der Flug-APIs verwenden die PX4-Benutzerdefinierten Modi in den MAV_CMD_DO_SET_MODE Nachrichten (wie PX4_CUSTOM_MAIN_MODE_AUTO).
Es findet meine Pixhawk-Hardware nicht#
Überprüfen Sie Ihre settings.json-Datei auf diese Zeile "SerialPort":"*,115200". Das Sternchen hier bedeutet "suche nach einem seriellen Port, der wie ein Pixhawk-Gerät aussieht, aber das funktioniert nicht immer für alle Arten von Pixhawk-Hardware. Unter Windows können Sie den tatsächlichen COM-Port im Geräte-Manager finden, suchen Sie unter "Ports (COM & LPT)", schließen Sie das Gerät an und sehen Sie, welcher neue COM-Port angezeigt wird. Angenommen, Sie sehen einen neuen Port namens "USB Serial Port (COM5)". Ändern Sie dann die SerialPort-Einstellung zu: "SerialPort":"COM5,115200".
Unter Linux kann das Gerät gefunden werden, indem Sie "ls /dev/serial/by-id" ausführen. Wenn Sie einen Gerätenamen sehen, der wie folgt aussieht: usb-3D_Robotics_PX4_FMU_v2.x_0-if00, können Sie diesen Namen zur Verbindung verwenden, wie hier: "SerialPort":"/dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00". Beachten Sie, dass dieser lange Name tatsächlich ein symbolischer Link zum echten Namen ist. Wenn Sie "ls -l ..." verwenden, können Sie diesen symbolischen Link finden. Es ist normalerweise etwas wie "/dev/ttyACM0", also funktioniert auch dies: "SerialPort":"/dev/ttyACM0,115200". Aber diese Zuordnung ist ähnlich wie unter Windows, sie wird automatisch zugewiesen und kann sich ändern, während der lange Name auch dann funktioniert, wenn sich die tatsächliche TTY-Seriengerätezuordnung ändert.
WARN [commander] Start verweigert, entarmen und erneut versuchen#
Dies geschieht, wenn Sie versuchen zu starten, während PX4 die Home-Position noch nicht berechnet hat. PX4 meldet die Home-Position, sobald es mit dem GPS-Signal zufrieden ist, und Sie sehen diese Meldungen.
INFO [commander] home: 47.6414680, -122.1401672, 119.99
INFO [tone_alarm] home_set
Bis zu diesem Zeitpunkt lehnt PX4 jedoch Startbefehle ab.
Wenn ich der Drohne sage, etwas zu tun, landet sie immer#
Zum Beispiel verwenden Sie DroneShell moveToPosition -z -20 -x 50 -y 0, was es tut, aber wenn es den Zielort erreicht, beginnt die Drohne zu landen. Dies ist das Standardverhalten von PX4, wenn der Offboard-Modus abgeschlossen ist. Um die Drohne stattdessen schweben zu lassen, stellen Sie diesen PX4-Parameter ein.
param set COM_OBL_ACT 1
Ich erhalte Fehler bei Nachrichtenlängen-Fehlanpassungen#
Sie müssen möglicherweise den MAV_PROTO_VER Parameter in QGC auf "Immer Version 1 verwenden" setzen. Siehe dieses Issue für weitere Details.