00001 /** 00002 * @file SelfLocator.h 00003 * 00004 * This file contains a generic class for Self-Localization. 00005 */ 00006 00007 #ifndef __SelfLocator_h_ 00008 #define __SelfLocator_h_ 00009 00010 #include "Tools/Module/Module.h" 00011 00012 #include "Representations/Perception/LandmarksPercept.h" 00013 #include "Representations/Perception/LinesPercept.h" 00014 #include "Representations/Perception/EdgesPercept.h" 00015 #include "Representations/Perception/SpecialPercept.h" 00016 #include "Representations/Perception/PSDPercept.h" 00017 #include "Representations/Cognition/RobotPose.h" 00018 #include "Representations/Cognition/SampleSet.h" 00019 #include "Representations/Motion/OdometryData.h" 00020 #include "Representations/Perception/CameraMatrix.h" 00021 #include "Representations/Cognition/LandmarksState.h" 00022 00023 /** 00024 * @class SelfLocatorInterfaces 00025 * 00026 * The interfaces of the SelfLocator module. 00027 */ 00028 class SelfLocatorInterfaces 00029 { 00030 public: 00031 /** Constructor.*/ 00032 SelfLocatorInterfaces( 00033 const LandmarksPercept& landmarksPercept, 00034 const LinesPercept& linesPercept, 00035 const EdgesPercept& edgesPercept, 00036 const SpecialPercept& specialPercept, 00037 const PSDPercept& psdPercept, 00038 const OdometryData& odometryData, 00039 const CameraMatrix& cameraMatrix, 00040 RobotPose& robotPose, 00041 SampleSetProxy<PoseSample>& selfLocatorSamples, 00042 LandmarksState& landmarksState) 00043 : landmarksPercept(landmarksPercept), 00044 linesPercept(linesPercept), 00045 edgesPercept(edgesPercept), 00046 specialPercept(specialPercept), 00047 psdPercept(psdPercept), 00048 odometryData(odometryData), 00049 cameraMatrix(cameraMatrix), 00050 robotPose(robotPose), 00051 selfLocatorSamples(selfLocatorSamples), 00052 landmarksState(landmarksState) 00053 {} 00054 00055 protected: 00056 /** The landmarks detected in the last image */ 00057 const LandmarksPercept& landmarksPercept; 00058 00059 /** The lines detected in the last image */ 00060 const LinesPercept& linesPercept; 00061 00062 /** The edges detected in the last image */ 00063 const EdgesPercept& edgesPercept; 00064 00065 /** The special percepts detected in the last image */ 00066 const SpecialPercept& specialPercept; 00067 00068 /** The psd percepts detected with the PSD sensor */ 00069 const PSDPercept& psdPercept; 00070 00071 /** The odometry that was estimated by the motion modules */ 00072 const OdometryData& odometryData; 00073 00074 /** The camera matrix describing the camera's position */ 00075 const CameraMatrix& cameraMatrix; 00076 00077 /** The robots position to be generated */ 00078 RobotPose& robotPose; 00079 00080 /** The sample set proxy linked to the sample set of the active locator */ 00081 SampleSetProxy<PoseSample>& selfLocatorSamples; 00082 00083 /** the currently seen landmarks */ 00084 LandmarksState& landmarksState; 00085 }; 00086 00087 /** 00088 * @class SelfLocator 00089 * 00090 * The Base class for self locators 00091 */ 00092 class SelfLocator : public Module, public SelfLocatorInterfaces 00093 { 00094 public: 00095 /* 00096 * Constructor. 00097 * @param interfaces The paramters of the SelfLocator module. 00098 */ 00099 SelfLocator(const SelfLocatorInterfaces& interfaces) 00100 : SelfLocatorInterfaces(interfaces) 00101 {} 00102 00103 /** Destructor */ 00104 virtual ~SelfLocator() {} 00105 }; 00106 00107 #endif //__SelfLocator_h_ 00108 00109 /* 00110 * Change log : 00111 * 00112 * $Log: SelfLocator.h,v $ 00113 * Revision 1.2 2004/06/15 10:58:27 thomas 00114 * added edge-specialist, edges-percept, debug-drawings etc. (not yet called from image-processor) 00115 * 00116 * Revision 1.1.1.1 2004/05/22 17:20:48 cvsadm 00117 * created new repository GT2004_WM 00118 * 00119 * Revision 1.4 2004/04/07 14:42:56 risler 00120 * moved LandsmarksState to Cognition directory, generated by SelfLocator 00121 * 00122 * Revision 1.3 2004/03/08 02:11:48 roefer 00123 * Interfaces should be const 00124 * 00125 * Revision 1.2 2003/11/10 13:34:07 dueffert 00126 * checkerboard localization improved 00127 * 00128 * Revision 1.3 2003/09/26 15:27:49 juengel 00129 * Renamed DataTypes to representations. 00130 * 00131 * Revision 1.2 2003/07/30 14:47:46 dueffert 00132 * SpecialPerceptSelfLocator for Checkboard added 00133 * 00134 * Revision 1.1.1.1 2003/07/02 09:40:24 cvsadm 00135 * created new repository for the competitions in Padova from the 00136 * tamara CVS (Tuesday 2:00 pm) 00137 * 00138 * removed unused solutions 00139 * 00140 * Revision 1.7 2003/05/12 14:08:40 brunn 00141 * renamed selfLocationSampleSetProxy to selfLocatorSamples 00142 * "Ha, glad am I that no one knew that Rumpelstiltskin I am styled" 00143 * 00144 * Revision 1.6 2003/05/12 12:28:11 brunn 00145 * renamed sampleSetProxy to selfLocationSampleSetProxy 00146 * added selfLocationSampleSetProxy to BehaviourControl-Interfaces 00147 * 00148 * Revision 1.5 2003/05/08 23:52:24 roefer 00149 * SampleSet and SampleSetProxy added 00150 * 00151 * Revision 1.4 2003/01/15 13:46:34 roefer 00152 * SelfLocator has access to CameraMatrix now 00153 * 00154 * Revision 1.3 2002/09/17 23:55:22 loetzsch 00155 * - unraveled several datatypes 00156 * - changed the WATCH macro 00157 * - completed the process restructuring 00158 * 00159 * Revision 1.2 2002/09/12 12:24:09 juengel 00160 * continued change of module/solution mechanisms 00161 * 00162 * Revision 1.1 2002/09/10 15:36:16 cvsadm 00163 * Created new project GT2003 (M.L.) 00164 * - Cleaned up the /Src/DataTypes directory 00165 * - Removed challenge related source code 00166 * - Removed processing of incoming audio data 00167 * - Renamed AcousticMessage to SoundRequest 00168 * 00169 * Revision 1.3 2002/08/30 14:34:06 dueffert 00170 * removed unused includes 00171 * 00172 * Revision 1.2 2002/08/22 14:41:03 risler 00173 * added some doxygen comments 00174 * 00175 * Revision 1.1.1.1 2002/05/10 12:40:15 cvsadm 00176 * Moved GT2002 Project from ute to tamara. 00177 * 00178 * Revision 1.6 2002/04/02 13:10:20 dueffert 00179 * big change: odometryData and cameraMatrix in image now, old logfiles may be obsolete 00180 * 00181 * Revision 1.5 2002/02/06 10:30:11 AndySHB 00182 * MonteCarloLocalization First Draft 00183 * 00184 * Revision 1.4 2002/02/05 04:08:28 loetzsch 00185 * changed the execution of the SelfLocator. Parameter 00186 * const PerceptCollection& perceptCollection became 00187 * const LandmarksPercept& landmarksPercept, const LinesPercept& linesPercept. 00188 * 00189 * Revision 1.3 2001/12/21 14:09:39 roefer 00190 * Added several destructors 00191 * 00192 * Revision 1.2 2001/12/10 17:47:07 risler 00193 * change log added 00194 * 00195 */