日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Windows / Ubuntu操作系统下Pixhawk原生固件PX4的编译方法

發布時間:2024/4/18 Ubuntu 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows / Ubuntu操作系统下Pixhawk原生固件PX4的编译方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎交流~ 個人 Gitter 交流平臺,點擊直達:


更新于2017.3.13

FAQ

本文說明針對 PX4 Firmware 1.6.0

  • 問題 1: 找不到python jinja2模塊
CMake Error at /usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:138 (message):couldn't find python module jinja2:for debian systems try: sudo apt-get install python-jinja2 or for all other OSs/debian: pip install jinja2(missing: PY_JINJA2) Call Stack (most recent call first):/usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:374 (_FPHSA_FAILURE_MESSAGE)cmake/common/px4_base.cmake:1295 (find_package_handle_standard_args)CMakeLists.txt:276 (px4_find_python_module)-- Configuring incomplete, errors occurred!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

解決方案:缺什么安什么

Windows系統下:
pip install jinja2

Linux系統下:
sudo apt-get install python-jinja2

  • 問題 2: Windows下出現rsync error錯誤
The source and destination cannot both be remote rsync error: syntax or usage error (code 1) at /usr/src/rsync/rsync-3.0.8/main.c(1148) [receiver=3.0.8] make[3]: *** [nuttx_copy_px4fmu-v2.stamp] Error 1 make[2]: *** [CMakeFiles/nuttx_copy_px4fmu-v2.dir/all] Error 2 make[2]: *** Waiting for unfilished jobs.... The source and destination cannot both be remote rsync error: syntax or usage error (code 1) at /usr/src/rsync/rsync-3.0.8/main.c(1148) [receiver=3.0.8] make[3]: *** [src/modules/px4iofirmware/nuttx_copy_px4fmu-v2.stamp] Error 1 make[2]: *** [src/modules/px4iofirmware/nuttx_copy_px4fmu-v2.dir/all] Error 2 make[1]: *** [all] Error 2 make[1]: *** [px4fmu-v2_default] Error 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

解決方案:cmake nuttx rsync 僅使用相對路徑進行復制

對Firmware/cmake/nuttx/px4_impl_nuttx.cmake文件進行更改,點擊傳送門

  • 問題 3:內存溢出
collect2.exe:error:ld returned 1 exit status make[3]: *** [src/firmware/nuttx/firmware_muttx] Error 1 make[2]: *** [src/firmware/nuttx/CMakeFiles/firmware_muttx.dir/all] Error 2 make[1]: *** [all] Error 2 make: *** [px4fmu-v2_default] Error 2
  • 1
  • 2
  • 3
  • 4
  • 5

解決方案:移除不是必要的模塊. 配置在這里. 為了移除一個模塊, 可以直接注釋掉它:
對于FMUv2(Pixhawk1)或者FMUv3(Pixhawk 2)硬件,找到Firmware/cmake/configs/nuttx_px4fmu-v2_default.cmake
修改為:

#drivers/trone
  • 1

即可

  • 問題 4: gcc 版本

解決方案:gcc 4.8.4 已經過時了,目前支持的是 4.9.4還有 5.4.3版本。


正文

各個論壇以及QQ群中經常有人反應不知道怎么編譯Pixhawk原生固件PX4,筆者也為這個問題苦惱了很久,最近一時興起,想嘗試下官網的寫一個應用程序,但是原生代碼都編譯不過這可怎么能行,于是東查西試,解決了在Windows操作系統以及Ubuntu操作系統上編譯PX4固件的問題。

Windows 7 64bit

軟件安裝


首先,需要安裝一些軟件,CMake、32位的Java jdk以及PX4 Toolchain Installer。
CMake的話筆者使用的是CMake-3.3.2-win32-x86版本。
關于CMake的安裝有一點需要注意,在第三步Install Options安裝選項中,需要將CMake加入到系統路徑中:

Java sdk:

Eclipse 需要 Java,用命令 java -version 來查看 Java 是否配置 成功。

接下來進行PX4固件相關的配置,安裝PX4 Toolchain Installer,默認安裝在C盤根目錄下,筆者不服,非要安裝在D盤,安裝的時候一路下一步就行。

安裝完以后在開始菜單會出現一套工具鏈包括,PX4Console、PX4Ecplise.

代碼編譯


