読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

Intel RealSenseをMax OSやLinuxでも使える librealsense を使ってみた

Intel RealSense

Intel RealSenseをMax OSやLinuxでも使える librealsense が公開されていました。公式のSDKではないようですが、Intel RealSense labの実験的プロジェクトということです。準公式くらいでしょうか(位置づけは不明です)。

2016/01/31更新:公式から「公式じゃないよ」とのアナウンス。

github.com

2015年にIntel RealSenseをMac OSやLiunxでも動かせるようにというアナウンスがあったので、それが実現した形です。もちろん、Windowsでも動かせます。

f:id:kaorun55:20160123102151j:plain

リポジトリの説明は「Cross-platform camera capture for Intel® RealSense™ F200, SR300 and R200」となっており、Intel RealSenseのF200、R200および今年発売予定の前面型SR300をクロスプラットフォームで動作させるライブラリになります。

ライセンスは「Apache License Version 2.0」とのことで利用については特に問題ないかと思います。

現状では、Color、IR、Depthストリームの取得のみで、公式SDKのようなコンピュータービジョン系の機能はありません。OpenCVやOpenGL、PCLとの連携はできるので、上の層はそれらを使うことがメインになるでしょうか。イメージとしてはOpenNIになります。

librealsense独自の機能として、1アプリケーションから複数のRealSenseセンサーにアクセスできます。現状で4台までの同時動作は確認しており、この4台でのF,Rの内訳はなんでも良いようです。

概要

リポジトリのREADMEから概要を抜き出します。

対応デバイス

  1. RealSense R200
  2. RealSense F200
  3. RealSense SR300

対応プラットフォーム

  1. Windows 8.1 (Visual Studio 2013 Update 5)
  2. Ubuntu 14.04.03 LTS x64 (GCC 4.9 toolchain)
  3. Mac OS X 10.7+ (Clang toolchain)

インストールについて

  • Linux はV4L2(video4linux2) 経由でカーネルスペースからUVC デバイスとしてアクセスする
  • Linux とMac OS X は libuvc (とlibusb)経由でユーザースペースから UVC デバイスとしてアクセスする
  • Windows 8.1以降は Windows Media Foundation 経由でカーネルスペースから UVC デバイスとしてアクセスする

インストール手順はこちらを参照してください

librealsense/installation.md at master · IntelRealSense/librealsense · GitHub

Max OSとWindowsでビルド、実行しましたが、非常に簡単です。

Mac OSではlibusbとglfw3をインストールしたあとに、サンプルプロジェクトをXCodeでビルドすれば動きました。

Windowsについては、コードを取得してVisual Studioでビルドすれば、すぐに利用可能です(ドライバなどのインストールはおそらく不要です)。DCM(Depth Camera Manager)および公式のIntel RealSense SDKも不要です。

機能概要及びサンプルプロジェクト

プロジェクトを開くと次のような構成になっています。Libraryフォルダにある「realsense」がライブラリ本体になります。インタフェースはCおよびC++になってます。C APIが提供されているので、C#やUnityなどほかの言語や環境にも持って行きやすいかと思います。

最初は「C++ Tutorials」および「Examples」を見ればよいでしょう。

f:id:kaorun55:20160125143027p:plain

C++ TutorialsはColor、Depth、IRストリームの取得、表示および、PointCloud(点群)の取得、表示となっています。自分が知っている中では初めてAPIから直接PointCloudが取り出せるライブラリです(いままではDepthデータからCameraデータ(PointCloud)に変換していた)。

Examplesはlibrealsenseの機能紹介となっています。

cpp-alignimages

Color座標とDepth座標の位置合わせです。Depth座標にあわされたColorデータと、Color座標にあわされたDepthデータが表示されます。

f:id:kaorun55:20160125144448p:plain

cpp-capture

Color、Depth、IRデータの表示です。右下はF200では無表示、R200のIR画像が入ります(R200はIRのステレオのため)。

f:id:kaorun55:20160125144606p:plain

cpp-config-ui

Intel RealSenseカメラの設定を変更します。

f:id:kaorun55:20160125144745p:plain

面白いのがIRレーザーの強さを変えられます。0にするとレーザーが照射されなくなるので、Depthは取得できず、IR画像もほぼ黒くなります。

f:id:kaorun55:20160125144900p:plain

cpp-enumerate-devices

Intel RealSenseカメラの解像度とフレームレートを表示します。

f:id:kaorun55:20160125145024p:plain

