首先使将loam_livox的全局点云保存问题,找到全局点云后,我模仿了loam中如何保存单帧pcd的方式,全局点云的发布如下所示
if ( laser_cloud_surround->points.size() )
{
down_sample_filter_surface.setInputCloud( laser_cloud_surround );
down_sample_filter_surface.filter( *laser_cloud_surround );
pcl::toROSMsg( *laser_cloud_surround, ros_laser_cloud_surround );
ros_laser_cloud_surround.header.stamp = ros::Time::now();
ros_laser_cloud_surround.header.frame_id = "camera_init";
m_pub_laser_cloud_surround.publish( ros_laser_cloud_surround );
}
//screen_out << "~~~~~~~~~~~ " << "pub_surround_service, size = " << laser_cloud_surround->points.size() << " ~~~~~~~~~~~" << endl;
然后使用单帧点云的方法进行保存
m_pcl_tools_aftmap.save_to_pcd_files( "aft_mapp", current_laser_cloud_full, m_current_frame_index );
更改一下参数即可。保存后的点云需要修改为ply格式,可以通过pcl_pcd2ply命令对全局pcd文件进行转换得到ply文件,下一步就需要使用meshlab以获取obj模型,这里可能会发现在pcl中也有从ply2obj的方法,但似乎不太准确,所以推荐使用meshlab,首先计算法线
然后使用泊松算法进行曲面重建
接下来前往过滤器的selection中选择误差较大的边进行删除
接下来不需要纹理的话可以直接将其导出obj模型。