ROS中的几个点云工具

pcd_viewer

查看pcd文件

pcd_viewer <filename>

pcl_viewer -multiview 1 pcd_file

rosrun perception_pcl pcd_viewer <filename>

如何判断点云的数据类型

先转成pcd文件,然后用文本形式打开,看FIELDS一行,可能的结果有

1
2
FIELDS x y z
FIELDS x y z intensity timestamp ring

pcl_ros 包

这个包的工具如下:
pcl_ros包.png

如果想获得雷达的点云数据,可以发布PointCloud2类型的话题,同时用rosbag record录制得到bag文件,然后使用pcl_ros包中的bag_to_pcd得到pcd点云文件,用法:rosrun pcl_ros bag_to_pcd input.bag topic output_directory,过程:
转换过程.png

注意输出是个目录,因为bag文件的消息数量就是生成的pcd文件数量,bag文件的消息数量可以用rosbag info查看
rosbag info.png

可以用pcl_viewer工具查看pcd,但是这样转换出的点云pcd文件在用Cloud Compare打开时报错


考虑换一种生成方式,在当前路径将点云ROS数据转为pcd文件,也就是一个pcd对应一帧点云,但是会不停地转换
rosrun pcl_ros pointcloud_to_pcd input:=/hesai/pandar _prefix:=./pcd

pcd转ply程序: pcl_pcd2ply,使用格式:pcl_pcd2ply demo.pcd demo.ply。生成的pcd转成ply之后可以导入Cloud Compare

pointcloud_to_laserscan包

将3D点云转换为2D的雷达scan, 最适用于把Kinect相机用作雷达,再使用2D算法。详细使用

我们可以直接利用kinect的点云数据,因为costmap2D的接口是直接调用点云。问题是计算量很大,点云规模太大,可以把点云数量降下去,但这样效果又不好了,可能无法识别障碍。点云覆盖信息大,对障碍物信息敏感。计算量大,实时性差。从障碍物进入相机视野出现到加入代价地图有1.5秒时间

depthimage_to_laserscan

如果想从RGBD相机创建虚拟的雷达scan,这个包的效果更好,它直接处理图像数据而不是点云。
详细使用

使用Kinect的一个方案是把点云或深度图降维生成线激光,本质上是当成2D激光雷达,在平坦地面环境用。还是用gmapping、hector SLAM、cartographer等手段建图

参考:
ROS中解析bag包中的点云文件到pcd格式
激光雷达bag文件播放和转PCD文件