Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. #include <Eigen/Dense>
  6.  
  7. #include <opencv2/opencv.hpp>
  8.  
  9. // libicp
  10. //#include "icpPointToPlane.h"
  11.  
  12. // PCL
  13. #include <pcl/io/pcd_io.h>
  14. #include <pcl/common/common.h>
  15. #include <pcl/common/geometry.h>
  16. #include <pcl/filters/filter.h>
  17. #include <pcl/registration/icp.h>
  18. #include <pcl/features/normal_3d.h>
  19. #include <pcl/features/integral_image_normal.h>
  20. #include <pcl/registration/correspondence_rejection_median_distance.h>
  21. #include <pcl/registration/correspondence_rejection_one_to_one.h>
  22. #include <pcl/registration/correspondence_rejection_surface_normal.h>
  23. #include <pcl/registration/correspondence_rejection_sample_consensus.h>
  24. #include <pcl/registration/correspondence_rejection_organized_boundary.h>
  25. #include <pcl/registration/transformation_estimation_point_to_plane.h>
  26. #include <pcl/registration/transformation_estimation_point_to_plane_weighted.h>
  27. #include <pcl/registration/transformation_validation_euclidean.h>
  28. #include <pcl/visualization/pcl_visualizer.h>
  29.  
  30. int loadPointCloudPcd(string path, pcl::PointCloud<pcl::PointXYZ>::Ptr cloud)
  31. {
  32.     if(pcl::io::loadPCDFile<pcl::PointXYZ>(path, *cloud) == -1) {
  33.         cerr << "Couldn't read file " << path << endl;
  34.         return -1;
  35.     }
  36.     return 0;
  37. }
  38.  
  39. // Ref: http://pointclouds.org/documentation/tutorials/iterative_closest_point.php
  40. //template <typename PointT>
  41. bool lm_pose(pcl::PointCloud<pcl::PointXYZ>::Ptr pcSrc,
  42.             pcl::PointCloud<pcl::PointXYZ>::Ptr pcTrg,
  43.             Eigen::Matrix4d &trans)
  44. {
  45.     pcl::registration::TransformationEstimationLM<pcl::PointXYZ, pcl::PointXYZ, double> transEstLM;
  46.     transEstLM.estimateRigidTransformation(*pcSrc, *pcTrg, trans);
  47.  
  48.     return true;
  49. }
  50.  
  51. int main(int argc, char** argv)
  52. {
  53.     pcl::PointCloud<pcl::PointXYZ>::Ptr sourceCloud(new pcl::PointCloud<pcl::PointXYZ>);
  54.     pcl::PointCloud<pcl::PointXYZ>::Ptr targetCloud(new pcl::PointCloud<pcl::PointXYZ>);
  55.    
  56.     std::string sourceFile = "sourceCloud.pcd";
  57.     std::string targetFile = "targetCloud.pcd";
  58.  
  59.     Eigen::Matrix4d trans = Eigen::Matrix4d::Identity();
  60.  
  61.     loadPointCloudPcd(sourceFile, sourceCloud);  
  62.     loadPointCloudPcd(targetFile, targetCloud);
  63.  
  64.     lm_pose(sourceCloud, targetCloud, trans);
  65.  
  66.     std::cout << "transformation: " << trans << std::endl;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement