1. ホーム
  2. ウブントゥ

PX4 の ubuntu18 用の設定

2022-03-17 07:18:52

Ubuntu 18.04でのPX4/Pixhawkネイティブファームウェアのビルド環境構築について

CSDNに掲載されているいくつかの開発者の記事をまとめ、微調整して動作確認したものです

参考記事

(7件) PX4搭載のUAVシミュレーション環境構築 解決に向けた課題_TYINYのブログ - CSDN Blog

(9メッセージ) 最新のLinuxシステムでPX4/Pixhawkのネイティブファームウェアのコンパイル環境を構築!!!! C_zzzzzのブログ - CSDNブログ

ダイアルアウトワークグループにユーザーを追加する

ユーザーを分ける目的は、これによって開発環境を分離し、異なるユーザー間でのバージョンの衝突などの事態を避けるためです。dialoutユーザーグループにユーザーを追加する目的は、dialoutがシリアルポートttyにアクセスするためです。   

 sudo usermod -a -G dialout $USER

注意:ログアウトと再ログインについて



パッケージのインストール

#ソフトウェアのソース一覧を更新する。

  sudo apt-get update -y

#git, zip, cmake, qt, ninja などの必要なパッケージをインストールします。

  sudo apt-get install git zip qtcreator cmake build-essential genromfs ninja-build exiftool -y

注:ソースの追加操作は通常、操作に成功すると "OK" が、更新に成功すると "done" がポップアップで表示されます。



一般的なpythonの依存関係や管理ツールのインストール。      

  sudo apt-get install python-argparse python-empy python-toml python-numpy python-yaml \
        python-dev python-pip -y

  sudo -H pip install --upgrade pip
  
  sudo -H pip install pandas jinja2 pyserial cerberus

正しいバージョンのgcc-arm-none-eabiをインストールしてください!!!

ubuntuでコンパイルしたファームウェアはarmシステム上で動作させる必要があるため、クロスコンパイラを使用する必要があります。まずこのウェブサイトにアクセスし、上位版のインストールファイルをダウンロードしてください。

    https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

動作確認済み、2017-q4に超おすすめ!!!!

減圧    

  tar jxvf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 -C /usr/bin


環境変数の変更

 vim /etc/profile

最後の行に、次のように付け加えます。 i で編集モードに入り、esc で編集モードを終了し、:wq で保存して終了します。vim がパーミッションを要求してきたら、sudo su で管理者モードにしてから上記を実行します。

export PATH=/usr/bin/gcc-arm-none-eabi-7-2017-q4-major/bin:$PATH

  新しい環境変数を有効にし、再起動します。

  source /etc/profile

  reboot

コンパイラのバージョンを確認し、設定が成功したことを確認する    

echo $PATH

arm-none-eabi-gcc --version

コマンドを実行すると、次のようになります。

環境設定チェック



ソースコードのコンパイル

  #ソースコードのクローン

git clone -b v1.8.2 https://github.com/PX4/Firmware.git

 #サブモジュールを更新する。



git submodule update --init --recursive

 #コンパイルします。



make px4_fmu-v2_default

次のリストは、汎用ボードのビルドコマンドです。

<ブロッククオート

    Pixhawk 4: make px4_fmu-v5_default



    Pixracer: px4_fmu-v4_default を作成します。



    Pixhawk 3 Pro: px4_fmu-v4pro_default を作成します。



    Pixhawk Mini: px4_fmu-v3_default を作成します。



    Pixhawk 2: px4_fmu-v3_default を作成します。



    mRo Pixhawk: px4_fmu-v3_default を作成 (2MB Flash をサポート)



    HKPilot32: px4_fmu-v2_defaultを作成します。



    ピクファルコン:px4_fmu-v2_default を作成する。



    Dropix: px4_fmu-v2_default を作成する。



    MindPX/MindRacer: airmind_mindpx-v2_default を作成。



    mRo X-2.1: auav_x21_default を作成します。



    Crazyflie 2.0: bitcraze_crazyflie_default を作成。



    インテル® Aero Ready to Fly ドローン:make intel_aerofc-v1_default



    Pixhawk 1: px4_fmu-v2_default を作成します。

ファームウェアのコンパイル。

成功





エラー報告時の問題処理

1. 作れない、または以下の通り。







