Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Representations/Perception/SensorData.h

Go to the documentation of this file.
00001 /**
00002  * @file SensorData.h
00003  * 
00004  * Declaration of class SensorData
00005  */ 
00006 
00007 #ifndef __SensorData_h_
00008 #define __SensorData_h_
00009 
00010 #include "Tools/Streams/InOut.h"
00011 
00012 /**
00013 * A class representing a sensor data vector. 
00014 */
00015 class SensorData
00016 {
00017 public:
00018   /**
00019   * constructs a SensorData.
00020   */ 
00021   SensorData();
00022 
00023   /**
00024   * deconstructs a SensorData.
00025   */
00026   ~SensorData();
00027 
00028   enum sensors 
00029   {
00030     // head: ERS-7
00031     neckTilt,
00032     headPan,
00033     headTilt,
00034 
00035     // ERS-210
00036     headBack, 
00037     headFront,
00038     psd, 
00039     mouth,
00040     chin,
00041     legFL1, legFL2, legFL3, pawFL,
00042     legHL1, legHL2, legHL3, pawHL,
00043     legFR1, legFR2, legFR3, pawFR,
00044     legHR1, legHR2, legHR3, pawHR,
00045     tailPan, tailTilt,
00046     thermo,
00047     back,
00048     accelerationX, accelerationY, accelerationZ,
00049     numOfSensor_ERS210,
00050     
00051     // ERS-7
00052     head = numOfSensor_ERS210,
00053     headPsdFar,
00054     bodyPsd,
00055     numOfSensor_ERS7,
00056 
00057     // synonyms
00058     headTilt210 = neckTilt,
00059     headPan210 = headPan,
00060     headRoll210 = headTilt,
00061     headPsdNear = psd,
00062     backF = headFront, 
00063     backM = back,
00064     backR = headBack,
00065     wlan = thermo
00066   };
00067 
00068   /** The sensor data value */
00069   long data[numOfSensor_ERS7];
00070 
00071   /** Sensor data reference values.
00072    * Only valid for joint sensors. */
00073   long refValue[numOfSensor_ERS7];
00074 
00075   /** The frame number of that sensor data. */
00076   unsigned long frameNumber; 
00077 
00078   void init();
00079 
00080   /** returns the name of a sensor */
00081   static const char* getSensorName(sensors sensor)
00082   {
00083     switch (sensor)
00084     {
00085     case neckTilt: return "neckTilt (headTilt210)";
00086     case headTilt: return "headTilt (headRoll210)";
00087     case headBack: return "head/backRear";
00088     case headFront: return "head/backFront";
00089     case psd: return "headPsd(Near)";
00090     case thermo: return "thermo/wlan";
00091     case back: return "back(Middle)";
00092     default: return getSensorNameERS7(sensor);
00093     }
00094   }
00095 
00096   /** returns the name of a sensor of the ERS-210 */
00097   static const char* getSensorNameERS210(sensors sensor)
00098   {
00099     switch (sensor)
00100     {
00101     case headTilt210: return "headTilt210";
00102     case headPan210: return "headPan210";
00103     case headRoll210: return "headRoll210";
00104     case headBack: return "headBack";
00105     case headFront: return "headFront";
00106     case psd: return "psd";
00107     case mouth: return "mouth";
00108     case chin: return "chin";
00109     case legFL1: return "legFL1";
00110     case legFL2: return "legFL2";
00111     case legFL3: return "legFL3";
00112     case pawFL: return "pawFL";
00113     case legHL1: return "legHL1";
00114     case legHL2: return "legHL2";
00115     case legHL3: return "legHL3";
00116     case pawHL: return "pawHL";
00117     case legFR1: return "legFR1";
00118     case legFR2: return "legFR2";
00119     case legFR3: return "legFR3";
00120     case pawFR: return "pawFR";
00121     case legHR1: return "legHR1";
00122     case legHR2: return "legHR2";
00123     case legHR3: return "legHR3";
00124     case pawHR: return "pawHR";
00125     case tailPan: return "tailPan";
00126     case tailTilt: return "tailTilt";
00127     case thermo: return "thermo";
00128     case back: return "back";
00129     case accelerationX: return "accelerationX";
00130     case accelerationY: return "accelerationY";
00131     case accelerationZ: return "accelerationZ";
00132     default: return "unknown sensor";
00133     }
00134   }
00135 
00136   /** returns the name of a sensor of the ERS-7 */
00137   static const char* getSensorNameERS7(sensors sensor)
00138   {
00139     switch (sensor)
00140     {
00141     case headPan: return "headPan";
00142     case headTilt: return "headTilt";
00143     case neckTilt: return "neckTilt";
00144     case backR: return "backRear";
00145     case backF: return "backFront";
00146     case headPsdNear: return "headPsdNear";
00147     case wlan: return "wlan";
00148     case backM: return "backMiddle";
00149     case head: return "head";
00150     case headPsdFar: return "headPsdFar";
00151     case bodyPsd: return "bodyPsd";
00152     default: return getSensorNameERS210(sensor);
00153     }
00154   }
00155 };
00156 
00157 /**
00158  * Streaming operator that writes a SensorData to a stream.
00159  * @param stream The stream to write on.
00160  * @param sensorData The SensorData object.
00161  * @return The stream.
00162  */ 
00163 Out& operator<<(Out& stream, const SensorData& sensorData);
00164 
00165 /**
00166  * Streaming operator that reads a SensorData from a stream.
00167  * @param stream The stream to read from.
00168  * @param sensorData The SensorData object.
00169  * @return The stream.
00170  */ 
00171 In& operator>>(In& stream, SensorData& sensorData);
00172 
00173 #endif //__SensorData_h_
00174 
00175 /*
00176  * Change log :
00177  * 
00178  * $Log: SensorData.h,v $
00179  * Revision 1.2  2004/05/27 17:13:38  jhoffman
00180  * - renaming: tilt1 -> neckTilt,  pan -> headPan,  tilt2 -> headTilt
00181  * - clipping included for setJoints
00182  * - removed some microrad/rad-bugs
00183  * - bodyPosture constructor and "=" operator fixed
00184  *
00185  * Revision 1.1.1.1  2004/05/22 17:25:59  cvsadm
00186  * created new repository GT2004_WM
00187  *
00188  * Revision 1.3  2004/04/12 18:00:45  roefer
00189  * SensorView added
00190  *
00191  * Revision 1.2  2003/12/31 20:16:14  roefer
00192  * SensorData for ERS-7
00193  *
00194  * Revision 1.1  2003/10/07 10:09:36  cvsadm
00195  * Created GT2004 (M.J.)
00196  *
00197  * Revision 1.1.1.1  2003/07/02 09:40:22  cvsadm
00198  * created new repository for the competitions in Padova from the 
00199  * tamara CVS (Tuesday 2:00 pm)
00200  *
00201  * removed unused solutions
00202  *
00203  * Revision 1.4  2003/05/05 11:59:57  dueffert
00204  * comment corrected
00205  *
00206  * Revision 1.3  2003/05/03 15:26:29  risler
00207  * added refValue to SensorData
00208  *
00209  * Revision 1.2  2003/05/02 18:26:18  risler
00210  * SensorDataBuffer added
00211  * replaced SensorData with SensorDataBuffer
00212  * full SensorData resolution now accessible
00213  *
00214  * Revision 1.1  2002/09/10 15:26:40  cvsadm
00215  * Created new project GT2003 (M.L.)
00216  * - Cleaned up the /Src/DataTypes directory
00217  * - Removed Challenge Code
00218  * - Removed processing of incoming audio data
00219  * - Renamed AcousticMessage to SoundRequest
00220  *
00221  * Revision 1.2  2002/07/23 13:32:57  loetzsch
00222  * new streaming classes
00223  *
00224  * removed many #include statements
00225  *
00226  * Revision 1.1.1.1  2002/05/10 12:40:13  cvsadm
00227  * Moved GT2002 Project from ute to tamara.
00228  *
00229  * Revision 1.9  2002/02/01 15:02:41  risler
00230  * Acceleration sensor adjusted to coordinate system
00231  *
00232  * Revision 1.8  2002/01/25 16:52:40  loetzsch
00233  * function for enum names added
00234  *
00235  * Revision 1.7  2001/12/28 09:00:02  roefer
00236  * Streaming operator and frameNumber inserted
00237  *
00238  * Revision 1.6  2001/12/23 23:38:04  petters
00239  * method init added
00240  *
00241  * Revision 1.5  2001/12/12 20:21:12  petters
00242  * Streaming for SensorData / Image implemented; Conflict solved
00243  *
00244  * Revision 1.4  2001/12/10 17:47:06  risler
00245  * change log added
00246  *
00247  */

Generated on Thu Sep 23 19:57:36 2004 for GT2004 by doxygen 1.3.6