$search
00001 /* -------------------------------------------------------------------------------- 00002 # 00003 # libKinematics.h 00004 # Project : Kinematics 00005 # author : jhaller 00006 # 24.04.2008 00007 # 00008 # --------------------------------------------------------------------------------*/ 00009 00010 /* 00011 * Kinematics library. 00012 * 00013 * General usage: kin_setType or (kin_setMDH and than kin_setImmob if needed, 00014 * kin_setEPC, kin_setEncOff, kin_setRotDir, kin_setAngOff and kin_setAngRan), 00015 * then kin_init, then use the conversion and kinematics functions. 00016 */ 00017 00018 #ifndef WIN32 00019 #define _declspec(dllexport) 00020 #endif // ifndef WIN32 00021 00022 extern "C"{ 00023 00024 00026 00028 const int MaxDof = 10; 00029 00030 // This structure holds an int array including its length. 00031 typedef struct IntVector 00032 { 00033 int length; 00034 int data[MaxDof]; 00035 } IntVector; 00036 // This structure holds a float array including its length. 00037 typedef struct FloatVector 00038 { 00039 int length; 00040 float data[MaxDof]; 00041 } FloatVector; 00042 00044 00060 _declspec(dllexport) int kin_setType(int type); 00061 00078 _declspec(dllexport) int kin_setMDH(FloatVector* theta, FloatVector* d, 00079 FloatVector* a, FloatVector* alpha, int typeNr = -1); 00080 00091 _declspec(dllexport) int kin_setLinkLen(FloatVector* links); 00092 00102 _declspec(dllexport) int kin_setImmob(int immobile); 00103 00112 _declspec(dllexport) int kin_setEPC(IntVector* epc); 00113 00122 _declspec(dllexport) int kin_setEncOff(IntVector* encOffset); 00123 00134 _declspec(dllexport) int kin_setRotDir(IntVector* rotDir); 00135 00144 _declspec(dllexport) int kin_setAngOff(FloatVector* angleOffset); 00145 00155 _declspec(dllexport) int kin_setAngRan(FloatVector* angleRange); 00156 00165 _declspec(dllexport) int kin_setTcpOff(FloatVector* tcpOffset); 00166 00168 00176 _declspec(dllexport) int kin_getType(); 00177 00184 _declspec(dllexport) int kin_getMaxDOF(); 00185 00192 _declspec(dllexport) int kin_getDOF(); 00193 00200 _declspec(dllexport) int kin_getDOM(); 00201 00211 _declspec(dllexport) int kin_getMDH(FloatVector* theta, FloatVector* d, 00212 FloatVector* a, FloatVector* alpha); 00213 00218 _declspec(dllexport) int kin_getImmob(); 00219 00225 _declspec(dllexport) int kin_getEPC(IntVector* epc); 00226 00232 _declspec(dllexport) int kin_getEncOff(IntVector* encOffset); 00233 00239 _declspec(dllexport) int kin_getRotDir(IntVector* rotDir); 00240 00247 _declspec(dllexport) int kin_getAngOff(FloatVector* angleOffset); 00248 00255 _declspec(dllexport) int kin_getAngRan(FloatVector* angleRange); 00256 00262 _declspec(dllexport) int kin_getTcpOff(FloatVector* tcpOffset); 00263 00269 _declspec(dllexport) int kin_getVersion(IntVector* version); 00270 00272 00281 _declspec(dllexport) int kin_init(); 00282 00284 00291 _declspec(dllexport) int kin_clean(); 00292 00294 00303 _declspec(dllexport) int kin_K4D2mDHAng(FloatVector* angleK4D, FloatVector* angleMDH); 00304 00313 _declspec(dllexport) int kin_mDH2K4DAng(FloatVector* angleMDH, FloatVector* angleK4D); 00314 00323 _declspec(dllexport) int kin_enc2rad(IntVector* enc, FloatVector* angle); 00324 00333 _declspec(dllexport) int kin_rad2enc(FloatVector* angle, IntVector* enc); 00334 00343 _declspec(dllexport) int kin_DK(FloatVector* angle, FloatVector* pose); 00344 00355 _declspec(dllexport) int kin_IK(FloatVector* pose, FloatVector* prev, 00356 FloatVector* angle, int maxBisection = 0); 00357 00358 } // extern c 00359 00360 00361