打開PX4console,下載PX4固件,輸入指令:

git clone https://github.com/PX4/Firmware.git
  • 1

切換到Firmware文件夾,輸入指令:

cd Firmware
  • 1

之后輸入指令:

git submodule update --init --recursive
  • 1

(根據網速耗時有差異,耐心等待)

關鍵一步

在開始最后的編譯之前,有一個步驟必不可少,將arm-none-eabi-gcc 4.7.4換成4.9.4或5.4.3,下載4.9.4版本的壓縮文件,5.4.3版本。

解壓后將這四個文件夾復制并替換到PX4Toolchain安裝目錄下的toolchain文件夾下,這里筆者替換到的文件夾為D:\px4\toolchain。

隨后啟動PX4 Console控制臺進行編譯,先進入Firmware文件夾,輸入指令:

cd Firmware
  • 1

進行編譯

make px4fmu-v2_default
  • 1

(漫長的等待,可能需要半個小時)

編譯成功的界面如下:

如果在沒有進行arm-none-eabi-gcc 4.7.4替換的情況下直接進行固件編譯,則會出現如下所示的錯誤:

為時不晚,依然來得及將下載好的4.9.4版arm-none-eabi-gcc解壓并替換掉Toolchain文件夾下的相應文件。

之后重啟PX4Console控制臺,首先還是先進入到Firmware文件夾下:

cd Firmware
  • 1

輸入指令:

make clean
  • 1

清除上一次的編譯,然后重新編譯,輸入指令:

make px4fmu-v2_default
  • 1

(又是漫長的等待,但是等待都是值得的)

固件燒錄

將飛控板通過USB連接電腦,輸入以下指令即可完成固件的燒錄:

make px4fmu-v2_default upload
  • 1

燒錄成功的界面如下圖:

配置Eclipse


現在控制臺已經編譯成功了,接下來就是進行Eclipse的配置了

  • 打開PX4Eclipse。

第一次啟動時,選擇好workplace,并勾選Use this as the default and……。由于筆者以D盤作為工作目錄,因此這里依然保持將workplace放置在D盤。

  • 建立工程

File -> New -> Makefile Project with Existing Code。
然后點擊Browse……到D:\px4\Firmware,并選擇Cross GCC,點擊Finish。

然后進入Workbench:

  • 創建編譯目標

可以在右邊板塊中Make Target( 或者菜單 Window -> Show View -> Make Target 也可以打開),選中根文件夾(Firmware),可以創建新的 make Target(綠色圓形按鈕)。 如創建目標 px4fmu-v2_default

px4fmu-v2_default創建好如下:

同理創建目標:all,archives,clean,distclean,px4io-v2_default, px4fmu-v2_default upload

  • 各 make target 說明
    • clean – 刪除編譯的固件相關文件,不會清除archives
    • px4fmu-v2_default—FMU 固件
    • px4fmu-v2_default upload – 燒錄固件到飛控板

提示:與make有關的指令可以用Firmware/Makefile文件中查看

  • 路徑配置
    必須配置好Eclipse軟件的路徑才能進行編譯,這一步至關重要。
    打開eclipse軟件,打開目錄欄的Project -> Priorities

    有點意思的是,你得先打開左邊Firmware中的隨便一個文件,否則Priorities這一項會是灰色的,無法進行操作。
    打開相應欄,更改CWD、PWD的路徑:
    開始的路徑(如果裝在默認路徑則為C:\px4)
    然后你的CWD路徑為 C:\px4\Firmware
    這里將路徑改為 /D/px4/Firmware
    差別不大,還望仔細,筆者當時在這個問題上可是糾結了特別久,無限的報錯,not contain Cmakelists.txt。也是得到高人相助,開始人指出來筆者還根本看不出,然后仔細的發現原來是:“\”、“/”“這樣的問題。
    然后再將PWD的路徑也做相應的更改。

  • 編譯固件
    點擊上述Target中的px4fmu-v2_default,即可進行編譯。此操作與在Console控制臺中輸入make有同樣的效果。

  • 燒錄固件
    固件的燒錄可以直接使用QGC地面站進行。也可以在PX4 Console或者PX4 Eclipse中進行,編譯成功后在PX4 Eclipse界面右側點擊Target中的px4fmu-v2_default upload即可進行固件的燒錄。這樣就可以將自己的算法加入到原生固件中了。

