1 #ifndef SLAM_CTOR_CORE_MONTE_CARLO_SCAN_MATCHER_H 2 #define SLAM_CTOR_CORE_MONTE_CARLO_SCAN_MATCHER_H 7 #include "../random_utils.h" 15 double translation_dispersion,
16 double rotation_dispersion,
17 unsigned max_dispersion_failed_attempts,
18 unsigned max_poses_nm)
44 void feedback(
bool pose_is_acceptable)
override {
46 if (!pose_is_acceptable) {
59 double new_rotation_dispersion) {
89 double translation_dispersion,
90 double rotation_dispersion,
91 unsigned failed_attempts_per_dispersion,
92 unsigned total_attempts)
95 std::make_shared<GaussianPoseEnumerator>(
96 seed, translation_dispersion, rotation_dispersion,
97 failed_attempts_per_dispersion, total_attempts
RobotPose next(const RobotPose &prev_pose) override
double _rotation_dispersion
unsigned _failed_attempts_per_shift
MonteCarloScanMatcher(std::shared_ptr< ScanProbabilityEstimator > estimator, unsigned seed, double translation_dispersion, double rotation_dispersion, unsigned failed_attempts_per_dispersion, unsigned total_attempts)
bool has_next() const override
GaussianPoseEnumerator(unsigned seed, double translation_dispersion, double rotation_dispersion, unsigned max_dispersion_failed_attempts, unsigned max_poses_nm)
unsigned _max_failed_attempts_per_shift
double _translation_dispersion
RobotPoseDelta sample(RandomEngineT &re)
void reset_shift(double dispersion_scale_factor)
double _base_rotation_dispersion
RobotPoseDeltaRV< Engine > _pose_shift_rv
void feedback(bool pose_is_acceptable) override
void reset_shift(double new_translation_dispersion, double new_rotation_dispersion)
double _base_translation_dispersion