amcl_odom.h
Go to the documentation of this file.
1 /*
2  * Player - One Hell of a Robot Server
3  * Copyright (C) 2000 Brian Gerkey et al.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  */
21 //
22 // Desc: Odometry sensor model for AMCL
23 // Author: Andrew Howard
24 // Date: 17 Aug 2003
25 // CVS: $Id: amcl_odom.h 4135 2007-08-23 19:58:48Z gerkey $
26 //
28 
29 #ifndef AMCL_ODOM_H
30 #define AMCL_ODOM_H
31 
32 #include "amcl_sensor.h"
33 #include "../pf/pf_pdf.h"
34 
35 namespace amcl
36 {
37 
38 typedef enum
39 {
44 } odom_model_t;
45 
46 // Odometric sensor data
48 {
49  // Odometric pose
50  public: pf_vector_t pose;
51 
52  // Change in odometric pose
53  public: pf_vector_t delta;
54 };
55 
56 
57 // Odometric sensor model
58 class AMCLOdom : public AMCLSensor
59 {
60  // Default constructor
61  public: AMCLOdom();
62 
63  public: void SetModelDiff(double alpha1,
64  double alpha2,
65  double alpha3,
66  double alpha4);
67 
68  public: void SetModelOmni(double alpha1,
69  double alpha2,
70  double alpha3,
71  double alpha4,
72  double alpha5);
73 
74  public: void SetModel( odom_model_t type,
75  double alpha1,
76  double alpha2,
77  double alpha3,
78  double alpha4,
79  double alpha5 = 0 );
80 
81  // Update the filter based on the action model. Returns true if the filter
82  // has been updated.
83  public: virtual bool UpdateAction(pf_t *pf, AMCLSensorData *data);
84 
85  // Current data timestamp
86  private: double time;
87 
88  // Model type
90 
91  // Drift parameters
92  private: double alpha1, alpha2, alpha3, alpha4, alpha5;
93 };
94 
95 
96 }
97 
98 #endif
pf_vector_t
Definition: pf_vector.h:38
amcl::AMCLOdomData::delta
pf_vector_t delta
Definition: amcl_odom.h:53
amcl::AMCLOdom::UpdateAction
virtual bool UpdateAction(pf_t *pf, AMCLSensorData *data)
Definition: amcl_odom.cpp:113
amcl::AMCLOdom::model_type
odom_model_t model_type
Definition: amcl_odom.h:89
amcl::AMCLOdom::alpha4
double alpha4
Definition: amcl_odom.h:92
amcl::ODOM_MODEL_DIFF
@ ODOM_MODEL_DIFF
Definition: amcl_odom.h:40
amcl::AMCLSensorData
Definition: amcl_sensor.h:85
amcl::AMCLOdomData::pose
pf_vector_t pose
Definition: amcl_odom.h:50
amcl::AMCLOdom::time
double time
Definition: amcl_odom.h:86
amcl::AMCLOdom::SetModel
void SetModel(odom_model_t type, double alpha1, double alpha2, double alpha3, double alpha4, double alpha5=0)
Definition: amcl_odom.cpp:96
data
data
amcl::ODOM_MODEL_OMNI_CORRECTED
@ ODOM_MODEL_OMNI_CORRECTED
Definition: amcl_odom.h:43
_pf_t
Definition: pf.h:112
amcl::AMCLOdom::alpha3
double alpha3
Definition: amcl_odom.h:92
amcl::AMCLOdom::alpha1
double alpha1
Definition: amcl_odom.h:92
amcl::AMCLOdom::alpha2
double alpha2
Definition: amcl_odom.h:92
amcl::AMCLOdom
Definition: amcl_odom.h:58
amcl::AMCLOdom::SetModelOmni
void SetModelOmni(double alpha1, double alpha2, double alpha3, double alpha4, double alpha5)
Definition: amcl_odom.cpp:81
amcl_sensor.h
amcl::ODOM_MODEL_OMNI
@ ODOM_MODEL_OMNI
Definition: amcl_odom.h:41
amcl::AMCLOdom::SetModelDiff
void SetModelDiff(double alpha1, double alpha2, double alpha3, double alpha4)
Definition: amcl_odom.cpp:68
amcl::odom_model_t
odom_model_t
Definition: amcl_odom.h:38
amcl::ODOM_MODEL_DIFF_CORRECTED
@ ODOM_MODEL_DIFF_CORRECTED
Definition: amcl_odom.h:42
amcl::AMCLOdom::AMCLOdom
AMCLOdom()
Definition: amcl_odom.cpp:62
amcl::AMCLSensor
Definition: amcl_sensor.h:41
amcl::AMCLOdom::alpha5
double alpha5
Definition: amcl_odom.h:92
amcl::AMCLOdomData
Definition: amcl_odom.h:47
amcl
Definition: amcl_laser.h:35


amcl
Author(s): Brian P. Gerkey, contradict@gmail.com
autogenerated on Mon Mar 6 2023 03:50:13