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 SHRIMP_HH
00028 #define SHRIMP_HH
00029
00030 #include "Model.hh"
00031
00032
00033 class Body;
00034 class HingeJoint;
00035 class ShrimpSideFork;
00036
00037 class Shrimp : public Model
00038 {
00039
00040 public: Shrimp( World *world );
00041 public: virtual ~Shrimp();
00042
00043
00044 public: virtual int Load( WorldFile *file, WorldFileNode *node );
00045
00046
00047 public: virtual int Init( WorldFile *file, WorldFileNode *node );
00048
00049
00050 public: virtual int Fini();
00051
00052
00053 public: virtual void Update( double step );
00054
00055
00056 private: void UpdateOdometry( double step );
00057
00058
00059 private: int OdeLoad( WorldFile *file, WorldFileNode *node );
00060
00061
00062 private: void PositionGetCmd();
00063
00064
00065 private: void PositionPutData();
00066
00067
00068 private: double wheelSep, wheelDiam;
00069
00070
00071 private: double updatePeriod, updateTime;
00072
00073
00074 private: Body *chassis;
00075 private: Body *wheels[4];
00076 private: HingeJoint *wheelJoints[4];
00077
00078
00079 private: gz_position_t *iface;
00080
00081
00082 private: double wheelSpeed[2];
00083
00084
00085 private: double odomPose[3];
00086
00087 private: Body *bovenBalk;
00088 private: Body *backWheel;
00089 private: ShrimpSideFork *leftFork, *rightFork;
00090
00091 private: Body *forkPart1;
00092 private: Body *forkPart1b;
00093 private: Body *forkPart2;
00094 private: Body *frontwheel;
00095 private: HingeJoint *forkJoint;
00096 private: HingeJoint *forkJointb;
00097 private: HingeJoint *forkforkJoint;
00098 private: HingeJoint *forkforkbJoint;
00099 private: HingeJoint *frontwheelJoint;
00100 };
00101
00102 #endif