MasutaniLab / Kinect2ToPC

Point Cloud Grabber for Microsoft Kinect v2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Point Cloud Grabber for Microsoft Kinect v2

大阪電気通信大学
升谷 保博
2019年11月19日(OpenRTM-aist 1.2.0に対応)

はじめに

  • Microsoft Kinect v2から深度と色の情報を読み取り,RTC:PCLのPointCloud型(PointCloudTypes::PointCoud)を 出力するRTコンポーネントです.
  • 以下の環境で開発,動作確認しています.
    • Windows 10 64bit版
    • Visual Studio 2015 x64
    • OpenRTM-aist 1.2.0 64bit版
    • Point Cloud Library 1.8.1 AllinOne (VS2015 64bit用)
    • Microsoft Kinect Xbox One (Kinect v2)
    • Kinect for Windows SDK v2.0
  • 杉浦 司 (UnaNancyOwen) 氏の Grabber of Point Cloud Library based on Kinect for Windows SDK のコードを そのまま利用しています(KinectGrabber\kinect2_grabber.h).
  • CMakeでKinect SDKを見つけるモジュールも杉浦 司氏の FindKinectSDK2.cmake をそのまま使っています.
  • pointcloud.idl は,Geoffrey Biggs (gbiggs)氏の RT-Components for the Point Cloud Library含まれているもの をそのまま使っています.
  • 出力する点群を表す座標系は,x軸は右向きが正,z軸は後ろ向きが正です(それぞれKinectの座標系と逆向き,y軸はどちらも上向きが正). Choeonoidの深度センサのモデルに合わせるためにこのようにしています.

仕様

  • height: 424
  • width: 512
  • type: "xyzrgb"
  • is_bigendian: 0
  • point_step: 16
  • row_step: 8192
  • is_dense: 0
  • fields (name,offset,data_type,count)
    • 0: "x",0,6,4
    • 1: "y",4,6,4
    • 2: "z",8,6,4
    • 3: "b",12,1,1
    • 4: "g",13,1,1
    • 5: "r",14,1,1

インストール

  • OpenRTM-aist 1.2.0をインストール.
  • GitHubのpclのReleaseの中のWindows用AllInOnePCL-X.X.X-AllInOne-msvcYYYY-winZZ.exeをインストール.
  • Kinect for Windows SDK v2.0 をインストール.
  • KinectToPC をクローンかダウンロードする.
  • CMake
    • ビルドディレクトリはトップ直下のbuild
      • ConfigureはVisual Studioのバージョンとプラットフォームに合わせる.
  • build\Kinect2ToPC.slnをVisual Studioで開く.
  • パフォーマンスを出すために,Releaseでビルドがお勧め.

使い方

  • KinectをUSBポートに接続する.
  • 出力されるデータ量が多いので,CORBAのデフォルトの設定ではエラーになります. rtc.confにcorba.args: -ORBgiopMaxMsgSizeの設定が必要です. トップディレクトリのrtc.confではcorba.args: -ORBgiopMaxMsgSize 20971520 にしています(デフォルト値の10倍).
  • コンポーネントを起動するバッチファイルKinect2ToPC.batを用意しています.
    • ビルドディレクトリがトップ直下のbuildであることを仮定しています.
    • 環境変数RTM_VC_CONFIGDebugReleaseに設定してください.
  • 動作確認のための接続相手として, PointCloudViewer を使ってください.

既知の問題・TODO

  • pointcloud.idlに記述されている仕様と,RT-Components for the Point Cloud Libraryの関数の仕様が異なっていますが,pointcloud.idl本来の仕様のデータを出力しています.
  • 1回に送出するデータ量が約3.3MB.もっと圧縮して送る方がいいのかもしれません.
  • Windowsでしか動作しません.

履歴

  • 2018年1月4日 VS2015とPCL 1.8.1へ移行
  • 2017年11月27日 最初のリリース

About

Point Cloud Grabber for Microsoft Kinect v2

License:GNU Lesser General Public License v3.0


Languages

Language:C++ 48.1%Language:CMake 44.7%Language:Shell 7.1%Language:Batchfile 0.2%