38 #include "pf_vector.h" 39 #include "pf_kdtree.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,
59 struct _pf_sample_set_t*
set);
63 typedef double (*pf_sensor_model_fn_t) (
void *sensor_data,
64 struct _pf_sample_set_t*
set);
99 typedef struct _pf_sample_set_t
103 pf_sample_t *samples;
109 int cluster_count, cluster_max_count;
110 pf_cluster_t *clusters;
123 int min_samples, max_samples;
126 double pop_err, pop_z;
131 pf_sample_set_t sets[2];
134 double w_slow, w_fast;
137 double alpha_slow, alpha_fast;
140 pf_init_model_fn_t random_pose_fn;
141 void *random_pose_data;
146 pf_t *pf_alloc(
int min_samples,
int max_samples,
147 double alpha_slow,
double alpha_fast,
148 pf_init_model_fn_t random_pose_fn,
void *random_pose_data);
151 void pf_free(pf_t *pf);
154 void pf_init(pf_t *pf, pf_vector_t mean, pf_matrix_t cov);
157 void pf_init_model(pf_t *pf, pf_init_model_fn_t init_fn,
void *init_data);
160 void pf_update_action(pf_t *pf, pf_action_model_fn_t action_fn,
void *action_data);
163 void pf_update_sensor(pf_t *pf, pf_sensor_model_fn_t sensor_fn,
void *sensor_data);
166 void pf_update_resample(pf_t *pf);
169 void pf_get_cep_stats(pf_t *pf, pf_vector_t *mean,
double *var);
173 int pf_get_cluster_stats(pf_t *pf,
int cluster,
double *weight,
174 pf_vector_t *mean, pf_matrix_t *cov);
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);
183 void pf_draw_cep_stats(pf_t *pf,
struct _rtk_fig_t *fig);
186 void pf_draw_cluster_stats(pf_t *pf,
struct _rtk_fig_t *fig);