px4原生源码学习一
接觸px4代碼有幾天了,想把自己所學所想記錄下來.
? px4就不過多介紹了,算得上目前使用的最廣泛的開源飛控了。為什么說”px4原生代碼學習呢”,這還得追溯到被大疆干死的3DR,3DR想做消費級無人機,但苦于團隊難建,所以索性就糾集起那幾個著名的開源飛控團隊,讓大家一起搞一起發(fā)財(熟知還是被大疆搞死),但還是留下了這個寶貴的開源飛控遺產(chǎn)。這些開源團隊中出名的當數(shù)APM團隊和pixhawk團隊,其中APM早已名聲在外,早期一直是開源飛控的頭頭,但早期的代碼屬于狀態(tài)機階段,而且據(jù)說很爛,沒有條理。后來加入項目后,將原來的代碼移植到新的系統(tǒng)中來就有了現(xiàn)在的APM(基于px4修改的),這個應該是現(xiàn)在大家學習最多的了。但其實這個代碼并不怎么好,因為其中冗余了太多對于各種開源電路板和傳感器的驅(qū)動適配的代碼。而原生的px4就沒有那么多冗余的代碼了。
? /**************************************************************************************************************
??po上我使用到的硬件和開發(fā)環(huán)境
? px4硬件:某寶銷量最高的pixhawk套件(主機,gps+指南針,數(shù)傳,pwm轉(zhuǎn)pmm,安全開關,蜂鳴器,電源轉(zhuǎn)換接頭)
? 遙控器:某國產(chǎn)神器
? 開發(fā)環(huán)境:虛擬機vm12+ubuntu14
?ps:此文章只針對純代碼分析,關于那些個飛機類型啦,硬件什么的我就不多說了,這個得自己去親身體驗才行,切不可貿(mào)然飛行,這個還是很危險的!!!!!
?還有就是什么git,linux,make什么的也不會多說,畢竟只是工具屬性。
?獲得更好支持可以訪問http//:px4.io 我知道的大部分來自這個網(wǎng)站。
? **************************************************************************************************************/
? 好!廢話不多說,開始吧!
??第一步:設置好你linux用戶的權限,不要什么都直接sudo,這樣會產(chǎn)生很多問題的!!!
?將用戶添加到dialout組
sudo usermod -a -G dialout $USER ? 然后退出系統(tǒng)登錄,在登進來就可以了。
?第二步:安裝依賴工具(這些工具對所有的px4硬件都是必須的,本文只針對pixhawk硬件,其它的什么驍龍板子,樹莓派的,自己去官網(wǎng)看http://dev.px4.io)
??
sudo add-apt-repository ppa:george-edison55/cmake-3.x -ysudo apt-get updatesudo apt-get install python-argparse git-core wget zip \python-empy qtcreator cmake build-essential genromfs -y # simulation toolssudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y
?第三步:安裝Ninja編譯系統(tǒng)(可選項)
?Ninja是google 瀏覽器開發(fā)中產(chǎn)生的附加產(chǎn)物,它是一個編譯器,可以有效加快編譯速度,px4官方推薦使用這個編譯器,用不用看你自己了,make也還是挺好的(事實上當你安裝了ninja時,使用make命令會自動調(diào)用ninja,你基本感覺不到他的存在)。
?首先使用命令:sudo apt-get install ninja??? 安裝ninja,但由于linux支持的ninja版本較低,你安裝的ninja不能用于編譯px4,因為px4要求高版本的,怎么辦?曲線救國!!!
?下載并解壓最新的ninja文件并刪除壓縮文件包
wget https://github.com/martine/ninja/releases/download/v1.6.0/ninja-linux.zipunzip ninja-linux.ziprm ninja-linux.zip ? 將解壓文件夾下的 ninja 可執(zhí)行文件復制到 /usr/bin 目錄下替換原有的 ninja 可執(zhí)行文件。
? 這樣就可以了。
?第四步:移除linux下的串口管理器。
?linux下的串口管理器會導致px4硬件同linux通信產(chǎn)生錯誤,所以要把他移除。
sudo apt-get remove modemmanager
??第五步:安裝編譯系統(tǒng)及其依賴
? 值得注意的是要安裝好對應的版本,版本不對可能會出現(xiàn)錯誤
sudo apt-get remove gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabisudo add-apt-repository ppa:team-gcc-arm-embedded/ppasudo apt-get updatesudo apt-get install python-serial openocd \flex bison libncurses5-dev autoconf texinfo build-essential \libftdi-dev libtool zlib1g-dev \python-empy gcc-arm-embedded -y ? 如果出現(xiàn)? gcc-arm-none-eabi?version produces build errors for PX4/Firmware master??那么就得手動安裝4.9或者5.4的版本
?以上就是編譯環(huán)境的搭建了。
下面就來試試下載和編譯px4原生代碼吧!
?從github下載代碼
mkdir -p ~/src #創(chuàng)建src文件夾 cd ~/src git clone https://github.com/PX4/Firmware.git #clone px4原生代碼 cd Firmware git submodule update --init --recursive #clone px4項目中使用到的依賴(主要是Nuttx實時操作系統(tǒng)) cd .. mkdir -p ~/src cd ~/src git clone https://github.com/PX4/Firmware.git cd Firmware git submodule update --init --recursive cd ..
編譯源碼
cd Firmware make px4fmu-v2_default 針對PX4 FMU v2.X的板子
如果你沒有按照ninja編譯器,你看到的應該是下面的結果代表成功
[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
如果你使用了ninja編譯器,看到下面內(nèi)容代表編譯成功
PX4 CONFIG: /home/lyonlui/src/Firmware/build_px4fmu-v2_default ninja: Entering directory `/home/lyonlui/src/Firmware/build_px4fmu-v2_default' [500/500] Generating nuttx-px4fmu-v2-default.px4
?同所有單片機系統(tǒng)和硬件設備一樣,px4編譯也會產(chǎn)生一個固件,這個固件就在文件夾/Firmware/build_px4fmu-v2_default/src/firmware/nuttx下面,文件名為nuttx-px4fmu-v2-default.px4
將你的px4同電腦連接,電腦會自動安裝驅(qū)動,不自動安裝就使用驅(qū)動精靈,實在不行就問賣硬件的客服吧!!
驅(qū)動安裝好后你會設備管理器里面看到以下內(nèi)容:
打開虛擬機ubuntu,如何在工具欄選中虛擬機->可移動設備->PX4 FMU v2.x ->連接
設備就可以和linux連接了,接下來就是將編譯好的固件下載到板子上了
使用命令:
make px4fmu-v2_default upload 下載成功你會看到:
Erase : [====================] 100.0% Program: [====================] 100.0% Verify : [====================] 100.0% Rebooting.[100%] Built target upload 自此你就完成了px4開發(fā)環(huán)境的搭建了。
最后說說關于圖形開發(fā)環(huán)境,我按照官網(wǎng)給的教程一步一步搭建,最后也能編譯,但始終無法生成可燒錄文件,而且新工程內(nèi)的makefile文件并無upload功能,所以圖形開發(fā)環(huán)境我是沒搭建出來的。(官方說px4官方支持的圖形開發(fā)環(huán)境是qt,所以我就搭了qt的,沒搭成功,不知道eclipes怎么樣)。有那位大神搭建好qt集成開發(fā)環(huán)境的告知小弟一聲。
總結
以上是生活随笔為你收集整理的px4原生源码学习一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++面向对象三大特征封装、继承和多态知
- 下一篇: NuttX 启动流程