Program Listing for File MotionModel.hpp
↰ Return to documentation for file (include/bitbots_localization/MotionModel.hpp
)
//
// Created by judith on 09.03.19.
//
#ifndef BITBOTS_LOCALIZATION_MOTIONMODEL_H
#define BITBOTS_LOCALIZATION_MOTIONMODEL_H
#include <particle_filter/CRandomNumberGenerator.h>
#include <particle_filter/MovementModel.h>
#include <bitbots_localization/RobotState.hpp>
#include <bitbots_localization/tools.hpp>
#include <cstdlib>
#include <geometry_msgs/msg/vector3.hpp>
#include <memory>
namespace bitbots_localization {
class RobotMotionModel : public particle_filter::MovementModel<RobotState> {
public:
RobotMotionModel(const particle_filter::CRandomNumberGenerator &random_number_generator, double diffuse_xStdDev,
double diffuse_yStdDev, double diffuse_tStdDev, double diffuse_multiplier,
Eigen::Matrix<double, 3, 2> drift_cov);
void drift(RobotState &state, geometry_msgs::msg::Vector3 linear, geometry_msgs::msg::Vector3 angular) const override;
void diffuse(RobotState &state) const override;
double diffuse_multiplier_;
protected:
private:
// The random number generator
particle_filter::CRandomNumberGenerator random_number_generator_;
// standard deviations and multiplicator for the diffuse step
double diffuse_xStdDev_, diffuse_yStdDev_, diffuse_tStdDev_;
Eigen::Matrix<double, 3, 2> drift_cov_;
double sample(double b) const;
};
}; // namespace bitbots_localization
#endif // BITBOTS_LOCALIZATION_MOTIONMODEL_H