プログラム

    #make はアクション文字 px4fmu はファームウェア名 -v2 はバージョン番号 _default は初期設定値



    #実際のmakeの後には、コンパイルが必要なモジュールが置かれているファイル名が続く



    #make p と入力して Tab キーを押せば、p で始まる一連のファイルがポップアップ表示されます。





2. 不足しているテンプレート







プログラム



足りない部分を記入し、画面の指示に従ってテンプレートを埋めていきます。途中から、以下のような問題が発生します。







シナリオ:端末入力は以下の通り。

    python2 --version #python2 のインストールバージョンを見る



    python3 --version #python3 のインストールバージョンを見る



    python --version #システムで使用されているバージョンを表示します。

python3 に変更します。

端末入力

  echo alias python=python3 >> ~/.bashrc

ソースビット

  source ~/.bashrc

バージョン表示です。

python --version





アップグレードpipの直後。

  python -m pip install --upgrade pip





3. クロス環境エラー

クロスオーバー環境の再インストール、バージョン2017-q4が強く推奨されていることをお忘れなく!!!

4. git サブモジュールの更新 --init --recursive で発生する問題

  • 課題1

github.com.cnpmjs.org のミラーを使用して git clone した場合、git submodule update --init --recursive を実行すると、次のようなメッセージが表示されます。

  1. ~/PX4_Firmware$ git submodule update --init --recursive

  2. Submodule 'Tools/jMAVSim' (https://github.com.cnpmjs.org/PX4/jMAVSim.git) is not registered for path 'Tools/jMAVSim'

  3. Submodule 'Tools/sitl_gazebo' (https://github.com.cnpmjs.org/PX4/sitl_gazebo.git) is not registered for the path 'Tools/sitl_gazebo'

  4. Submodule 'boards/atlflight/cmake_hexagon' (https://github.com.cnpmjs.org/PX4/cmake_hexagon.git) is not registered for the path 'boards/atlflight/cmake_hexagon'

  5. Submodule 'mavlink/include/mavlink/v2.0' (https://github.com.cnpmjs.org/mavlink/c_library_v2.git) is not registered for path 'mavlink/include/mavlink/v2.0'

  6. Submodule 'platforms/nuttx/NuttX/apps' (https://github.com.cnpmjs.org/PX4/NuttX-apps.git) is not registered for the path 'platforms/nuttx/NuttX/apps'

  7. Submodule 'platforms/nuttx/NuttX/nuttx' (https://github.com.cnpmjs.org/PX4/NuttX.git) is not registered for the path 'platforms/nuttx/NuttX/nuttx'

  8. Submodule 'platforms/qurt/dspal' (https://github.com.cnpmjs.org/ATLFlight/dspal.git) is not registered for the path 'platforms/qurt/dspal'

  9. Submodule 'src/drivers/gps/devices' (https://github.com.cnpmjs.org/PX4/GpsDrivers.git) is not registered for path 'src/drivers/gps/devices'

  10. Submodule 'src/drivers/uavcan/libuavcan' (https://github.com.cnpmjs.org/PX4/uavcan.git) is not registered for path 'src/drivers/uavcan/libuavcan'

  11. Submodule 'src/lib/ecl' (https://github.com.cnpmjs.org/PX4/ecl.git) is not registered for path 'src/lib/ecl'

  12. Submodule 'src/lib/matrix' (https://github.com.cnpmjs.org/PX4/Matrix.git) is not registered for the path 'src/lib/matrix'

  13. The submodule 'src/modules/micrortps_bridge/micro-CDR' (https://github.com.cnpmjs.org/PX4/micro-CDR.git) is not registered for the path 'src/modules/micrortps_bridge/ micro-CDR' is registered

解決策



.gitmoduleファイル内のurl形式を確認します。



以下のように置き換えるだけです。

gedit .gitmodules


.gitmodules ファイル内の github.com をすべて github.com.cnpmjs.org に置き換えてください。



[サブモジュール "mavlink/include/mavlink/v2.0"] を参照してください。



パス = mavlink/include/mavlink/v2.0



url = https://github.com.cnpmjs.org/mavlink/c_library_v2.git



ブランチ = マスター

修正後、再度実行してください。

git submodule sync


  • 課題2
  1. wtj-virtual-machine:~/PX4_Firmware$ git submodule update --init --recursive

  2. fatal: Needed a single revision

  3. Cannot find the current version in the submodule path 'Tools/jMAVSim'

解決策



該当するフォルダーを削除する(例:jMAVSimフォルダーを削除する