PX4编译开发环境配置

拟在基于NuttX的硬件平台如Pixhawk系列开源硬件平台上运行自定义的Px4自驾仪软件,因此需要建立Px4的编译开发环境。以官方文档推荐,在Ubuntu 16.04 LTS操作系统上建立Px4编译开发环境为例,记录整个配置过程。

安装Ubuntu 16.04 LTS

官方推荐在Mac OS和Linux上进行开发,因此选择安装Ubuntu 16.04 LTS作为Px4开发的操作系统。主要步骤如下:

  1. 安装VirtualBox系统虚拟机
  2. 在VirtualBox创建虚拟机
  3. 在虚拟机中安装Ubuntu 16.04 LTS操作系统

Ubuntu中安装工具链

权限设置

为了使当前用户能够访问串口,将当前用户添加到dialout组。

1
2
sudo usermod -a -G dialout $USER
reboot

安装工具链

Pixhawk/NuttX (and jMAVSim)

针对基于NuttX的硬件平台如Pixhawk构建开发工具链,步骤如下:

  1. 下载ubuntu_sim_nuttx.sh
  2. 运行脚本ubuntu_sim_nuttx.sh
  3. 完成后重启
1
2
3
wget https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_nuttx.sh
source ubuntu_sim_nuttx.sh
reboot

编译Px4软件

下载Px4源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir -p ~/src
cd ~/src
git clone https://github.com/PX4/Firmware.git

cd Firmware

# list the releases (tags)
git tag -l

# Checkout code for particular tag (e.g. for tag v1.8.2 stable version)
git checkout v1.8.2

git submodule update --init --recursive

现在可以通过编译源代码来构建二进制文件。在直接使用硬件前,推荐先进行仿真

jMAVSim仿真器

在直接使用硬件之前,以jMAVSim仿真器为目标平台构建PX4,验证PX4的正确性。注意在virtualbox中启动3D图形加速,防止jMAVSim运行出错!

1
2
3
4
make posix jmavsim

# 起飞四旋翼无人机
pxh> commander takeoff

基于NuttX / Pixhawk的硬件板

以Pixhawk为目标平台,构建PX4。

1
2
cd Firmware
make px4fmu-v2_default

注意到“make”是一个字符命令编译工具,“px4fmu-v2”是硬件/ardupilot版本,“default”是默认配置,所有的PX4编译目标遵循这个规则。

成功编译的最后输出是这样的:

1
2
3
4
5
[100%] Linking CXX executable firmware_nuttx
[100%] Built target firmware_nuttx
Scanning dependencies of target build/firmware_px4fmu-v2
[100%] Generating nuttx-px4fmu-v2-default.px4
[100%] Built target build/firmware_px4fmu-v2

通过在命令后面添加‘upload’,编译的二进制程序就会通过USB上传到飞控硬件:

1
make px4fmu-v2_default upload

上传成功时输出情况如下:

1
2
3
4
5
6
Erase  : [====================] 100.0%
Program: [====================] 100.0%
Verify : [====================] 100.0%
Rebooting.

[100%] Built target upload

参考链接

  1. PX4 Development Guide (STABLE - v1.8.2),by Dronecode.
  2. PX4开发指南, by Dronecode.
  3. running JMAVSim in vmware fails, by jMAVSim issues.