00001 /** 00002 * @file SensorDataProcessor.h 00003 * 00004 * Declaration of abstract class SensorDataProcessor. 00005 * 00006 * @author Matthias Juengel 00007 * @author Martin Lötzsch 00008 */ 00009 00010 #ifndef __SensorDataProcessor_h_ 00011 #define __SensorDataProcessor_h_ 00012 00013 #include "Tools/RobotConfiguration.h" 00014 #include "Tools/Module/Module.h" 00015 00016 #include "Representations/Perception/CameraMatrix.h" 00017 #include "Representations/Perception/SensorDataBuffer.h" 00018 #include "Representations/Perception/BodyPercept.h" 00019 #include "Representations/Perception/BodyPosture.h" 00020 #include "Representations/Perception/PSDPercept.h" 00021 #include "Representations/Motion/MotionInfo.h" 00022 00023 /** 00024 * @class SensorDataProcessorInterfaces 00025 * 00026 * Interfaces of the SensorDataProcessor module. 00027 */ 00028 class SensorDataProcessorInterfaces 00029 { 00030 public: 00031 /** Constructor */ 00032 SensorDataProcessorInterfaces( 00033 const SensorDataBuffer& sensorDataBuffer, 00034 const unsigned long& imageFrameNumber, 00035 const MotionInfo& motionInfo, 00036 BodyPercept& bodyPercept, 00037 BodyPosture& bodyPosture, 00038 CameraMatrix& cameraMatrix, 00039 PSDPercept& psdPercept) 00040 : sensorDataBuffer(sensorDataBuffer), 00041 imageFrameNumber(imageFrameNumber), 00042 motionInfo(motionInfo), 00043 bodyPercept(bodyPercept), 00044 bodyPosture(bodyPosture), 00045 cameraMatrix(cameraMatrix), 00046 psdPercept(psdPercept) 00047 {} 00048 00049 protected: 00050 /** The SensorDataBuffer to be processed. */ 00051 const SensorDataBuffer& sensorDataBuffer; 00052 00053 /** The frame number of the current image */ 00054 const unsigned long& imageFrameNumber; 00055 00056 /** The motion info last received from Motion */ 00057 const MotionInfo& motionInfo; 00058 00059 /** The BodyPercept to be calculated */ 00060 BodyPercept& bodyPercept; 00061 00062 /** The BodyPosture to be calculated */ 00063 BodyPosture& bodyPosture; 00064 00065 /** The offset and the rotation of the camera to be calculated */ 00066 CameraMatrix& cameraMatrix; 00067 00068 /** A spot relative to the robot that was detected by the PSD sensor to be calculated */ 00069 PSDPercept& psdPercept; 00070 }; 00071 00072 /** 00073 * @class SensorDataProcessor 00074 * 00075 * An abstract class that defines a processor for raw sensor data. 00076 */ 00077 class SensorDataProcessor : public Module, public SensorDataProcessorInterfaces, public RobotDimensions 00078 { 00079 public: 00080 /* 00081 * Constructor. 00082 * @param interfaces The paramters of the ImageProcessor module. 00083 */ 00084 SensorDataProcessor(const SensorDataProcessorInterfaces& interfaces) 00085 : SensorDataProcessorInterfaces(interfaces), 00086 RobotDimensions(getRobotConfiguration().getRobotDimensions()) 00087 {} 00088 00089 /** Destructor */ 00090 virtual ~SensorDataProcessor() {} 00091 }; 00092 00093 #endif // __SensorDataProcessor_h_ 00094 00095 /* 00096 * Change log : 00097 * 00098 * $Log: SensorDataProcessor.h,v $ 00099 * Revision 1.6 2004/05/27 09:33:18 loetzsch 00100 * clean up 00101 * 00102 * Revision 1.5 2004/05/26 17:31:34 dueffert 00103 * better data types used 00104 * 00105 * Revision 1.4 2004/05/26 17:21:47 dueffert 00106 * better data types used 00107 * 00108 * Revision 1.3 2004/05/26 17:13:18 juengel 00109 * Added bodyPosture. 00110 * 00111 * Revision 1.2 2004/05/26 15:18:44 juengel 00112 * Added BodyPosture. 00113 * 00114 * Revision 1.1.1.1 2004/05/22 17:21:30 cvsadm 00115 * created new repository GT2004_WM 00116 * 00117 * Revision 1.3 2004/03/08 02:11:52 roefer 00118 * Interfaces should be const 00119 * 00120 * Revision 1.2 2004/01/12 12:23:51 juengel 00121 * SensorDataProcessor derives from RobotConfiguration now. 00122 * 00123 * Revision 1.1 2003/10/06 14:10:14 cvsadm 00124 * Created GT2004 (M.J.) 00125 * 00126 * Revision 1.2 2003/09/26 15:27:49 juengel 00127 * Renamed DataTypes to representations. 00128 * 00129 * Revision 1.1.1.1 2003/07/02 09:40:24 cvsadm 00130 * created new repository for the competitions in Padova from the 00131 * tamara CVS (Tuesday 2:00 pm) 00132 * 00133 * removed unused solutions 00134 * 00135 * Revision 1.7 2003/05/02 18:26:18 risler 00136 * SensorDataBuffer added 00137 * replaced SensorData with SensorDataBuffer 00138 * full SensorData resolution now accessible 00139 * 00140 * Revision 1.6 2002/10/10 13:09:49 loetzsch 00141 * First experiments with the PSD Sensor 00142 * - SensorDataProcessor now calculates PSDPercept 00143 * - Added the PerceptBehaviorControl solution PSDTest 00144 * - Added the RadarViewer3D to RobotControl, which can display the Points3D structure 00145 * 00146 * Revision 1.5 2002/09/17 23:55:22 loetzsch 00147 * - unraveled several datatypes 00148 * - changed the WATCH macro 00149 * - completed the process restructuring 00150 * 00151 * Revision 1.4 2002/09/12 12:24:09 juengel 00152 * continued change of module/solution mechanisms 00153 * 00154 * Revision 1.3 2002/09/10 21:07:30 loetzsch 00155 * continued change of module/solution mechanisms 00156 * 00157 * Revision 1.2 2002/09/10 17:53:40 loetzsch 00158 * First draft of new Module/Solution Mechanisms 00159 * 00160 * Revision 1.1 2002/09/10 15:36:16 cvsadm 00161 * Created new project GT2003 (M.L.) 00162 * - Cleaned up the /Src/DataTypes directory 00163 * - Removed challenge related source code 00164 * - Removed processing of incoming audio data 00165 * - Renamed AcousticMessage to SoundRequest 00166 * 00167 * Revision 1.2 2002/08/30 14:34:37 dueffert 00168 * removed unused includes 00169 * 00170 * Revision 1.1.1.1 2002/05/10 12:40:15 cvsadm 00171 * Moved GT2002 Project from ute to tamara. 00172 * 00173 * Revision 1.9 2002/04/02 13:10:20 dueffert 00174 * big change: odometryData and cameraMatrix in image now, old logfiles may be obsolete 00175 * 00176 * Revision 1.8 2002/03/24 20:17:49 roefer 00177 * Warning on noFrameNumber removed 00178 * 00179 * Revision 1.7 2002/03/24 18:15:00 loetzsch 00180 * continued change to blocking sensor data receivers 00181 * 00182 * Revision 1.6 2002/03/24 14:19:46 roefer 00183 * Input now waits for SensorData 00184 * 00185 * Revision 1.5 2002/01/20 23:35:06 loetzsch 00186 * Added parameter imageFrameNumber to execute(...) 00187 * 00188 * Revision 1.4 2001/12/21 14:09:39 roefer 00189 * Added several destructors 00190 * 00191 * Revision 1.3 2001/12/10 17:47:07 risler 00192 * change log added 00193 * 00194 */