MobileRobot.hpp

00001 #ifndef MOBILEROBOT_HPP
00002 #define MOBILEROBOT_HPP
00003 
00004 #include "indii/ml/aux/GaussianPdf.hpp"
00005 #include "indii/ml/aux/vector.hpp"
00006 #include "indii/ml/aux/matrix.hpp"
00007 
00008 namespace aux = indii::ml::aux;
00009 
00010 class MobileRobot {
00011 public:
00012   /**
00013    * Create new mobile robot.
00014    *
00015    * @param v Translational velocity.
00016    * @param w Angular velocity.
00017    */
00018   MobileRobot(double v = 0.1, double w = 0.0);
00019 
00020   /**
00021    * Destructor.
00022    */
00023   virtual ~MobileRobot();
00024 
00025   /**
00026    * Move the robot to its position at the next time step.
00027    */
00028   void move();
00029 
00030   /**
00031    * Take a measurement from the system.
00032    */
00033   aux::vector measure();
00034 
00035   /**
00036    * Get the current actual state of the robot.
00037    */
00038   const aux::vector& getState();
00039 
00040 private:
00041   /**
00042    * Noise intrinsic to system.
00043    */
00044   aux::GaussianPdf systemNoise;
00045 
00046   /**
00047    * Measurement noise.
00048    */
00049   aux::GaussianPdf measNoise;
00050 
00051   /**
00052    * Measurement model.
00053    */
00054   aux::matrix measModel;
00055 
00056   /**
00057    * Current state:
00058    *
00059    * @li x coordinate
00060    * @li y coordinate
00061    * @li orientation
00062    */
00063   aux::vector state;
00064 
00065   /**
00066    * Translational velocity.
00067    */
00068   const double v;
00069 
00070   /**
00071    * Angular velocity.
00072    */
00073   const double w;
00074 
00075   /**
00076    * State space size.
00077    */
00078   static const unsigned int STATE_SIZE = 3;
00079 
00080   /**
00081    * Measurement space size.
00082    */
00083   static const unsigned int MEAS_SIZE = 1;
00084 
00085 };
00086 
00087 #endif

Generated on Wed Dec 17 15:05:50 2008 for dysii Filtering Test Suite by  doxygen 1.5.3