ROSでPointCloudとPointCloud2でハマった話

ROSでPointCloudとPointCloud2でハマった話

ROSでpoint cloudを扱う際に,たいていの場合はsensor_msgs::PointCloud2で扱ってます.なぜ、2なのか.あんまり気にしてなかったのですが,とあるシミュレータがsensor_msgs::PointCloudで扱っていてハマりました(´・ω・`)

sensor_msgs::PointCloud で調べても, sensor_msgs::PointCloud 2が引っ掛かる。。。

PontCloud to PointCloud2で調べても情報が出てこない(´・ω・`)

PointCloudとPointCloud2

とりあえず、ROS wikiを見てみる.http://wiki.ros.org/pcl/Overvie

sensor_msgs::PointCloudは最初にROSで採用された古いメッセージ型で,ROS1.0より前で使われていたみたいです.(ROS1.0より前て、( ゚д゚)ポカーン)

sensor_msgs::PointCloud2は新しく採用されたpoint cloud messageの型.新しいとは言っても,詳細はPCL_March_2010.pdfを見ろとのことなので,2010年なんですね。。。

これは。これは。 sensor_msgs::PointCloud を見ない訳ですよ(´・ω・`)情報も出てこない訳ですよ(ノД`)・゜・。

なんでこんな型をこのシミュレータで使ってるんだろ??何か特別な理由でもあるのかな??(わからない

sensor_msgs::PointCloudをどう扱うか

sensor_msgs::PointCloud⇒ sensor_msgs::PointCloud2 に変換する関数、convertPointCloudToPointCloud2、がsensor_msgs/point_cloud_conversion.hにあるようです.

そのため,

sensor_msgs::PointCloud
↓ convertPointCloudToPointCloud2
sensor_msgs::PointCloud2
↓fromROSMsg
pcl::PointCloud

と変換することでpclの型として使えるようになりました.メンドクセェ

とりあえず,これで動きますが,もっと良い方法ないですかね。。。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA