构建 PX4#
源代码#
获取 PX4 源代码很容易
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
现在要构建它,您将需要正确的工具。
PX4 构建工具#
完整的说明可在 dev.px4.io 网站上找到,但为方便起见,我们在此处复制了其中相关的部分说明。
(请注意,BashOnWindows)可用于构建 PX4 固件,只需按照此页面底部的 BashOnWindows 说明操作),然后继续进行 PX4 的 Ubuntu 设置。
构建 SITL 版本#
现在,您可以从上面创建的固件文件夹中制作在 posix 中运行的 SITL 版本
make px4_sitl_default none_iris
注意:这个构建系统非常特殊,它知道如何更新 git 子模块(并且有很多),然后它运行 cmake(如果需要),然后它运行构建本身。因此,从某种意义上说,根 Makefile 是一个元元 makefile :-) 您可能会看到如下提示
*******************************************************************************
* 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 ) *
*******************************************************************************
每次看到此提示时,在键盘上键入“u”。
它不会花很长时间,大约 2 分钟。如果一切成功,最后一行将链接 `px4` 应用程序,然后您可以使用以下命令运行它
make px4_sitl_default none_iris
您应该会看到如下输出
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
这很好,第一次运行为 SITL 模式设置 px4 参数。第二次运行的输出较少。这个应用程序也是一个交互式控制台,您可以在其中输入命令。键入“help”查看它们是什么,然后键入 ctrl-C 来终止它。您可以随时这样做并重新启动它,如果您需要(这相当于 Pixhawk 硬件重启),这是一个重置任何不稳定状态的好方法。
ARM 嵌入式工具#
如果您计划为真正的 Pixhawk 硬件构建 PX4 固件,那么您将需要用于 ARM Cortex-M4 芯片组的 gcc 交叉编译器。您可以从 PX4 DevGuide 获取此编译器,特别是它在他们的 `ubuntu_sim_nuttx.sh` 设置脚本中。
按照这些设置说明操作后,您可以通过输入命令 `arm-none-eabi-gcc --version` 来验证安装。您应该会看到以下输出
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.
为 ARM 硬件构建 PX4#
现在您可以构建 PX4 固件以在真实的 Pixhawk 硬件上运行
make px4_fmu-v4
此构建将花费更长的时间,因为它正在构建更多内容,包括 NuttX 实时操作系统、Pixhawk 飞行控制器中传感器的所有驱动程序等等。它还在超大压缩模式下运行编译器,以便它可以将所有这些内容放入 1 兆字节的 ROM 中!!
一个不错的小窍门是,您可以插入 Pixhawk USB,然后键入 `make px4fmu-v2_default upload` 来用这些全新的位刷写硬件,因此您无需为此使用 QGroundControl。
一些有用的参数#
PX4 有许多可自定义的参数(实际上超过 700 个),为了与 AirSim 获得最佳结果,我们发现以下参数很方便
// 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#
请参阅 Windows 上的 Bash 工具链。