Kinect V2をUbuntu14.04で使用する設定をしたときのメモ。
カーネル3.16以上、USB3.0必須。
libfreenect2とiai_kinect2が必要。
OpenCLのインストールで少しはまったので記録に残す。OpenCLを使うとIntelの内蔵GPUを使えるので高速処理可能。
1. libfreenect2のインストール
https://github.com/OpenKinect/libfreenect2
のLinuxの部分を実行。
- Get source
- git clone https://github.com/OpenKinect/libfreenect2.git
- cd libfreenect2
- cd depends; ./download_debs_trusty.sh
- build tool
- sudo apt-get install build-essential cmake pkg-config
- libusb
- sudo dpkg -i debs/libusb*deb
- TURBO JPEG
- sudo apt-get install libturbojpeg libjpeg-turbo8-dev
- OpenGL
- sudo dpkg -i debs/libglfw3*deb; sudo apt-get install -f
- sudo apt-get install libgl1-mesa-dri-lts-vivid(他のパッケージとコンフリクトしたら、インストールしない)
- OpenCL
- sudo apt-add-repository ppa:floe/beignet; sudo apt-get update; sudo apt-get install beignet-dev; sudo dpkg -i debs/ocl-icd*deb
- Build
- cd ..
- mkdir build && cd build
cmake .. - DCMAKE_INSTALL_PREFIX=$HOME/freenect2
- make
- make install
- UDEV設定
- sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
- Test
- ./bin/Protonect gl (opengl利用)
- ./bin/Protonect cl (opencl利用)
ウインドウに次のような画像が写っていない場合はopenclのインストールが失敗。
2. iai_kinect2のインストール
https://github.com/code-iai/iai_kinect2
ROSでKinect2を使うために上記のサイトの説明インストールする。
- Install
- cd ~/catkin_ws/src/
- git clone https://github.com/code-iai/iai_kinect2.git
- cd iai_kinect2
- rosdep install -r –from-paths .
- cd ~/catkin_ws
- catkin_make -DCMAKE_BUILD_TYPE=”Release”
- kinect2を接続して、次のラウンチファイルを起
- roslaunch kinect2_bridge kinect2_bridge.launch
- ここを読んでキャリブレーション
- kinect2_bridgeを次のコマンドで再起動
- roslaunch kinect2_bridge kinect2_bridge.launch (depthの処理にopenclを利用)
- roslaunch kinect2_bridge kinect2_bridge.launch depth_method:=opengl (depth処理にopenglを利用)
- クラウドビュアーで表示
- rosrun kinect2_viewer kinect2_viewer kinect2 sd cloud
- イメージビュアーで表示
- rosrun kinect2_viewer kinect2_viewer kinect2 sd image
3. はまったところ
libfreenect2のProtonectでKinect V2からのイメージ画像とデプス画像を表示できたが、iai_kinect2のkinect2_viewerでは表示できなかった。原因はopenclのインストールがうまくいっていないことだった。roslaunch kinect2_bridge kinect2_bridge.launchのコマンドではdepthの処理にopenclをデフォルトで使うが、Protonectは標準でopenglを使っていたので原因特定まで半日要した。
つまり、openclでうまく動かない時は、以下を実行すればよい。
- roslaunch kinect2_bridge kinect2_bridge.launch depth_method:=opengl
- Image Viewer
- rosrun kinect2_viewer kinect2_viewer kinect2 sd image
- Cloud Viewer
- rosrun kinect2_viewer kinect2_viewer kinect2 sd cloud
終わり
コメント