以前の記事"【オープンイノベーション】vol.7:Raspi4Bで動作するGPS同期撮影BOX"で、GNSSからの時刻と緯度経度を、音声に変換することで、マルチカメラ撮影時の位置情報と映像フレームの同期を実現する手法や構成をご紹介しました。
GNSS-BeatBox®と名付けたこの製品のプロトタイプが完成しましたので、今回の記事では、これを実際に使用して、GNSSと映像の同期撮影をする様子を報告します。
GNSS-BeatBox®は、GNSS受信機から取得する時刻、緯度経度をGPXログとしてロギングしながら、外部カメラ同志の同期を実現するため、同期音声を出力する"マルチカメラ同期撮影用のデータロガー"です。
主な機能
・システム時刻をGNSS時刻で修正
・GPX1.1(拡張)ログの保存
・受信精度情報の出力
・外部カメラ用同期音声の出力
・自らの遅延監視
・シリアルポートからログ出力
・Bluetooth SPPモードでのログ出力 ・ゲームコントローラからのユーザ入力をロギング
GNSS-BeatBox®を使った同期撮影は、下記の機器構成で行います。
・GNSS受信機"QZNEO"
・多周波GNSSアンテナ
・GNSS-Beat-Box
タッチパネルディスプレイ搭載Raspi
・入力装置
無線miniキーボード または ゲームコントローラ
GNSS-BeatBox®初号機は、2周波RTKに対応したGNSS受信機として、株式会社コアが提供する"Cohac∞QZNEO"を採用しています。
この受信機は、ソフトバンクのネットワーク基地局サービスである"ichimil"によって、サブメートル精度の位置取得が可能です。
QZNEOによる測位の結果については、【オープンイノベーション】vol.9:みちびきRTK(サブメータ・センチメータ測位)の実力を参考にしてください。
GNSS-BeatBox®は、USBから入力できるGNSSセンサーであればどのようなものであっても対応可能ですが、今回は位置精度に関する詳細な情報やFIXの情報取得部分で、QZNEOに独自対応した実装になっています。
別のGNSS受信機を使う場合には、別途プログラムの修正や調整が必要になります。
GNSS-BeatBox®は、Raspi、NVIDIA Jetson Nanoなどの任意のSBC(Single Board Computer)を活用できるよう、汎用的なLinuxOSであるUbuntu18LTSで開発されています。※
今回は、タッチパネル式のディスプレイを装着できるケースにRaspi4Bを入れた構成のGNSS-BeatBox®を使っています。
GNSS-BeatBox®上で動作させるタスクの負荷状況によって、より高性能なSBCを採用することも可能です。
例えば、CSIのカメラレーンを使って、カメラを接続し、ゲームコントローラを使って静止画をキャプチャしたり、動画ストリーミングとして取得した映像から定期的に静止画をキャプチャするような用途、または豊富なGPIO端子を活用して、任意のセンサーの値を記録するなど、データロガー、メディア取得BOXとしての拡張です。
※同期音声の遅延量(オーディオレーテンシー)を機器固有で測定・調整になるので、現在のバージョンはRaspi4B専用です。
GNSS-BeatBox®の物理インタフェースとして、通常はUSBゲームコントローラを使いますが、今回は、GNSS-BeatBox®を操作するために、無線ミニキーボードを使っています。
同期信号発呼StartやStop操作、アプリの再起動、OSの再起動をするのがメインの目的です。
通常の操作だけであれば、ゲームコントローラが便利ですが、OSの操作やログの閲覧などLinuxの機能を使う場合には、やはりキーボードで入力したいケースがあるからです。
※通常操作の押し間違いを抑止する意味でも、キー間隔の狭いミニキーボード利用はお勧めしません。
GNSSアンテナを車外(写真ではダッシュボード上)に、QZNEOをダッシュボードに設置します。
GNSS-BeatBox®本体は、写真では撮影の都合でダッシュボードに載せていますが、常時目にするものでもないので、カメラを操作するスタッフの目に届く場所であればどこでも構いません。私たちの撮影車では、後部座席のせり出しテーブルの上や、後部シート座面に置くことが多いです。
※ダッシュボードへのディスプレイなど機器設置は、車両運行規則上の制限があります。また急な加減速や衝突時にエアバッグが膨らむ場所への設置は、安全管理上よろしくありません。
GNSS-BeatBox®を起動すると、gps-sync-systemというソフトウェアが自動起動してきます。
OS起動直後にGNSSからの時刻を取得して、システム時刻をGNSS時刻に合わせます。
GNSSのキャリブレーションが完了し、FIX状態になると、システムステータスが"Idle"になるので、これ以降でStartすることができます。
ゲームコントローラのStartボタンや、キーボードでsキー(=Start)を押すことで、ロギング開始、同期音声発呼が開始します。
ロギングを停止する場合には、ゲームコントローラのSelect(Back)ボタンか、キーボードでeキー(=End)を押すことで、ロギングの停止と、同音声発呼が止まります。
ちなみに、コントローラのLBボタン(キーボードのZキー)でOSシャットダウン(再起動)、LTボタン(Qキー)でプログラム終了します。
キーに対するゲームコントローラのアサインは、antimicroというソフトウェアで任意に設定可能です。
※点検時の気づき事項入力のために、XYボタンに対して任意文字列のアサインも可能です。(例:Xボタン→X、Yボタン→Y)
GNSS-BeatBox®には、外部システムに時刻や位置情報を提供するための"外部出力機能"があります。
USB→UART変換器やBluetoothによって、ログ出力を取得することができます。
GNSS-BeatBox®のコア機能である、同期音声発呼は、Raspi本体のオーディオインタフェースや、任意の外付けDACから、ラインレベルの音声として出力されます。
具体的に、同期音声にどのような情報が含まれているのかについては、"【オープンイノベーション】vol.5:マルチカメラでGPS-映像同期を実現する手法"に詳細があります。
同期音声をオシロスコープで見たものです。
正確に1秒ごとの間隔で音声が発呼されていることと、スタート信号入力から正確に60msの遅延で音声出力されていることを確認できます。
正確に遅延が保たれていることから、後処理で音声の位置を遅延分だけ前にずらすことで、正確な発呼タイミングを調整することができます。
※GV-Sync®での音声-映像同期処理での、フレームシフト量を設定して、"ぴったり"に合わせます。
シリアルポート(USB-UART変換)やBluetoothのSPPシリアル通信で、ログを活用できます。
出力されている情報は、下記になります。
jst:日時
lat:緯度
lon:経度
ele:標高
mode:ナビゲーションモード(1:未確定、2:2D確定、3:3D確定)
hdop:水平精度低下率
vdop:垂直精度低下率
pdop:位置精度低下率
quality:測位レベル(0:未確定、1:単独測位、2:相対測位、3:RTK測位Fix解、4:RTK測位Float解)
speed:車速(Km/h)
sat:衛星捕獲数
実際に、GNSS-BeatBox®が生成するログ(GPX)と同期音声を復元して、位置精度を検証してみます。
まずは、地図上にGPXを表示して走行軌跡の確認と、次にGV-Sync®を使って登録した位置情報付与後の静止画で、同一地点の新旧過去比較をしてみます。
GNSS-BeatBox®が出力するGPXファイルを、Q-GISで読み込みます。(ドラッグアンドドロップでそのまま読み込めます)
既出の記事"【オープンイノベーション】vol.9:みちびきRTK(サブメータ・センチメータ測位)の実力"でご報告しているように、都市高速の環状線を複数回走った軌跡が、かなり正確に再現されていることからも分かる通り、軌跡自体は幅方向で10センチ程度(道路の白線の幅程度)の精度を持っていることを確認できます。
実は、既出の記事"【オープンイノベーション】vol.8:同地点の過去と現在を比較する二画面ビューア"で取得しているすべての位置情報は、GNSS-BeatBox®で取得したGPXと同期音声付映像を、GV-Sync®で同期処理したものです。
静止画一枚一枚に対する高い位置精度は、既に確立しています。
▼この記事を書いたひと
R&Dセンター 長尾 賢志
Pythonistaですが、Java、C#、Rubyなども経験があり、オブジェクト指向を得意とします。Djangoを使用したWeb開発をしたことがあるほか、データ解析・可視化なども行なっています。R&Dセンターではエッジコンピューティング、IoT関連を担当しています。保有資格:ソフトウェア開発技術者
●富士見事務所 TEL : 052-228-8744(交通部営業課) FAX : 052-323-3337(交通部共通)
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711 地図
PoCのお問い合わせ:交通部営業課
技術的なお問い合わせ:R&Dセンター