在上一篇中得到了几张PCD文件.现在把他们拼接起来.
拼接方法:两个点云直接相加.
注意点:
1
pcl::PointCloud<pcl::PointXYZ>::Ptr clouda_ptr (new pcl::PointCloud<pcl::PointXYZ>);//创建点云指针,存储点坐标xyz
这里创建的智能指针用来存储操作点云.后面访问对象成员用->.当然也可以直接定义一个类,用.来访问成员.
2
if (pcl::io::loadPCDFile<pcl::PointXYZ> ("/home/ethan/bags/pcl_2_bag/pcl_2_pcd1.pcd", *clouda_ptr) == -1)
要么把PCD文件放在工程目录下只写文件名(我在ROS下试了没搞成功),要么直接把路径也带上.
3
pcl::toROSMsg (*clouda_ptr, clouda_ros);
将标准PCL类型转换为ROS中的类型.
4
cloudc_ros.header.stamp = ros::Time::now();
cloudc_ros.header.frame_id = "sensor_framec";
转换后的消息只是格式有了,里面的成员还要我们自己填写,把时间戳和所在坐标系名字填上.在后面在RVIZ中通过消息名添加点云并观察点云的时候,要把frame_id填到fixed_frame里,才行.
5
把clouda和cloudb的frame_id都设为相加结果c的,使得他们都在同一个坐标系中,方便观察对比.