50struct _pf_sample_set_t;
54typedef pf_vector_t (*pf_init_model_fn_t)(
void *init_data);
58typedef void (*pf_action_model_fn_t)(
void *action_data,
struct _pf_sample_set_t *set);
62typedef double (*pf_sensor_model_fn_t)(
void *sensor_data,
struct _pf_sample_set_t *set);
94typedef 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;
139pf_t *pf_alloc(
int min_samples,
143 pf_init_model_fn_t random_pose_fn,
144 void * random_pose_data);
147void pf_free(pf_t *pf);
150void pf_init(pf_t *pf, pf_vector_t *mean, pf_matrix_t *cov);
153void pf_init_model(pf_t *pf, pf_init_model_fn_t init_fn,
void *init_data);
156void pf_update_action(pf_t *pf, pf_action_model_fn_t action_fn,
void *action_data);
159void pf_update_sensor(pf_t *pf, pf_sensor_model_fn_t sensor_fn,
void *sensor_data);
162void pf_update_resample(pf_t *pf);
165void pf_get_cep_stats(pf_t *pf, pf_vector_t *mean,
double *var);
170pf_get_cluster_stats(pf_t *pf,
int cluster,
double *weight, pf_vector_t *mean, pf_matrix_t *cov);
173void pf_draw_samples(pf_t *pf,
struct _rtk_fig_t *fig,
int max_samples);
176void pf_draw_hist(pf_t *pf,
struct _rtk_fig_t *fig);
179void pf_draw_cep_stats(pf_t *pf,
struct _rtk_fig_t *fig);
182void pf_draw_cluster_stats(pf_t *pf,
struct _rtk_fig_t *fig);