1. 程式人生 > >ubuntu下 安裝PX4編譯環境

ubuntu下 安裝PX4編譯環境

最近博主的ubuntu虛擬機器再次崩潰,狠下決心將4G記憶體升級為12G。這樣就可以給虛擬機器多分配些記憶體了。

鑑於前兩次安裝PX4環境出現了很多錯誤,走了很多彎路,沒有一一記錄下來,所獲甚少。故而藉此機會,

詳細總結ubuntu下,PX4的編譯環境的搭建過程,以期有所進步。

限於博主剛剛入道,水平有限,所述難免有誤。疏漏謬誤之處,萬望指正,在此拜謝。


所用系統:ubuntu 16.04 64bit

                  Vmare虛擬機器,自動安裝

編譯系統搭建步驟:

1)虛擬機器安裝完成後,啟動ubuntu系統。點選右上角電源圖示,點選“about this computer”

      在彈出的對話方塊,選擇detail,overview,install updates。

     按照提示輸入密碼,安裝更新。

2)右鍵開啟terminal 

3)輸入指令:sudo usermod -a -G dialout $USER

     重啟系統,使之生效。

4)輸入指令:sudo apt install cmake gcc-arm-none-eabi -y

     備註:安裝編譯工具

5)輸入指令:sudo apt autoremove

     備註:自動清除 snap-confine。這一步是按照安裝提示輸入的,並非官網說明。

6)輸入指令:sudo apt install python-argparse python-empy python-jinja2 build-essential genromfs  -y

                       sudo apt install python-pip -y 

                       pip install pyserial

                       pip install --upgrade pip     (更新pyserial,這一步是按照系統提示進行的。)

     備註:安裝python,及相關模組。

7)輸入指令:sudo apt install git git-core -y

                       mkdir -p ~/src

                       cd ~/src

                       git clone --recursive https://github.com/mavlink/qgroundcontrol.git(下載qgc原始碼)

                       git clone --recursive https://github.com/PX4/Firmware.git(下載PX4原始碼)

                       cd Firmware 或者cd qgroundcontrol  (這個主要看你當前是在下PX4還是下QGC)

                       git submodule init 

                       git submodule update

     備註:兩個原始碼都有一些子模組,並沒有直接放到主原始碼當中。使用--recursive可以捎帶子模組一同下載。

                否則便只會下載master原始碼,而缺少子模組。       下載中間如果斷網則只能重新下載。

                下載完成後,使用最後兩句,確保所有子模組均被下載。當然這兩句話可能什麼都不做。

                這裡QGC的原始碼並不是編譯PX4的必須條件,可以先不下,之後再下載也可以。

8)輸入指令:cd ~/src/Firmware

                        make px4fmu-v2_default

      備註:現在編譯使用的是gcc進行編譯,如果使用ninja編譯,還需額外安裝。

                 ninja據說再次編譯的較快。

                 使用以下命令安裝ninja:cd ~

                                                         sudo apt install ninja-build -y

                 建議每次修改程式碼後,編譯前,使用 make clean清除下之前編譯的結果,

                 然後再使用make px4fmu-v2_default 進行編譯。

9)輸入指令:make px4fmu-v2_default upload

     備註:利用USB線連線pixhawk和PC。在編譯完成後,使用上述命令下載韌體到飛控中。

                如果不能自動下載,可根據提示重新插拔USB,即可下載。

                如果仍然不能下載,可以按照如下命令配置udev許可權。

                sudo gedit /etc/udev/rules.d/10-px4.rules

                在新建的10-px4.rules中新增如下內容:

                # All 3D Robotics (includes PX4) devices

                SUBSYSTEM=="usb", ATTRS{idVendor}=="26AC", GROUP="users", MODE="0666"

                # FTDI (and Black Magic Probe) Devices

                SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", GROUP="users", MODE="0666"

                # FTDI USB-Serial

                SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="users", MODE="0666"

                儲存並關閉10-px4.rules

                sudo restart udev 

                重新插拔usb線。

                這裡的配置檔案,博主不求甚解,只是摘抄了別人的解決辦法,並未通過實測可行。

異常說明:

1)最後一步,新建完配置檔案10-px4.rules後,輸入“ sudo restart udev ” 重啟udev失敗。

     提示為:restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused

     後果:貌似暫時沒發現有什麼影響。因為博主後來強制刪除了該檔案,並重新啟動電腦,仍然可以下載韌體。

     可能的解釋:需要在Linux(Ubuntu)普通使用者下訪問原本要在root下才能訪問的usb裝置,需要配置該檔案。

                          但是官網上並沒有這個檔案的描述,因此猜想其並非是必要的。

                          聯想到剛開始第三步使用的命令sudo usermod -a -G dialout $USER

                          是不是表明當前使用者已經獲得了root許可權了呢,如果是這樣自然不需要該配置檔案了。