至此,在Windows環境下編譯Pixhawk原生固件PX4的操作已經完成。



Ubuntu 14.04 LTS

筆者同時也進行了Ubuntu上的環境搭建。跟隨大流,筆者安裝了Ubutnu 14.04 LTS虛擬機,64位操作系統。

在Ubuntu上搭建環境相對簡單許多,按照PX4中文維基官網的教程即可。

工具鏈安裝


  • 權限設置

把用戶添加到用戶組 “dialout”(如果這步沒做,會導致很多用戶權限問題):

sudo usermod -a -G dialout $USER
  • 1

然后注銷后,重新登錄,因為重新登錄后所做的改變才會有效

  • 安裝CMake
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y sudo apt-get update # 必備軟件(python、git、qt) sudo apt-get install python-argparse git-core wget zip \python-empy qtcreator cmake 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-dev libopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 卸載模式管理器

Ubuntu配備了一系列代理管理,這會嚴重干擾任何機器人相關的串口(或usb串口),卸載掉它也不會有什么影響。

sudo apt-get remove modemmanager
  • 1
  • 更新包列表和安裝下面的依賴包
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

代碼編譯


根據PX4中文維基官網教程。

  • 安裝Git
sudo apt-get install git-all
  • 1
  • 下載代碼
mkdir -p ~/src cd ~/src git clone https://github.com/PX4/Firmware.git
  • 1
  • 2
  • 3
  • 初始化
    先進入Firmware文件夾,進而進行初始化、更新子模塊操作,耐心的等待……
cd Firmware git submodule update --init --recursive
  • 1
  • 2
  • 編譯
    在上一步的操作結束之后,即可進行編譯:
make px4fmu-v2_default
  • 1

注意到“make”是一個字符命令編譯工具,“px4fmu-v2”是硬件版本,“default”是默認配置,所有的PX4編譯目標遵循這個規則。

與Windows環境中相同,這里也可能因為gcc-arm-none-eabi版本不對,需要進行版本升級到4.9.4,方法如下:

  • 下載gcc-arm-none-eabi 4.9.4,對于的文件夾命名為arm-none-eabi-4_9-2014**q3**
wget https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update/+download/gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2
  • 1
  • 去舊迎新
pushd . # => 卸載新版的gcc-arm-none-eabi sudo apt-get remove gcc-arm-none-eabi # => 安裝下載好的gcc-arm-none-eabi tar -jxf gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2 sudo mv gcc-arm-none-eabi-4_9-2015q3 /opt exportline="export PATH=/opt/gcc-arm-none-eabi-4_9-2015q3/bin:\$PATH" if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi # => 使路徑生效 . ~/.profile popd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

對于GCC5.4.3版本的下載:

wget https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q2-update/+download/gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2
  • 1

其余操作不再贅述

PX4 中文維基 同步更新。


筆者裝的是Ubuntu 64位系統,而上述arm-none-eabi是直接下載的編譯好的32位,還需要安裝一個東西

sudo apt-get install lsb-core
  • 1

可以檢查arm-none-eabi 4.9是否安裝成功,輸入以下指令:

arm-none-eabi-gcc --version
  • 1

如果出現如下信息,交叉編譯環境搭建就沒有什么問題了

~$ arm-none-eabi-gcc --version arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977] Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 編譯
cd ~/src/Firmware make px4fmu-v2_default
  • 1
  • 2

進入Firmware所在的文件夾,make成功后,顯示如下:

Ninja

Ninja比Make更快,并且PX4的CMake生成器可以支持它。不幸的是,Ubuntu目前只支持一個非常過時的版本。

這里博主下載二進制文件并添加到系統路徑來安裝最新版本的Ninja:

mkdir -p $HOME/ninja cd $HOME/ninja wget https://github.com/martine/ninja/releases/download/v1.6.0/ninja-linux.zip unzip ninja-linux.zip rm ninja-linux.zip exportline="export PATH=$HOME/ninja:\$PATH" if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi . ~/.profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

按上面的方法配置好ninja之后,以后每次一make都會調用它,這樣編譯速度會更快。

如果不想使用ninja的話,可以將其從’~/.profile’中注釋掉。

#export PATH=/home/fantasy/ninja:$PATH

Qt Creator


