38 #include "pf_kdtree.h"
39 #include "pf_vector.h"
50 struct _pf_sample_set_t;
54 typedef pf_vector_t (*pf_init_model_fn_t)(
void *init_data);
58 typedef void (*pf_action_model_fn_t)(
void *action_data,
struct _pf_sample_set_t *set);
62 typedef double (*pf_sensor_model_fn_t)(
void *sensor_data,
struct _pf_sample_set_t *set);
94 typedef struct _pf_sample_set_t
104 int cluster_count, cluster_max_count;
105 pf_cluster_t *clusters;
117 int min_samples, max_samples;
120 double pop_err, pop_z;
125 pf_sample_set_t sets[2];
128 double w_slow, w_fast;
131 double alpha_slow, alpha_fast;
134 pf_init_model_fn_t random_pose_fn;
135 void * random_pose_data;
139 pf_t *pf_alloc(
int min_samples,
143 pf_init_model_fn_t random_pose_fn,
144 void * random_pose_data);
147 void pf_free(pf_t *pf);
150 void pf_init(pf_t *pf, pf_vector_t *mean, pf_matrix_t *cov);
153 void pf_init_model(pf_t *pf, pf_init_model_fn_t init_fn,
void *init_data);
156 void pf_update_action(pf_t *pf, pf_action_model_fn_t action_fn,
void *action_data);
159 void pf_update_sensor(pf_t *pf, pf_sensor_model_fn_t sensor_fn,
void *sensor_data);
162 void pf_update_resample(pf_t *pf);
165 void pf_get_cep_stats(pf_t *pf, pf_vector_t *mean,
double *var);
170 pf_get_cluster_stats(pf_t *pf,
int cluster,
double *weight, pf_vector_t *mean, pf_matrix_t *cov);
173 void pf_draw_samples(pf_t *pf,
struct _rtk_fig_t *fig,
int max_samples);
176 void pf_draw_hist(pf_t *pf,
struct _rtk_fig_t *fig);
179 void pf_draw_cep_stats(pf_t *pf,
struct _rtk_fig_t *fig);
182 void pf_draw_cluster_stats(pf_t *pf,
struct _rtk_fig_t *fig);