cpp-headless

起動30フレーム後のColor、Depth、IRの画像をPNGファイルに保存します。

f:id:kaorun55:20160125145453p:plain

cpp-multicam

複数のIntel RealSenseセンサーを動かします。センサーの向きによっては、DepthデータがIRの干渉でうまく取れなくなるため、先ほどのIRレーザーの強さを変えることで複数台のセンサーからDepthデータを取り出せます。

f:id:kaorun55:20160125145530p:plain

cpp-pointcloud

PointCloud(点群)表示のサンプルです。マウスで回転させると立体的に表示されることがわかります。librealsenseではDepthデータからX,Y,Zの点群を取り出せます。そこにColorのRGBを合わせる方法は「cpp-tutorial-3-pointcloud」を参考にしたほうがよさそうです。こちらの色情報はOpenGLにテクスチャーとして渡しているようです。

f:id:kaorun55:20160125145715p:plain

cpp-restart

ストリームデータの再起動の方法を示します。

f:id:kaorun55:20160125145853p:plain

所感

Windows以外のMax OS、Linuxで動くこと、軽量なこと、インストールが簡単であることから、非常に楽しいライブラリです。SDKにない機能として、1アプリ複数センサーもできるので、これまで以上に利用の幅が広がります。

USB 3.0接続がネックですが、今年はUSB 3.0の搭載されたスヒックPCの予定もありますので、バスパワーで動作するRealSenseセンサーとともにバッテリーで動作するDepthセンサー環境ができるようになるでしょう。

 

手軽かつ、いまの公式SDK環境に干渉することもないので、Intel RealSenseセンサーを持っている人は、一度試してみることをオススメします。

 

  • WindowsのNUCにF200を4台接続して動かした(USB 3.0のハブに4つつながってます)

f:id:kaorun55:20160123101946j:plain

  • R200の画角に広げて、カメラのデータをつなげてみた

f:id:kaorun55:20160123132749j:plain

 

Intel RealSense App Hack-a-thonにメンターで参加してきました

Intel RealSense 実績

1/16/23に行われた、Intel RealSense App Hack-a-thonにメンターで参加してきました

High Touch Hack-a-thon

f:id:kaorun55:20160123095319j:plain

このイベントはNECPC、Intel、ロフトワークがIntel RealSenseの普及プロジェクト「High Touch Project」の一環として行われました。

121ware.com

NECのPCにはいくつかの機種でRealSenseが内蔵(上記サイトに紹介があります)されており、購入したユーザーはすぐに使うことができます。とはいえ、アプリも開発者もまだまだ少ない状況なので、それぞれ増やしていく必要があります。ということが今回のプロジェクトになります。

 

会場では前面型のIntel RealSense F200が内蔵された「NS850/CAB」の貸し出しや、2016年春モデルでおそらく世界初の後方型のIntel RealSesen R200が内蔵されたLAVIE Hybrid ZERO 「HZ300/DA」の試用が行われました。

f:id:kaorun55:20160116115453j:plainf:id:kaorun55:20160116101112j:plain

1日目はアイデア出し、チーム決め、ハッカソン、2日目はハッカソン、発表でした。

開発されたプロトタイプアプリの様子などは開催レポートがわかりやすいです。

 

ぼくはメンターとしての参加で各チームの疑問に答えつつ、さまざまなアプリ見ることができました。

これを機会にRealSenseを使ったアプリの開発者が増えればうれしいです。

開催レポート

news.mynavi.jp

pc.watch.impress.co.jp

ascii.jp

おまけ

会場にはF,Rの内蔵PC、貸し出し用にたくさんのRealSenseがあったため、いろいろな実験も行うことができました。

ちょうど23日の前にRealSenseをMac OSやLinuxで使えるようにする非公式のSDKがでていたので、それを試していました。

f:id:kaorun55:20160123102151j:plain

2015年のふりかえり

ふりかえり

今年も無事におわりました。

みなさん、ありがとうございました。

ご迷惑をおかけしたことが多かったので申し訳ないと思いつつ、継続的に改善できればと思います。

開発

相変わらず、Kinect、RealSense、Leap Motionやってます。

今年は3Dスキャン関係が多く、PCL(Point Cloud Library)をずっとやってました。点群処理は割とできるようになったのではないかと思います。

書籍

書いたのは3冊、改訂版は1冊でした。

なんだかんだ、Leap Motion、RealSenseは類書なし、Kinect v2は類書僅少ということで、出してよかったかなと。

