00001 #ifndef FRIDATA_HH 00002 #define FRIDATA_HH 00003 00004 class RobotStatus 00005 { 00006 public: 00007 RobotStatus(); 00008 00009 //TODO: add uptime information 00010 00011 bool connected; 00012 00013 // connection statistics 00014 float time; 00015 float answerRate; 00016 float latency; 00017 float jitter; 00018 float missRate; 00019 int missCounter; 00020 00021 // interface info 00022 int state; 00023 int quality; 00024 float msrSampleTime; 00025 float cmdSampleTime; 00026 float safety; 00027 00028 int calcTimeMean; 00029 int calcTimeMax; 00030 00031 // general robot info 00032 int power; 00033 int controlMode; 00034 int error; 00035 int warning; 00036 float temperature[7]; 00037 00038 // driver stuff 00039 bool runstop; 00040 }; 00041 00043 class RobotData 00044 { 00045 public: 00046 RobotData(); 00047 int seq; 00048 float commanded[7]; 00049 float position[7]; 00050 float torque[7]; 00051 float torque_raw[7]; 00052 float torqueTCP[6]; 00053 }; 00054 00055 00057 class CartesianImpedance 00058 { 00059 public: 00060 static const float DEFAULT_TRANS_STIFFNESS=50; 00061 static const float DEFAULT_ROT_STIFFNESS=50; 00062 static const float DEFAULT_DAMPING=0.7; 00063 CartesianImpedance(); 00064 float K[6*6]; 00065 float D[6*6]; 00066 float ft[6]; 00067 float K_null; 00068 }; 00069 00070 00072 class RobotCommand 00073 { 00074 static const float DEFAULT_STIFFNESS=40; 00075 static const float DEFAULT_DAMPING=0.7; 00076 public: 00077 RobotCommand(); 00078 void incrementPosition(float* newPos, float* currentPos, float rate); 00079 float command[7]; 00080 float stiffness[7]; 00081 float damping[7]; 00082 float addTorque[7]; 00083 00084 bool useCartesianImpedance; 00085 CartesianImpedance cartImpedance; 00086 }; 00087 00088 #endif // FRIDATA_HH 00089