LoginSignup
1
2

ArduPilot SITLをラズパイ4で動かそう

Last updated at Posted at 2020-07-09

(2023年7月29日追記)
Ubuntu Serverでなくても、64bit版Raspberry Pi OS Bullseyeでも問題なくArduPilot SITLがインストールできました。

はじめに

オープンソースのフライトコントローラ「ArduPilot」には,シミュレーション環境としてSITL(Software in the Loop)があります.
本ページでは,これを「Ardupilot-SITL」と呼んで記事を書いていこうと思います.

以前,

 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回打ち込みます.

新しいパスワードの入力を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がインストールされていなかったら,インストールします.
(確か既にインストールされていたはず)

gitのインストール
sudo apt install git

Ardupilotのクローン

ホームフォルダにArdupilot本体をクローン(コピーダウンロード)します.
また,必要なサブモジュール(mavlinkやChibiOS,wafなど)もダウンロードしておきます.

Ardupilotのクローン
cd ~
git clone https://github.com/ArduPilot/ardupilot
cd ardupilot
git submodule update --init --recursive

必要なパッケージのインストール

インテルPCだと,ここでインストール用のシェルファイルinstall-prereqs-ubuntu.shを実行するのですが,"pygame"のインストール中にエラーで落ちます.

なので,予め手作業で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マイコンのビルド環境をインストールするかどうか聞かれます.

STMマイコンのビルド環境をインストールするか?
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にしました.

autotestをパスに追加する?
Add /home/ubuntu/ardupilot/Tools/autotest to your PATH [N/y]?

ardupilotのツール関連フォルダにあるautotestをパスに通すか聞いています.
これも推奨Nですが,yにしました.

ArduPilotの入力補完機能を追加する?
Add ArduPilot Bash Completion to your bash shell [N/y]?

Bash(コンソール)にArduPilot関連の入力補完を追加するかどうか聞いてきています.
これも推奨Nですが,yにしました.

CCacheをパスに追加する?
Append CCache to your PATH [N/y}?

パスにccacheを追加するか聞いています.
これも推奨Nですが,yにしました.

プロンプトに戻って来たら,インストール完了です.
一応ですが,ラズパイを再起動しておきましょう.
色々インストールしてゴチャゴチャなので.

reboot

SITLのビルド&簡易実行

これ以降の作業は,以前のページと同様なので,
  SITL Simulatorのビルド&簡易実行
へ移動してください.

wafのビルドは,ラズパイ4の冷却が適切でないと温度警告がでますよ~(-_-;

おわりに

Arupilot-SITLをラズパイ4で走らせる方法を解説しました.

ついでに,STM32のビルド環境もインストールしましたが,
現時点では,STM32マイコン系のファームウェアのビルドには成功していません.(T_T)

wafのconfigureのエラーメッセージ
Checking for 'g++' (C++ compiler)       : not found
Checking for 'clang++' (C++ compiler)   : Command ['/usr/lib/ccache/arm-none-eabi-gcc', '--print-sysroot'] returned 1

追跡調査していきます.

 

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2