Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00021 
00022 
00023 
00024 
00025 
00026 
00028 
00029 #ifndef AMCL_ODOM_H
00030 #define AMCL_ODOM_H
00031 
00032 #include "amcl_sensor.h"
00033 #include "../pf/pf_pdf.h"
00034 
00035 namespace amcl
00036 {
00037 
00038 typedef enum
00039 {
00040   ODOM_MODEL_DIFF,
00041   ODOM_MODEL_OMNI
00042 } odom_model_t;
00043 
00044 
00045 class AMCLOdomData : public AMCLSensorData
00046 {
00047   
00048   public: pf_vector_t pose;
00049 
00050   
00051   public: pf_vector_t delta;
00052 };
00053 
00054 
00055 
00056 class AMCLOdom : public AMCLSensor
00057 {
00058   
00059   public: AMCLOdom();
00060 
00061   public: void SetModelDiff(double alpha1, 
00062                             double alpha2, 
00063                             double alpha3, 
00064                             double alpha4);
00065 
00066   public: void SetModelOmni(double alpha1, 
00067                             double alpha2, 
00068                             double alpha3, 
00069                             double alpha4,
00070                             double alpha5);
00071 
00072   
00073   
00074   public: virtual bool UpdateAction(pf_t *pf, AMCLSensorData *data);
00075 
00076   
00077   private: double time;
00078   
00079   
00080   private: odom_model_t model_type;
00081 
00082   
00083   private: double alpha1, alpha2, alpha3, alpha4, alpha5;
00084 };
00085 
00086 
00087 }
00088 
00089 #endif