【kinect】リアルタイム3次元マッピングしてみた。

KinectセンサーとRTAB-mapを組み合わせたリアルタイム3次元マッピングソフトが面白そうだったので、試してみました。

動作環境
・Surface 3 Pro (Windows10 64bit)
・XBox One Kinectセンサー(Kinect V2)
・RTAB-map v0.13.0
・UsbDkドライバー v1.0.19

RTAB-mapはWindows10では動かないという情報もありましたが、Windows7 64bitやWindows8 64bit環境が無かったため、Windows10 64bit環境で挑みました。
また、RTAB-mapの32bit版は提供されていません。

Kinectを使ったマッピングのチュートリアルはこちらを参照するとよい。

環境構築の手順
1.Microsoftのh-ムページからKinect for Windows SDK 2.0をダウンロードして、インストールする。

2.RTAB-mapを公式サイトからダウンロードして、インストールする。

3.UsbDkドライバーをダウンロードして、インストールする。

躓いたところ
1. Kinectセンサーの選択肢が2つあってどちらを選択したら良いのかわからない。
→XBox One Kinectセンサーの場合は「Kinect V2」を使えばよい。
Kinect V2を選択すると、自動的にlibfreenect2ドライバーを使用することになる。
ちなみに「Kinect」を選択すると、エラーになる。これは古いKinectセンサーを接続している場合の選択肢の模様。

2. RTAB-mapでマッピングをスタートしようとすると、Kinectセンサーとの接続に失敗した。以下のようなエラーが表示される。
[ERROR] (2017-03-24 18:31:09) CameraRGBD.cpp:1547::rtabmap::CameraFreenect2::init() CameraFreenect2: no device connected or failure opening the default one! Note that rtabmap should link on libusb of libfreenect2. Tip, before starting rtabmap: “$ export LD_LIBRARY_PATH=~/libfreenect2/depends/libusb/lib:$LD_LIBRARY_PATH”

Kinect V2で動かすには、libfreenect2というものが必要らしい。
libfreenect2とはKinect V2を使うためのマイクロソフト非公式ドライバーだそう。
このlibfreenect2を使うことで、linuxでKincet V2を使うことができるほか、複数のKinect V2を使うことができるようになるとのこと。
ただし、RTAB-mapをインストールした初期状態でlibfreenect2は選択できるようになっているので、インストールはできている模様。
また、libfreenect2の公式サイトに行くと、UsbDKドライバーのインストール手順になっている。libfreenect2とUsbDKの関係が全く良く分からないが、とりあえずUsbDKドライバーをインストールをすれば良さそう。
自分の環境ではUsbDKドライバーをインストールしたら、Kinectセンサーが接続できた。

3. libusbKドライバーをインストールしたらWindows USBドライバーがぶっ飛んだ(デスクトップ版のWindows10 64bitで試した結果)
UsbDKドライバーをインストールしてもRTAB-mapが動かなかった。

公式サイトに以下のように書いてある。

Install UsbDk driver
(Windows 7) You must first install Microsoft Security Advisory 3033929 otherwise your USB keyboards and mice will stop working!
Download the latest x64 installer from https://github.com/daynix/UsbDk/releases, install it.
If UsbDk somehow does not work, uninstall UsbDk and follow the libusbK instructions.
This doesn’t interfere with the Microsoft SDK. Do not install both UsbDK and libusbK drivers

もしusbDkが動かなかったらlibusbKをインストールしてみろ、と書いてあるのでlibusbKドライバーをインストールしたら、Windows USBドライバーがぶっ飛んで(消えてしまった)、USBマウスとかUSBキーボードが一切使えなくなった。
PS2接続のマウスとキーボードがあったのでどうにかこうにかリカバリできたので助かった(汗)。
USBドライバー関係をいじくるときは注意が必要。自己責任でお願いします。