rotate_center_caliber.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //
  2. // Created by zx on 2021/8/27.
  3. //
  4. #ifndef SHUTTER_VERIFY_VERIFY_ROTATE_CANTER_CALIBER_H_
  5. #define SHUTTER_VERIFY_VERIFY_ROTATE_CANTER_CALIBER_H_
  6. #include <pcl/point_types.h>
  7. #include <pcl/point_cloud.h>
  8. #include <pcl/io/pcd_io.h>
  9. #include "match3d/detect_ceres3d.h"
  10. #include <vector>
  11. class rotate_center_caliber
  12. {
  13. typedef struct
  14. {
  15. float theta;
  16. float dx;
  17. float dy;
  18. }match_transform;
  19. public:
  20. rotate_center_caliber();
  21. ~rotate_center_caliber();
  22. void set_first_frame(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_model);
  23. bool push_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud);
  24. static Eigen::Matrix4f match(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_center,pcl::PointCloud<pcl::PointXYZ>::Ptr cloud
  25. ,Eigen::Matrix<float, 6,1> init_transform);
  26. protected:
  27. bool solve();
  28. void updata_points();
  29. protected:
  30. pcl::PointCloud<pcl::PointXYZ>::Ptr m_model_cloud;
  31. std::vector<match_transform> m_match_datas;
  32. detect_ceres3d* mp_matcher;
  33. //待解算的参数, 原点中心坐标和旋转中心坐标
  34. pcl::PointXYZ m_center;
  35. float m_rotation_center_x;
  36. float m_rotation_center_y;
  37. };
  38. #endif //SHUTTER_VERIFY_VERIFY_ROTATE_CANTER_CALIBER_H_