Raspberry Piで魚眼カメラの映像をVRでライブストリーミングしてみた
2021-06-22 2022-06-22
Picam360カメラをRaspberry Piに接続して360度映像をリアルタイムストリーミングする手順を紹介。
本稿の英語版→English version is available here.
こんちには、Picam360開発コミュニティのGAKUと申します。
Raspberry Pi4を使用して、Picam360の魚眼映像をVR映像としてライブストリーミングしてみました。今回はその手順をご紹介します。
実際の映像
Raspberry Piからスマホにリアルタイムストリーミングして、画面をキャプチャしたものです。(キャリブレーションをちゃんとやっていないので若干歪んでます)
どうでしょうか?ビューワーも映っている状態で撮影したので実際の使用感は伝わるんじゃないかと思います。
今回のストリーミングのビットレート設定は1.5MBpsでした。Raspberry PiはJetson Nanoに比べて性能が劣るので解像度、フレームレートが低めですが(なのでJetson Nanoを使う方がおすすめです)、用途によっては使えると思います。
準備するもの
- Raspberry Pi4
- Picam360
PICAM360-4KHDR, PICAM360-CAMPT8MP, PICAM360-CAMTWDRのいずれでもOK。Raspberry Piの処理性能故に入力画素数が落ちるが、実際に見ると画質的にはやはりPICAM360-4KHDRが綺麗です。
動作環境
- Raspberry Pi: Raspberry Pi 4
- OS: Raspberry Pi OS Buster (Bullseyeでは動作しません)
- npm: 6.14.3
- node: v14.17.1
- node-pserver: 0.1.5
- 接続方法: WebRTC (WebSocket接続は使用不可)
Raspberry PiにPicam360ソフトウェアをインストールする
基本的なセットアップの流れは以前に紹介したJetsonNanoでVR映像をライブストリーミングする記事(Jetson NanoでPicam360を始めよう)の手順と同じです。同じ部分はそちらの記事を参照する形で記載します。
ターミナルを使って必要なソフトウェアをインストールしていきます。コマンドを実行したら正常に完了しているか表示されているログを見て確認しましょう。エラーが出ている場合はエラーメッセージをウェブ検索すると多くの場合解決方法を見つけることができます。
まずPicam360サーバーサイドソフトウェア(PServer)に必要なソフトウェアをインストールします。
$ sudo apt-get install cmake $ sudo apt-get install libtbb-dev $ sudo apt-get install gstreamer1.0-tools $ curl --location git.io/nodebrew | perl - setup
上記の最後にインストールしたnodebrewにパスを通します。nanoエディタで.bashrcを開きます。
$ cd ~ $ nano .bashrc
ファイルの末尾に下記をペーストします。
export PATH=$HOME/.nodebrew/current/bin:$PATH
ctrl+o, ctrl+xでファイルを保存して閉じます。
.bashrcを再読み込み。
$ source ~/.bashrc
nodeとnpmをインストール。
$ nodebrew install v14.17.1 $ nodebrew use v14.17.1
PServerをインストール。
$ npm install -g node-pserver@0.1.5
以上でraspberry pi上でのソフトウェアのインストールは完了です。
設定ファイルの設置
ソフトウェアで使用する設定ファイルを配置します。
まず設定ファイルを設置するフォルダを作成します。
$ cd ~ $ mkdir pserver
nanoエディタでファイルを作成し開きます。
$ cd ~/pserver $ nano config.json
こちらのページのconfig.jsonの内容をコピーして貼り付けます。
WebRTCを有効にするフラグをONにします。
# 入力例 "wrtc_enabled" : true, "wrtc_key" : "0dcad23c27a5407db4eacfb5dfb4a676"
wrtc_enableをtrueに変更します。
wrtc_keyに任意のキーを入力します。WebRTCを有効にした場合、このキーによってカメラに接続できます。キーを知っていれば接続できるため、他人と重複しない十分に長いキーを指定してください。
ctrl+o, ctrl+xでファイルを保存して閉じます。
キャリブレーション
キャリブレーション機能にバグがあり現在修正中です。暫定的にキャリブレーションファイルを設置すれば利用できるので、その手順を実施します。キャリブレーション機能の修正が完了次第この記事も更新します。
暫定的にキャリブレーションファイルを設置:
nanoエディタでファイルを作成し開きます。
$ cd ~/pserver $ nano lens_params.json
こちらのページのlens_params.jsonの内容をコピーして貼り付けます。
ctrl+o, ctrl+xでファイルを保存して閉じます。
設定ファイル内にあるlens_paramsファイルのパスをフルパスに書き換える必要があるので、以下をコマンドで現在のディレクトリのパスを調べます。
$ pwd
ファイルを開いてstream_params内のcapture.meta要素のlens_paramsをフルパスに変更します。
nano config.json # 設定ファイルを開く # 変更前: lens_params=\”file://lens_params.json\” # 変更後: lens_params=\”file:///home/pi/pserver/lens_params.json\”
設定ファイルの管理ディレクトの場所やキャリブレーションファイルの名称を変更している場合は、実際の物に合わせてください。
変更したら保存して閉じます。
これで~/pserverディレクトリにはconfig.jsonとlens_params.jsonの2つがあるはずです。
$ ls ~/pserver
サーバーソフトウェアの起動
PServerを起動します。
モニターを接続している場合:
$ pserver -c ~/pserver/config.json
Headless(モニター無し)の場合:
Xvfbをインストールします。これは1度で大丈夫です。
$ sudo apt-get install xvfb
ターミナルを2つ開きます。
一方でxvfbを起動します。
$ Xvfb :1 -screen 0 1024x768x24
もう一方でPServerを起動します。
$ export DISPLAY=:1 && pserver -c ~/pserver/config.json
以上でサーバーソフトウェアが起動し、ビュワーから接続できる状態になります。
PServerを終了する場合は、ターミナルでctrl+cを押します。
Let’s リアルタイムストリーミング
ビューワーアプリのインストールと接続は以前紹介した下記の記事の手順と同じです。これでリアルタイムストリーミングできます!
以上で完了です。
今回はRaspberry Piを使用してPicam360カメラの魚眼映像をVR映像としてリアルタイムストリーミングするという内容でした。
それでは、また次回。
Picam360リンク:
- ウェブサイト: https://www.picam360.com
- ウェブストア: https://store.picam360.com
- Twitter: https://twitter.com/picam360
- Facebook: https://www.facebook.com/Picam360/