Intel RealSenseシリーズはIntelが開発しているデプスカメラです。
4月16日追記:本記事には多くの事実誤認・
Kinect後継のIntel RealSense
デプスカメラとは視野にある物体の奥行き方向の位置関係を検知できるカメラです。
奥行きを検知できると物体の輪郭を把握できます。輪郭を把握できると物体の識別が可能になります。このためデプスカメラはモーションキャプチャーやジェスチャー入力、
2010年ごろXbox 360の周辺機器として登場したKinectは、
残念ながらKinectは2017年に販売を終了したことが公表されました。どうも心臓部であるセンサー系ICのメーカーPrimeSenseがAppleに買収されたことも理由のひとつのようです
- 4月16日追記①
- このように書いてしまいましたが、
そもそもの話としてPrimeSenseのチップはKinect v1でのみ使われており、 PrimeSenseの買収前後で発表され発売を開始したXbox One版のKinect以降は、 センシング方式も含めて別の技術になっています。よって 「理由のひとつ」 ですらない可能性が高そうです。
さてIntelのRealSenseは2015年ぐらいから発売されている、
今回紹介するD415/
- 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インチユニファイネジ穴あり
奥行き検出については、
- 4月16日追記②
- これに関しても
「事実とは異なる」 という指摘を受けました。本文では 「2つの異なる計測システム」 が存在するような誤った説明をしていますが、 後者についてはあくまで前者の精度を上げるための補助的な機能です。
底面のネジ穴はいわゆる小ネジサイズの穴ですので、
USBコネクタはカメラの端の半円になっているUSBカバーの部分を取り外すことで現れます。ただこの部分、

このRealSence、
あとカメラ側には

Intel RealSense SDKのインストール
デプスカメラとして使うためには、
ただしDKMSでカーネルモジュールをインストールする都合上、
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のルール、
$ sudo apt install librealsense2-dkms librealsense2-utils
ドキュメントではrealsense-uvcvideoパッケージをインストールしていますが、sudo apt autoremove librealsense2-dkms
」
DKMSが正しく動けば、
$ modinfo uvcvideo | grep "version:" version: 1.1.2.realsense-1.2.0 srcversion: 7E691E3321664EAA1B07077
モジュールバージョンに
$ modinfo uvcvideo | grep "version:" version: 1.1.1 srcversion: 95C78A492BFEA6BCC55B8F2
なお、
$ sudo apt install librealsense2-utils=2.10.1-0~realsense0.62 \ librealsense2=2.10.1-0~realsense0.62
ただしRealSenseのデモプログラムはそれなりにスペックを要求しますので、
もしRealSenseの開発関連のパッケージも必要であれば、
$ sudo apt install librealsense2-dev librealsense2-dbg
Intel RealSense SDKのアンインストール
Intel RealSense SDKのパッケージはすべて
$ sudo apt autoremove librealsense2*
必要に応じてリポジトリも削除しておきましょう。
$ sudo rm /etc/apt/sources.list.d/realsense-public.list $ sudo apt-key del 6F3EFCDE $ sudo apt update
デモプログラムを動かす
librealsense2-utilsにはいくつかのデモプログラムが含まれています。とりあえずいろいろ試せるのが
まず最初にRealSense本体を接続します。なお、
RealSenseを接続すると以下のようなメッセージがdmesgに表示されます。
$ dmesg | tail [ 4460.387462] usb 2-7: new SuperSpeed USB device number 2 using xhci_hcd [ 4460.404752] usb 2-7: New USB device found, idVendor=8086, idProduct=0b07 [ 4460.404780] usb 2-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4460.404785] usb 2-7: Product: Intel(R) RealSense(TM) 430 [ 4460.404790] usb 2-7: Manufacturer: Intel(R) RealSense(TM) 430 [ 4460.404795] usb 2-7: SerialNumber: 736313020779 [ 4460.408536] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) 430 (8086:0b07) [ 4460.411585] uvcvideo: Unable to create debugfs 2-2 directory. [ 4460.411902] input: Intel(R) RealSense(TM) 430 as /devices/pci0000:00/0000:00:14.0/usb2/2-7/2-7:1.0/input/input18 [ 4460.413902] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) 430 (8086:0b07) [ 4460.415026] uvcvideo: Unable to create debugfs 2-2 directory.
次にrealsense-viewerをデスクトップ環境で起動します。
$ realsense-viewer

無事に起動すると左上に製品名が表示されます。ちなみに
「Streo Module」
実際にカメラの前で物を動かすなどして、

他にもいくつかのツールが用意されています。
- rs-multicam: 深度情報とRGBカメラの結果だけを表示するシンプルなツールです
(4月16日追記③)。 - rs-measure: 画面上で指定した、
二箇所の地点間の距離を計測します。直線距離ではなく、 物体の形状に合わせた距離を計測するのがポイントです。 - rs-pointcloud: 撮影した情報から物体の位置情報をマップし、
画面をドラッグすることで別の角度から 「見る」 ことが可能になります。 - rs-align: 指定した距離より遠い物体をマスクするツールです
(4月16日追記④)。 - rs-enumerate-devices: デバイスの情報を表示します。
- 4月16日追記③
- この説明は間違いでした。rs-multicamの説明にもあるように、
本来は複数のRealSenseを接続することで意味をなすサンプルです。 - 4月16日追記④
- この説明は間違いでした。rs-alignの説明にもあるように、
本来はRGBカメラによるカラーフレームとデプスカメラから算出した奥行きフレームの位置合わせの方法を示すことが目的です。その合わせた結果を元に、 指定した距離より遠い物体を除去しています。
$ rs-enumerate-devices Device info: Name : Intel RealSense 435 Serial Number : 746512070435 Firmware Version : 05.08.15.00 Physical Port : /sys/devices/pci0000:00/0000:00:14.0/usb2/2-7/2-7:1.0/video4linux/video0 Debug Op Code : 15 Advanced Mode : YES Product Id : 0B07 (中略) Stream Profiles supported by Stereo Module Supported modes: stream resolution fps format Infrared 2 1280x800 @ 30Hz Y8 Infrared 1 1280x800 @ 30Hz Y8 Infrared 1 1280x800 @ 25Hz Y16 Infrared 2 1280x800 @ 25Hz Y16 Infrared 2 1280x800 @ 15Hz Y16 (中略) Stream Profiles supported by RGB Camera Supported modes: stream resolution fps format Color 1920x1080 @ 30Hz RAW16 Color 1920x1080 @ 30Hz Y16 Color 1920x1080 @ 30Hz BGRA8 Color 1920x1080 @ 30Hz RGBA8 Color 1920x1080 @ 30Hz BGR8 Color 1920x1080 @ 30Hz RGB8
このように強力なデプスカメラであるRealSenseを使うと、
- 4月16日追記⑤
- 「実用的なモーションキャプチャーを実現するためには他にも機能・
実装が必要なので 『簡単に』 は言い過ぎなのでは?」 というご指摘をいただきました。まったくそのとおりです。ハードウェアのRealSenseが取得できるのはあくまで奥行き情報だけで、 その情報から物体の識別や骨格・ 姿勢の推定を行うのはあくまでソフトウェア側で実装する必要があります。SDKを利用して自分で実装したり、 Nuitrackのようなプロプライエタリなソフトウェアを使う方法もあるでしょう。ただいずれにせよ、 公式なLinux向けドライバーとSDKが提供されているという点において、 「Windows・ Mac向けのソフトウェアしか提供されていない便利なハードウェア」 をなんとかLinuxでも使えるようにすることに比べると、 「簡単」 だと思うのです。……いや、 「簡単」 は言いすぎでした。申し訳ございません。