PX4 bauen#

Quellcode#

Das Holen des PX4-Quellcodes ist einfach

sudo apt-get install git
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools
cd PX4-Autopilot

Um ihn zu bauen, benötigen Sie die richtigen Werkzeuge.

PX4 Build-Tools#

Die vollständigen Anleitungen sind auf der Website dev.px4.io verfügbar, aber wir haben den relevanten Teil dieser Anleitungen hier zu Ihrer Bequemlichkeit kopiert.

(Beachten Sie, dass BashOnWindows zum Bauen der PX4-Firmware verwendet werden kann. Folgen Sie einfach den BashOnWindows-Anweisungen am Ende dieser Seite) und fahren Sie dann mit dem Ubuntu-Setup für PX4 fort.

SITL-Version bauen#

Jetzt können Sie die SITL-Version erstellen, die unter POSIX läuft, aus dem oben erstellten Firmware-Ordner.

make px4_sitl_default none_iris

Hinweis: Dieses Build-System ist ziemlich speziell. Es weiß, wie Git-Submodule aktualisiert werden (und davon gibt es viele), dann führt es CMake aus (falls erforderlich) und dann führt es den Build selbst aus. In gewisser Weise ist das Root-Makefile ein Meta-Meta-Makefile :-) Möglicherweise sehen Sie Aufforderungen wie diese:

 *******************************************************************************
 *   IF YOU DID NOT CHANGE THIS FILE (OR YOU DON'T KNOW WHAT A SUBMODULE IS):  *
 *   Hit 'u' and <ENTER> to update ALL submodules and resolve this.            *
 *   (performs git submodule sync --recursive                                  *
 *    and git submodule update --init --recursive )                            *
 *******************************************************************************
Geben Sie jedes Mal, wenn Sie diese Aufforderung sehen, 'u' auf Ihrer Tastatur ein.

Es sollte nicht lange dauern, etwa 2 Minuten. Wenn alles erfolgreich ist, wird die letzte Zeile die px4-App verknüpfen, die Sie dann mit Folgendem ausführen können:

make px4_sitl_default none_iris

Und Sie sollten eine Ausgabe sehen, die wie folgt aussieht:

creating new parameters file
creating new dataman file

______  __   __    ___ 
| ___ \ \ \ / /   /   |
| |_/ /  \ V /   / /| |
|  __/   /   \  / /_| |
| |     / /^\ \ \___  |
\_|     \/   \/     |_/

px4 starting.

18446744073709551615 WARNING: setRealtimeSched failed (not run as root?)
ERROR [param] importing from 'rootfs/eeprom/parameters' failed (-1)
Command 'param' failed, returned 1
  SYS_AUTOSTART: curr: 0 -> new: 4010
  SYS_MC_EST_GROUP: curr: 2 -> new: 1
INFO  [dataman] Unkown restart, data manager file 'rootfs/fs/microsd/dataman' size is 11797680 bytes
  BAT_N_CELLS: curr: 0 -> new: 3
  CAL_GYRO0_ID: curr: 0 -> new: 2293768
  CAL_ACC0_ID: curr: 0 -> new: 1376264
  CAL_ACC1_ID: curr: 0 -> new: 1310728
  CAL_MAG0_ID: curr: 0 -> new: 196616

Das ist also gut. Der erste Durchlauf richtet die PX4-Parameter für den SITL-Modus ein. Der zweite Durchlauf hat weniger Ausgabe. Diese App ist auch eine interaktive Konsole, in der Sie Befehle eingeben können. Geben Sie 'help' ein, um zu sehen, was sie sind, und drücken Sie einfach Strg+C, um sie zu beenden. Sie können das jederzeit tun und neu starten. Das ist eine großartige Möglichkeit, einen fehlerhaften Zustand zurückzusetzen, wenn Sie ihn benötigen (entspricht einem Hardware-Neustart von Pixhawk).

ARM Embedded Tools#

Wenn Sie planen, die PX4-Firmware für echte Pixhawk-Hardware zu bauen, benötigen Sie den GCC-Cross-Compiler für den ARM Cortex-M4-Chipsatz. Sie können diesen Compiler über das PX4 DevGuide erhalten, insbesondere in ihrem ubuntu_sim_nuttx.sh Setup-Skript.

Nachdem Sie diese Setup-Anweisungen befolgt haben, können Sie die Installation überprüfen, indem Sie diesen Befehl eingeben: arm-none-eabi-gcc --version. Sie sollten die folgende Ausgabe sehen:

arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

PX4 für ARM-Hardware bauen#

Jetzt können Sie die PX4-Firmware für den Betrieb auf echter Pixhawk-Hardware erstellen.

make px4_fmu-v4

Dieser Build wird etwas länger dauern, da er viel mehr erstellt, einschließlich des Echtzeitbetriebssystems NuttX, aller Treiber für die Sensoren im Pixhawk-Flugregler und mehr. Er führt auch den Compiler im Super-Size-Squeezing-Modus aus, damit alles in einen 1-Megabyte-ROM passt!!

Ein schöner kleiner Trick ist, dass Sie Ihren Pixhawk-USB anschließen und make px4fmu-v2_default upload eingeben können, um die Hardware mit diesen brandneuen Bits zu flashen, sodass Sie dafür nicht QGroundControl verwenden müssen.

Einige nützliche Parameter#

PX4 verfügt über viele anpassbare Parameter (tatsächlich über 700) und um die besten Ergebnisse mit AirSim zu erzielen, haben wir festgestellt, dass die folgenden Parameter nützlich sind.

// be sure to enable the new position estimator module:
param set SYS_MC_EST_GROUP 2

// increase default limits on cruise speed so you can move around a large map more quickly.
param MPC_XY_CRUISE 10             
param MPC_XY_VEL_MAX 10
param MPC_Z_VEL_MAX_DN 2

// increase timeout for auto-disarm on landing so that any long running app doesn't have to worry about it
param COM_DISARM_LAND 60

// make it possible to fly without radio control attached (do NOT do this one on a real drone)
param NAV_RCL_ACT 0

// enable new syslogger to get more information from PX4 logs
param set SYS_LOGGER 1

BashOnWindows verwenden#

Siehe Bash on Windows Toolchain.