28 #ifndef NAV2_AMCL__PF__PF_HPP_
29 #define NAV2_AMCL__PF__PF_HPP_
31 #include "nav2_amcl/pf/pf_vector.hpp"
32 #include "nav2_amcl/pf/pf_kdtree.hpp"
45 typedef pf_vector_t (* pf_init_model_fn_t) (
void * init_data);
49 typedef void (* pf_action_model_fn_t) (
55 typedef double (* pf_sensor_model_fn_t) (
100 int cluster_count, cluster_max_count;
114 int min_samples, max_samples;
117 double pop_err, pop_z;
125 double w_slow, w_fast;
128 double alpha_slow, alpha_fast;
131 pf_init_model_fn_t random_pose_fn;
133 double dist_threshold;
141 int min_samples,
int max_samples,
142 double alpha_slow,
double alpha_fast,
143 pf_init_model_fn_t random_pose_fn);
146 void pf_free(
pf_t * pf);
152 void pf_init_model(
pf_t * pf, pf_init_model_fn_t init_fn,
void * init_data);
158 void pf_update_sensor(
pf_t * pf, pf_sensor_model_fn_t sensor_fn,
void * sensor_data);
161 void pf_update_resample(
pf_t * pf,
void * random_pose_data);
168 int pf_get_cluster_stats(
169 pf_t * pf,
int cluster,
double * weight,
177 void pf_draw_samples(
pf_t * pf,
struct _rtk_fig_t * fig,
int max_samples);
180 void pf_draw_hist(
pf_t * pf,
struct _rtk_fig_t * fig);
186 void pf_draw_cluster_stats(
pf_t * pf,
struct _rtk_fig_t * fig);
190 int pf_update_converged(
pf_t * pf);
193 void pf_init_converged(
pf_t * pf);