Pixhawk開發環境搭建
PX4代碼可以在 Mac OS,Linux 或者 Windows上進行開發,本文采用Ubuntu的長期支持版本Ubuntu16.04作為開發環境
為了便於開發,我們需要把用戶添加到用戶組”dialout”中,終端中執行:
sudo usermod -a -G dialout $USER
然后注銷后,重新登錄,因為重新登錄后所做的改變才會有效。
注意:永遠不要使用sudo來修復權限問題,否則會帶來更多的權限問題,需要重裝系統來解決。
安裝PX4的依賴包
更新包列表,安裝下面編譯PX4的依賴包。先安裝cmake,執行:
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
sudo apt-get update
必備軟件
sudo apt-get install python-argparse git-core wget zip
sudo apt-get install python-empy qtcreatorcmake build-essential genromfs -y
編譯工具
添加源安裝開發環境
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jre
sudo apt-get install ant protobuf-compiler libeigen3-devlibopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y
安裝交叉編譯工具鏈
Ubuntu配備了一系列代理管理,這會嚴重干擾任何機器人相關的串口(或usb串口),卸載掉它也不會有什么影響,我們這里把它卸載:
sudo apt-get remove modemmanager
更新包列表和安裝下面的依賴包:
sudo apt-get install python-serial openocd
sudo apt-get install flex bison libncurses5-devautoconf texinfo build-essential
sudo apt-get install libftdi-dev libtoolzlib1g-dev
sudo apt-get install python-empy
安裝arm-none-eabi編譯工具鏈,在添加arm-none-eabi工具鏈之前,請確保刪除殘余:
刪除殘留命令
sudo apt-get remove gcc-arm-none-eabi gdb-arm-none-eabibinutils-arm-none-eabi gcc-arm-embedded
sudo add-apt-repository --remove ppa:team-gcc-arm-embedded/ppa
安裝工具命令
sudo apt-get install gcc-arm-none-eabi
如果需要在樹莓派上開發則需要安裝樹莓派上對於的工具鏈。樹莓派開發者應該從下面地址下載樹莓派Linux工具鏈。安裝腳本會自動安裝交叉編譯工具鏈:
git clone https://github.com/pixhawk/rpi_toolchain.git
cd rpi_toolchain
./install_cross.sh
在工具鏈安裝過程中需要輸入密碼。如果不想把工具鏈安裝在默認位置/opt/rpi_toolchain,可以執行
./install_cross.sh<PATH>
向安裝腳本傳入其它地址。安裝腳本會自動配置需要的環境變量。最后,運行以下命令更新環境變量:
source ~/.profile
代碼編譯
開發環境搭建好之后,就可以開始下載代碼並編譯了,PX4可以在控制台或者圖形界面/IDE開發。在這里我們對控制台的開發進行簡要介紹。
首先建立工作目錄,然后從git上下載代碼:
mkdir -p ~/src cd ~/src
第一篇介紹過Pixhawk
有兩種固件包,我們使用ArduPilot固件包,執行命令
git clone https://github.com/ArduPilot/ardupilot cd ardupilot git submodule update --init --recursive cd ..
現在可以通過編譯源代碼來構建二進制文件。在直接使用硬件前,推薦先進行仿真。然后就可以對代碼進行編譯並下載了:
cd ardupilot make px4fmu-v2_default
注意到“make”是一個字符命令編譯工具,“px4fmu-v2”是硬件/ardupilot版本,“default”是默認配置,所有的PX4編譯目標遵循這個規則。通過在命令后面添加‘upload’,編譯的二進制程序就會通過USB上傳到飛控硬件。下載成功后的情況如下所示: