2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2020-07-09

(2024年1月18日追記)
64bit版Raspberry Pi OSは Bullseye版を使ってください。
最新のBookwarm版は初回起動直後の状態では、ardupilotのインストールシェルファイルでのインストールに失敗します。
これは最新のPython3が、PEP668に従ってvenv環境を作っていない状態でのpipのインストールを拒否するようになったためです。
Legacyの方に残っているBullseye版であれば、このルールが無いのでインストールに成功します。

そりゃライブラリのバージョンに厳密な機械学習(AI)はvenvの切り替えも必要になるけど、それはGPU挿したガチのPCの話だよなあ。
Raspberry Piって1つの機能で1台って使い方が多いから、venvなんか使わなくても良いんだけどなあ。。。

(2023年7月29日追記)
Ubuntu Serverでなくても、64bit版Raspberry Pi OS Bullseyeでも問題なくArduPilot SITLがインストールできました。
その場合、Ubuntu関連の話は飛ばして、aptの更新 から進めてもらえば大丈夫です。

はじめに

オープンソースのフライトコントローラ「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

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

reboot

SITLのビルド&簡易実行

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

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

おわりに

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

この環境でdronekit-pythonもテストしたくなってしまいますが、
筆者がよく使うパターンでは、ラズパイを2台用意して、以下のように接続しています

SITLラズパイ(ドローン本体)<-- 有線LANで接続 --> コンパニオンのラズパイ(dronekit-python環境)

としています。
こうすれば、コンパニオンのラズパイは、シミュレーターであるSITLへの接続から、実機のArdupilot系フライトコントローラへの接続に切り替えるだけでどちらも動かせるので、便利です。

Cube RedやCUAV 7 nano、Holybro Pixhawk 6XなどはEthernetのポートも備えているので、コンパニオンとの接続もほぼ同じになりますね。

 

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?