Conscience Core
CscPointCloudMatcher.h
Go to the documentation of this file.
1 //
2 // CscSlamEngine.hpp
3 // ConscienceRobotManager
4 //
5 // Created by Iliès Zaoui on 23/10/2022.
6 // Copyright © 2022 Conscience Robotics. All rights reserved.
7 //
8 
9 #ifndef CscPointCloudMatcher_h
10 #define CscPointCloudMatcher_h
11 
12 #include <array>
13 #include <map>
14 #include <string>
15 #include <vector>
16 
17 #include <pcl/point_types.h>
18 #include <pcl/registration/icp.h>
19 
20 #include "Axiomes/Csc3dTypes.h"
21 
22 #include "Util/conscience_log.h"
23 
24 using std::cout, std::endl, std::string, std::pair, std::vector, std::to_string;
25 
26 using namespace conscience_utils::logging;
27 using namespace conscience_core::axiomes;
28 
29 namespace conscience_core::lidar {
30 
32 public:
33  struct Result {
34  bool success;
39  float score = 0;
40 
44  CscPoint3dOriented *transformation = nullptr;
45  };
46 
48 
53  const Result compare(const vector<const CscPoint3d *> &pointsReference, const vector<const CscPoint3d *> &points, bool XZTo2DOnly) const;
54  float calculateLikelihood(const vector<const CscPoint3d *> &pointsReference, const vector<const CscPoint3d *> &points, bool XZTo2DOnly);
55 
56 private:
57  unique_ptr<CscLogger> logger;
58 
59  // ICP configuration method
60  void configureICP(pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> &icp);
61 
62  // Conversion methods
63  pcl::PointCloud<pcl::PointXYZ>::Ptr convertToPCLPointCloud(const vector<const CscPoint3d *> &points);
64  vector<const CscPoint3d *> convertToCscPoint3dVector(const pcl::PointCloud<pcl::PointXYZ> &pclCloud);
65 
66  // Filtering method
67  void filterPointCloud(pcl::PointCloud<pcl::PointXYZ>::Ptr &cloud,
68  const Eigen::Vector4f &minPoint,
69  const Eigen::Vector4f &maxPoint);
70  pair<const Eigen::Vector4f, const Eigen::Vector4f> computeBoxAroundReference(pcl::PointXYZ &reference, double maxDistanceForFilter);
71 };
72 
73 }
74 
75 #endif
conscience_log.h
nlohmann::to_string
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
Definition: json.hpp:26470
conscience_core::lidar::CscPointCloudMatcher
Definition: CscPointCloudMatcher.h:31
conscience_core::axiomes
Definition: Csc2dTypes.cpp:9
conscience_core::lidar
Definition: CscEntityReflexion.h:42
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
conscience_utils::logging
Definition: conscience_log.cpp:20
conscience_core::lidar::CscPointCloudMatcher::Result::success
bool success
Definition: CscPointCloudMatcher.h:34
conscience_core::lidar::CscPointCloudMatcher::Result
Definition: CscPointCloudMatcher.h:33
Csc3dTypes.h
conscience_core::axiomes::CscPoint3dOriented
Definition: Csc3dTypes.h:265