RevoluteJointFilter.h
Go to the documentation of this file.
1 /*
2  * RevoluteJointFilter.h
3  *
4  * Author: roberto
5  *
6  * This is a modified implementation of the method for online estimation of kinematic structures described in our paper
7  * "Online Interactive Perception of Articulated Objects with Multi-Level Recursive Estimation Based on Task-Specific Priors"
8  * (Martín-Martín and Brock, 2014).
9  * This implementation can be used to reproduce the results of the paper and to be applied to new research.
10  * The implementation allows also to be extended to perceive different information/models or to use additional sources of information.
11  * A detail explanation of the method and the system can be found in our paper.
12  *
13  * If you are using this implementation in your research, please consider citing our work:
14  *
15 @inproceedings{martinmartin_ip_iros_2014,
16 Title = {Online Interactive Perception of Articulated Objects with Multi-Level Recursive Estimation Based on Task-Specific Priors},
17 Author = {Roberto {Mart\'in-Mart\'in} and Oliver Brock},
18 Booktitle = {Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems},
19 Pages = {2494-2501},
20 Year = {2014},
21 Location = {Chicago, Illinois, USA},
22 Note = {http://www.robotics.tu-berlin.de/fileadmin/fg170/Publikationen_pdf/martinmartin_ip_iros_2014.pdf},
23 Url = {http://www.robotics.tu-berlin.de/fileadmin/fg170/Publikationen_pdf/martinmartin_ip_iros_2014.pdf},
24 Projectname = {Interactive Perception}
25 }
26  * If you have questions or suggestions, contact us:
27  * roberto.martinmartin@tu-berlin.de
28  *
29  * Enjoy!
30  */
31 
32 #ifndef REVOLUTEJOINTFILTER_H_
33 #define REVOLUTEJOINTFILTER_H_
34 
36 
37 // Bayesian Filtering ROS
38 #include <pdf/linearanalyticconditionalgaussian.h>
39 #include <pdf/analyticconditionalgaussian.h>
40 #include <pdf/analyticconditionalgaussian_additivenoise.h>
41 #include <wrappers/matrix/matrix_wrapper.h>
42 #include <filter/extendedkalmanfilter.h>
43 #include <model/linearanalyticsystemmodel_gaussianuncertainty.h>
44 #include <model/analyticmeasurementmodel_gaussianuncertainty.h>
45 #include <model/measurementmodel.h>
47 
48 namespace omip
49 {
50 
53 
55 {
56 public:
57 
58  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
59 
64 
68  virtual ~RevoluteJointFilter();
69 
76  RevoluteJointFilterPtr clone() const
77  {
78  return (RevoluteJointFilterPtr(doClone()));
79  }
80 
84  RevoluteJointFilter(const RevoluteJointFilter &rev_joint);
85 
90  virtual void predictState(double time_interval_ns);
91 
96  virtual void predictMeasurement();
97 
101  virtual void correctState();
102 
108 
115  virtual geometry_msgs::TwistWithCovariance getPredictedSRBPoseWithCovInSensorFrame();
116 
117  virtual void estimateUnnormalizedModelProbability() ;
118 
125  virtual geometry_msgs::TwistWithCovariance getPredictedSRBDeltaPoseWithCovInSensorFrame();
126 
133  virtual geometry_msgs::TwistWithCovariance getPredictedSRBVelocityWithCovInSensorFrame();
134 
135 
139  virtual std::vector<visualization_msgs::Marker> getJointMarkersInRRBFrame() const;
140 
144  virtual JointFilterType getJointFilterType() const;
145 
149  virtual std::string getJointFilterTypeStr() const;
150 
151  virtual void setMinRotationRevolute(const double& value);
152 
153  virtual void setMaxRadiusDistanceRevolute(const double& value);
154 
155  virtual void initialize();
156 
157  virtual void setCovarianceDeltaMeasurementAngular(double sigma_delta_meas_uncertainty_angular);
158 
159 protected:
160 
167 
170 
171  BFL::LinearAnalyticConditionalGaussian* _sys_PDF;
172  BFL::LinearAnalyticSystemModelGaussianUncertainty* _sys_MODEL;
173 
175  BFL::AnalyticMeasurementModelGaussianUncertainty* _meas_MODEL;
176 
177  BFL::ExtendedKalmanFilter* _ekf;
178 
179  void _initializeSystemModel();
181  void _initializeEKF();
182 
183  virtual RevoluteJointFilter* doClone() const
184  {
185  return (new RevoluteJointFilter(*this));
186  }
187 
189 };
190 
191 }
192 
193 #endif /* REVOLUTEJOINTFILTER_H_ */
EIGEN_MAKE_ALIGNED_OPERATOR_NEW RevoluteJointFilter()
virtual RevoluteJointFilter * doClone() const
virtual void setMinRotationRevolute(const double &value)
JointFilterType
Definition: JointFilter.h:71
virtual std::vector< visualization_msgs::Marker > getJointMarkersInRRBFrame() const
BFL::LinearAnalyticConditionalGaussian * _sys_PDF
BFL::ExtendedKalmanFilter * _ekf
virtual JointFilterType getJointFilterType() const
virtual void setMaxRadiusDistanceRevolute(const double &value)
boost::shared_ptr< RevoluteJointFilter > RevoluteJointFilterPtr
virtual std::string getJointFilterTypeStr() const
virtual geometry_msgs::TwistWithCovariance getPredictedSRBPoseWithCovInSensorFrame()
We use the kinematic structure to predict the next pose-twist of the second rigid body of the joint (...
BFL::AnalyticMeasurementModelGaussianUncertainty * _meas_MODEL
BFL::NonLinearRevoluteMeasurementPdf * _meas_PDF
virtual void setCovarianceDeltaMeasurementAngular(double sigma_delta_meas_uncertainty_angular)
virtual void estimateMeasurementHistoryLikelihood()
virtual void estimateUnnormalizedModelProbability()
BFL::LinearAnalyticSystemModelGaussianUncertainty * _sys_MODEL
virtual void predictState(double time_interval_ns)
First step when updating the filter. The next state is predicted from current state and system model...
RevoluteJointFilterPtr clone() const
virtual geometry_msgs::TwistWithCovariance getPredictedSRBDeltaPoseWithCovInSensorFrame()
Generate a prediction about the change in pose of the second rigid body (SRB) and its covariance usin...
virtual geometry_msgs::TwistWithCovariance getPredictedSRBVelocityWithCovInSensorFrame()
Generate a prediction about the velocity of the second rigid body (SRB) and its covariance using the ...


joint_tracker
Author(s): Roberto Martín-Martín
autogenerated on Mon Jun 10 2019 14:06:16