00001 #ifndef HDSPIDAR3QUAD_H
00002 #define HDSPIDAR3QUAD_H
00003
00004 #include "HIHapticDevice.h"
00005 #include "HISpidarMotor.h"
00006 #include "Device/DVDeviceManager.h"
00007 #include <vector>
00008
00009 namespace Spr {
00010 using namespace Spr;
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 class SPR_DLL HISpidar3: public HIForceDevice3D{
00046 public:
00047
00048 typedef HIForceDevice3D superclass;
00049 protected:
00050 Vec3f pos;
00051 Vec3f force;
00052
00053 HISpidarMotor motor[3];
00054
00055 bool bLeft;
00056
00057 public:
00058
00059 HISpidar3();
00060
00061 HIOBJECTDEF(HISpidar3);
00062
00063 virtual ~HISpidar3();
00064
00065 virtual bool Init(DVDeviceManager& dev);
00066
00067 virtual bool Init(DVDeviceManager& dev, Vec3f* motorPos, float vpn, float lpp, float minF, float maxF, bool bLeft);
00068
00069 virtual bool BeforeCalib(){ SetMinForce(); return true; }
00070
00071 virtual bool Calib();
00072
00073 virtual bool EasyCalib();
00074
00075 void SetMinForce();
00076
00077 virtual void SetForce(const Vec3f& f){ SetForce(f, 0.1f); }
00078 virtual void SetForce(const Vec3f& f, float gamma);
00079
00080 virtual Vec3f GetPos(){ return pos; }
00081
00082 virtual Vec3f GetForce(){ return force; }
00083
00084 virtual void Update(float dt);
00085
00086 Vec3f CalcForce(Vec3f *f);
00087
00088 HISpidarMotor* Motor(){
00089 return motor;
00090 }
00091
00092 };
00093
00094
00095 }
00096 #endif
00097