Parrot ANAFI をシミュレーターで動かすその１

# Sphinx をインストールする
　sphinx とは、Parrot が提供しているドローンシミュレーターである。Parrot 製フラッグシップドローンとして Anafi があり、これをシミュレーションできるようになる。ここでは sphinx の構築からドローンをシミュレーターに反映させるまでを記録として記述する。
## Parrot からライセンスを取得する
　sphoinx はめんどくさいことに Parrot から ftp サーバー ID とそのパスワードを取得しなければならない。そのため、下のメールアドレスに利用目的などの趣旨を伝えて sphinx のサーバー ID を要求する。内容が明確だった場合 parrot から承認が来る。
- developer@parrot.com
　１〜２週間ほどまつと、parrot からこのようなメールが来る。
>Hello,
>
>Please find below the credentials to access the FTP server:
>
>Login = xxxxxxxxx
>Password = XXXXXXXX>
>
>Regards,
>The Parrot education team
 xxx には ID 情報、XXX にはパスワードが書かれている。これがきたら sphinx の PPA システムに登録を行う。

## Parrot Sphionx の PPA 登録をする
以下のコマンドを実行する。このとき **[ID]にはメールで書かれている Login を入力し、[PASS]にはメールで書かれている Password を入力すること。**
```bash
echo "deb ftp://[ID]:<[PASS]@ftp2.parrot.biz/deb/ $(lsb_release -cs)/" | sudo tee /etc/apt/sources.list.d/apt.parrot.biz.list
curl -fsSL ftp://[ID]:[PASS]@ftp2.parrot.biz/gpg | sudo apt-key add -
echo 'Dir::Bin::Methods::ftp "ftp";' | sudo tee /etc/apt/apt.conf.d/99sphinx-ftp
sudo apt update
```
ここまで何かしらのエラーが出ていない場合は次のセクションに進んでほしい。

## Parrot Sphinx のインストール
Sphinx のインストールは apt から行う。
```bash
sudo apt -y install parrot-sphinx
```
コレを行ったあとに、以下のような画面がターミナル上で表示される。
![Screenshot from 2022-10-06 19-24-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729782/32dc1136-38b1-df35-96ad-791c932f7177.png)
　コレ最初出たときどうやって操作すればいいのかわからなかったのだが、 Tab キーで項目を移動できるので、Tab キーを押して了解をクリックする。
　その後しばらく待つと、また確認画面が来るので了解をクリックし、さらに以下のような項目が出たら
![Screenshot from 2022-10-06 19-26-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729782/4c371d89-0c10-d36e-afad-12a80978f2da.png)
　この空欄にユーザー名を登録する。ユーザー名は PC ログイン時のユーザー名のことである。これを間違えると面倒なことになるので注意してほしい。ここで僕はユーザーネームを書き間違えてしまった。

次にシミュレーションを行うにおいて必要なフィールドをインストールする。以下のコマンドでインストール可能なフィールド一覧が確認できる。
```bash
apt-cache search parrot-ue4
```
ここではシンプルなフラット空間である以下のシミュレーションフィールドを採用する。
```bash
sudo apt update
sudo apt install parrot-ue4-empty
```
そしてテストとして公式ドキュメントに書かれているこのコマンドを実行
```bash
sphinx "/opt/parrot-sphinx/usr/share/sphinx/drones/anafi_ai.drone"::firmware="https://firmware.parrot.com/Versions/anafi2/pc/%23latest/images/anafi2-pc.ext2.zip"
```
そしたらこんなエラーが出てしまった。
```bash
You should be a member of the firmwared group to run sphinx.
Please run the following command to add it. You will need to
log out / log in for this new group membership to be effective.
sudo usermod -a -G firmwared username
```
Google 先生に直訳してもらうと
>sphinx を実行するには、firmwared グループのメンバーである必要があります。
以下のコマンドを実行して追加してください。 あなたがする必要があります
この新しいグループ メンバーシップを有効にするには、ログアウト/ログインしてください。
sudo usermod -a -G firmwared ユーザー名

つまり sphoinx 設定時のユーザーネームがこのパソコンに存在しないので実行できないということである。

# Sphinx の実行
　実行対象は ANAFI とする。AnAFI AI などを実行する方は公式ドキュメントを参考にしてほしい。
## ローカルにファームウェアをダウンロードする
　インターネット経由からでもドローンのファームウェアを実行することは可能なのだが、なぜか僕の環境ではうまく行かないので、ここではローカルにファームウェアを持ってきて実行する方法を記述する。まずは[こちら](https://firmware.parrot.com/Versions/index.html)から各機体のファームウェアをダウンロードできる。今回僕は実機もある ANAFI をダウンロードする。僕がダウンロードしたリンクのパスは以下のとおりである。
>Versions/anafi/pc/1.8.3/images/anafi-pc.ext2.zip

ダウンロードが完了したら、任意でディレクトリを作成、移動してどこにファームウェアパッケージがあるのかを管理できるようにしよう。そしたら以下のコマンドを実行する。（ANAFI の場合）
```bash
sudo systemctl start firmwared.service
sphinx "/opt/parrot-sphinx/usr/share/sphinx/drones/anafi_4k.drone"::firmware="/ファームウェアパッケージまでのパス/anafi-pc.ext2.zip
```
そしたらファームウェア実行のログがめちゃくちゃ表示されて、待機状態に入るので新たにターミナルを立ち上げて、このコマンドを実行する。
```bash
parrot-ue4-empty
```
そしたらシミュレーターが開き、しばらく待つとこのようにドローンが表示される。
![Screenshot from 2022-10-06 22-09-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729782/74d0eeac-bd07-4d16-2f49-b1b188e2861f.png)
これで sphinx のセットアップは完了である。

## ユーザーネームを書き間違えてしまった場合
さて、 sphinx シミュレーターを起動する際に以下のようなエラーが出た場合はユーザーネームを設定時に書き間違えてしまった可能性がある。
```bash
You should be a member of the firmwared group to run sphinx.
Please run the following command to add it. You will need to
log out / log in for this new group membership to be effective.
sudo usermod -a -G firmwared username
```
ここでコレを実行して sphinx の Firmwared に間違ったユーザーネームが登録されていないかを確認しよう。
```bash
cat /etc/group|grep firmwared
```
すると、レスポンスとしてこのように返ってくる。USERNAME にセットアップ時に記述したユーザーネームが表示される。
```bash
firmwared:x:135:USERNAME
```
そしたら、間違えて登録してしまったユーザーネームに管理者権限を与える。
```bash
sudo usermod -a -G firmwared USERNAME
sudo usermod -a -G adm,cdrom,sudo,dip,plugdev,lpadmin,USERNAME
```
そして
```bash
sudo reboot now
```
でPCを再起動
　再起動後、もう一度 sphinx を実行してみる。