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許可權了呢,如果是這樣自然不需要該配置檔案了。