Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

LookoutEvents.h

Go to the documentation of this file.
00001 //-*-c++-*-
00002 #ifndef INCLUDED_LookoutEvents_h_
00003 #define INCLUDED_LookoutEvents_h_
00004 
00005 #include <iostream>
00006 
00007 #include "EventBase.h"
00008 #include "DualCoding/LookoutRequests.h"
00009 #include "DualCoding/Sketch.h"
00010 #include "Shared/newmat/newmat.h"
00011 
00012 
00013 //! Abstract base class for all Lookout Events
00014 class LookoutEvent : public EventBase {
00015 public:
00016   enum LookoutEventType_t { lookAt, sketch, ir, scan };
00017   virtual LookoutEventType_t getLookoutEventType() const = 0;
00018   //{ constructors which take exact same set of arguments as EventBase's and pass them directory to EventBase
00019   LookoutEvent() : EventBase() {}
00020   LookoutEvent(EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur=0)
00021     : EventBase(gid,sid,tid,dur) {}
00022   LookoutEvent(EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00023     : EventBase(gid,sid,tid,dur,n,mag) {}
00024   //}
00025 };
00026 
00027 // This event gives access to transformation matrix from joint specified from LookoutRequest to Base Frame
00028 class LookoutPointAtEvent : public LookoutEvent {
00029 public:
00030   NEWMAT::Matrix toBaseMatrix;
00031   virtual LookoutEventType_t getLookoutEventType() const { return lookAt; }
00032   LookoutPointAtEvent(const NEWMAT::Matrix& mat) : LookoutEvent(), toBaseMatrix(mat) {}
00033   LookoutPointAtEvent(const NEWMAT::Matrix& mat, EventGeneratorID_t gid, 
00034          unsigned int sid, EventTypeID_t tid, unsigned int dur=0) 
00035     : LookoutEvent(gid,sid,tid,dur),toBaseMatrix(mat) {}
00036   LookoutPointAtEvent(const NEWMAT::Matrix& mat, EventGeneratorID_t gid, 
00037          unsigned int sid, EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00038     : LookoutEvent(gid,sid,tid,dur,n,mag),toBaseMatrix(mat) {}
00039   virtual EventBase* clone() const { return new LookoutPointAtEvent(*this); }
00040   virtual unsigned int getClassTypeID() const { return makeClassTypeID("LOLA"); }
00041   virtual std::string getDescription(bool showTypeSpecific=true, unsigned int verbosity=0) const;
00042   virtual unsigned int getBinSize() const;
00043   virtual unsigned int loadBinaryBuffer(const char buf[], unsigned int len);
00044   virtual unsigned int saveBinaryBuffer(char buf[], unsigned int len) const;
00045   virtual void loadXML(xmlNode* node);
00046   virtual void saveXML(xmlNode * node) const;
00047 };
00048 
00049 
00050 // Event which gives you access to the sketch stored as a result of StoreImage request
00051 class LookoutSketchEvent : public LookoutPointAtEvent {
00052 protected:
00053   DualCoding::Sketch<DualCoding::uchar> *img; // pointer to sketch existing inside lookout's requests queue
00054   
00055 public:
00056   virtual LookoutEventType_t getLookoutEventType() const { return sketch; }
00057   LookoutSketchEvent(DualCoding::Sketch<DualCoding::uchar>& _img, const NEWMAT::Matrix& mat)
00058     : LookoutPointAtEvent(mat), img(&_img) {}
00059   LookoutSketchEvent(DualCoding::Sketch<DualCoding::uchar>& _img, const NEWMAT::Matrix& mat, 
00060          EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur=0) 
00061     : LookoutPointAtEvent(mat,gid,sid,tid,dur), img(&_img) {}
00062   LookoutSketchEvent(DualCoding::Sketch<DualCoding::uchar>& _img, const NEWMAT::Matrix& mat, 
00063          EventGeneratorID_t gid, unsigned int sid, 
00064          EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00065     : LookoutPointAtEvent(mat,gid,sid,tid,dur,n,mag), img(&_img) {}
00066   //! copy constructor (shallow copy)
00067   LookoutSketchEvent(const LookoutSketchEvent& lose)
00068     : LookoutPointAtEvent(lose), img(lose.img) {}
00069   
00070   const DualCoding::Sketch<DualCoding::uchar>& getSketch() const { return *img; }
00071   virtual EventBase* clone() const { return new LookoutSketchEvent(*this); }
00072   //  virtual std::string getDescription(bool showTypeSpecific=true, unsigned int verbosity=0) const;
00073 private:
00074   LookoutSketchEvent& operator=(const LookoutSketchEvent&);
00075 };
00076 
00077 class LookoutIREvent : public LookoutPointAtEvent {
00078 public:
00079   float distance;
00080   virtual LookoutEventType_t getLookoutEventType() const { return ir; }
00081   LookoutIREvent(float dist, const NEWMAT::Matrix& mat) : LookoutPointAtEvent(mat), distance(dist) {}
00082   LookoutIREvent(float dist, const NEWMAT::Matrix& mat, EventGeneratorID_t gid, 
00083      unsigned int sid, EventTypeID_t tid, unsigned int dur=0) 
00084     : LookoutPointAtEvent(mat, gid,sid,tid,dur), distance(dist) {}
00085   LookoutIREvent(float dist, const NEWMAT::Matrix& mat, EventGeneratorID_t gid, unsigned int sid, 
00086      EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00087     : LookoutPointAtEvent(mat,gid,sid,tid,dur,n,mag), distance(dist) {}
00088   virtual EventBase* clone() const { return new LookoutIREvent(*this); }
00089   virtual unsigned int getClassTypeID() const { return makeClassTypeID("LOIR"); }
00090   virtual std::string getDescription(bool showTypeSpecific=true, unsigned int verbosity=0) const;
00091   virtual unsigned int getBinSize() const;
00092   virtual unsigned int loadBinaryBuffer(const char buf[], unsigned int len);
00093   virtual unsigned int saveBinaryBuffer(char buf[], unsigned int len) const;
00094   virtual void loadXML(xmlNode* node);
00095   virtual void saveXML(xmlNode * node) const;
00096 };
00097 
00098 class LookoutScanEvent : public LookoutEvent {
00099 protected:
00100   //! pointer to tasks implemented during the scan
00101   vector<ScanRequest::Task*> *tasks;
00102 public:
00103   virtual LookoutEventType_t getLookoutEventType() const { return scan; }
00104   LookoutScanEvent(vector<ScanRequest::Task*>& _tasks) : LookoutEvent(), tasks(&_tasks) {}
00105   LookoutScanEvent(vector<ScanRequest::Task*>& _tasks, EventGeneratorID_t gid, 
00106        unsigned int sid, EventTypeID_t tid, unsigned int dur=0) 
00107     : LookoutEvent(gid,sid,tid,dur), tasks(&_tasks) {}
00108   LookoutScanEvent(vector<ScanRequest::Task*>& _tasks, EventGeneratorID_t gid, unsigned int sid, 
00109        EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00110     : LookoutEvent(gid,sid,tid,dur,n,mag), tasks(&_tasks) {}
00111   //! copy constructor (shallow copy)
00112   LookoutScanEvent(const LookoutScanEvent& lose)
00113     : LookoutEvent(lose), tasks(lose.tasks) {}
00114   //! assignment operator (shallow copy)
00115   const LookoutScanEvent& operator=(const LookoutScanEvent& lose) {
00116     if (this == &lose) return *this;
00117     LookoutEvent::operator=(lose);
00118     tasks = lose.tasks;
00119     return *this;
00120   }
00121   virtual EventBase* clone() const { return new LookoutScanEvent(*this); }
00122   const vector<ScanRequest::Task*>& getTasks() const { return *tasks; }
00123 };
00124 
00125 #endif

Tekkotsu v3.0
Generated Wed Oct 4 00:03:44 2006 by Doxygen 1.4.7