51 bool Proc(
const std::shared_ptr<PointCloud>& point_cloud)
override;
54 bool FusionAndCompensator(
55 const std::shared_ptr<PointCloud> source,
56 const uint64_t& timestamp_min,
57 const uint64_t& timestamp_max,
58 std::shared_ptr<PointCloud> target);
60 bool IsExpired(
const std::shared_ptr<PointCloud>& target,
const std::shared_ptr<PointCloud>& source);
61 bool QueryPoseAffineFromTF2(
62 const uint64_t& timestamp,
63 const std::string& target_frame_id,
64 const std::string& source_frame_id,
65 Eigen::Affine3d* pose);
67 bool IsFilteredPoint(
const Eigen::Vector3f& point,
const std::string& frame_id)
const;
72 void GetTimestampInterval(
73 const std::vector<std::shared_ptr<PointCloud>>& point_clouds,
74 uint64_t* timestamp_min,
75 uint64_t* timestamp_max);
79 void MotionCompensation(
80 const std::shared_ptr<PointCloud>& source,
81 const uint64_t& timestamp_min,
82 const uint64_t& timestamp_max,
83 const Eigen::Affine3d& world_tf_min_time,
84 const Eigen::Affine3d& world_tf_max_time,
85 const Eigen::Affine3f& lidar_tf,
86 std::shared_ptr<PointCloud> target);
90 std::shared_ptr<Writer<PointCloud>> writer_;
91 std::vector<std::shared_ptr<Reader<PointCloud>>> readers_;
93 size_t pool_size_ = 10;
94 size_t pool_index_ = 0;
95 size_t reserved_point_size_ = 500000;
96 uint64_t seq_num_ = 1;
101 std::less<std::string>,
102 Eigen::aligned_allocator<std::pair<const std::string, Eigen::Affine3f>>>
104 std::map<std::string, const FilterConfig*> filter_map_;