odometry.h
1/*
2 * Player - One Hell of a Robot Server
3 * Copyright (C) 2003
4 * Andrew Howard
5 * Brian Gerkey
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 *
21 */
22
23
24/**************************************************************************
25 * Desc: Sensor/action models for odometry.
26 * Author: Andrew Howard
27 * Date: 15 Dec 2002
28 * CVS: $Id$
29 *************************************************************************/
30
31#ifndef ODOMETRY_H
32#define ODOMETRY_H
33
34#include "../pf/pf.h"
35#include "../pf/pf_pdf.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41
42// Model information
43typedef struct
44{
45 // PDF used for initialization
46 pf_pdf_gaussian_t *init_pdf;
47
48 // PDF used to generate action samples
49 pf_pdf_gaussian_t *action_pdf;
50
52
53
54// Create an sensor model
55odometry_t *odometry_alloc();
56
57// Free an sensor model
58void odometry_free(odometry_t *sensor);
59
60// Prepare to initialize the distribution
61void odometry_init_init(odometry_t *self, pf_vector_t mean, pf_matrix_t cov);
62
63// Finish initializing the distribution
64void odometry_init_term(odometry_t *self);
65
66// Initialize the distribution
67pf_vector_t odometry_init_model(odometry_t *self);
68
69// Prepare to update the distribution using the action model.
70void odometry_action_init(odometry_t *self, pf_vector_t old_pose, pf_vector_t new_pose);
71
72// Finish updating the distrubiotn using the action model
73void odometry_action_term(odometry_t *self);
74
75// The action model function
76pf_vector_t odometry_action_model(odometry_t *self, pf_vector_t pose);
77
78
79#ifdef __cplusplus
80}
81#endif
82
83#endif
84
Definition odometry.h:44
Definition pf_vector.h:49
Definition pf_pdf.h:49
Definition pf_vector.h:42