Building ArduPilot for Pixhawk/PX4 on Linux with Make
使用Make編譯 ArduPilot for Pixhawk 2, Pixhawk and PX4 在linux上.
Note: 編譯 Pixhawk 2 and Pixhawk使用 (make px4-v2
). 編譯 PX4 使用 make px4-v1
.
Quick start
系統ubuntu16.04
Setup
安裝 git:
sudo apt-get -qq -y install git
安裝 arm-none-eabi-gcc編譯器
安裝gawk,cmake
apt-get install gawk cmake
克隆源碼到本地:
git clone https://github.com/diydrones/ardupilot.git
運行ubuntu安裝腳本:
ardupilot/Tools/scripts/install-prereqs-ubuntu.sh -y
Reload the path (log-out and log-in to make permanent):
. ~/.profile
Build 編譯
以下是編譯不同機型 Pixhawk2/Pixhawk 的命令. 編譯PX4使用make px4-v2 而不是make px4-v1
To build for PX4 replace make px4-v2
with make px4-v1
.
Build for Copter:
cd ardupilot/ArduCopter
make px4-v2
編譯過程中出現的問題:
在github上的matrix目錄名已經變化,所以找不到,手動git clone下載即可
之后又出現的問題是:
少python-empy,pip,catkin-pkg,直接使用apt-get install 安裝即可
按照提示少哪個就安裝哪個
又出現問題:genromfs沒有找到
直接apt-get install genromfs
最后編譯成功,生成px4固件文件
Build for Plane:
cd ardupilot/ArduPlane
make px4-v2
Build for Rover:
cd ardupilot/APMrover2
make px4-v2
Build for Antenna Tracker:
cd ardupilot/AntennaTracker
make px4-v2
Building
One you have the 3 git trees and compiler setup you do the build in your vehicle directory. For example, if building Plane then do this:
cd ardupilot/ArduPlane
make px4
That will build two files ArduPlane-v1.px4 and ArduPlane-v2.px4. The v1 file is for PX4v1, the v2 file is for PX4v2 (the Pixhawk).
你可以只編譯一個使用 “make px4-v1” or “make px4-v2”.
The first time you build it will take quite a long time as it builds the px4 archives. Subsequent builds will be faster (especially if you setup ccache correctly).
Loading firmware
To load the firmware onto the board use
make px4-v1-upload
or
make px4-v2-upload
After it says “waiting for bootloader” plugin your PX4 on USB.
If upload consistently fails in the erase step then check if you are running ‘modemmanager’ which can take control of the PX4 USB port. Removing modemmanager can help.
Cleaning
If there have been updates to the PX4NuttX or PX4Firmware git submodules you may need to do a full clean build. To do that use:
make px4-clean
that will remove the PX4NuttX archives so you can do a build from scratch