lidar.hpp
Go to the documentation of this file.
1 
3 
4 // Original Author of FLOAM: Wang Han
5 // Email wh200720041@gmail.com
6 // Homepage https://wanghan.pro
7 #ifndef FLOAM__LIDAR_HPP_
8 #define FLOAM__LIDAR_HPP_
9 #include <pcl/features/organized_edge_detection.h>
10 #include <pcl/features/integral_image_normal.h>
11 #include <pcl/filters/conditional_removal.h>
12 
13 #include "floam/lidar_utils.hpp"
14 
15 namespace floam
16 {
17 namespace lidar
18 {
19 
20 // TODO(flynneva): template the point type
21 template <class T>
22 class Lidar
23 {
24 public:
30  void detectSurfaces(
31  const pcl::PointCloud<pcl::PointXYZ>::Ptr & points,
32  pcl::PointCloud<pcl::PointNormal>::Ptr & normals);
33 
39  void detectEdges(
40  const pcl::PointCloud<pcl::PointXYZ>::Ptr & points,
41  pcl::PointCloud<pcl::PointXYZL>::Ptr & edges);
42 
47 
49  std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> m_lidarScans;
50  std::vector<int> m_addedPoints;
51 
53  pcl::KdTreeFLANN<pcl::PointXYZ> m_kdTree;
54  std::vector<int> pointSearch;
55  std::vector<float> pointSquaredDistance;
56 
58  Eigen::Matrix<std::complex<double>, 3, 3> m_covariance;
59  Eigen::Matrix<std::complex<double>, 3, 1> m_eigenValues;
60 
61 };
62 
64 template <>
66  const pcl::PointCloud<pcl::PointXYZ>::Ptr & points,
67  pcl::PointCloud<pcl::PointNormal>::Ptr & normals);
68 
70 template <>
72  const pcl::PointCloud<pcl::PointXYZ>::Ptr & points,
73  pcl::PointCloud<pcl::PointNormal>::Ptr & normals);
74 
76 template <>
78  const pcl::PointCloud<pcl::PointXYZ>::Ptr & points,
79  pcl::PointCloud<pcl::PointXYZL>::Ptr & edges);
80 
82 template <>
84  const pcl::PointCloud<pcl::PointXYZ>::Ptr & points,
85  pcl::PointCloud<pcl::PointXYZL>::Ptr & edges);
86 
89 template <typename PointT>
90 class GenericCondition : public pcl::ConditionBase<PointT>
91 {
92 public:
93  typedef std::shared_ptr<GenericCondition<PointT>> Ptr;
94  typedef std::shared_ptr<const GenericCondition<PointT>> ConstPtr;
95  typedef std::function<bool(const PointT&)> FunctorT;
96 
98  pcl::ConditionBase<PointT>(),_evaluator( evaluator )
99  {}
100 
101  virtual bool evaluate (const PointT &point) const {
102  // just delegate ALL the work to the injected std::function
103  return _evaluator(point);
104  }
105 private:
107 };
108 
109 } // namespace lidar
110 } // namespace floam
111 
112 #endif // FLOAM__LIDAR_HPP_
floam::lidar::Lidar::m_addedPoints
std::vector< int > m_addedPoints
Definition: lidar.hpp:50
pcl
floam::lidar::Lidar::m_total
floam::lidar::Total m_total
Total counters (i.e. frames and time)
Definition: lidar.hpp:46
floam::lidar::GenericCondition
Definition: lidar.hpp:90
floam::lidar::Lidar::detectSurfaces
void detectSurfaces(const pcl::PointCloud< pcl::PointXYZ >::Ptr &points, pcl::PointCloud< pcl::PointNormal >::Ptr &normals)
floam::lidar::GenericCondition::ConstPtr
std::shared_ptr< const GenericCondition< PointT > > ConstPtr
Definition: lidar.hpp:94
floam::lidar::Lidar::pointSquaredDistance
std::vector< float > pointSquaredDistance
Definition: lidar.hpp:55
floam::lidar::GenericCondition::FunctorT
std::function< bool(const PointT &)> FunctorT
Definition: lidar.hpp:95
floam::lidar::Lidar::pointSearch
std::vector< int > pointSearch
Definition: lidar.hpp:54
floam::lidar::GenericCondition::Ptr
std::shared_ptr< GenericCondition< PointT > > Ptr
Definition: lidar.hpp:93
floam::lidar::Total
Definition: lidar_utils.hpp:75
floam::lidar::GenericCondition::GenericCondition
GenericCondition(FunctorT evaluator)
Definition: lidar.hpp:97
floam::lidar::Lidar::m_eigenValues
Eigen::Matrix< std::complex< double >, 3, 1 > m_eigenValues
Definition: lidar.hpp:59
floam::lidar::Lidar
Definition: lidar.hpp:22
floam::lidar::Lidar::m_lidarScans
std::vector< pcl::PointCloud< pcl::PointXYZ >::Ptr > m_lidarScans
lidarScans
Definition: lidar.hpp:49
floam::lidar::GenericCondition::evaluate
virtual bool evaluate(const PointT &point) const
Definition: lidar.hpp:101
floam::lidar::GenericCondition::_evaluator
FunctorT _evaluator
Definition: lidar.hpp:106
lidar_utils.hpp
floam::lidar::Lidar::m_kdTree
pcl::KdTreeFLANN< pcl::PointXYZ > m_kdTree
kdTree
Definition: lidar.hpp:53
floam::lidar::Lidar::m_settings
T m_settings
Settings for specific Lidar type.
Definition: lidar.hpp:44
floam::lidar::Lidar::detectEdges
void detectEdges(const pcl::PointCloud< pcl::PointXYZ >::Ptr &points, pcl::PointCloud< pcl::PointXYZL >::Ptr &edges)
floam::lidar::Lidar::m_covariance
Eigen::Matrix< std::complex< double >, 3, 3 > m_covariance
covariance objects
Definition: lidar.hpp:58
floam
Major rewrite Author: Evan Flynn.
Definition: lidar.hpp:15


floam
Author(s): Han Wang
autogenerated on Wed Mar 2 2022 00:23:09