Ubuntu Weekly Recipe

第514回 Intel RealSense D435でバーチャルユーチューバーの深みを味わう

この記事を読むのに必要な時間:およそ 5 分

Intel RealSenseシリーズはIntelが開発しているデプスカメラです。⁠プ」は半濁音です。いま流行りのバーチャルユーチューバーには,モーションキャプチャーするためにRealSenseのようなデプスカメラで撮影してる人もいます。今回はこのデプスカメラを使って,遠近感を得ることにしましょう。

4月16日追記:本記事には多くの事実誤認・誇張が含まれているとのご指摘を受けました。そこで誤っている部分に関して,注釈という形で修正情報を追記しました。誤った記述をしてしまい申し訳ございません。また一次情報も踏まえた詳細なご指摘ありがとうございました。

Kinect後継のIntel RealSense

デプスカメラとは視野にある物体の奥行き方向の位置関係を検知できるカメラです。

奥行きを検知できると物体の輪郭を把握できます。輪郭を把握できると物体の識別が可能になります。このためデプスカメラはモーションキャプチャーやジェスチャー入力,オブジェクトトラッキング,最近だと自動運転などに必要な要素となっているのです。

2010年ごろXbox 360の周辺機器として登場したKinectは,当時高価だったデプスカメラをコンシューマーレベルの価格で提供しただけにとどまらず,PCなどでも使えるようWindows SDKが提供されたこともあって,広く使われるヒット商品となりました。あのカメラの登場がモーションキャプチャー,ならびに昨今のVR/AR/MRのブームの先鞭になったとも言えるでしょう。

残念ながらKinectは2017年に販売を終了したことが公表されました。どうも心臓部であるセンサー系ICのメーカーPrimeSenseがAppleに買収されたことも理由のひとつのようです4月16日追記①)⁠おもしろいことにKinectのサイトでは,後継として「Intel RealSenseデプスカメラの検討をお勧めします」と提案していたりします。

4月16日追記①
このように書いてしまいましたが,そもそもの話としてPrimeSenseのチップはKinect v1でのみ使われており,PrimeSenseの買収前後で発表され発売を開始したXbox One版のKinect以降は,センシング方式も含めて別の技術になっています。よって「理由のひとつ」ですらない可能性が高そうです。

さてIntelのRealSenseは2015年ぐらいから発売されている,ジェスチャーベースのインターフェース技術とその製品群の総称です。本来はPCに組み込んで使用されることを想定してSDKなども含めて作っていたようですが,最近ではIntel EuclidのようにAtomとセットでスタンドアローンの製品として販売しているケースもありました。

今回紹介するD415/D435シリーズは今年1月に発売開始した最新モデルです。179ドルという価格にも関わらず十分実用に耐えるフルスペックの機能をもった製品ということで,発売と同時に売り切れ・入荷待ちになるほどの人気商品でした。今も入荷待ち状態のところが多いようです。D435の場合は以下のスペックになっています。

  • Intel RealSense Vision Processor D4
  • IRステレオカメラ(グローバルシャッター)
  • 深度センサーの出力解像度:1280 x 720 @ 90fps
  • 深度センサーの視野角:水平85.2度,鉛直58度
  • 最大深度:約10m(キャリブレーション,環境光に依存)
  • RGBカメラの出力解像度:1920 x 1080 @ 30fps
  • RGBカメラの視野角:水平69.4度,鉛直42.5度
  • カメラのサイズ:90mm x 25mm x 25mm
  • カメラ側のコネクタ:USB Type-C
  • PC側のコネクタ:USB 3.0 Type-A
  • カメラ背面に2つのM3マウントポイントあり
  • カメラ底面に1/4インチユニファイネジ穴あり

奥行き検出については,いくつかの方法が存在します。RealSenseはどうやら世代によって検出方法が若干異なるようです。D400シリーズの場合は,左右の赤外線カメラとVision Processorを使って視野を計測する方法と,中央からIRパターンを発光しその反射光を計測する方法のハイブリッド構成のようです4月16日追記②)⁠

4月16日追記②
これに関しても「事実とは異なる」という指摘を受けました。本文では「2つの異なる計測システム」が存在するような誤った説明をしていますが,後者についてはあくまで前者の精度を上げるための補助的な機能です。

底面のネジ穴はいわゆる小ネジサイズの穴ですので,小型のカメラ三脚のネジに接続できます。なお,D435には小型の三脚がついてきました。

USBコネクタはカメラの端の半円になっているUSBカバーの部分を取り外すことで現れます。ただこの部分,銀のカバーの粘着力が弱く,USBカバーを取り外すつもりが銀色の部分だけ取れてしまいました。隙間になにか薄いものを差し込んでてこの原理で取り外しましょう。

