00001 00060 #ifndef __DATASTRUCTS_MANIPULATOR_H_ 00061 #define __DATASTRUCTS_MANIPULATOR_H_ 00062 00063 #include <schunk_powercube_chain/Joint.h> 00064 #include <iostream> 00065 00066 // never in headerfiles! 00067 // using namespace std; 00068 00069 #ifdef SWIG 00070 %module PowerCubeCtrl 00071 %{ 00072 #include <schunk_powercube_chain/datastructsManipulator.h> 00073 %} 00074 #endif 00075 00076 00082 struct Point3D { 00083 double x; 00084 double y; 00085 double z; 00086 }; 00087 00088 struct AbsPos { 00089 AbsPos() : Eulerx(0.0), Eulery(0.0), Eulerz(0.0), Transx(0.0), Transy(0.0), Transz(0.0) {;} 00090 // Bitte beachten: Es werden von nun an XYZ-fixed Winkel benutzt 00091 // (Siehe Craig, S.45ff) 00092 // welche gleichbedeutend mit den Euler-ZYX Winkeln sind. 00093 // Die Bezeichnungen Eulerx, Eulery, Eulerz werden daher beibehalten. 00094 double Eulerx; 00095 double Eulery; 00096 double Eulerz; 00097 double Transx; 00098 double Transy; 00099 double Transz; 00100 void set(double* p); 00101 void setTransX(double transx) {Transx=transx;} 00102 void setTransY(double transy) {Transy=transy;} 00103 void setTransZ(double transz) {Transz=transz;} 00104 void setEulerX(double eulerx) {Eulerx=eulerx;} 00105 void setEulerY(double eulery) {Eulery=eulery;} 00106 void setEulerZ(double eulerz) {Eulerz=eulerz;} 00107 double getTransX() {return Transx;} 00108 double getTransY() {return Transy;} 00109 double getTransZ() {return Transz;} 00110 double getEulerX() {return Eulerx;} 00111 double getEulerY() {return Eulery;} 00112 double getEulerZ() {return Eulerz;} 00113 void angleScale(double s); 00114 void toDeg() { angleScale(57.295779524); } 00115 void toRad() { angleScale(0.017453292); } 00116 AbsPos operator*(double s) const; 00117 AbsPos operator+(const AbsPos& abs2) const; 00118 AbsPos operator-(const AbsPos& abs2) const; 00119 double getPosLength() const { return sqrt(Transx*Transx + Transy*Transy + Transz*Transz); } 00124 double distMeasure(AbsPos otherPos) const; 00125 }; 00126 00127 std::ostream& operator<< (std::ostream& os, const AbsPos& a); 00128 00129 00130 inline AbsPos operator* (double s, const AbsPos& abs) { return abs * s; } 00131 00132 00133 00134 struct DH { 00135 Jointd a; 00136 Jointd d; 00137 Jointd alpha; 00138 Jointd theta; 00139 }; 00140 00141 struct LimitsTheta { 00142 Jointd max; 00143 Jointd min; 00144 }; 00145 00146 00147 #endif //__DATASTRUCTS_MANIPULATOR_H_ 00148