visual-tracking-control
GatePose.h
Go to the documentation of this file.
1 #ifndef GATEPOSE_H
2 #define GATEPOSE_H
3 
4 #include <string>
5 
6 #include <BayesFilters/PFVisualCorrectionDecorator.h>
7 #include <BayesFilters/StateModel.h>
8 
9 
10 class GatePose : public bfl::PFVisualCorrectionDecorator
11 {
12 public:
13  GatePose(std::unique_ptr<PFVisualCorrection> visual_correction,
14  const double gate_x, const double gate_y, const double gate_z,
15  const double gate_rotation,
16  const double gate_aperture) noexcept;
17 
18  GatePose(std::unique_ptr<PFVisualCorrection> visual_correction) noexcept;
19 
20  ~GatePose() noexcept;
21 
22  void innovation(const Eigen::Ref<const Eigen::MatrixXf>& pred_states, cv::InputArray measurements, Eigen::Ref<Eigen::MatrixXf> innovations) override;
23 
24  double likelihood(const Eigen::Ref<const Eigen::MatrixXf>& innovations) override;
25 
26  bfl::VisualObservationModel& getVisualObservationModel() override;
27 
28  void setVisualObservationModel(std::unique_ptr<bfl::VisualObservationModel> visual_observation_model) override;
29 
30 protected:
31  void correctStep(const Eigen::Ref<const Eigen::MatrixXf>& pred_states, const Eigen::Ref<const Eigen::VectorXf>& pred_weights, cv::InputArray measurements,
32  Eigen::Ref<Eigen::MatrixXf> cor_states, Eigen::Ref<Eigen::VectorXf> cor_weights) override;
33 
34  virtual Eigen::VectorXd readPose() = 0;
35 
36  bool isInsideEllipsoid(const Eigen::Ref<const Eigen::VectorXf>& state);
37 
38  bool isWithinRotation(float rot_angle);
39 
40  bool isInsideCone(const Eigen::Ref<const Eigen::VectorXf>& state);
41 
42 private:
43  double gate_x_;
44  double gate_y_;
45  double gate_z_;
48 
49  Eigen::VectorXd ee_pose_;
50 };
51 
52 #endif /* GATEPOSE_H */
void correctStep(const Eigen::Ref< const Eigen::MatrixXf > &pred_states, const Eigen::Ref< const Eigen::VectorXf > &pred_weights, cv::InputArray measurements, Eigen::Ref< Eigen::MatrixXf > cor_states, Eigen::Ref< Eigen::VectorXf > cor_weights) override
Definition: GatePose.cpp:54
double gate_y_
Definition: GatePose.h:44
void setVisualObservationModel(std::unique_ptr< bfl::VisualObservationModel > visual_observation_model) override
Definition: GatePose.cpp:48
~GatePose() noexcept
Definition: GatePose.cpp:27
bfl::VisualObservationModel & getVisualObservationModel() override
Definition: GatePose.cpp:42
double gate_aperture_
Definition: GatePose.h:46
GatePose(std::unique_ptr< PFVisualCorrection > visual_correction, const double gate_x, const double gate_y, const double gate_z, const double gate_rotation, const double gate_aperture) noexcept
Definition: GatePose.cpp:10
bool isInsideCone(const Eigen::Ref< const Eigen::VectorXf > &state)
Definition: GatePose.cpp:88
virtual Eigen::VectorXd readPose()=0
bool isWithinRotation(float rot_angle)
Definition: GatePose.cpp:80
double gate_x_
Definition: GatePose.h:43
bool isInsideEllipsoid(const Eigen::Ref< const Eigen::VectorXf > &state)
Definition: GatePose.cpp:72
double likelihood(const Eigen::Ref< const Eigen::MatrixXf > &innovations) override
Definition: GatePose.cpp:36
Eigen::VectorXd ee_pose_
Definition: GatePose.h:49
double gate_rotation_
Definition: GatePose.h:47
double gate_z_
Definition: GatePose.h:45
void innovation(const Eigen::Ref< const Eigen::MatrixXf > &pred_states, cv::InputArray measurements, Eigen::Ref< Eigen::MatrixXf > innovations) override
Definition: GatePose.cpp:30