00001 #ifndef _SLAM_BASIS_FEATURES_HPP_
00002 #define _SLAM_BASIS_FEATURES_HPP_
00003
00004 #include "slam/featureModel.hpp"
00005
00006 namespace jafar {
00007 namespace slam {
00013 class BasisFeatureModel : public FeatureModel {
00014 public:
00015 BasisFeatureModel();
00016 void toFrame(jblas::vec const& frame_, jblas::vec const& x_, jblas::vec& xRes);
00017
00018 void toFrameJac(const jblas::vec& frame_, const jblas::vec& x_);
00019
00020 void fromFrame(jblas::vec const& frame_, jblas::vec const& x_, jblas::vec& xRes);
00021 void fromFrame(jblas::vec const& frame_, jblas::vec const& x_, jblas::vec_range& xRes);
00022
00023 void fromFrameJac(const jblas::vec& frame_, const jblas::vec& x_);
00024 void computeMergeState( const jblas::vec& x_, jblas::vec& mergeX_, jblas::mat& jac );
00025 };
00026
00027
00028 class BasisFeatureObserveModel : public FeatureObserveModel {
00029 public:
00030 BasisFeatureObserveModel(BasisFeatureModel& featureModel_);
00031 ~BasisFeatureObserveModel();
00032
00033 Observation::ObservationType typeObs() const {return Observation::BASIS;}
00034 protected:
00035 jblas::vec const& predictObservationInSensorFrame(jblas::vec const& feature_);
00036 void predictObservationInSensorFrameJac(jblas::vec const& feature_);
00037
00038
00039
00040
00041 jblas::vec inverseObservationInSensorFrame(Observation const& obs_);
00042 void inverseObservationInSensorFrameJac(Observation const& obs_);
00043
00044 };
00045
00046 }
00047 }
00048
00049 #endif