00001
00002
00003 #ifndef _REC_ROBOTINO_COM_OMNIRIVE_H_
00004 #define _REC_ROBOTINO_COM_OMNIRIVE_H_
00005
00006 #include "rec/robotino/com/Actor.h"
00007
00008 namespace rec
00009 {
00010 namespace robotino
00011 {
00012 namespace com
00013 {
00014 class OmniDriveImpl;
00015
00024 class
00025 #ifdef WIN32
00026 # ifdef rec_robotino_com_EXPORTS
00027 __declspec(dllexport)
00028 # endif
00029 # ifdef rec_robotino_com2_EXPORTS
00030 __declspec(dllexport)
00031 # endif
00032 # ifdef rec_robotino_com3_EXPORTS
00033 __declspec(dllexport)
00034 # endif
00035 #else
00036 # ifndef SWIG
00037 __attribute__ ((visibility ("default")))
00038 # endif
00039 #endif
00040 OmniDrive : public Actor
00041 {
00042 public:
00043 OmniDrive();
00044
00045 virtual ~OmniDrive();
00046
00052 void setVelocity( float vx, float vy, float omega );
00053
00065 void project( float* m1, float* m2, float* m3, float vx, float vy, float omega ) const;
00066
00078 void unproject( float* vx, float* vy, float* omega, float m1, float m2, float m3 ) const;
00079
00090 void setDriveLayout( double rb = 125.0f , double rw = 40.0, double fctrl = 900.0, double gear = 16, double mer = 2000 );
00091
00102 void getDriveLayout( double* rb, double* rw, double* fctrl, double* gear, double* mer );
00103
00104 private:
00105 void updateMotorSpeeds();
00106
00107 OmniDriveImpl* _impl;
00108 };
00109 }
00110 }
00111 }
00112 #endif