Tag: Raspberry Pi

WebRTCが繋がらない?中継サーバーを建ててみよう

websocketによるストリーミング機能をインターネット越しに利用するために通信を中継するサーバーを作成する手順を紹介します。 WebRTCはネットワークのセキュリティー対策によって接続できないことがあります。特に企業や学校といった組織ではFirewallが設置されていることがほとんどです。そのようなケースでは通信ポートの制限などによって接続ない場合があり、それを回避できないかどうかセキュリティー担当者に相談しても対応してもらうことは難しいかもしれません。 そこで今回はWebRTCを使わず、websocket通信でインターネット越しに通信できるようにするために、websocket通信をリレーするサーバーを作成する手順をご紹介します。 中継サーバーを建ててみよう 中継サーバーを用意する まず、中継サーバーとしてグローバルIPが分かるサーバーを用意します。サーバーはAWSやVPSなど、お好きなものをご利用ください。利用できるサーバーをお持ちでなかったり、別で簡単に試したいなら、Linode(最近Akamaiに買収されました)の月額5USDのNanodeプランがおすすめです。海外のVPSサービスですが日本のリージョンも選択できます。サーバーを時間単位課金で作ってすぐ捨てる事が出来きます。従量課金ではないので、データ量の多い映像通信に使っても安心です。 新規でサーバーを契約した場合は、最低限のセキュリティ対策を実施しましょう。 【チュートリアル】VPSを借りたらやるべき最低限のセキュリティ初期設定 今回の記事では中継サーバーはUbuntuがインストールされていると仮定します。作業PCはMacとします。 ポートフォワーディング専用ユーザーの作成 ビューワーとカメラは双方向で通信します。中継サーバーとカメラデバイスの通信はsshのポートフォワーディングを利用します。ポートフォワーディングを利用するためにカメラデバイスからsshで中継サーバーにログインできる環境を作る必要がありますが、ログインして色々操作されては困るため、「ほとんど何もできないユーザー」を作って、sshはそのユーザーを利用するようにします。 中継サーバーにログインします。 まずユーザー追加します。portforward_userはユーザー名です。お好きな名前に置き換えることができます。 $ sudo adduser portforward_user 権限制限のシェルrbashを作成します(なければ) $ ln -s /bin/bash /bin/rbash #すでに存在する場合はエラーが表示されます。ln: failed to create symbolic link ‘/bin/rbash’: File exists /etc/shellsにrbashを登録します。ただしrbashが元々存在する場合は不要です。(ここではテキストエディタはnanoを使用しています。お好きなものをご利用ください) $ sudo nano /etc/shells … /bin/csh /bin/ksh /bin/zsh /bin/rbash #この行を追加します ユーザーを切り替えます。 $ su -…

VRビューワー on Mac

Macにビューワーアプリをインストールする手順をご紹介します。 本稿の英語版→English version is available here. Macにビューワーアプリをインストールする手順をご紹介します。 ビューワーアプリのインストール on Mac Xcode ビューワーアプリはXcodeに含まれるコンポーネントを使用します。 MacにまだXcodeが入ってなければインストールします。XcodeはMac App Storeからインストールすることができます。 https://apps.apple.com/us/app/xcode/id497799835?mt=12   パッケージのインストール ビューワーアプリに必要なパッケージをHomebrewを使ってインストールします。 MacにまだHomebrewが入ってなければインストールします。 ターミナルを開いてコマンドを実行します: /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)” Homebrewがインストールできたら、パッケージをインストールします。ターミナルで以下のコマンドを実行します。 $ brew install cmake $ brew install pkgconfig $ brew install libjpeg $ brew install libpng   Node.jsのインストール…

VR Viewer on Mac

Here are the steps to install the viewer application on your Mac.   VR Viewer on your Mac Xcode The viewer application uses components included in Xcode. Install Xcode if your Mac does not already have it; Xcode can be installed from the Mac App…

Raspberry Piで魚眼カメラの映像をVRでライブストリーミングしてみた

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接続は使用不可)…

Jetson NanoでPicam360を始めよう – 6: 接続する

Picam360カメラをJetsonNanoに接続して360度映像をリアルタイムストリーミングする手順を紹介する連載、今回は最終回の第6回です。 本稿の英語版→English version is available here. こんちには、Picam360開発コミュニティのGAKUと申します。 前回の投稿ではビューワーアプリのインストール手順を紹介しました。最終回の今回はビューワーアプリからJetson NanoのPicam360に接続してリアルタイム映像を視聴するまでの手順を紹介します。 2つの接続経路 ローカルネット内接続: 同一ローカルネット内にあるJetson Nanoへ同じネットワーク内のビューワーアプリから接続します。この場合、外部ネットワークからはアクセスできません。 インターネット経由接続: WebRTCを使用してJetson Nanoへインターネット経由で接続します。外出先からスマホで自宅にあるJetson Nanoへ接続するといった使い方ができます。 事前注意 ネットワーク経由での接続性は保証されません: ローカルネットワーク、インターネット経由の接続は共にネットワーク環境によって接続できない場合があります。特にWebRTCを使用するインターネット経由の接続はルータのセキュリティ設定やPCのファイヤーウォールなどによって接続できない場合が多くあります。 [ 保証されない接続方法 ] ローカルネットワーク、インターネット経由の接続 [ 保証される接続方法 ] LANケーブルの直接接続(アンチウィルスソフトは無効であること) セキュリティはご自身で担保してください: ローカルネットワーク経由で接続する場合にクライアントがホストにアクセスするために必要な情報はホストIPアドレス+ポート番号のみです。インターネット経由(WebRTC)で接続する場合に必要とする情報は設定したキーのみです。単純な接続プロセスを採用していますので、セキュリティー対策はご自身の責任で行ってください。ソースコードはオープンソースとしてGitHubで公開しています(一部モジュールを除く)。 インターネット経由での接続を有効化する手順 設定ファイルを開きます。 $ cd ~/pserver $ nano jetbot-vr180x1-config.json インターネット経由で接続するための設定: # 入力例 “wrtc_enabled” : true, “wrtc_key”…

