Jetson Nanoでステレオ魚眼カメラの映像をライブストリーミングしてみた
2021-12-12 2021-12-13
2つのPicam360カメラをステレオカメラとして設定しVR3D映像をライブストリーミングする手順をご紹介します。
本稿の英語版→English version is available here.
こんちには、Picam360開発コミュニティのGAKUと申します。
久しぶりの投稿です。今回は2つのPicam360カメラをステレオカメラに設定する手順をご紹介します。
ステレオカメラとは?
人間の目と同じ原理で立体的な映像を見ることができるカメラです。私たちの目は2つの目で見ているため立体的に物を見ることができます。カメラも同じで、2台のカメラを並べて撮影し、左右の目でそれぞれのカメラの映像を見ると立体的に見えます。
今回使用した物
- カメラ: PICAM360-4KHDR (8MP, WDRモデルでも可) x 2台
- サーバーデバイス: Jetson Nano
- ビューワー: Android版のPViewer
ソフトウェアライセンスが必要です
ステレオカメラの使用にはソフトウェアライセンスが必要です。Picam360カメラを2台以上ご購入いただいた方にはライセンスを進呈します。ライセンスが必要な方は<こちら>からお問い合わせください。
条件に合うWi-Fiアンテナを使用します
2つカメラを接続する場合には使用するWi-Fiアンテナの選定に注意が必要です。<Jetson NanoでPicam360を始めよう – 1: 必要な物と注意事項>のWi-Fiアンテナの項に記載の条件に一致するアンテナを使用してください。おすすめはM.2 Wi-FiカードのIntel Dual Band Wireless-AC 8265です。動作についてはNvidia社お墨付きです。
カメラの設置
2つのカメラの設置間隔は人間の2つの目の距離に合わせると映像を自然な感覚でみることができます。対象物が常に遠い場合はカメラの間隔をさらに広げると立体感を得られます。
こちらのページから3DプリントできるPicam360カメラホルダーのデザインデータを取得することができます。
3Dプリンターが無い場合はプラスチックボード等で作ってもよいでしょう。
サーバーデバイスのセットアップ
まず通常のセットアップを行ってください。Jetson Nanoのセットアップ手順は以前に投稿した下記の記事にあります。
<検証済み環境>に記載のある環境でセットアップしてください。それ以外の環境では動作しない場合があります。
ラズパイは<こちら>。通常のセットアップが完了したら、次のステップでステレオカメラの設定を行います。
2のカメラのキャリブレーション
2つのカメラのキャリブレーションの流れ:
/dev/video0をキャリブレーション -> /dev/video1をキャリブレーション
左目用カメラを小さい番号のポートに接続し、右目用は左目用より番号の大きいポートに接続します。
下記図はJetson Nanoを後ろから見た図です。番号は起動時にOSがポートを読み取る順番です。2つのカメラを接続して起動した場合に、ポート番号が小さい方がvideo0に、大きい方がvideo1として認識されます。左目用カメラを小さい番号のポートに接続し、右目用は左目用より番号の大きいポートに接続します。
キャリブレーションファイルはそれぞれのカメラ用に生成されるわけですから、この順番は重要です。例えば、セットアップ完了後に接続ポートを入れ替えてしまうと別のカメラのキャリブレーション情報が適用されていまいます。そのためカメラはいつも同じポートに接続されるように記録しておきましょう。
このようにカメラとポートに目印をつけておくと良いでしょう。
キャリブレーションの工程は通常のキャリブレーションと同じですが、番号だけ異なります。
左カメラ
通常の手順でキャリブレーションします。ただし、キャリブレーション開始コマンドとファイルをコピーする工程のコマンドの番号に注意してください。
キャリブレーションモード開始コマンドの末尾の番号は0です。
$ pserver --calibrate=640x480@30:/dev/video0
ファイルをコピーする工程のファイル名はlens_params0.jsonです。
$ mv -f lens_params.json ~/pserver/lens_params0.json
右カメラ
通常の手順でキャリブレーションします。ただし、キャリブレーション開始コマンドとファイルをコピーする工程のコマンドの番号に注意してください。
キャリブレーションモード開始コマンドの末尾の番号は1です。
$ pserver --calibrate=640x480@30:/dev/video1
ファイルをコピーする工程のファイル名はlens_params1.jsonです。
$ mv -f lens_params.json ~/pserver/lens_params1.json
ここまでで~/pserverにlens_params0.jsonとlens_params1.jsonが存在するはずです。
$ ls ~/pserver # 表示されるリストにlens_params0.jsonとlens_params1.jsonが存在します
設定ファイルの変更
<検証済み環境>にアクセスしてステレオカメラ用の設定ファイル(node-pserver config file)のファイルIDをコピーしておきます。
下記のコマンドのFILE_IDの部分をコピーしておいたIDで置き換えて実行します。設定ファイルがダウンロードされます。
$ cd ~/pserver $ curl -Lo jetbot-vr180x2-config.json https://drive.google.com/u/3/uc?id=FILE_ID&export=download # 例) curl -Lo jetbot-vr180x2-config.json https://drive.google.com/u/3/uc?id=1LPxTrGARjiowZ3jPxtD433YKSK7BHU5o&export=download
コマンドの実行が10秒経過しても終了しない場合はCtrl+cで終了させます。ファイルはできているはずです。
ダウンロードした設定ファイルを開きます。
$ nano jetbot-vr180x2-config.json
この部分の入力カメラ情報を変更します。
"params" : { "APP.SIZE" : "1440x720", "APP.CAM0" : "3840x2880@15:/dev/video0", "APP.CAM1" : "3840x2880@15:/dev/video1" },
カメラ別の値
PICAM360-4KHDR: 3840x2888@15 PICAM360-CAMPT8MP: 3264x2448@15 PICAM360-CAMTWDR: 2048x1536@15
下記該当箇所のapp_keyをお持ちのライセンス認証キーに書き換えます。
"license" : { "app_key" : "your_app_key", "sku" : "P360SWLIC-STEREO-V1", "iface" : "wlan0" },
例
"app_key" : "10a01566-aca8-416d-9166-b8d5e45b49f5",
ifaceをネット接続するinterface名に書き換えます。wifiでネット接続するならwlan0を、有線接続ならeth0を記入します。
例
"iface" : "wlan0"
Ctrl+o, Ctrl+xでファイルを保存して閉じます。
ライセンス認証する/接続してライブ映像を見る
Jetson Nanoのサーバーソフトウェアを起動してビューワーから接続する方法は下記の記事にあります。
スマホから接続してください。
設定ファイル名がシングルカメラの場合と異なるのでpserverの起動コマンドのファイル名の部分は下記のように置き換えて実行します。
$ export DISPLAY=:0 && pserver -c ~/pserver/jetbot-vr180x2-config.json
ライセンスはビューワーから接続された時にオンラインで認証されます。カメラを2つ以上購入した方に提供されているステレオカメラ用ライセンス(P360SWLIC-STEREO-V1)は永続ライセンスです。一度認証が完了すれば、それ以降はオフラインでも使用できます。
ライセンスが正常に認識されるとpseverのログにlicense valid!と表示されます。pseverのログとはpseverを起動したコンソール上に表示されるログで、ビューワーから接続された時に表示されます。
スマホのビューワーから接続したら、メニューを開いてSTEREOを有効化します。
スマホ用のVRゴーグルを使用すれば安くて手軽に3DVRを楽しむことができます。
Oculus Quest2を使えばより高品位な映像を体験することができます。最近Oculus Quest2用のアプリが完成しました。近日中にこのブログでご紹介しますのでお楽しみに。
今回の投稿は以上です。それではまた。
Picam360リンク:
- ウェブサイト: https://www.picam360.com
- ウェブストア: https://store.picam360.com
- Twitter: https://twitter.com/picam360
- Facebook: https://www.facebook.com/Picam360/