(2023年7月29日追記)
Ubuntu Serverでなくても、64bit版Raspberry Pi OS Bullseyeでも問題なくArduPilot SITLがインストールできました。
はじめに
オープンソースのフライトコントローラ「ArduPilot」には,シミュレーション環境としてSITL(Software in the Loop)があります.
本ページでは,これを「Ardupilot-SITL」と呼んで記事を書いていこうと思います.
以前,
で,SITLのインストール方法を説明しました.
このシミュレーション機能を使えば,
・Pixhawk系フライトコントローラに自作で追加した機能をテストする.(ファームウェアの改造)
・ドローン輸送などのプログラムの動作テストをする.(コンパニオンPCのプログラム)
・群飛行などの複数同時飛行のテストをする.(地上の管制プログラム)
など,実機で試す前に様々な仮想実験が行えます.
ところが,Ardupilot-SITLは,インテル系のCPUを持ち,64bitのOSが入ったPCでしか動作できませんでした.
実質「Linux用のデスクトップPCを別途1台準備しろ」と言われている様なものです.
余ったPCがある人でないといけない,というのが辛いところでした(泣)
しかし,最近Raspberry Pi用のOSが64bitに対応しました.
ということは「Ardupilot-SITLがラズパイで動くのでは?」と期待してしまいますよね.
ところが,公式ページそのままの手順ではインストールできませんでした...
本ページでは,ラズパイ4にArdupilot-SITLをインストールする手順を解説します.
概要
公式ページ SITL Simulator (Software in the Loop)
にインストールの方法が記載されているので,基本的にはこの手順で行いますが,
2020年7月の現時点では依存しているライブラリ"pygame"のインストールでトラブること確認しています.
というわけで,以前のページ にラズパイ対策として必要な部分を記載します.
準備するもの
・Raspberry Pi 4 (メモリ4GB版)
dronekit-sitlは「x86系のみ,ARM系非サポート」と明記されていましたが,
Ardupilot-SITLはARM系でも大丈夫!
・動作確認済みOS: Ubuntu Server 18.04.4 arm64版
このページ で「Download 64bit」をクリック
・有線LAN
Ubuntu ServerはGUIの無いコマンドライン版なので,WiFi設定などが大変.
なので最初は有線LANでアップデートやソフトウェアインストールをします.
初期設定の参考ページ
・[Raspberry Pi 4にUbuntu Serverを入れて初期設定をするまで]
(https://qiita.com/quailDegu/items/63114ba1e14416df8040)
イメージのダウンロード,SDカードへの書き込み,WiFi設定,初回ログインあたりまでが参考になります.
・Raspberry Pi 4とUbuntu Server+デスクトップのインストール
・Raspberry Pi 4にUbuntu MATEをインストールしてみた
コマンドラインしかないUbuntu Serverにデスクトップ環境をインストールする方法です.
xfce,lxde,KDE,MATEのお好きなものをどうぞ.
「シミュレーション環境にはデスクトップなぞいらん!」という猛者には必要ない作業です.
WiFiの設定はデスクトップ環境が入ってからでも良いよね~という弱者の筆者(^^;;
初回起動時
初回起動時は,
Ubuntu 18.04.4 LTS ubuntu tty1
ubuntu login:
この様に表示されるので,
ユーザ名:ubuntu
パスワード:ubuntu
でログインしてください.
※cloud-initの出力メッセージがloginに被ってきて非常に邪魔(怒)ですが,どうしようもないので,「いないもの」と見なしてIDとパスを打ち込みましょう.
ログインすると,
「パスワードを変更しろ」と言ってくるので,
まずは現在(current)のパスワードubuntuを入力し,
You are required to change your password immediately (root enforced)
Changing password for ubuntu.
(current) UNIX password:
続いて新しいパスワードを2回打ち込みます.
Enter new UNIX password:
Retype new UNIX password:
すると,色々メッセージが出た後にプロンプト($)が出ます.
ubuntu@ubuntu:~$
これでログイン完了です.
以降の作業のために,ラズパイが有線LANでインターネット接続できるようになっていることを確認しておきましょう.
また,コンソールで手打ちでコマンドを打ち込むのが嫌な場合,
この時点でデスクトップ環境をインストールしておくことをオススメします.
Webブラウザをインストールすれば,本ページを見ながらコピー&ペーストで作業ができますね(^^
aptの更新
まずはaptのリポジトリのリストを最新のものに更新(update)し,
更新のあるものをupgradeします.
sudo apt update
sudo apt upgrade -y
初回なので,100個以上のアップデートがあります.
コーヒーでも飲んでゆっくり待ちましょう(^^
gitのインストール
もし,gitがインストールされていなかったら,インストールします.
(確か既にインストールされていたはず)
sudo apt install git
Ardupilotのクローン
ホームフォルダにArdupilot本体をクローン(コピーダウンロード)します.
また,必要なサブモジュール(mavlinkやChibiOS,wafなど)もダウンロードしておきます.
cd ~
git clone https://github.com/ArduPilot/ardupilot
cd ardupilot
git submodule update --init --recursive
必要なパッケージのインストール
インテルPCだと,ここでインストール用のシェルファイルinstall-prereqs-ubuntu.sh
を実行するのですが,"pygame"のインストール中にエラーで落ちます.
なので,予め手作業でpygameをインストールしておきます.
pygameのインストール
pygameのインストールに必要なパッケージを手入力でインストールします.
sudo apt install python-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev libportmidi-dev ffmpeg libswscale-dev libavformat-dev libavcodec-dev libfreetype6-dev
たくさんあるので,手打ちすると大変ですね.
冗長なパッケージもあるかもしれませんが,これだけ入れておけばエラーは発生しません.
インストールシェルを実行
gitでcloneしたフォルダの中に,ビルドに必要な依存パッケージをインストールしてくれるシェルファイルがあるので,実行します.
(sudoを使うので,途中でパスワードを聞かれることがあります.)
~/ardupilot/Tools/environment_install/install-prereqs-ubuntu.sh -y
※インストール途中で,STM32マイコンのビルド環境をインストールするかどうか聞かれます.
Install ArduPilot STM32 toolchain [N/y]?
STM32はPixhawk系やbetaflight系のフライトコントローラに使われているARMマイコン(Cortex-M)です.
(F1,F3,F4,F7コントローラなどと呼んでいるのは,STM32F103,STM32F303,STM32F427などの型番です)
つまりPixhawkのファームウェアをビルドできるように環境を作るかどうか?と聞いています.
ラズパイでファームウェアがビルドできると嬉しいですね.
なので,推奨はNですがyにしてEnterしました.
しかし現時点では,STM32系のファームのビルドは失敗しています...
今後,これ以降の選択肢は全部デフォルトのNに変更するかもしれません.
その後,同じ様に質問が来ます.
Add /opt/gcc-arm-none-eabi-6-2017-q2-update/bin to your PATH [N/y]?
先程インストールしたSTM32(arm)のコンパイラをパスに通すか聞いています.
これも推奨Nですが,yにしました.
Add /home/ubuntu/ardupilot/Tools/autotest to your PATH [N/y]?
ardupilotのツール関連フォルダにあるautotestをパスに通すか聞いています.
これも推奨Nですが,yにしました.
Add ArduPilot Bash Completion to your bash shell [N/y]?
Bash(コンソール)にArduPilot関連の入力補完を追加するかどうか聞いてきています.
これも推奨Nですが,yにしました.
Append CCache to your PATH [N/y}?
パスにccacheを追加するか聞いています.
これも推奨Nですが,yにしました.
プロンプトに戻って来たら,インストール完了です.
一応ですが,ラズパイを再起動しておきましょう.
色々インストールしてゴチャゴチャなので.
reboot
SITLのビルド&簡易実行
これ以降の作業は,以前のページと同様なので,
SITL Simulatorのビルド&簡易実行
へ移動してください.
wafのビルドは,ラズパイ4の冷却が適切でないと温度警告がでますよ~(-_-;
おわりに
Arupilot-SITLをラズパイ4で走らせる方法を解説しました.
ついでに,STM32のビルド環境もインストールしましたが,
現時点では,STM32マイコン系のファームウェアのビルドには成功していません.(T_T)
Checking for 'g++' (C++ compiler) : not found
Checking for 'clang++' (C++ compiler) : Command ['/usr/lib/ccache/arm-none-eabi-gcc', '--print-sysroot'] returned 1
追跡調査していきます.