00001 // $Id: mobile_robot.h tdelaet $ 00002 // Copyright (C) 2006 Tinne De Laet <first dot last at mech dot kuleuven dot be> 00003 // 00004 // This program is free software; you can redistribute it and/or modify 00005 // it under the terms of the GNU Lesser General Public License as published by 00006 // the Free Software Foundation; either version 2.1 of the License, or 00007 // (at your option) any later version. 00008 // 00009 // This program is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 // GNU Lesser General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU Lesser General Public License 00015 // along with this program; if not, write to the Free Software 00016 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00017 // 00018 00019 #ifndef MOBILE_ROBOT_HPP 00020 #define MOBILE_ROBOT_HPP 00021 00022 00023 #include <model/analyticsystemmodel_gaussianuncertainty.h> 00024 #include <model/linearanalyticmeasurementmodel_gaussianuncertainty.h> 00025 #include <pdf/gaussian.h> 00026 #include <wrappers/matrix/matrix_wrapper.h> 00027 #include <wrappers/matrix/vector_wrapper.h> 00028 00029 #include "mobile_robot_wall_cts.h" 00030 #include "nonlinearanalyticconditionalgaussianmobile.h" 00031 00032 00033 namespace BFL{ 00034 00036 00047 class MobileRobot 00048 { 00049 public: 00050 // Constructor 00051 MobileRobot(); 00052 ~MobileRobot(); 00053 00054 void Move(MatrixWrapper::ColumnVector inputs); 00055 MatrixWrapper::ColumnVector Measure(); 00056 MatrixWrapper::ColumnVector GetState(); //method only for simulation purposes 00057 00058 private: 00059 Gaussian* _system_Uncertainty; 00060 NonLinearAnalyticConditionalGaussianMobile* _sys_pdf; 00061 AnalyticSystemModelGaussianUncertainty* _sys_model; 00062 Gaussian* _measurement_Uncertainty; 00063 LinearAnalyticConditionalGaussian* _meas_pdf; 00064 LinearAnalyticMeasurementModelGaussianUncertainty* _meas_model; 00065 MatrixWrapper::ColumnVector _state; 00066 }; 00067 } 00068 00069 #endif