Kinect v2は意外にも一年間アップデートがなかったので、書籍は今でも問題なく使えるのがよかったです。

m-Stick本も類書ないですね。年明けにAtom X系でUSB 3.0のスティックPCが出たら買いかなーと思います(センサーの接続的に)。

www.naturalsoftware.jp

www.naturalsoftware.jp

www.naturalsoftware.jp

www.naturalsoftware.jp

www.naturalsoftware.jp

おかげさまで計10冊になりました。

切りもよいので、自分で書くのはもうおしまいにしようかなと思います。

f:id:kaorun55:20151231180425j:plain

 

雑誌

www.naturalsoftware.jp

www.naturalsoftware.jp

 

Web記事

こっちも3Dスキャンやってます。

www.naturalsoftware.jp

www.naturalsoftware.jp

www.naturalsoftware.jp

www.naturalsoftware.jp

受賞

お医者さんとコラボレーションということもあり、受賞できました。賞をいただくのは初めてなので、結構うれしかったです。

www.naturalsoftware.jp

登壇、展示などなど

まとめるのは、あとにしようw

www.naturalsoftware.jp

 

Windows.Devices.Perception API(Windows Helloまわり?)を使う その1・デバイスの列挙

UWP Intel RealSense Kinect for Windows v2

Xbox One KinectでのWindows Helloのニュースとともに、Windows.Devices.Perception API(Windows HelloまわりのAPI)についてのサンプルコードも教えてもらいました。

このAPI自体はだいぶ前から入ってたのですが、使い方がわからず放置していました^^;

「Perception」は「知覚」と訳されるそうで、おそらくKinectやCortana、HoloLendsあたりの従来NUIと言われていたような部類の総称かと思われます。

正直なところ、APIの位置づけ、機能について把握していませんが、やってみた感じということで。

上記サイトのサンプルでは、Perceptionで利用できるデバイスの一覧と、ストリーム(画像)表示ができるようになっています。ここでは初めにデバイスの一覧を取得してみます。

 コードはこちらにあります。なお、この機能を使うためにはUWPプロジェクトで作成、マニフェストで「Webカメラ」を有効にします。

コードの概要

今回のキモは下記のコードです。Perception APIではColor、Depth、IR(Infrared)のフレーム(データ)が取れるようで、それぞれPerceptionColorFrameSource、PerceptionDepthFrameSource、PerceptionInfraredFrameSourceとなっています。この次にFrameSourceからフレーム(データ)をとってみてわかるのですが、Kinect for Windows SDK v2とよく似ています。

gist.github.com

実行結果

いくつかの環境で動かしてみました。

Xbox One Kinect

Color,IR,Long IR,Depthが出てきます。

f:id:kaorun55:20151207025756p:plain

 

Intel RealSense F200

ColorとIRのみ出てきます。

f:id:kaorun55:20151207025803p:plain

 

Intel RealSense R200

Windows Hello未対応デバイスです。IR(Left-Right)、DepthともにColorのところに出てきます。

f:id:kaorun55:20151207030119p:plain

 

Surface Pro 4

IRのみ出てきます。ColorはWebカメラですね。

f:id:kaorun55:20151207025809p:plain

考察

考察になりますが、以上からWindows HelloはPerception APIでIRと認識される必要があるようです。

また、Surface Pro 4(たぶんBookも同じ)に乗っているWindows Helloの顔認証デバイスは、RealSenseとは別のIRになっています。

 

Xbox One Kinect(Kinect v2)でWindows Helloの顔認証を行う

Kinect for Windows v2

日本時間12/4にKinect for Windowsのアナウンスとして「Developer News | New Kinect Driver for Windows Hello & More!」をいうメールが来ました。

Windows Helloの顔認証でKinectが使えるようになったとのことです。

www.youtube.com

#子どもの声が入ってます^^;

必要なもの

Xbox One Kinect(Kinect for Windows v2)をWindows 10のPCに接続して動作できる環境があればOKです。

自分のPCがXbox One Kinectに対応しているかどうかを調べるにはKinect Configuration Verifier(直リンク)を使用します。

Xbox One Kinect センサーのセットアップ手順

(注)メールには下記の手順が必要とありますが、手元の環境ではXbox One Kinect センサーのドライバー更新だけでできました。ドライバーのバージョンも「2.1.1511.11000」以降とあるのですが、手元の環境で更新したドバイバーのバージョンは「2.1.1510.2003」でした。

  • Xbox One Kinect センサーの動作環境を作ります。Kinect for Windows SDK v2をインストールし、Xbox One Kinect センサーを接続します。
  • 下記のregファイルを作成し、レジストリキーを登録します。

Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DriverFlighting\Partner]

