PX4 の ubuntu18 用の設定
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 を実行すると、次のようなメッセージが表示されます。
~/PX4_Firmware$ git submodule update --init --recursive
Submodule 'Tools/jMAVSim' (https://github.com.cnpmjs.org/PX4/jMAVSim.git) is not registered for path 'Tools/jMAVSim'
Submodule 'Tools/sitl_gazebo' (https://github.com.cnpmjs.org/PX4/sitl_gazebo.git) is not registered for the path 'Tools/sitl_gazebo'
Submodule 'boards/atlflight/cmake_hexagon' (https://github.com.cnpmjs.org/PX4/cmake_hexagon.git) is not registered for the path 'boards/atlflight/cmake_hexagon'
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'
Submodule 'platforms/nuttx/NuttX/apps' (https://github.com.cnpmjs.org/PX4/NuttX-apps.git) is not registered for the path 'platforms/nuttx/NuttX/apps'
Submodule 'platforms/nuttx/NuttX/nuttx' (https://github.com.cnpmjs.org/PX4/NuttX.git) is not registered for the path 'platforms/nuttx/NuttX/nuttx'
Submodule 'platforms/qurt/dspal' (https://github.com.cnpmjs.org/ATLFlight/dspal.git) is not registered for the path 'platforms/qurt/dspal'
Submodule 'src/drivers/gps/devices' (https://github.com.cnpmjs.org/PX4/GpsDrivers.git) is not registered for path 'src/drivers/gps/devices'
Submodule 'src/drivers/uavcan/libuavcan' (https://github.com.cnpmjs.org/PX4/uavcan.git) is not registered for path 'src/drivers/uavcan/libuavcan'
Submodule 'src/lib/ecl' (https://github.com.cnpmjs.org/PX4/ecl.git) is not registered for path 'src/lib/ecl'
Submodule 'src/lib/matrix' (https://github.com.cnpmjs.org/PX4/Matrix.git) is not registered for the path 'src/lib/matrix'
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
wtj-virtual-machine:~/PX4_Firmware$ git submodule update --init --recursive
fatal: Needed a single revision
Cannot find the current version in the submodule path 'Tools/jMAVSim'
解決策
該当するフォルダーを削除する(例:jMAVSimフォルダーを削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例