図1 使っている時は外しっぱなしなので実害はありませんが,ちょっと悲しい

画像

このRealSence,実体はUSB Video device Classに対応したUSBカメラのようなものなので,Ubuntuでも比較的簡単に動きます。Intel自身がLinux版SDKのUbuntu用リポジトリを公開しているぐらいです。

あとカメラ側には「青い保護シート」が貼ってあります。これを剥がさないと正しく計測できないので注意してください。いや,製品画像見たら剥がすことは明らかなんですが,剥がさないといけないことに気がつくまでに数十分かかりました……。

図2 剥がさないとぼんやりとした映像しか得られません

画像

Intel RealSense SDKのインストール

デプスカメラとして使うためには,Intel RealSense SDKをインストールする必要があります。幸い,64bit版のUbuntu 16.04 LTS向けのリポジトリが公開されていますので,インストールは非常に簡単です。

ただしDKMSでカーネルモジュールをインストールする都合上,SecureBootをオフにするかDKMSでの再構築時に署名を行うよう設定する必要があります。また16.04以外のリリースや64bit版以外のアーキテクチャーについては未確認です。SDKのソースコードは公開されていますので,自分でビルドする方法もあります。

GitHub上に記載されているインストール手順にしたがって,インストールをすすめていきましょう。

まずはリポジトリを登録し,パッケージリストを更新します。

$ echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main' \
  | sudo tee /etc/apt/sources.list.d/realsense-public.list
$ sudo apt-key adv --keyserver keys.gnupg.net --recv-key 6F3EFCDE
$ sudo apt update

次にRealSenseのパッケージをインストールします。依存関係でRealSenseのuvcvideoカーネルモジュールとudevのルール,デモツール,それにDKMSや開発パッケージ関連などがインストールされます。

$ sudo apt install librealsense2-dkms librealsense2-utils

ドキュメントではrealsense-uvcvideoパッケージをインストールしていますが,これは少し古い情報です。uvcvideoモジュールのDKMS関連は上記のようにlibrealsense2-dkmsパッケージに移行しました。古いパッケージの場合,Ubuntu 16.04 LTSの4.4カーネルや,HWEカーネルである4.13においてうまくモジュールをビルドできないことがありました。librealsense2-dkmsなら特に不具合はなかったので,こちらのパッケージを使うようにしましょう。もしlibrealsense2-dkmsをインストール済みならsudo apt autoremove librealsense2-dkmsコマンドで古いパッケージを削除しておいてください。udevルールのパッケージも,新しいlibrealsense2-udev-rulesと古いrealsense-sdk-udev-rulesの新旧2種類あるので,古いほうのパッケージは削除してかまいません。

DKMSが正しく動けば,新しいモジュールが構築されロードされるはずです。

$ modinfo uvcvideo | grep "version:"
version:        1.1.2.realsense-1.2.0
srcversion:     7E691E3321664EAA1B07077

モジュールバージョンに「realsense」が入っていれば,正しい状態です。たとえば以下のように,realsenseがない場合は古いモジュールのままとなっています。変わらないようなら一度再起動してみてるといいかもしれません。

$ modinfo uvcvideo | grep "version:"
version:        1.1.1
srcversion:     95C78A492BFEA6BCC55B8F2

なお,最新のRealSenseライブラリはHaswell以降にサポートされたAVX2を使うようになりました。つまり,Ivy Bridge以前のアーキテクチャの場合,デモプログラムを動かすとIllegal instructionが発生しエラー終了してしまいます。もし,IvyBridgeで動かしたい場合は,少し前の2.10.1を使うといいでしょう。次のコマンドでパッケージをダウングレードできます。

$ sudo apt install librealsense2-utils=2.10.1-0~realsense0.62 \
  librealsense2=2.10.1-0~realsense0.62

ただしRealSenseのデモプログラムはそれなりにスペックを要求しますので,注意してください。少なくとも,筆者のメインマシンであるCPU Core i5-3427U(Ivy Bridge)⁠RAM 4GiBだとフレームの取得ミスが頻発し,警告だらけになりました。CPUの遅さが原因か,USB 3.0のバス性能が悪いのかは難しいところです。

もしRealSenseの開発関連のパッケージも必要であれば,次のようにインストールしてください。しかしながら今回は使用しません。

$ sudo apt install librealsense2-dev librealsense2-dbg

Intel RealSense SDKのアンインストール

Intel RealSense SDKのパッケージはすべて「librealsense2」で始まっているため,以下の方法でアンインストールできます。

$ sudo apt autoremove librealsense2*

必要に応じてリポジトリも削除しておきましょう。

$ sudo rm /etc/apt/sources.list.d/realsense-public.list
$ sudo apt-key del 6F3EFCDE
$ sudo apt update

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入