00001
00002
00003 #ifndef _SLAM_OBSERVATIONS_SELECTION_HPP_
00004 #define _SLAM_OBSERVATIONS_SELECTION_HPP_
00005
00006 #include <jmath/jblas.hpp>
00007 #include <geom/t3dEuler.hpp>
00008 #include <camera/cameraPinhole.hpp>
00009
00010 namespace jafar {
00011 namespace slam {
00012 class SegmentObservationsSelector {
00013 public:
00014 virtual ~SegmentObservationsSelector();
00015 virtual bool isObservable( double _x1, double _y1, double _x2, double _y2 ) = 0;
00016 };
00017 class HeadingPointObservationsSelector : public SegmentObservationsSelector {
00018 public:
00019 HeadingPointObservationsSelector(jafar::camera::CameraPinhole& camera);
00020 virtual ~HeadingPointObservationsSelector();
00021 void setHeadingPoint( double x, double y);
00025 void setHeadingPoint( const jblas::vec3& odo);
00026 void setHeadingPoint( const jafar::geom::T3DEuler& sensorMove);
00027 void setHeadingPoint( const jafar::geom::T3DEuler& odo, const jafar::geom::T3DEuler& robotToSensor);
00028 void setHeadingPoint( const jblas::vec3& odo, const jafar::geom::T3DEuler& robotToSensor);
00029 virtual bool isObservable( double _x1, double _y1, double _x2, double _y2 );
00030 private:
00031 jafar::camera::CameraPinhole m_camera;
00032 double m_x, m_y;
00033 };
00034 }
00035 }
00036
00037 #endif