一、问题描述:
初次接触激光雷达,rosbag命令录制后,用ros_pcl中bag_to_pcd命令转换成的pcd文件,pcl_viewer(即pcl库无法读取),cloudcompare也无法打开。一度怀疑是bag文件有问题,但它能播放并通过rviz正常显示,随排除。
操作如下
记录 /lslidar_point_cloud话题数据
rosbag record -O lidar /lslidar_point_cloud
将lidar.bag中/lslidar_point_cloud话题数据转换成pcd文件并存在lidar_pcd文件夹
rosrun pcl_ros bag_to_pcd lidar.bag /lslidar_point_cloud lidar_pcd
但对realsense中同样为pointcloud2类型的/camera/depth/color/points话题数据进行如上操作得到的pcd文件pcl库可正常读取。
二、解决方案
1.网上找了好多教程,也咨询了厂家,说原因是lidar数据类型是自定义的,需要在自己在pcl点云库中注册。
教程如下:pcl自定义点云和点云的使用
但我没成功,可能是本身对pcl点云库不够了解。
2.还有一种说法是激光雷达的数据存储方式是pcap,不能直接转pcd,需要用pcap过渡,从pcap中提取pcd。
也失败了,代码都没调通。
3.转换思路,既然处理不了这个pcd就放弃它!
rosrun pcl_ros pointcloud_to_pcd input:=/lslidar_point_cloud
rosbag play lidar.bag
通过ros_pcl中pointcloud_to_pcd命令转换,成功了!而且pointcloud_to_pcd保存的pcd数据是
ascii格式,可以直接通过文本编译器打开,而bag_to_pcd保存的pcd数据是binary格式无法用文本编译器打开。
三、总结
解决方案1,应该可行,还请懂的朋友们指导!