1 #include <boost/foreach.hpp> 18 _normalizing_term(0.25)
25 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
27 joint_filter_it.second->setJointId(
_joint_id);
43 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
45 joint_filter_it.second->setLoopPeriodNS(loop_period_ns);
51 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
53 joint_filter_it.second->setNumSamplesForLikelihoodEstimation(likelihood_sample_num);
59 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
61 joint_filter_it.second->setNormalizingTerm(normalizing_term);
77 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
79 joint_filter_it.second->initialize();
105 this->
_joint_filters[joint_type]->setCovariancePrior(prior_cov_vel);
110 this->
_joint_filters[joint_type]->setCovarianceAdditiveSystemNoisePhi(sys_noise_phi);
115 this->
_joint_filters[joint_type]->setCovarianceAdditiveSystemNoiseTheta(sys_noise_theta);
120 this->
_joint_filters[joint_type]->setCovarianceAdditiveSystemNoisePx(sys_noise_px);
125 this->
_joint_filters[joint_type]->setCovarianceAdditiveSystemNoisePy(sys_noise_py);
130 this->
_joint_filters[joint_type]->setCovarianceAdditiveSystemNoisePz(sys_noise_pz);
135 this->
_joint_filters[joint_type]->setCovarianceAdditiveSystemNoiseJointState(sys_noise_js);
140 this->
_joint_filters[joint_type]->setCovarianceAdditiveSystemNoiseJointVelocity(sys_noise_jv);
145 this->
_joint_filters[joint_type]->setCovarianceMeasurementNoise(meas_noise);
149 const Eigen::Twistd& rrb_pose_at_srb_birth_in_sf,
150 const Eigen::Twistd& srb_pose_at_srb_birth_in_sf)
152 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
154 joint_filter_it.second->setInitialMeasurement(initial_measurement,
155 rrb_pose_at_srb_birth_in_sf,
156 srb_pose_at_srb_birth_in_sf);
175 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
177 joint_filter_it.second->predictMeasurement();
183 std::map<JointFilterType, Eigen::Twistd> second_rb_hypotheses;
184 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
186 second_rb_hypotheses[joint_filter_it.first] = joint_filter_it.second->getPredictedMeasurement();
188 return second_rb_hypotheses;
193 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
195 joint_filter_it.second->setMeasurement(acquired_measurement, measurement_timestamp_ns);
201 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
203 joint_filter_it.second->correctState();
209 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
211 joint_filter_it.second->predictState(time_interval_ns);
218 double sum_of_unnormalized_model_probabilities = 0.0;
222 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
226 sum_of_unnormalized_model_probabilities += joint_filter_it.second->getUnnormalizedProbabilityOfJointFilter();
232 (sum_of_unnormalized_model_probabilities);
240 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
248 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
250 joint_filter_it.second->estimateMeasurementHistoryLikelihood();
251 joint_filter_it.second->estimateUnnormalizedModelProbability();
258 double max_probability_of_a_model = 0.0;
260 BOOST_FOREACH(joint_filters_map::value_type joint_filter_it, this->
_joint_filters)
262 double probability_of_a_model = joint_filter_it.second->getProbabilityOfJointFilter();
263 if (probability_of_a_model > max_probability_of_a_model)
265 max_probability_of_a_model = probability_of_a_model;
266 most_probable_joint_type = this->
_joint_filters.at(joint_filter_it.first);
269 return most_probable_joint_type;
284 this->
_joint_id = new_joint_combined_filter_id;
virtual JointFilterPtr getJointFilter(JointFilterType joint_type) const
Get the joint filter of the type given.
virtual void setCovarianceAdditiveSystemNoisePhi(const JointFilterType &joint_type, double sys_noise_phi)
std::pair< omip_msgs::RigidBodyPoseAndVelMsg, omip_msgs::RigidBodyPoseAndVelMsg > joint_measurement_t
virtual void setCovarianceAdditiveSystemNoisePx(const JointFilterType &joint_type, double sys_noise_px)
virtual void setJointLikelihoodDisconnected(double disconnected_joint_likelihood)
boost::shared_ptr< PrismaticJointFilter > PrismaticJointFilterPtr
virtual void predictMeasurement()
joint_filters_map _joint_filters
std::map< JointFilterType, double > _joint_normalized_prediction_errors
std::map< JointFilterType, Eigen::Twistd > getPredictedMeasurement()
virtual void setCovarianceAdditiveSystemNoisePy(const JointFilterType &joint_type, double sys_noise_py)
boost::shared_ptr< DisconnectedJointFilter > DisconnectedJointFilterPtr
virtual void setCovariancePrior(const JointFilterType &joint_type, double prior_cov_vel)
virtual void setCovarianceDeltaMeasurementAngular(double sigma_delta_meas_uncertainty_angular)
virtual void correctState()
virtual void setCovarianceAdditiveSystemNoiseJointState(const JointFilterType &joint_type, double sys_noise_js)
static JointCombinedFilterId _joint_id_generator
virtual void setMinRotationRevolute(const double &value)
virtual void initialize()
virtual void setCovarianceMeasurementNoise(const JointFilterType &joint_type, double meas_noise)
virtual void setMaxRotationRigid(double rig_max_rotation)
virtual void setCovarianceAdditiveSystemNoiseTheta(const JointFilterType &joint_type, double sys_noise_theta)
virtual void normalizeJointFilterProbabilities()
Estimate the probability of each joint filter type. NOTE: Using the Bayes Rule, the probability of a ...
virtual void estimateJointFilterProbabilities()
virtual void setMaxTranslationRigid(double rig_max_translation)
boost::shared_ptr< RevoluteJointFilter > RevoluteJointFilterPtr
virtual void predictState(double time_interval_ns)
First step when updating the filter. The next state is predicted from current state and system model...
virtual ~JointCombinedFilter()
virtual void setCovarianceAdditiveSystemNoiseJointVelocity(const JointFilterType &joint_type, double sys_noise_jv)
void setJointCombinedFilterId(JointCombinedFilterId new_joint_combined_filter_id)
virtual void setNormalizingTerm(double normalizing_term)
int long JointCombinedFilterId
virtual void setMaxRadiusDistanceRevolute(const double &value)
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)
virtual void setLoopPeriodNS(double loop_period_ns)
JointCombinedFilterId _joint_id
boost::shared_ptr< RigidJointFilter > RigidJointFilterPtr
virtual void setCovarianceDeltaMeasurementLinear(double sigma_delta_meas_uncertainty_linear)
virtual void setNumSamplesForLikelihoodEstimation(int likelihood_sample_num)
virtual JointFilterPtr getMostProbableJointFilter()
virtual void setCovarianceAdditiveSystemNoisePz(const JointFilterType &joint_type, double sys_noise_pz)
virtual JointCombinedFilterId getJointCombinedFilterId() const
virtual void setMeasurement(joint_measurement_t acquired_measurement, const double &measurement_timestamp_ns)
Set the latest acquired measurement.