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


gmcl
Author(s): Mhd Ali Alshikh Khalil, adler1994@gmail.com
autogenerated on Wed Mar 2 2022 00:20:14