How to use PCL

How to convert from ROS msg to PCL Point Cloud

ROSでPCL関連のパッケージはperception_pclに集まっています. Tutorialsに簡単な使い方が記載されていますが, ここでは型に注目してください.

ROSでは点群はsensor_msgs/PointCloud2型になっていますが, PCLで点群の処理を行うためにはpcl::PointCloud型である必要があります. このための相互変換には, pcl::fromROSMsg,pcl::toROSMsgを使います.

How to analyze Point Cloud format

sensor_msgs/PointCloud2型から点群の素性を探るためには, width,height,fieldsを見てみましょう. 前2つはそのままですが,次のfieldsは事前に調べておくと有用です. その点群がどのような情報を持っているかを調べられます.

例えば,ps4eyeの点群のfieldsを調べてみましょう.

rostopic echo /stereo/points2/fields

とすると,以下のような情報が得られます.

-
  name: x
  offset: 0
  datatype: 7
  count: 1
-
  name: y
  offset: 4
  datatype: 7
  count: 1
-
  name: z
  offset: 8
  datatype: 7
  count: 1
-
  name: rgb
  offset: 16
  datatype: 7
  count: 1
---

これは,ps4eyeの点群がx,y,zの位置情報と, rgbの色情報を持っていることを表しています. Common PointCloud2 field namesに種類が記載されていますが, この他にも点群は法線情報normal_{x,y,z}などを持つことができます.