00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef SICKLMS200_HH
00028 #define SICKLMS200_HH
00029
00030 #include "Body.hh"
00031 #include "Model.hh"
00032
00033
00034 class RayProximity;
00035
00037 class SickLMS200 : public Model
00038 {
00040 public: SickLMS200( World *world );
00041
00043 public: virtual ~SickLMS200();
00044
00046 public: virtual int Load( WorldFile *file, WorldFileNode *node );
00047
00049 public: virtual int Init( WorldFile *file, WorldFileNode *node );
00050
00052 public: virtual int Fini();
00053
00055 public: virtual void Update( double step );
00056
00058 private: int OdeLoad( WorldFile *file, WorldFileNode *node );
00059
00061 private: int RayLoad( WorldFile *file, WorldFileNode *node );
00062
00064 private: void PutLaserData();
00065
00067 private: void PutFiducialData();
00068
00069
00070 private: int RayFini();
00071
00072
00073 private: int IfaceInit();
00074
00075
00076 private: int IfaceFini();
00077
00078
00079 private: void IfacePutData();
00080
00081
00082 private: bool IFaceGetCmd();
00083
00084
00085 private: Body *body;
00086
00087
00088 private: RayProximity *sensor;
00089
00090
00091 private: gz_laser_t *laser_iface;
00092 private: gz_fiducial_t *fiducial_iface;
00093
00094
00095 private: int rayCount;
00096 private: int rangeCount;
00097 private: double laserMinRange, laserMaxRange;
00098 private: double laserMinAngle, laserMaxAngle;
00099 private: double laserPeriod;
00100 private: double laserTime;
00101 };
00102
00103
00104 #endif