引言
這文檔大部分是翻譯PX4官方開發指南,但是其中的的綠色字體就是我自己的實踐經驗或者案例。
本文主要介紹linux ubuntu開發環境搭建,源碼編譯和上傳到硬件。
注意:僅限於開發者!這個指南旨在推動開發而不是為消費者准備。
這個指南介紹了如何在PX4系統架構下開發,它使開發人員能夠:
1. 了解系統的概況
2. 獲取和修改PX4飛行棧和PX4中間件。
3. 在骁龍飛控、Pixhawk和Pixfalcon上部署PX4
更新日志
2015-10-06
初始發布
許可證Licence
PX4開發者文檔發布為 CC BY 4.0.。具體請查看細節Github
Repository。
入門
1.1初始配置
在開始開發PX4之前,系統需要按照默認配置進行初始配置,以保證硬件設置合適,被檢測到。下面的一個視頻介紹了Pixhawk硬件和地面站設置過程,有支持的飛機類型的列表。
1.2工具鏈安裝
PX4代碼可以在 Mac OS, Linux or Windows.上進行開發,建議在Mac
OS和Linux上進行開發,因為圖像處理和高級導航在windows上不容易開發。如果不確定,新的開發者應默認用Linux和當前Ubuntu長期支持版本(Ubuntu
LTS edition)。
開發環境
開發環境安裝涉及到下面幾種:
Mac OS
Linux
Windows
如果你對Docker熟悉,你可以使用其中一個容器:Docker Containers。
(這裡只翻譯了Linux下開發環境的搭建)
1.2.1 Linux開發環境搭建(windows等系統的就不翻譯了,自己看官網)
我們使用Debian / Ubuntu LTS 作為Linux的標准支持版本,但是但是也支持Cent OS and Arch
Linux的發行版本。
權限設置
注意:永遠不要使用“sudo”來修復權限問題,否則會帶來更多的權限問題,需要重裝系統來解決。
把用戶添加到用戶組“dialout”
sudo usermod -a -G dialout $USER
然後注銷後,重新登錄,因為重新登錄後所做的改變才會有效。
安裝
更新包列表,安裝下面編譯PX4的依賴包。PX4主要支持的家族:
NuttX based hardware: Pixhawk, Pixfalcon
Snapdragon Flight hardware: Snapdragon
Raspberry Pi hardware: Raspberry Pi 2
Host simulation: jMAVSim SITL and Gazebo
SITL
注意:安裝 Ninja
Build System可以比make更快進行編譯。如果安裝了它就會自動選擇使用它進行編譯。
[code]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 \
python-empy qtcreator cmake build-essential genromfs -y
# simulation tools
sudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-7-jdk openjdk-7-jre clang-3.5 lldb-3.5 -y
NuttX的基本硬件
Ubuntu配備了一系列代理管理,這會嚴重干擾任何機器人相關的串口(或usb串口),卸載掉它也不會有什麼影響:
[code][code]sudo apt-get remove modemmanager
更新包列表和安裝下面的依賴包。指明版本的包需要安裝指定的版本的包。
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y
sudo apt-get update
sudo apt-get install python-serial openocd \
flex bison libncurses5-dev autoconf texinfo build-essential \
libftdi-dev libtool zlib1g-dev \
python-empy gcc-arm-none-eabi -y
如果gcc-arm-none-eabi版本導致PX4/Firmware編譯錯誤,請參考 the
bare metalinstallation instructions手動安裝4.8版本。
1.3編譯代碼
PX4可以在控制台或者圖形界面/IDE開發
在控制台編譯
在去到圖形界面或者IDE前,驗證系統設置的正確性非常重要,因此打開控制台。在Ubuntu,單擊啟動欄,搜索“terminal”(或者trl+alt+T)。
終端在家目錄啟動,我們默認去到'~/src/Firmware' 然後,克隆頂層資源庫。有經驗的開發者可以克隆自己的復制的資源庫。
[code]mkdir -p ~/src
cd ~/src
git clonehttps://github.com/PX4/Firmware.git cd Firmware
git submodule update --init --recursive
cd ..
注意:沒有安裝git的朋友可以先安裝git再執行的命令
sudo apt-get install git
現在到時候由源代碼編譯二進制代碼了。但在直接使用硬件前,推薦先進行仿真。喜歡在圖形界面開發環境工作的用戶也應該繼續完成下面部分。
基於NuttX / Pixhawk的硬件板
[code]cd Firmware
make px4fmu-v2_default
大概10分鐘那樣就會編譯成功,我實在虛擬機的Ubuntu上編譯的。編譯成功如下圖所示
注意到“make”是一個字符命令編譯工具,“px4fmu-v2”是硬件/ardupilot版本,“default”是默認配置,所有的PX4編譯目標遵循這個規則。
成功編譯的最後輸出是這樣的:
[code][code][
100
%] Linking CXX executable firmware_nuttx
[code][
100
%] Built target firmware_nuttx
[code]Scanning dependencies of target build_firmware_px4fmu-v2
[code][
100
%] Generating nuttx-px4fmu-v2-default.px4
[code][
100
%] Built target build_firmware_px4fmu-v2
通過在命令後面添加‘upload’,編譯的二進制程序就會通過USB上傳到飛控硬件:
[code]make px4fmu-v2_default upload
成功上傳的最後輸出是這樣的:
[code]Erase : [====================]
100.0
%
[code]Program: [====================]
100.0
%
[code]Verify : [====================]
100.0
%
[code]Rebooting.
[code]
[code][
100
%] Built target upload
我使用的是linux開發環境和pixhawk硬件,其他的開發環境和pixhawk的指南我就不翻譯了,詳細可以參考官網http://dev.px4.io/index.html
1.4 投稿&
核心開發團隊和社區的聯系信息可以在下面找到。PX4項目使用了三個分支Git branching model:
master 默認情況下不穩定,可以看到快速開發。
beta 已充分測試,面向飛行測試者。
stable 指向最新的發布分支。.
我們嘗試通過rebases保持一個線性的歷史,避免Githubflow。但是由於全球的開發隊伍和快速的開發轉移,我們會定期分類合並。
可以這樣為代碼貢獻新功能,可以通過注冊Github,復制資源庫,創建分支,加入你的改變,最後推送請求。當它們通過我們的持續的綜合測試,更新就會被合並。
所有的投稿(貢獻)必須在 BSD 3-clause license許可下進行,所有的代碼在使用上不能提出任何的,進一步的限制。
測試飛行結果
飛行測試對於保證質量非常重要,請從microSD卡上傳飛行日志到 Log Muncher,並在 論壇分享一個的連接,附帶有書面飛行報告。
論壇和聊天
Google+
Gitter
PX4 Users Forum
每周開發電話
PX4團隊在每周同時進行電話聯系(通過Mumble客戶端連接)。
TIME: 19:00h Zurich time, 1 p.m. Eastern Time, 10 a.m. Pacific Standard Time
Server: mumble.dronecode.org
Port: 10028
Channel: PX4 Channel
The agenda is announced the same day on the px4users forum
總結
本文介紹了linux ubuntu下PX4開發環境的搭建,PX4編譯和上傳到飛控的命令。介紹了PX4團隊如何進行開源項目的開發,介紹了其運行的一些概況,有興趣可以根據這些信息和相關鏈接深入了解,為開源項目貢獻自己的代碼。甚至參與到PX4的開發中來,成為PX4團隊的一員。