32 #ifndef JOINTFILTER_H_ 33 #define JOINTFILTER_H_ 35 #include <pcl/point_types.h> 36 #include <unsupported/Eigen/MatrixFunctions> 37 #include <Eigen/Geometry> 39 #include <boost/shared_ptr.hpp> 40 #include <boost/unordered_map.hpp> 43 #include <geometry_msgs/Pose.h> 44 #include <geometry_msgs/Twist.h> 45 #include <geometry_msgs/PoseWithCovariance.h> 51 #include <visualization_msgs/MarkerArray.h> 53 #include <wrappers/matrix/matrix_wrapper.h> 55 #include "omip_msgs/RigidBodyTwistWithCovMsg.h" 58 #include "geometry_msgs/PoseWithCovarianceStamped.h" 60 #define JOINT_AXIS_MARKER_RADIUS 0.01 61 #define JOINT_AXIS_AND_VARIABLE_MARKER_RADIUS 0.02 62 #define JOINT_VALUE_TEXT_SIZE 0.1 144 const Eigen::Twistd& rrb_pose_at_srb_birth_in_sf,
145 const Eigen::Twistd& srb_pose_at_srb_birth_in_sf);
267 virtual JointCombinedFilterId
getJointId()
const;
269 virtual void setJointId(JointCombinedFilterId joint_id);
446 #ifdef PUBLISH_PREDICTED_POSE_AS_PWC virtual void setCovarianceAdditiveSystemNoiseJointState(double sigma_sys_noise_pv)
Eigen::Twistd _previous_delta_pose_in_rrbf
JointFilterPtr clone() const
Creates a new Joint object with the same values as this one and passes its reference.
virtual ~JointFilter()
Destructor.
virtual void setCovariancePrior(double prior_cov_vel)
Eigen::Twistd _rrb_current_pose_in_sf
Eigen::Twistd _srb_current_pose_in_sf
std::pair< omip_msgs::RigidBodyPoseAndVelMsg, omip_msgs::RigidBodyPoseAndVelMsg > joint_measurement_t
double _sigma_sys_noise_px
bool _from_inverted_to_non_inverted
virtual void setCovarianceAdditiveSystemNoisePhi(double sigma_sys_noise_phi)
Eigen::Twistd _predicted_delta_pose_in_rrbf
virtual void estimateUnnormalizedModelProbability()
Eigen::Matrix3d _uncertainty_joint_position
virtual double getJointState() const
Return the joint state. Useful for plotting and testing purposes (monitoring action) ...
Eigen::Matrix< double, 6, 6 > _rrb_vel_cov_in_sf
Eigen::Matrix< double, 6, 6 > _current_delta_pose_cov_in_rrbf
virtual double getOrientationThetaInRRBFrame() const
virtual Eigen::Vector3d getJointOrientationRPYInRRBFrame() const
virtual void initialize()
double _sigma_sys_noise_py
double _joint_orientation_phi
double _uncertainty_joint_velocity
Eigen::Twistd _srb_current_pose_in_rrbf
Eigen::Twistd _srb_initial_pose_in_rrbf
virtual double getJointVelocity() const
Return the joint velocity. Useful for plotting and testing purposes (monitoring action) ...
virtual void estimateMeasurementHistoryLikelihood()
Estimate the error of the last joint parameters by testing them against the full observed trajectory ...
int _likelihood_sample_num
std::vector< double > _joint_states_all
virtual void setCovarianceAdditiveSystemNoiseTheta(double sigma_sys_noise_theta)
virtual void setCovarianceAdditiveSystemNoisePz(double sigma_sys_noise_pz)
virtual JointFilter * doClone() const =0
Eigen::Matrix< double, 6, 6 > _rrb_pose_cov_in_sf
bool _externally_set_likelihood
virtual void predictMeasurement()
Generate a prediction about the pose-twist of the second rigid body (SRB) using the frame of the refe...
virtual geometry_msgs::TwistWithCovariance getPredictedSRBDeltaPoseWithCovInSensorFrame()=0
Generate a prediction about the change in pose of the second rigid body (SRB) and its covariance usin...
virtual Eigen::Vector3d getJointOrientationUnitaryVector() const
virtual double getLoopPeriodNS() const
Eigen::Twistd _rrb_current_vel_in_sf
Eigen::Twistd _srb_previous_pose_in_rrbf
virtual JointFilterType getJointFilterType() const =0
Get the joint type as one of the possible JointFilterTypes.
Eigen::Vector3d _rrb_centroid_in_sf
virtual void setInitialMeasurement(const joint_measurement_t &initial_measurement, const Eigen::Twistd &rrb_pose_at_srb_birth_in_sf, const Eigen::Twistd &srb_pose_at_srb_birth_in_sf)
double _model_prior_probability
virtual double getLikelihoodOfLastMeasurements() const
Return the estimated error of the last joint parameters by testing them against the full observed tra...
bool _from_non_inverted_to_inverted
virtual void setCovarianceAdditiveSystemNoisePy(double sigma_sys_noise_py)
double _joint_acceleration
virtual void setCovarianceAdditiveSystemNoisePx(double sigma_sys_noise_px)
double _measurement_timestamp_ns
virtual double getUnnormalizedProbabilityOfJointFilter() const
Return the unnormalized joint filter probability as p(Data|Model) x p(Model)
Eigen::Twistd _srb_predicted_pose_in_rrbf
virtual double getNormalizingTerm()
Eigen::Matrix2d _uncertainty_joint_orientation_phitheta
virtual Eigen::Twistd getPredictedMeasurement() const
Get the predicted pose-twist of the second rigid body (SRB) using the frame of the reference rigid bo...
double _uncertainty_joint_state
virtual double getModelPriorProbability() const
Get the prior probability of this type of model/joint. We could use this in the feature if the robot ...
virtual std::vector< visualization_msgs::Marker > getJointMarkersInRRBFrame() const =0
Eigen::Twistd _srb_current_vel_in_sf
virtual void setLoopPeriodNS(double loop_period_ns)
virtual void correctState()
Correct the state of the filter (the joint parameters) based on the difference between the predicted ...
virtual void setCovarianceAdditiveSystemNoiseJointVelocity(double sigma_sys_noise_pvd)
Eigen::Matrix< double, 6, 6 > _srb_pose_cov_in_sf
Eigen::Vector3d _joint_orientation
bool _inverted_delta_srb_pose_in_rrbf
virtual Eigen::Vector3d getJointPositionInRRBFrame() const
virtual void setNumSamplesForLikelihoodEstimation(int likelihood_sample_num)
Eigen::Matrix< double, 6, 6 > _srb_current_pose_cov_in_rrbf
double _measurements_likelihood
virtual double getCovarianceOrientationPhiPhiInRRBFrame() const
double _unnormalized_model_probability
virtual int getNumSamplesForLikelihoodEstimation() const
tf::TransformBroadcaster _tf_pub
double _uncertainty_joint_acceleration
Eigen::Vector3d _joint_position
virtual double getCovarianceOrientationThetaThetaInRRBFrame() const
double _joint_orientation_theta
int long JointCombinedFilterId
virtual geometry_msgs::TwistWithCovariance getPredictedSRBVelocityWithCovInSensorFrame()=0
Generate a prediction about the velocity of the second rigid body (SRB) and its covariance using the ...
JointFilter()
Constructor.
Eigen::Twistd _current_delta_pose_in_rrbf
virtual void setLikelihoodOfLastMeasurements(double likelihood)
Set the estimated error of the last joint parameters (only useful for the disconnected joint because ...
virtual double getCovarianceOrientationPhiThetaInRRBFrame() const
Eigen::Twistd _rrb_previous_pose_in_sf
JointCombinedFilterId _joint_id
double _sigma_sys_noise_theta
virtual void predictState(double time_interval_ns)
Predict the next state.
double _sigma_sys_noise_jvd
virtual geometry_msgs::TwistWithCovariance getPredictedSRBPoseWithCovInSensorFrame()=0
Generate a prediction about the pose-twist of the second rigid body (SRB) and its covariance using th...
std::vector< Eigen::Twistd > _delta_poses_in_rrbf
boost::shared_ptr< JointFilter > JointFilterPtr
Eigen::Matrix< double, 6, 6 > _srb_initial_pose_cov_in_rrbf
virtual JointCombinedFilterId getJointId() const
Get the unique Id that identifies this joint.
virtual void setNormalizingTerm(double normalizing_term)
Set the normalizing term from the combined filter as the sum of all unnormalized probabilities.
virtual std::string getJointFilterTypeStr() const =0
Get the joint type as a string (printing purposes)
virtual void setMeasurement(joint_measurement_t acquired_measurement, const double &measurement_timestamp_ns)
Set the latest acquired measurement.
double _sigma_sys_noise_jv
virtual void setModelPriorProbability(double model_prior_probability)
Set the prior probability of this type of model/joint. We could use this in the feature if the robot ...
virtual void setJointId(JointCombinedFilterId joint_id)
Eigen::Vector3d _srb_centroid_in_sf
double _sigma_sys_noise_phi
Eigen::Twistd _srb_previous_predicted_pose_in_rrbf
void _initVariables(JointCombinedFilterId joint_id)
Initialize all variables of the filter.
virtual double getOrientationPhiInRRBFrame() const
double _sigma_sys_noise_pz
virtual void setCovarianceMeasurementNoise(double sigma_meas_noise)
virtual double getProbabilityOfJointFilter() const
Return the normalized joint filter probability as p(Model|Data) = p(Data|Model) x p(Model) / p(Data) ...