20 #ifndef CARTOGRAPHER_MAPPING_INTERNAL_3D_SCAN_MATCHING_FAST_CORRELATIVE_SCAN_MATCHER_3D_H_ 21 #define CARTOGRAPHER_MAPPING_INTERNAL_3D_SCAN_MATCHING_FAST_CORRELATIVE_SCAN_MATCHER_3D_H_ 32 #include "cartographer/mapping/proto/scan_matching/fast_correlative_scan_matcher_options_3d.pb.h" 38 namespace scan_matching {
40 proto::FastCorrelativeScanMatcherOptions3D
42 common::LuaParameterDictionary* parameter_dictionary);
48 const proto::FastCorrelativeScanMatcherOptions3D& options);
78 const std::vector<TrajectoryNode>& nodes,
79 const proto::FastCorrelativeScanMatcherOptions3D& options);
92 float min_score)
const;
98 std::unique_ptr<Result> MatchFullSubmap(
99 const Eigen::Quaterniond& global_node_rotation,
100 const Eigen::Quaterniond& global_submap_rotation,
111 std::unique_ptr<Result> MatchWithSearchParameters(
116 const Eigen::VectorXf& rotational_scan_matcher_histogram,
117 const Eigen::Quaterniond& gravity_alignment,
float min_score)
const;
121 float rotational_score)
const;
122 std::vector<DiscreteScan3D> GenerateDiscreteScans(
125 const Eigen::VectorXf& rotational_scan_matcher_histogram,
126 const Eigen::Quaterniond& gravity_alignment,
129 std::vector<Candidate3D> GenerateLowestResolutionCandidates(
131 void ScoreCandidates(
int depth,
132 const std::vector<DiscreteScan3D>& discrete_scans,
133 std::vector<Candidate3D>*
const candidates)
const;
134 std::vector<Candidate3D> ComputeLowestResolutionCandidates(
136 const std::vector<DiscreteScan3D>& discrete_scans)
const;
138 const std::vector<DiscreteScan3D>& discrete_scans,
139 const std::vector<Candidate3D>& candidates,
140 int candidate_depth,
float min_score)
const;
142 const std::vector<DiscreteScan3D>& discrete_scans,
145 const proto::FastCorrelativeScanMatcherOptions3D
options_;
157 #endif // CARTOGRAPHER_MAPPING_INTERNAL_3D_SCAN_MATCHING_FAST_CORRELATIVE_SCAN_MATCHER_3D_H_
const proto::FastCorrelativeScanMatcherOptions3D options_
const HybridGrid *const low_resolution_hybrid_grid_
const int linear_z_window_size
std::function< float(const transform::Rigid3f &)> MatchingFunction
transform::Rigid3d pose_estimate
std::vector< PrecomputationGrid3D > precomputation_grids_
const double angular_search_window
std::unique_ptr< PrecomputationGridStack3D > precomputation_grid_stack_
const int width_in_voxels_
const MatchingFunction *const low_resolution_matcher
const PrecomputationGrid3D & Get(int depth) const
const int linear_xy_window_size
std::vector< Eigen::Vector3f > PointCloud
RotationalScanMatcher rotational_scan_matcher_
proto::FastCorrelativeScanMatcherOptions3D CreateFastCorrelativeScanMatcherOptions3D(common::LuaParameterDictionary *const parameter_dictionary)
float low_resolution_score
PrecomputationGridStack3D(const HybridGrid &hybrid_grid, const proto::FastCorrelativeScanMatcherOptions3D &options)