Ubuntu16.04下PX4 開發環境配置
PX4 Ubuntu16.04 開發環境配置
看到官網有詳細介紹(官網安裝說明連結)時,喜出望外,列下了一串學習任務,以為會很快就搞定開發環境,結果搞了半天發現自己還是too young too naive,一步一個坑,暫時記錄下來,留給有需要的人
問題1: 依賴錯誤及安裝時404錯誤
sudo apt-get install python-argparse git-core wget zip \
python-empy qtcreator cmake build-essential genromfs -y
報錯如下:
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
正在讀取狀態資訊... 完成
注意,選中 'libpython2.7-stdlib' 而非 'python-argparse'
build-essential 已經是最新版 (12.1ubuntu2)。
zip 已經是最新版 (3.0-11)。
wget 已經是最新版 (1.17.1-1ubuntu1.2)。
libpython2.7-stdlib 已經是最新版 (2.7.12-1ubuntu0~16.04.1)。
有一些軟體包無法被安裝。如果您用的是 unstable 發行版,這也許是
因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟體
包尚未被建立或是它們已被從新到(Incoming)目錄移出。
下列資訊可能會對解決問題有所幫助:
下列軟體包有未滿足的依賴關係:
qtcreator : 依賴: libclang1-3.6 (>= 3.6) 但是它將不會被安裝
E: 無法修正錯誤,因為您要求某些軟體包保持現狀,就是它們破壞了軟體包間的依賴關係。
以為是沒裝qt,跑去裝完最新的qt 5.9發現然並軟,
嘗試修復依賴:
sudo apt-get install aptitude
sudo aptitude install libclang-dev
顯示如下:
0 個軟體包被升級,新安裝 5 個, 1 個將被刪除, 同時 0 個將不升級。
需要獲取 12.2 MB 的存檔。 解包後將要使用 123 MB。
下列軟體包存在未滿足的依賴關係:
libclang-3.6-dev : 依賴: libclang1-3.6 (= 1:3.6.2-3ubuntu1) 但它將不會被安裝。
libobjc4 : 依賴: gcc-5-base (= 5.3.1-14ubuntu2) 但是 5.4.0-6ubuntu1~16.04.4 已安裝。
libclang-common-3.6-dev : 依賴: libllvm3.6v5 (= 1:3.6.2-3ubuntu1) 但它將不會被安裝。
libobjc-5-dev : 依賴: gcc-5-base (= 5.3.1-14ubuntu2) 但是 5.4.0-6ubuntu1~16.04.4 已安裝。
依賴: libgcc-5-dev (= 5.3.1-14ubuntu2) 但是 5.4.0-6ubuntu1~16.04.4 已安裝。
下列動作將解決這些依賴關係:
保持 下列軟體包於其當前版本:
1) libclang-3.6-dev [未安裝的]
2) libclang-common-3.6-dev [未安裝的]
3) libclang-dev [未安裝的]
4) libobjc-5-dev [未安裝的]
5) libobjc4 [未安裝的]
是否接受該解決方案?[Y/n/q/?]
輸入: y
依舊報錯,和前面一樣,
再次嘗試sudo aptitude install libclang-dev
……
是否接受該解決方案?[Y/n/q/?]
此處輸入:n,得到提示如下
下列動作將解決這些依賴關係:
安裝 下列軟體包:
1) libclang1-3.6 [1:3.6.2-3ubuntu1 (xenial)]
2) libllvm3.6v5 [1:3.6.2-3ubuntu1 (xenial)]
3) libobjc-5-dev [5.3.1-5ubuntu1 (xenial)]
4) libobjc4 [5.3.1-5ubuntu1 (xenial)]
降級 下列軟體包:
5) cpp-5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
6) g++-5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
7) gcc-5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
8) gcc-5-base [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
9) gfortran-5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
10) libasan2 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
11) libatomic1 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
12) libcc1-0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
13) libcilkrts5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
14) libgcc-5-dev [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
15) libgfortran-5-dev [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenia
16) libgfortran3 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
17) libgomp1 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
18) libitm1 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
19) liblsan0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
20) libmpx0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
21) libquadmath0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
22) libstdc++-5-dev [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)
23) libstdc++6 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
24) libtsan0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
25) libubsan0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
是否接受該解決方案?[Y/n/q/?] y
看到一串降級預感有戲,果然,再次執行
sudo apt-get install python-argparse git-core wget zip \
python-empy qtcreator cmake build-essential genromfs -y
報的錯變成了:
錯誤:1 http://mirror.neu.edu.cn/ubuntu xenial/universe amd64 genromfs amd64 0.5.2-2build2
404 Not Found [IP: 202.118.1.64 80]
E: 下載 http://mirror.neu.edu.cn/ubuntu/pool/universe/g/genromfs/genromfs_0.5.2-2build2_amd64.deb 404 Not Found [IP: 202.118.1.64 80] 失敗
E: 有幾個軟體包無法下載,要不執行 apt-get update 或者加上 --fix-missing 的選項再試試?
顯示genromfs這個模組404錯誤了
在清華映象站上找到也有這個包,按教程替換成清華源先備份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
更改源:sudo gedit /etc/apt/sources.list
開啟https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/選擇自己的版本,將內容替換開啟的sources.list裡的文字,儲存關閉。
重要,一點要更新一下系統,不然繼續執行之前的install命令會一直報錯
sudo apt-get update
再進行下面的各種安裝應該就不會再有404的錯誤了
問題2: 安裝基於NuttX的硬體出錯
最後一步安裝NuttX時,官網介紹很奇怪,apt-get install 選項中居然少了arm-none-eabi,補全後為:
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
問題3: 編譯報錯
make px4fmu-v2_default
到14%報錯:
python import error: No module named em
python import error: No module named em
Required python packages not installed.
On a Debian/Ubuntu system please run:
sudo apt-get install python-empy
sudo pip install catkin_pkg
On MacOS please run:
sudo pip install empy catkin_pkg
On Windows please run:
easy_install empy catkin_pkg
Required python packages not installed.
On a Debian/Ubuntu system please run:
sudo apt-get install python-empy
sudo pip install catkin_pkg
On MacOS please run:
sudo pip install empy catkin_pkg
On Windows please run:
easy_install empy catkin_pkg
python import error: No module named em
Required python packages not installed.
On a Debian/Ubuntu system please run:
sudo apt-get install python-empy
sudo pip install catkin_pkg
On MacOS please run:
sudo pip install empy catkin_pkg
On Windows please run:
easy_install empy catkin_pkg
CMakeFiles/msg_gen.dir/build.make:900: recipe for target 'src/modules/uORB/topics/actuator_armed.h' failed
make[3]: *** [src/modules/uORB/topics/actuator_armed.h] Error 1
make[3]: *** 正在等待未完成的任務....
CMakeFiles/msg_gen.dir/build.make:153: recipe for target 'topics_sources/uORBTopics.cpp' failed
make[3]: *** [topics_sources/uORBTopics.cpp] Error 1
CMakeFiles/msg_gen.dir/build.make:528: recipe for target 'src/platforms/nuttx/px4_messages/px4_actuator_armed.h' failed
make[3]: *** [src/platforms/nuttx/px4_messages/px4_actuator_armed.h] Error 1
CMakeFiles/Makefile2:69: recipe for target 'CMakeFiles/msg_gen.dir/all' failed
make[2]: *** [CMakeFiles/msg_gen.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make[1]: *** [all] Error 2
Makefile:164: recipe for target 'px4fmu-v2_default' failed
make: *** [px4fmu-v2_default] Error 2
解決方法1:
pip install empy
問題4: QT配置問題
教程裡面太簡略啦,現在安裝的高版本QT介面有點不一樣,
首先:載入 Firmware 根目錄下 CMakeLists.txt 檔案,步驟:點選工具欄 File -> Open File or Project -> Select the CMakeLists.txt file 。(注意,是Firmware 根目錄下,而不是新建的build目錄)
然後:
在這裡:
點選Add–Custom Executable
executable 欄裡輸入’make’, argument欄輸入 ‘upload’
點選‘play’按鈕配置成執行工程(程式左下角綠色小三角)。
真羨慕那些一遍安裝就成功沒有任何錯的lucky dog(折騰一天,不知道以後還會遇到多少坑,哭暈在廁所)