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