Jafar
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
dala.hpp
00001 /* $Id$ */
00002 
00003 #ifndef SLAM_DALA_HPP
00004 #define SLAM_DALA_HPP
00005 
00006 #include "kernel/dataLog.hpp"
00007 
00008 #include "jmath/jblas.hpp"
00009 
00010 #include "geom/t3dEuler.hpp"
00011 
00012 #include "slam/full3dPredictModel.hpp"
00013 #include "slam/baseSlam.hpp"
00014 // #include "slam/MultiMapManager.hpp"
00015 
00016 namespace jafar {
00017   namespace slam {
00018 
00023     class DalaManager : public jafar::kernel::DataLoggable {
00024 
00025     private:
00026 
00027       Full3dPredictModel predictModel;
00028 
00029       BaseSlam& slam;
00030 
00031       // ego motion model;
00032       double kTrans;
00033       double kzTrans;
00034       double ksYaw;
00035       double ksAtt;
00036       double krYaw;
00037 
00038       double deltaPosMin;
00039       geom::T3DEuler currentRobotPosePredict;
00040 
00041       geom::T3DEuler worldToRobotCur;
00042       geom::T3DEuler worldToRobotPrev;
00043       geom::T3DEuler robotPrevToRobotCur;
00044 
00045       geom::T3DEuler worldToRobot;
00046 
00047       // for data logging...
00048       geom::T3DEuler refToWorld;
00049       geom::T3DEuler worldToRef;
00050 
00051       bool nextFrameRelativeNoUncertainty();
00052 
00053       bool nextFrameRelative();
00054 
00055       void slamPredict();
00056       int robotId;
00057 
00058     public:
00059 
00060       DalaManager(BaseSlam& slam_, unsigned int robotId_ = 0);
00061       DalaManager(BaseSlam& slam_, unsigned int robotId_, const jblas::vec& _robotState, const jblas::sym_mat& _robotStateCov);
00062 
00063       void setDeltaPoseMin(double deltaPosMin_) {
00064   deltaPosMin = deltaPosMin_;
00065       }
00073       void setEgoMotionModel(double kTrans_,
00074            double kzTrans_,
00075            double ksYaw_,
00076            double ksAtt_,
00077            double krYaw_) 
00078       {
00079   kTrans = kTrans_;
00080   kzTrans = kzTrans_;
00081   ksYaw = ksYaw_;
00082   ksAtt = ksAtt_;
00083   krYaw = krYaw_;
00084       }
00085 
00086       void setInitPose(jblas::vec const& worldToRobotCur_) {
00087   worldToRobotCur = worldToRobotCur_;
00088       }
00089 
00090       void setRefToWorld(jblas::vec const& refToWorld_) {
00091   refToWorld.set(refToWorld_);
00092   geom::T3D::inv(refToWorld, worldToRef);
00093       }
00094 
00095       bool nextFrameAbsolute(jblas::vec const& worldToRobotCur_);
00096 
00097       bool nextFrameRelative(jblas::vec const& robotPrevToRobotCur_)
00098       {
00099   robotPrevToRobotCur.set(robotPrevToRobotCur_);
00100   return nextFrameRelativeNoUncertainty();
00101       }
00102 
00103       bool nextFrameRelative(jblas::vec const& robotPrevToRobotCur_, 
00104            jblas::sym_mat const& robotPrevToRobotCurCov_,
00105            double noiseFactor = 1.0)
00106       {
00107   robotPrevToRobotCur.set(robotPrevToRobotCur_, noiseFactor*robotPrevToRobotCurCov_);
00108   return nextFrameRelative();
00109       }
00110 
00111       static bool isVmeOk(jblas::vec const& me, 
00112         jblas::sym_mat const& meCov,
00113         double thTrans,
00114         double thRot);
00115 
00116   void setPredToRef(geom::T3DEuler const& predToRef)
00117   {
00118     predictModel.setPredToRef(predToRef);
00119   }
00120 
00121     protected:
00122 
00123       void writeLogHeader(jafar::kernel::DataLogger& dataLogger) const;
00124       void writeLogData(jafar::kernel::DataLogger& dataLogger) const;
00125 
00126     };
00127 
00128   }
00129 }
00130 
00131 #endif // SLAM_DALA_HPP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:27 for Jafar by doxygen 1.7.6.1
LAAS-CNRS