Jetson NanoでPicam360を始めよう – 5: ビューワーアプリのインストール

Picam360カメラをJetsonNanoに接続して360度映像をリアルタイムストリーミングする手順を紹介する連載、今回は第5回です。 本稿の英語版→English version is available here. こんちには、Picam360開発コミュニティのGAKUと申します。 前回の投稿ではカメラキャリブレーションの手順を説明しました。ここまでのステップでカメラの準備が整いました。今回は、動画を視聴するためのビューワーをインストールする手順を紹介します。 クロスプラットフォームに対応しています サーバーソフトウェアとビューワーアプリケーションはクロスプラットフォームに対応しており、様々なOS上で利用することができます。 デバイスサイドソフトウェア対応OS Windows, Mac, Linux, Raspberry Pi ビューワーアプリ デスクトップアプリ:Windows, Mac, Linux モバイルアプリ:iOSアプリ, Androidアプリ VRアプリ:Oculusアプリ(公開準備中) ブラウザアプリ デバイスサイドのOSとビューワーサイドのOSが異なっていても利用できます。 ビューワーアプリのインストール OSごとのインストール手順をご紹介します。 Mac VRビューワー on Mac Windows, Linux あらかじめ以下の2つのソフトウェアをインストールします。これらは一般的なソフトウェアでインストール方法はウェブで簡単に見つかりますので、手順の説明は割愛します。ウェブで検索してインストールしてください。 最新の安定版のnode.js cmake 上記アイテムがインストールできたら次にターミナル(コマンドプロンプト)を開きます。 Windowsのみ:npxをインストールします。 $ npm install -g npx node-pviewerをインストールする手順に入ります。 まずnode-pviewerの配布バージョンを確認します。…

Jetson NanoでPicam360を始めよう – 4: カメラキャリブレーション

Picam360カメラをJetsonNanoに接続して360度映像をリアルタイムストリーミングする手順を紹介する連載、今回は第4回です。 本稿の英語版→English version is available here. こんちには、Picam360開発コミュニティのGAKUと申します。 前回の投稿ではサーバーソフトウェアのPServer(ピーサーバー)をインストールする手順を説明しました。今回はカメラをキャリブレーションする手順を紹介します。 何をキャリブレーションするのか? 出荷状態のPicam360は調整されていない状態です。そのままでは撮影はできても綺麗な映像は撮れません。物理的なズレを調整し、レンズの状態の計測してソフトウェアに教える必要があります。 ピント調整: 出荷状態はピントは調整されていないので、ピントを調整します。 イメージセンサに対するレンズの位置: カメラのイメージセンサーに対してレンズは多少なりズレています。そのズレ量を計測してソフトウェアで画像の中心を補正します。 レンズの歪み補正: 魚眼レンズはレンズ内の位置によって歪み方が違います。それはレンズの特性であり、レンズのモデルによって異なり、同じモデルでも微小の個体差があります。その歪み方を計測してソフトウェアに教えます。ソフトウェアはその情報を用いて人間が見て自然な画像になるよう補正します。 キャリブレーションはいつ実施するのか? 初回使用前にキャリブレーションは必須です。持ち運びなどにより、フォーカスなどのズレが発生し得るためキャリブレーションは定期的に実施することをお勧めします。 カメラキャリブレーションの手順 それではカメラのキャリブレーションの手順を説明していきます。繰り返しになりますがインストール後の初回使用前にキャリブレーションは必須です。キャリブレーション無しでは動作しません。 チェッカーボードを準備します: 下記のリンクからチェッカーパターン画像(市松模様)のファイルをダウンロードします。ファイルを100%の印刷倍率で印刷し、厚紙などの平らで硬い板に貼り付けます。 https://github.com/picam360/picam360-jetbot/blob/master/capture/calib/checkerboard_pattern.png チェッカーボードが準備できたらキャリブレーションの手順に入ります。 モニター、キーボード、マウスを接続します。キャリブレーションはssh接続では実施できません。 ターミナルを開きます。 古いキャリブレーションファイルを削除します。 以下のコマンドでPServerのパスを表示させてコピーしておきます。 $ which pserver # 表示例: # /home/picam360/.nvm/versions/node/v14.17.0/bin/pserver nodeのバージョンディレクトリ以下のパスを下記のように書き換えて、下記の削除コマンドを実行します。ファイルが存在しない場合はエラー No such file or directoryが表示されますが問題ありません。 $ rm /home/USER_NAME/.nvm/versions/node/v14.17.0/lib/node_modules/node-pserver/lens_params.json キャリブレーションモードを実行します。コマンドを実行すると画面が現れます。 $…