(1)PX4開發指南——linux下px4開發環境搭建
引言
這文件大部分是翻譯PX4官方開發指南,但是其中的的綠色字型就是我自己的實踐經驗或者案例。
本文主要介紹linux ubuntu開發環境搭建,原始碼編譯和上傳到硬體。
注意:僅限於開發者!這個指南旨在推動開發而不是為消費者準備。
這個指南介紹瞭如何在PX4系統架構下開發,它使開發人員能夠:
2. 獲取和修改PX4飛行棧和PX4中介軟體。
3. 在驍龍飛控、Pixhawk和Pixfalcon上部署PX4
更新日誌
2015-10-06
初始釋出
許可證Licence
入門
1.1初始配置
在開始開發PX4之前,系統需要按照預設配置進行初始配置,以保證硬體設定合適,被檢測到。下面的一個視訊介紹了Pixhawk硬體和地面站設定過程,有支援的飛機型別的列表。
1.2工具鏈安裝
PX4程式碼可以在Mac OS, Linuxor Windows.上進行開發,建議在Mac OS和Linux上進行開發,因為影象處理和高階導航在windows上不容易開發。如果不確定,新的開發者應預設用Linux和當前Ubuntu長期支援版本(Ubuntu LTS edition)。
開發環境
開發環境安裝涉及到下面幾種:
如果你對Docker熟悉,你可以使用其中一個容器:Docker Containers。
(這裡只翻譯了Linux下開發環境的搭建)
1.2.1 Linux開發環境搭建(windows等系統的就不翻譯了,自己看官網)
我們使用Debian / Ubuntu LTS
許可權設定
注意:永遠不要使用“sudo”來修復許可權問題,否則會帶來更多的許可權問題,需要重灌系統來解決。
把使用者新增到使用者組“dialout”
sudo usermod -a -G dialout $USER
然後登出後,重新登入,因為重新登入後所做的改變才會有效。
安裝
更新包列表,安裝下面編譯PX4的依賴包。PX4主要支援的家族:
注意:安裝可以比make更快進行編譯。如果安裝了它就會自動選擇使用它進行編譯。
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串列埠),解除安裝掉它也不會有什麼影響:
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
1.3編譯程式碼
PX4可以在控制檯或者圖形介面/IDE開發
在控制檯編譯
在去到圖形介面或者IDE前,驗證系統設定的正確性非常重要,因此開啟控制檯。在Ubuntu,單擊啟動欄,搜尋“terminal”(或者trl+alt+T)。
終端在家目錄啟動,我們預設去到'~/src/Firmware' 然後,克隆頂層資源庫。有經驗的開發者可以克隆自己的複製的資源庫。
mkdir -p ~/src
cd ~/src
git clone https://github.com/PX4/Firmware.git
cd Firmware
git submodule update --init --recursive
cd ..
注意:沒有安裝git的朋友可以先安裝git再執行的命令
sudo apt-get install git
現在到時候由原始碼編譯二進位制程式碼了。但在直接使用硬體前,推薦先進行模擬。喜歡在圖形介面開發環境工作的使用者也應該繼續完成下面部分。
基於NuttX / Pixhawk的硬體板
cd Firmware
make px4fmu-v2_default
大概10分鐘那樣就會編譯成功,我實在虛擬機器的Ubuntu上編譯的。編譯成功如下圖所示
注意到“make”是一個字元命令編譯工具,“px4fmu-v2”是硬體/ardupilot版本,“default”是預設配置,所有的PX4編譯目標遵循這個規則。
成功編譯的最後輸出是這樣的:
[
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上傳到飛控硬體:
make px4fmu-v2_default upload
成功上傳的最後輸出是這樣的:
Erase : [====================]
100.0%
Program: [====================]
100.0%
Verify : [====================]
100.0%
Rebooting.
[
100%] Built target upload
我使用的是linux開發環境和pixhawk硬體,其他的開發環境和pixhawk的指南我就不翻譯了,詳細可以參考官網http://dev.px4.io/index.html
1.4 投稿&
核心開發團隊和社群的聯絡資訊可以在下面找到。PX4專案使用了三個分支Git branching model:
可以這樣為程式碼貢獻新功能,可以通過註冊Github,複製資源庫,建立分支,加入你的改變,最後推送請求。當它們通過我們的持續的綜合測試,更新就會被合併。
所有的投稿(貢獻)必須在BSD 3-clause license許可下進行,所有的程式碼在使用上不能提出任何的,進一步的限制。
測試飛行結果
飛行測試對於保證質量非常重要,請從microSD卡上傳飛行日誌到Log Muncher,並在 論壇分享一個的連線,附帶有書面飛行報告。
論壇和聊天
每週開發電話
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團隊的一員。