"TargetRing"="Drivers"

 

  •  デバイスマネージャーを開き、Xbox One Kinect センサーのドライバーを更新します。

f:id:kaorun55:20151207015246p:plain

  1. デバイスマネージャーを開く (Windowsキー + x, m)

  2. “Kinect sensor devices”を開く

  3. "WDF KinectSensor Interface 0"を右クリックする

  4. "ドライバーソフトウェアの更新"をクリックする

  5. "ドライバーソフトウェアの最新版を自動検索します"をクリックする

  6. 新しいドライバーがインストールされる

  7. 再起動する

Windows Helloのセットアップ

「設定」からWindows Helloの設定を行います

f:id:kaorun55:20151207015926p:plain

  1. “設定->アカウント->サインイン オプション”を開く
  2. PINを設定する
  3. Windows Helloの“セットアップ”をクリックし指示に従う

以上で次のログインからKinectでWindows Helloができるようになります。

あわせて読みたい

www.naturalsoftware.jp

 

browser.hatenablog.com

 

「Intel RealSense SDK R5」がリリースされています

Intel RealSense

昨日「Intel RealSense SDK R5」がリリースされました。

リリースノートはこちら

ダウンロードはこちら

f:id:kaorun55:20151202115445p:plain

どうでもいいですが、来年の更新は「2016 R6」とかになるんですかね。

大きな変更としては次の通りです。

  • SR300への対応(新しいセンサー、F200相当、2016 Q1にサイト公開)
  • SR300のみUWP(Universal Windows Platform)対応
  • R200にPerson Trackingが追加(人の検出)
  • ほかにR200の機能での細かい更新

SR300センサー

名称以外まったくわかりませんが、2016年の初めに新しい近距離用のセンサーが出るようです。機能的にはF200相当で、高精度版という位置づけでしょうか。

f:id:kaorun55:20151202123321p:plain

SR300のみUWP(Universal Windows Platform)に対応するようです。

f:id:kaorun55:20151202125654p:plain

初期化まで通ったコードはこんな感じで、C++やC#(デスクトップ)とはちょっと変わってますね。

f:id:kaorun55:20151202123551p:plain

 

R200のPersonal Tracking

R200の新機能としてPersonal Trackingという人の検出があります。

ちょっとやってみた感じでは精度はまだまだでしたが、Skeletonというチェックもあったので、Kinectのような骨格検出も今後入るのかもしれません(画像は起動画面です)。

f:id:kaorun55:20151202123251p:plain

リンク

 

 

Surface Pro 4を買いました。

雑記

www.naturalsoftware.jp

こちらの会場でSurface Pro 4の実機が展示されていて、Surface Bookの話も聞いて、Surface Bookにはタブレット側にUSBポートがついてないということで、Surface Pro 4を買いました。Surface Bookでも裏っかえしてつければよさそうですが、RealSenseを付けるときにタブレットだけの状態にしたかったので。

f:id:kaorun55:20151122151149j:plain

使ってみた感じとしてはおおむね良好です。

  • 内蔵カメラでWindows Helloができるのは非常に良い(外付けよりも)
  • 内蔵カメラはRealSenseではない
  • RealSenseのドライバを入れると、内蔵カメラでのWindows Helloができなくなる場合がある→要追試・先にWindows Helloの設定をしておくと今のところ問題なし
  • ペンの書き味が良い→サインペンのようだという例えがしっくり

 Surface Bookの上位モデルと違って外付けのGPUがないですが、NUCで運用することもあったのでそのくらいなら大丈夫かと思ってます。

リカバリー

セットアップ中におかしくしてしまった早速リカバリーしました。リカバリーの途中でも失敗したので、起動しなくなったのですがSurfaceは回復イメージをネットから落とせるのですね。非常に便利です。

www.microsoft.com

RealSense用PCとして

こんな感じでRealSenseをつないで運用できそうです。やっとR200の開発PCができた。

f:id:kaorun55:20151124105836j:plain

f:id:kaorun55:20151124105943j:plain

子ども用にも

高価すぎるおもちゃですが、画面も大きいし、ペンもよいのでプリントの代わりにもよさそうです。

f:id:kaorun55:20151123142259j:plain