28 #ifndef NAV2_AMCL__PF__PF_HPP_
29 #define NAV2_AMCL__PF__PF_HPP_
33 #include "nav2_amcl/pf/pf_vector.hpp"
34 #include "nav2_amcl/pf/pf_kdtree.hpp"
47 typedef pf_vector_t (* pf_init_model_fn_t) (
void * init_data);
51 typedef void (* pf_action_model_fn_t) (
57 typedef double (* pf_sensor_model_fn_t) (
102 int cluster_count, cluster_max_count;
116 int min_samples, max_samples;
119 double pop_err, pop_z;
127 double w_slow, w_fast;
130 double alpha_slow, alpha_fast;
133 pf_init_model_fn_t random_pose_fn;
135 double dist_threshold;
143 int min_samples,
int max_samples,
144 double alpha_slow,
double alpha_fast,
145 pf_init_model_fn_t random_pose_fn);
148 void pf_free(
pf_t * pf);
154 void pf_init_model(
pf_t * pf, pf_init_model_fn_t init_fn,
void * init_data);
160 void pf_update_sensor(
pf_t * pf, pf_sensor_model_fn_t sensor_fn,
void * sensor_data);
163 void pf_update_resample(
pf_t * pf,
void * random_pose_data);
170 int pf_get_cluster_stats(
171 pf_t * pf,
int cluster,
double * weight,
179 void pf_draw_samples(
pf_t * pf,
struct _rtk_fig_t * fig,
int max_samples);
182 void pf_draw_hist(
pf_t * pf,
struct _rtk_fig_t * fig);
188 void pf_draw_cluster_stats(
pf_t * pf,
struct _rtk_fig_t * fig);
192 int pf_update_converged(
pf_t * pf);
195 void pf_init_converged(
pf_t * pf);