Qt Creator是官方唯一支持的IDE,在Ubuntu上針對PX4固件使用,便于看代碼的同時也可以進行編譯燒錄。

  • 安裝Qt
sudo apt-get install qtcreator
  • 1

Qt Creator的常見功能如下:

在打開Qt之前,應該創建project文件:

cd ~/src/Firmware mkdir ../Firmware-build cd ../Firmware-build cmake ../Firmware -G "CodeBlocks - Unix Makefiles" #可以發現Firmware-build目錄生成了一些文件
  • 1
  • 2
  • 3
  • 4
  • 5

提個醒: 按照官網上面最后一行的命令,當前使用Qt編譯得到的將是build px4 ,因為默認的編譯指令是make posix_sitl_default,這不是大家所期待的結果。

解決方案:對于,Pixhawk硬件,將最后一行改成
cmake ../Firmware -G "CodeBlocks - Unix Makefiles" -DCONFIG=nuttx_px4fmu-v2_default

其他例如使用FMUv4的用戶請根據需求進行替換。

  • 打開Qt

    Ubuntu用戶只要導入主文件夾里的CMakeLists.txt文件就可以了,打開Qt,通過File -> Open File or Project -> 選擇CMakeLists.txt (默認位置在Firmware文件夾根目錄下)

  • 項目配置
    選擇src/Firmware-build作為構建目錄

    運行設置

  • 編譯

  • 上傳

筆者剛開始的時候發現Qt中默認顯示的固件不全,很多文件都沒有顯示,如下圖所示

進行下面的操作就哦可了

Eclipse on Ubuntu

在Windows下習慣了使用Eclipse的用戶也可以直接在Ubuntu下使用Eclipse進行開發,與Qt一樣,這也是一款跨平臺的IDE。
就是Java配置有點復雜,用起來卻是非常方便的,除了不用更改環境設置,其他的都與Windows下無異,此處不在贅述。

一個很棒的特點就是Ubuntu下的Eclipse可以直接加中文注釋,這是別的編譯器沒有的,我嘗試了用Sublime看代碼,定義跳轉不太給力,Qt打開工程很慢。

目前為止最好的方法還是虛擬機,Windows改一行代碼編譯上傳可能需要五分鐘,非常費勁,但是Ubuntu可以說是極速。但是Windows下有很多好用的工具便于調試,Source Insight看代碼也是很給力。虛擬機完美。

至此,在Windows已經Ubuntu下的環境搭建已經全部搭建成功。

現在是2016.7.26 19:37 為了確保方法的有效性,筆者已經在都裝有Ubuntu虛擬機的筆記本和臺式機上用上述方法完成了兩種系統下環境搭建、代碼編譯的復現,親測有效。

Tips

下載特定版本的固件

PX4Firmware有非常多的發行版,可以從這里看到。

也可以在這里進行選擇:

其實下載鏈接都是https://github.com/PX4/Firmware.git。

~$:cd ~/src/Firmware # 查看標簽(版本) ~$:git tag ... v1.4.0rc1 v1.4.0rc2 v1.4.0rc3 v1.4.0rc4 v1.4.1rc1 v1.4.1rc2 ... # 新建一個工作分區并切換到目標版本 git checkout -b branch_name tag_name
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

這樣就可以使用你想要的任意版本固件進行開發了。(因為可能有的版本確實不太穩定)

Makefile

# Don't be afraid of this makefile, it is just passing # arguments to cmake to allow us to keep the wiki pages etc. # that describe how to build the px4 firmware # the same even when using cmake instead of make.
  • 1
  • 2
  • 3
  • 4

Makefile只是將參數傳遞給cmake。所有與make相關的指令都可以在這里找到,也可以自定義編譯指令,比如

# explicity set default build target fantasy: px4fmu-v2_default
  • 1
  • 2

于是博主編譯固件變成下面這個樣子:

~$:~/src/Firmware $ make fantasy PX4 CONFIG: px4fmu-v2_default ninja: no work to do.
  • 1
  • 2
  • 3

做這些只為讓遇到相同問題的人少走彎路,專注核心問題,這也是筆者開展PX4中文維基漢化項目的初衷。
還望志同道合的你們多多支持!~

Just Enjoy It .

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? By Fantasy

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Windows / Ubuntu操作系统下Pixhawk原生固件PX4的编译方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。