00001 /** 00002 * @file Modules/SelfLocator/OdometrySelfLocator.cpp 00003 * 00004 * This file contains a class for self-localization based on odometry only. 00005 * @author <a href="mailto:juengel@informatik.hu-berlin.de">Matthias Juengel</a> 00006 */ 00007 00008 #include "OdometrySelfLocator.h" 00009 #include "Tools/FieldDimensions.h" 00010 #include "Platform/SystemCall.h" 00011 00012 00013 OdometrySelfLocator::OdometrySelfLocator(const SelfLocatorInterfaces& interfaces) 00014 : SelfLocator(interfaces) 00015 { 00016 referencePose.translation.x = 0; 00017 referencePose.translation.y = 0; 00018 referencePose.rotation = 0; 00019 00020 timeOfLastExecute = 0; 00021 } 00022 00023 void OdometrySelfLocator::execute() 00024 { 00025 robotPose.setFrameNumber(psdPercept.percepts[psdPercept.numOfPercepts-1].frameNumber); 00026 00027 unsigned long currentTime = SystemCall::getCurrentSystemTime(); 00028 if( (currentTime - timeOfLastExecute) > 2000 ) 00029 { 00030 referencePose = robotPose; 00031 referenceOdometry = odometryData; 00032 } 00033 else 00034 { 00035 Pose2D odometry = odometryData - referenceOdometry; 00036 robotPose = referencePose + odometry; 00037 } 00038 timeOfLastExecute = currentTime; 00039 00040 selfLocatorSamples.link(NULL, 0,0); 00041 } 00042 00043 /* 00044 * Change log : 00045 * 00046 * $Log: OdometrySelfLocator.cpp,v $ 00047 * Revision 1.2 2004/05/24 16:27:11 goehring 00048 * frameNumber bug removed 00049 * 00050 * Revision 1.1.1.1 2004/05/22 17:20:48 cvsadm 00051 * created new repository GT2004_WM 00052 * 00053 * Revision 1.4 2004/03/08 02:11:48 roefer 00054 * Interfaces should be const 00055 * 00056 * Revision 1.3 2003/11/14 19:02:26 goehring 00057 * frameNumber added 00058 * 00059 * Revision 1.2 2003/11/13 16:47:38 goehring 00060 * frameNumber added 00061 * 00062 * Revision 1.1 2003/10/06 14:10:15 cvsadm 00063 * Created GT2004 (M.J.) 00064 * 00065 * Revision 1.1.1.1 2003/07/02 09:40:24 cvsadm 00066 * created new repository for the competitions in Padova from the 00067 * tamara CVS (Tuesday 2:00 pm) 00068 * 00069 * removed unused solutions 00070 * 00071 * Revision 1.4 2003/05/21 13:36:20 brunn 00072 * set selfLocatorSamples to NULL as these locators do not have any samples 00073 * 00074 * Revision 1.3 2003/01/22 14:59:29 dueffert 00075 * doxygen docu corrected 00076 * 00077 * Revision 1.2 2003/01/12 15:46:57 juengel 00078 * Comments corrected. 00079 * 00080 * Revision 1.1 2003/01/12 15:24:47 juengel 00081 * Added OdometrySelfLocator 00082 * 00083 */