SIYI A8 miniカメラ
SIYI A8 miniジンバルカメラ
とても小さく可愛らしいジンバルカメラです。ジンバル付きで100g未満はとても魅力的です。カメラの詳細はSIYIの公式サイトをご覧になってください。
このページはSIYI A8 miniカメラの使い方をまとめていきます。
必要なファイルはSIYIがGoogleドライブで公開しています。すぐユーザマニュアル見たい方はここにあります。
※公式のファーム更新インストラクション動画が公開されました。2023.02.05
SIYI Assistantツール
カメラの設定、キャリブレーション、ジンバルファームウェアアップグレードに使うツールです。SIYI PC AssistantというフォルダのSIYI Assistant v1.3.2 svn6350 2022-12-15.zip(※2023/01/28現在)をダウンロードします。Windows向けのソフトです。Windows11にインストールしています。インストーラーが文字化けしていて怪しさ満点なんですが普通にインストールできます。
【注意】
古いバージョンを残したままインストールすると起動しない。v1.2.9をインストールした状態でv1.3.2をインストールしましたが起動エラーが発生しました。その場合、C:\Program Files (x86)\SIYI Assistantファルダ内にあるuninst.exeを実行して一度削除してから再インストールすれば解決します。
また、古いバージョンのSIYI Assistantで最新のファームのカメラ設定を書き込むと設定が壊れるようです。復旧するためにはカメラファームウェア更新を再度実行します。
インストール完了後、SIYI Assistantというアプリがそれなので開きます。言語は英語、中国語に対応しています。右上の言語切替ボタンで切り替えることができます。
ジンバルファームウェア更新
前準備として最新ファームウェアのバージョン情報を確認します。
Firmwareフォルダを開きます。bin拡張子のファイルがおいてあります。執筆時点では「A8 mini Gimbal Firmware v0.1.8 svn6327 2022-12-07.bin」です。ファイル名からv0.1.8がわかります。
カメラジンバルの現在のファームウェアバージョンを確認します。
カメラに4セルリポバッテリーを指して、Type-CのUSBケーブルで接続するとSIYI Assistantから確認できます。SIYI Assistantの「Upgrade」メニューをクリックすると画像のようにバージョンが表示されます。接続できない場合はドライバーが必要かもしれません。
バージョンが古い場合更新することができます。
最新のファームウェアファイルをダウンロードします。bin拡張子です。
カメラをUSBケーブルで接続した状態で、画像の「Select File」でダウンロードしたファイルを選択します。
「Upgrade」ボタンを押せば自動的にアップグレードされます。一度カメラが再起動されたあとで書き込みが進みます
書き込み完了後サイドバージョンを確認してください。
カメラファームウェア更新
ファームウェアバージョンの差異確認を省略していますが、任意で確認してからアップグレードするか否かご判断ください。
FAT32でフォーマットしたSDカードを用意します。
カメラファームウェアをダウンロードしてファイル名を変更せずにそのままSDカードに書き込みます。
カメラ電源をオフにしてからSDカードをスロットに挿入します。
カメラ電源を入れてから3~5分待ちます。
電源をオフにしてSDカードを抜いてから、USBケーブルでPCに接続します。※SDカード抜く必要はないかも。
カメラ電源を入れてからSIYI Assistantで「gimbal config」メニューを開きます。
画像のようにカメラファームウェアバージョンを確認します。
HereLinkストリーミング(HDMI)
A8 miniにはマイクロHDMIポートが付いてるのでHereLinkに繋げてストリーミングするのはとても簡単にできます。HereLinkはAirUnitとペアリングできていることが前提です。
画像のようなマイクロHDMIのオス-オスケーブル(※Amazonリンク)を用意し、A8 miniカメラとAirUnitのHDMI1を接続します。
HereLink内のQGroundControlのストリーミング設定をします。
テレメトリー表示部分の文字「Values」をタップします。
次に「Video Stream」をタップします。
Stream1が選択されていること、Enableが有効になっていることを確認してください。
A8 miniカメラに電源を挿します。
画像のように綺麗にストリーミングが表示されます。
※画像引用https://docs.cubepilot.org/user-guides/herelink/herelink-user-guides/share-video-stream
ArduPilotとつなげて使う
ハードウェア接続
FCのTELEMポートに接続します。付属のケーブルをFCのTELEMケーブルにつなげます。GND、TX、RXの3本がつながっていればOKです。
4Sバッテリーをつなげます。付属のケーブルはXT30オスコネクターです。バッテリー側もXT30だと便利です。
パラメータ設定
【前提】
TELEM2に接続されているとします。その他のTELEMポートに繋げてる場合は読み替えてください。
SERIAL2_PROTOCOL: 8
SERIAL2_BAUD: 115
MNT1_TYPE: 8
ここまで設定したらFCを再起動してください。
MNT1_PITCH_MIN: -90
MNT1_PITCH_MAX: 40
MNT1_YAW_MIN: -100
MNT1_YAW_MAX: 100
スペック上は
Pitch:-135°~+45°、Yaw:-160°~+160°、Roll:-30°~+30°
です、試したところYawを最大値設定すると脱調する現象がありましたので制限した角度上限にしています。試して無理ない範囲がおすすめです。SIYIジンバルは現在Rollはサポートされていません。
MNT1_RC_RATE: 90
プロポで操作する際の速さdeg/s。
Mission Plannerで動作確認
【前提】
機体の下に設置する向きにしてください。上向きは現時点ではうまく動作しません。
MavLink Targetingに設定する
Payload ControlパネルでPitchとYawのテストができます。スライダーを移動させればジンバルが動くはずです。
Reset Positionボタンで強制的にRC TargetingからMavLink Targetingモードに移行されるみたいです。
その後再度RCで制御したい場合はアクション画面で再度RC Targetingモードに設定します。
AUX Functionsパネルでカメラ系のRCオプションがテストできます。
プロポから操作したい場合は次のRCオプションを設定します。MNTx_RC_RATEが0の場合はアングルで、0より大きい場合は速度です。
RC6_OPTION: 213
RC7_OPTION: 214
カメラとジンバルに関するRCオプションパラメータ
166:Camera Record Video
167:Camera Zoom
168:Camera Manual Focus
169:Camera Auto Focus
212:Mount1 Roll
213:Mount1 Pitch
214:Mount1 Yaw
215:Mount2 Roll
216:Mount2 Pitch
217:Mount2 Yaw
ケーブル接続
テストする向き
MPで動かすときのジンバルモードはMavLink Targetingにしてください。
SIYIジンバルTiltとPanのみ動作します。
【注意】
A8 miniは録画解像度4K設定時はズームをサポートしていません。
RTSPの活用方法
SIYIのジンバルカメラはRTSPビデオストリームが出力されます。マニュアルでは既存のアプリ等に接続する方法が紹介されています。JICで活用されたソリューションです。ここではWebRTC経由で映像を見れるようにする使い方のユースケースを2つ紹介します。比較的安価で入手しやすいラズベリーパイを使用する前提です。ZR10、A8miniでしか検証したことはありません。動作保証およびセキュリティについては言及しておりません。参考までにしてください。
前提条件
モバイル回線でインターネット接続がもはや一般的だと思います。インターネットグローバルにアクセスできる形でもいいですが、個人的には仮想LANをを構築することをお勧めします。WebRTCのデータチャンネル活用は今回は割愛します。また、各ツールを使う際はドキュメントを必ず読んでください。
ケース1「時雨堂momoで使う」
momo(https://github.com/shiguredo/momo)は簡単にWebRTC配信を試すにはとても便利です。momoは起動時にカメラデバイスファイルをオプションで指定できます。例えば音声なしのビデオ配信だけであれば次のように起動します。ポートも任意に指定できます。
$ ./momo --no-audio-device --video-device /dev/video0 test --port 8888
ここで必要になるのがビデオデバイスファイルです。SIYIジンバルカメラはLANポートでRTSPを吐き出しています。それをビデオデバイスファイルに変換する必要があります。v4l2loopback(https://github.com/umlaeute/v4l2loopback)を使います。手順は以下の通りです。
適切なバージョンのmomoプログラムをhttps://github.com/shiguredo/momo/tagsから選択してダウンロードします。
https://github.com/umlaeute/v4l2loopback.gitをcloneしてきます。
v4l2loopbackをビルドします。カーネルヘッダーをインストールする必要があります。
v4l2loopbackの使い方や起動時設定は他の記事を参考にしてみてください。
仮想デバイス(ここでは/dev/video2とする)が作成されたことを確認したら映像をGStreamerで転送します。次のようなデコードするパイプラインを例に示します。teeを使う理由はv4l2loopbackのドキュメントを参照してください。この例はデコードをしているのでハードウェアアクセラレーションを有効にしないとHD解像度は結構リソースを喰います。ご自身の処理に応じてパイプラインを組み替えてください。
$ gst-launch-1.0 rtspsrc location=rtsp://192.168.144.25:8554/main.264 latency=0 ! rtph264depay ! h264parse ! avdec_h264 ! videoscale ! video/x-raw,width=1280,height=720 ! videoconvert ! tee ! v4l2sink device=/dev/video2 sync=false
6. momoでビデオデバイスファイルを指定して起動します。
$ ./momo --no-audio-device --video-device /dev/video2 test --port 8888
ケース2「janusサーバに送信して複数人で同時視聴」
momoだとラズパイ上で処理および配信をするのでどうしてもリソースを使ってしまいます。例えば複数人で同時に映像配信にアクセスした場合致命的な遅延を引き起こす場合があります。今回はjanusというWebRTC Gatewayを使いますが任意のサーバでもいいと思います。
Janus Gatewayのセットアップ、ビルド方法についてネット上の記事を参考にされてください。8088ポートを開けておく必要があります。
janus gatewayにメディアを送信するGStreamerパイプラインの例は次のとおりです。hostは適宜サーバに置き換えてください。
$ gst-launch-1.0 rtspsrc location=rtsp://192.168.144.25:8554/main.264 latency=0 ! rtph264depay ! h264parse ! rtph264pay config-interval=1 pt=96 ! udpsink host=0.0.0.0 port=8888
3. janusプラグインサンプルは次のとおりです。
h264-stream: {
type = "rtp"
id = 10
description = "H.264 live stream coming from gstreamer"
audio = false
video = true
videoport = 8888
videopt = 96
videortpmap = "H264/90000"
videofmtp = "profile-level-id=42e028;packetization-mode=1"
}
4. クライアントアプリを用意しないといけないのですがひとまずdemoアプリを使って確認するのが簡単です。Webサーバを同じサーバにインストールして、htmlディレクトリ(https://github.com/meetecho/janus-gateway/tree/master/html)のファイルをドキュメントルートに配置したら完了です。
5. /opt/janus/bin/janusでjanus gatewayを起動しておきます。ここを参考にしてサービス登録しておくのが便利です。2のGStreamerパイプラインを実行します。ウェブアクセスして動作確認します。
※随時更新します。
お仕事のお問合せ・ご依頼はTwitterまたはFacebookのDMでお願いいたします。