/home/fwph/code/wurde/modules/visionModule/Operators/StereoDataCollector.H

Go to the documentation of this file.
00001 #ifndef __STEREO_DATACOLLECTOR_H__
00002 #define __STEREO_DATACOLLECTOR_H__
00003 
00004 #include <string>
00005 #include <map>
00006 #include "../visionModule.H"
00007 #include <Capability.H>
00008 #include <ImageSource.H>
00009 #include <pthread.h>
00010 #include <WURDEConfiguration.H>
00011 #include <RangeFinder.H>
00012 #include <Egomotion.H>
00013 #include <fstream>
00014 
00015 namespace WURDEVision {
00016         
00021         class StereoDataCollector : public VisionOperator {
00022         public:
00023                 StereoDataCollector(std::string pName);
00024                 ~StereoDataCollector();
00025                 
00026                 void initOperator();
00027                 void runOperator(WURDE::WURDEImage image, WURDE::WURDEImage stereo);
00028                 void runOperator(WURDE::WURDEImage someImage){}
00029                 void quitOperator();
00030                 
00031                 void fileWriterThread1();
00032                 void fileWriterThread2();
00033                 void fileWriterThread3();
00034                 inline void fileWriterThread(WURDE::Time &myTime,IplImage **_mainImage,IplImage **_stereoImage,
00035                                       WURDE::RangeFinderDataStruct &myRanges, WURDE::EgomotionDataStruct &myEgo,
00036                                       unsigned int &myIndex, bool &myNewImage,WURDE::RunState &myState);
00037 
00038                 pthread_t thread1, thread2, thread3,thread4,thread5;
00039                 WURDE::RunState t1state,t2state,t3state,t4state,t5state;
00040                 bool m_newt1image,m_newt2image,m_newt3image,m_newt4image,m_newt5image;
00041                 WURDE::Time t1time,t2time,t3time,t4time,t5time;
00042                 IplImage *m_t1image,*m_t2image,*m_t3image,*m_t4image,*m_t5image;
00043                 IplImage *m_t1simage,*m_t2simage,*m_t3simage,*m_t4simage,*m_t5simage;
00044                 WURDE::RangeFinderDataStruct ranges1,ranges2,ranges3,ranges4,ranges5;
00045                 WURDE::EgomotionDataStruct ego1,ego2,ego3,ego4,ego5;
00046                 unsigned int index1, index2,index3,index4,index5;
00047                 
00048                 std::string m_imageDir;
00049                 std::string m_imagePrefix;
00050 
00051         protected:
00052                 WURDE::RangeFinder m_myRF;
00053                 WURDE::Egomotion m_myEgo;
00054                 std::ofstream m_outfile;
00055                 std::string m_outfilename;
00056                 unsigned int index;
00057                 bool m_dolaser;
00058                 bool m_doodom;
00059 
00060                 bool m_run; // prevent data gathering till we have data to gather
00061                 int next;
00062                 inline void queueImage(IplImage *mainImage,IplImage *stereoImage,WURDE::Time &theTime,
00063                                 WURDE::WURDEImage &mImage, WURDE::WURDEImage &stereo,
00064                                 unsigned int &tindex,WURDE::RangeFinderDataStruct &tranges,
00065                                 WURDE::EgomotionDataStruct &tego, bool &newtImage);
00066         };
00067         
00068         extern "C" {
00069                 void *runStereoDataCollectorThread1(void *ptr);
00070                 void *runStereoDataCollectorThread2(void *ptr);
00071                 void *runStereoDataCollectorThread3(void *ptr);
00072                 void *runStereoDataCollectorThread4(void *ptr);
00073                 void *runStereoDataCollectorThread5(void *ptr);
00074         }
00075         
00076 };
00077 
00078 #endif

Generated on Thu Feb 1 15:31:52 2007 for WURDE by  doxygen 1.5.1