1. 程式人生 > >Ubuntu16.04下PX4 開發環境配置

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(折騰一天,不知道以後還會遇到多少坑,哭暈在廁所)