pointcloud_publisherでPublishされたsensor_msgs/PointCloud2型のデータをSubscribeします. launch内のtarget_frameやtopic_nameを書き換えればXtionやURGのセンサデータをSubscribeすることも可能.
このプログラムでは,
Subscribeするデータがsensor_msgs/PointCloud2型であるためPCLを扱うことができない.
そのため,sensor_msgs/PointCloud2データをpcl/PointCloudに変換を行います.
pcl::fromROSMsg<PointT>( *input_cloud, cloud_src ); // sensor_msgs::PointCloud2 -> PointCloud
また,基準となる座標フレームを整えるために,tfによる座標変換を行います.
tf::TransformListener tf_listener_;
// transform frame :
tf_listener_.waitForTransform(target_frame, cloud_src.header.frame_id, ros::Time(0), ros::Duration(1.0));
pcl_ros::transformPointCloud(target_frame, ros::Time(0), cloud_src, cloud_src.header.frame_id, *output_cloud, tf_listener_);
【 sample launch 】
$ roslaunch pcl_tutorial_ros pointcloud_publisher.launch
$ roslaunch pcl_tutorial_ros pointcloud_subscriber.launch
launchを起動させると,センサデータの点群の個数が出力される.