Jetson NanoでPicam360を始めよう – 4: カメラキャリブレーション
Picam360カメラをJetsonNanoに接続して360度映像をリアルタイムストリーミングする手順を紹介する連載、今回は第4回です。 本稿の英語版→English version is available here. こんちには、Picam360開発コミュニティのGAKUと申します。 前回の投稿ではサーバーソフトウェアのPServer(ピーサーバー)をインストールする手順を説明しました。今回はカメラをキャリブレーションする手順を紹介します。 何をキャリブレーションするのか? 出荷状態のPicam360は調整されていない状態です。そのままでは撮影はできても綺麗な映像は撮れません。物理的なズレを調整し、レンズの状態の計測してソフトウェアに教える必要があります。 ピント調整: 出荷状態はピントは調整されていないので、ピントを調整します。 イメージセンサに対するレンズの位置: カメラのイメージセンサーに対してレンズは多少なりズレています。そのズレ量を計測してソフトウェアで画像の中心を補正します。 レンズの歪み補正: 魚眼レンズはレンズ内の位置によって歪み方が違います。それはレンズの特性であり、レンズのモデルによって異なり、同じモデルでも微小の個体差があります。その歪み方を計測してソフトウェアに教えます。ソフトウェアはその情報を用いて人間が見て自然な画像になるよう補正します。 キャリブレーションはいつ実施するのか? 初回使用前にキャリブレーションは必須です。持ち運びなどにより、フォーカスなどのズレが発生し得るためキャリブレーションは定期的に実施することをお勧めします。 カメラキャリブレーションの手順 それではカメラのキャリブレーションの手順を説明していきます。繰り返しになりますがインストール後の初回使用前にキャリブレーションは必須です。キャリブレーション無しでは動作しません。 チェッカーボードを準備します: 下記のリンクからチェッカーパターン画像(市松模様)のファイルをダウンロードします。ファイルを100%の印刷倍率で印刷し、厚紙などの平らで硬い板に貼り付けます。 チェッカーボードのリンク チェッカーボードが準備できたらキャリブレーションの手順に入ります。 モニター、キーボード、マウスを接続します。キャリブレーションは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 キャリブレーションモードを実行します。コマンドを実行すると画面が現れます。 $…
Jetson NanoでPicam360を始めよう – 3: サーバーソフトウェアのインストール
Picam360カメラをJetsonNanoに接続して360度映像をリアルタイムストリーミングする手順を紹介する連載、今回は第3回です。 本稿の英語版→English version is available here. こんちには、Picam360開発コミュニティのGAKUと申します。 前回の投稿ではSDカードにディスクイメージを書き込み、初回起動時の設定を行いました。今回はサーバーソフトウェアのインストール方法をご紹介します。サーバーソフトウェアはPServer(ピーサーバー)という名称のソフトウェアです。PServerはPicam360カメラの映像をキャプチャーして、Picam360 Video Format (PVF)に変換し、変換した映像をビューワーアプリへストリーミングする役割を担います。 サーバーソフトウェアのインストール コマンドラインインターフェースを使用してソフトウェアをインストールします。コマンドを実行する度に必ず画面に表示されるコマンド実行結果を見て正常に完了しているか確認しましょう。手順通りにコマンドを実行しても、SDカードイメージやソフトウェアが新しくなっていることによって、エラーが発生する場合があります。そのほとんどはエラーメッセージをウェブで検索すると解決方法が見つかります。 コマンドを実行して必要なソフトウェアをインストールします。コマンドを実行するためにターミナルを起動します。Jetson Nano上で直接操作するか、もしくはsshを使用してリモートで操作する方法があります。お好きな方を利用してください。 Jetson Nanoを直接操作する: モニタ、キーボード、マウスを接続して、デスクトップからターミナルを起動します。 sshを使用してリモート接続する: Macの場合はターミナルを開きます。Windowsの場合はコマンドプロンプトを開きます。Windows10バージョン1803から、SSHクライアントが搭載されているのでコマンドプロンプトからsshコマンドを実行できます。それ以外の場合は別途sshクライアントをインストールしてください。 sshコマンドを実行します。 $ sudo ssh <ユーザー名>@<コンピューター名>.local # 例)sudo ssh picam360@picam360.local コマンドを実行すると最初にリモート元のコンピューターにおけるログインパスワードを求められることがありますので入力します。次にJetson Nanoのログインパスワードが求められるので入力します。 Password: <リモート元コンピューターのログインパスワード> picam360@picam360.local’s password: <Jetson Nanoのログインパスワード> ターミナルの準備が整いました。それではPServerに必要なソフトウェアをインストールしていきます。 まず、ウェブサイトからデータをダウンロードするためにcurlと、テキストエディタのnanoをインストールします。 $ sudo apt-get -y install curl…
Jetson NanoでPicam360を始めよう – 2: SDカードイメージの書き込み
Picam360カメラをJetsonNanoに接続して360度映像をリアルタイムストリーミングする手順を紹介する連載、今回は第二回です。 本稿の英語版→English version is available here. こんちには、Picam360開発コミュニティのGAKUと申します。 前回の投稿では注意事項と必要な物をリストアップしました。今回はNvidia社が提供するJetson NanoのSDカードイメージをSDカードに書き込む手順と、初回起動時の設定手順をご紹介します。 SDカードイメージの書き込み Jetson NanoのSDカードイメージはNvidia社から提供されています。手順はNvidia社ウェブサイトで見ることができます。下記リンクのウェブサイトを参照してSDカードイメージを書き込んでください。 Nvidia社:Getting Started with Jetson Nano Developer Kit 参考までにMacでSDカードを書き込む手順を紹介します。 公式SDカードイメージをここからダウンロードします。 [ヒント] 公式SDカードイメージは時々新しいものにアップデートされます。アップデートされた環境でPicam360ソフトウェアのインストールが上手くいなかったり、正常に動作しなくなることがあります。検証済み環境に記載している検証済みのSDカードイメージを使用することをお勧めします。 Etcherをインストールします。ここからダウンロードして、インストールします。 Etcherを起動します。書き込み時に以下のようなエラーが発生することがあります。その時はターミナルからEtcherから管理者権限を付与して起動してみましょう。 ターミナルから管理者権限を付与してEtcherを起動するには、ターミナルを起動して以下のコマンドを実行します。パスワードを聞かれた場合はMacのログインパスワードを入力します。 $ cd /Applications/balenaEtcher.app/Contents/MacOS/ $ sudo ./balenaEtcher SDカードをMacに挿入します。もし下記の画面が表示されたら無視を押します。 Etcherの画面のSelect imageを押して先ほどダウンロードしたSDカードイメージファイルを選択します。次に、 Select target でSDカードドライブを選択 、Flash!を押して書き込みを開始します。 書き込みが完了したらSDカードをOSの所定の手順で取り外します。 最初の起動 SDカードを書き込んだ後に、Jetson Nanoを初めて起動すると設定画面が表示されます。この章ではその初回の設定手順を紹介します。 SDカードを挿入します。 モニター、キーボード、マウスを接続します。 WiFiドングルやLANケーブルを使用してネットワーク接続する場合は、それらを取り付けます。…
Jetson NanoでPicam360を始めよう – 1: 必要な物と注意事項
Picam360カメラをJetsonNanoに接続して360度映像をリアルタイムストリーミングする手順を紹介します。 本稿の英語版→English version is available here. こんちには、Picam360開発コミュニティのGAKUと申します。 前回の投稿ではPicam360の概要についてご紹介しました。今回はサーバーデバイスとビューワーアプリをセットアップして、360度映像をローカルネットワーク経由、またはインターネット経由でリアルタイムストリーミングする手順を紹介します。 サーバーデバイスとビューワーの組み合わせは複数あります。今後の投稿は以下の中から組み合わせて、いくつか紹介していきます。 サーバーデバイス Jetson Nano, Mac, WindowsPC ビューワーアプリ スマホ(iOS, Android), ブラウザ, Oculus Quest 今回はJetson Nanoとスマホを接続します 今回はJetson Nanoにサーバーソフトウェアをインストールします。ビューワーはスマホを使用します。 本稿は連載でお送りする予定です。(記事数は変わるかも知れません) 必要な物と注意事項 SDカードイメージの書き込み サーバーソフトウェアのインストール カメラキャリブレーション ビューワーアプリのインストール 接続する 説明に入る前に注意事項があります。 注意事項 機能制限 高度な機能を使用するための有償ライセンスがありますが、Picam360カメラを使用する場合は基本的に不要です。ライセンスは、独自に高スペックなシステムを構築されるケースで使用されることを想定しています。 ライセンス無しで使用する場合は以下の制限があります。下記以外の制限はありませんが、予告なく変更される場合があります。ライセンスに関するお問い合わせは、こちらのお問い合わせ窓口よりご連絡ください。 フレームレート制限 最大15FPS 有償ライセンスはソフトウェアの最大FPS制限を解除します。ハードウェアポテンシャルに依る最大FPSは、カメラ入力画素数、ソフトウェアに対して設定する出力画素数、それらを処理するコンピューターのスペックによって最大FPSが変わります。ですので最大FPSは構築するシステム次第となります。目安は、GeForce RTX2060において出力画像サイズ2048×2048[pix]、 処理数300[frame/sec]です。PICAM360-4KHDRはカメラ出力が15FPSですのでライセンスは必要ありません。 カメラ接続数制限 最大1カメラ 有償ライセンスはカメラの接続数制限を解除します。ステレオ3Dのように2カメラ以上接続するにはライセンスが必要ですが、Picam360カメラを2つ以上ご購入いただいた方には2カメラ接続が可能になる基本機能ライセンスを無料で提供します。Picam360ブランド以外のカメラを2つ以上接続する場合は有償ライセンスが必要になります。 ネットワーク経由での接続性は保証しません…
新しいソフトウェアをリリースしました
より高性能かつ高画質になった動画変換処理、導入しやすくなったサーバーサイドソフトウェアとビューワーアプリ、さらに動画配信ウェブアプリと、Picam360に関する環境を新しく構築しました。 本稿の英語版→English version is available here. こんちには、Picam360開発コミュニティのGAKUと申します。 最近は新しいソフトウェアの開発に注力していたので、全く記事を更新していませんでした。ご覧になっていただいた方々、すみませんでした。 更新していなかった間何をしていたかというと、私たちは約2年をかけてPicam360の動画変換処理を改善し出力される動画を高画質にしました。また、サーバーサイドソフトウェアとビューワーアプリを一新し、さらに動画配信ウェブアプリの追加と、Picam360とその周辺環境を新しく構築していました。ソフトウェア達は既存のものから得た知見を活かした全く新しいバージョンにアップグレードされました。まだ予定しているソフトウェアの全てが揃ったわけではありませんが、おおよそ揃いました。まだ揃っていないものも、この1、2ヶ月の間にリリースする目処が立っています。これからそれらについて皆さんにご紹介していけることに興奮しています。 さて、これまでは不定期に更新していたこのブログですが、これからは毎週お届けしていきます。内容はPicam360に関するニュースと、技術的なものを中心に掲載していきます。 技術的に面白い、役に立つという内容であることを記事の基準として作成していきますので、楽しんでいただければと思います。ブログも新しいスタートを切るわけですが、これまでに掲載していながら中断状態だった記事があります(Jetbotなどの記事)。それらは古いソフトウェアを使用していて今回の新ソフトウェアのリリースによって、内容を継続できなくなってしまっため、申し訳ありませんが更新は終了します(いつか新しく書き直すことがあるかもしれません)。ご理解のほどよろしくお願いします。 新しくスタートするブログの第一段にあたる本稿は、まずPicam360がどういうものであるかという内容を新しいソフトウェアで変わった点も含めて紹介します。 Picam360とは? まず、Picam360について説明します。これまではPimca360についての情報発信は、十分とは言えませんでしたのでこの説明はPicam360を初めて知った方はもちろん、既に知っていた方にも発見があるかもしれません。 USB接続タイプのパノラマカメラです Picam360は360度(半天球)を画角に収める広角レンズを搭載したカメラです。コンピューターにはUSBで接続します。通信規格はUVC(USB Video Class)という汎用的な規格を採用しています。UVCカメラはOSが標準で持っているドライバーが使用されますので、特別なソフトウェアを必要としません。 USB接続して単純に写真を撮影する例をご紹介します。 コンピュータにはjetson nanoを使用しています。raspberry piも同様です。 コンソールで以下のコマンドを実行します: // 撮影するためのソフトウェアfswebcamをインストールします。 // インストール済みの場合は不要です。 $sudo apt-get update $sudo apt-get install fswebcam // カメラが認識されているか確認。 // 他のカメラが接続されていなければ/dev/video0が存在します // 他のカメラが接続されている場合は末尾の数字が変わります。 $ fswebcam –list-inputs // 撮影します。…
Jetbot + VR180 : Part 1 – 前書き
Jetbot + VR180 2019年3月、NVIDIA 社は最先端の AI を活用できるコンパクトで安価なコンピュータ、Jetson Nanoを発表しました。さらに彼らはオープンソースウェアロボットのJetbotも公開しました。Jetbotは3Dプリントパーツで構成され、ソフトウェアはUbuntu Linux上で動作します。ハードウェアの構成、ソフトウェアはGithubで公開されており、さらにソフトウェアがインストール済みのSDカードイメージも配布されています。Jetbotは気軽にAIコンピューティングとロボット制作を学ぶことができる良いプラットフォームといえるでしょう。 この記事はJetbotにPicam360(4Kタイプ)を2つ接続して、3D180度動画をライブストリーミングするまでの手順をシリーズで紹介していきます。Picam360のリアルタイム3D動画により、まるでJetbotに乗り込んで運転しているような感覚を体験することができます。 Jetbotではなく通常のJetson nanoでもステレオ3Dを利用できますか? 可能です。 Jetbotではなく通常のJetson nanoにPicam360ソフトウェアをインストールして使いたい方もいるでしょう。それは可能です。その手順はJetbotにPicam360ソフトウェアをインストールする手順と基本的に同じです。この連載の手順を参考にしてみてください。 3D180度動画 この左右の画像は左右別々のカメラで撮影しているので微妙に異なっています。これをちょうど右目と左目で別々に見てピントを合わせると立体的に見えます。 3D180度動画は2つの魚眼カメラで前方180度の映像を撮影し、2つの視点の映像を並べて表示することで上下左右180度の広い視野角を持った没入感のあるの立体視を体験できる動画です。 Picam360ってなんだろう? 私たちPicam360開発コミュニティーが開発しているパノラマカメラです。Picam36oは独自の画像圧縮技術により、データが重い360度の動画を軽量にライブストリーミングすることができるパノラマカメラです。パノラマカメラは広い範囲を撮影するために一般的に解像度の高いカメラを使用します。そのため1枚の画像データは重くなり、ライブストリーミングには向きません。Picam36oは見ている方向に対して動的に画像を圧縮するといった独自の圧縮処理により、一般的な4Kカメラを2つ搭載したVR180フォーマットのカメラと比較してデータサイズを1/50まで圧縮します(*1)。これによりモバイルネットワークのような帯域の狭いネットワークでもライブストリーミングが可能です。下記で詳しく説明していきます。 パノラマ動画をリアルタイムストリーミングするための技術 パノラマカメラは広い範囲を綺麗に撮影するために一般的に解像度の高いカメラを使用します。その為、通常のカメラと比較して画像データは重くなります。 Foveated Compression YouTubeにUploadされている360度動画を見ると、画質が荒く感じることがあるかもしれません。それは接続しているインターネットの通信速度に応じて、データ量の多い360動画の360度全体で画質を下げていることに起因します。 出来るだけ画質を落とさずにデータ量を小さくする方法としてFoveated Compressionという画像の圧縮方法があります。人間の目は視野の中心が鮮明に見えて周辺に行くにしたがってぼやけていく性質があります。つまり視野の周辺は画像の鮮明さを落としても映像体験として影響が出にくいということです。この性質を利用して注視点から距離が長くなるにつれて画像の情報量を落とす圧縮方法がFoveated Compressionです。 Picam360は360度画像に最適化した独自のFoveated Compression技術を搭載しています。 H.265/HEVC H.265は動画圧縮規格の1つです。Blu-rayや一般的な動画配信などに利用されている現在主流の動画圧縮技術であるH.264/MPEG-4 AVCの後継規格で、H.264と比較して約半分のデータサイズで同等の画質を実現できます。Picam360ソフトウェア(Jetson版)はH.265をサポートしています。 データサイズは1/50まで軽くなります Picam360は360度画像に最適化した独自のFoveated Compression技術とH.265コーデックにより、一般的な5.7Kパノラマカメラ(*1)と比較して視野方向の画質を鮮明に維持しながらもデータサイズを50分の1にまで圧縮します。 動画のデータサイズを大幅に小さくすることで、データ量が重くストリーミング配信に適していなかった360度動画をモバイルネットワークレベルの回線速度でリアルストリーミングすることができます。 下記Youtube動画が実際の動画です。Jetbot+Picam360にiPhoneから接続して画面をキャプチャーしました。 …
Jetson NanoをサポートしてH.265のビデオ転送が利用可能になりました
Picam360はJetson Nanoをサポートし、H.265でビデオを転送することを可能にしました。 これにより、H.264と比べて帯域幅が半分になります。 ソースコードはすでにgithubにアップロードされているので、すぐに試すことができます。 https://github.com/picam360 H.265ストリーミングプロセスに興味がある方は、下記リンク先を見てみるとお役に立てるかもしれません。 https://github.com/picam360/picam360-capture/blob/master/plugins/gst_encoder/gst_encoder.c エンコーダはGStreamer、デコーダはlibde265です。 Jetson Nanoには十分な処理能力があるため、4Kカメラのサポートも検討しています。 近い将来、新しいカメラをご紹介できるかもしれません。
新デザインの走行実験@プール
新しいPicam360-SurfaceWalkerランニング実験がプールで行いました。 新しいデザインの特徴: – 全方向性ボディ – 一人で持ち運べるコンパクトサイズ – 4つのスクリューを装備。もし一部のスクリューが停止しても 動作可能。 – コントローラなどを含むコア部は3Dプリント部品で防水を実現(オープンソースハードウェアなので設計・製造方法を公開予定) 3Dプリントのパーツで防水機構を実現するという無謀とも思える課題に挑戦しました。 FDM(樹脂を溶かして積層する)の3Dプリント部品には目に見えないですが沢山の隙間ができます。 また、モジュールを繋ぐためにはケーブルの接続が必要です。つまり穴が必要になります。 それ以外にも防水を実現するためには多くの課題がありました。 さらに、誰でも製造できるように新しい設計を求めました。 プールでの実験は良好で、次は湖でテストします。 実環境下で問題がなく製品としてリリースできたのちには、実現までに得た知見を公開していく予定です。