Fast Research Interface Library  Manual and Documentation
src/FastResearchInterfaceLibrary/GetCompleteRobotStateAndInformation.cpp
Go to the documentation of this file.
00001 //  ---------------------- Doxygen info ----------------------
00051 //  ----------------------------------------------------------
00052 //   For a convenient reading of this file's source code,
00053 //   please use a tab width of four characters.
00054 //  ----------------------------------------------------------
00055 
00056 
00057 #include <FastResearchInterface.h>
00058 #include <string.h>
00059 #include <OSAbstraction.h>
00060 
00061 #define SINGLE_LINE     "-----------------------------------------------------------------------------"
00062 #define DOUBLE_LINE     "============================================================================="
00063 
00064 
00065 #ifndef PI
00066 #define PI  ((float)3.1415926535897932384626433832795)
00067 #endif
00068 
00069 
00070 // ****************************************************************
00071 // GetCompleteRobotStateAndInformation()
00072 //
00073 const char* FastResearchInterface::GetCompleteRobotStateAndInformation(void)
00074 {
00075     bool            BoolArray[FRI_USER_SIZE];
00076 
00077     char            StringPart[512];
00078 
00079     unsigned int    CharCounter         =   0
00080                 ,   i                   =   0;
00081 
00082     int             IntArray[FRI_USER_SIZE];
00083 
00084     float           FloatArray[FRI_USER_SIZE]
00085                 ,   FloatMatrix[LBR_MNJ][FRI_CART_VEC];
00086 
00087     memset((void*)StringPart    , 0x0   ,   512                     * sizeof(char)  );
00088     memset((void*)FloatArray    , 0x0   ,   FRI_USER_SIZE           * sizeof(float) );
00089     memset((void*)IntArray      , 0x0   ,   FRI_USER_SIZE           * sizeof(float) );
00090     memset((void*)BoolArray     , 0x0   ,   FRI_USER_SIZE           * sizeof(bool)  );
00091 
00092     for (i = 0; i < LBR_MNJ; i++)
00093     {
00094         memset((void*)(FloatMatrix[i])  , 0x0   ,   FRI_CART_VEC    * sizeof(float) );
00095     }
00096 
00097     // ---------------------------------------------------------------------------------------------------
00098     sprintf(StringPart, DOUBLE_LINE);
00099     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00100     CharCounter +=  strlen(StringPart) + 1;
00101     // ---------------------------------------------------------------------------------------------------
00102     sprintf(StringPart, "Overview about the KUKA Light-Weight Robot IV and the Fast Research Interface");
00103     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00104     CharCounter +=  strlen(StringPart) + 1;
00105     // ---------------------------------------------------------------------------------------------------
00106     sprintf(StringPart, DOUBLE_LINE);
00107     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00108     CharCounter +=  strlen(StringPart) + 1;
00109     // ---------------------------------------------------------------------------------------------------
00110     sprintf(StringPart, "UDP Communication Data");
00111     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00112     CharCounter +=  strlen(StringPart) + 1;
00113     // ---------------------------------------------------------------------------------------------------
00114     sprintf(StringPart, SINGLE_LINE);
00115     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00116     CharCounter +=  strlen(StringPart) + 1;
00117     // ---------------------------------------------------------------------------------------------------
00118     sprintf(StringPart, "Cycle time: %f seconds", this->GetFRICycleTime());
00119     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00120     CharCounter +=  strlen(StringPart) + 1;
00121     // ---------------------------------------------------------------------------------------------------
00122     switch (this->GetCommunicationTimingQuality())
00123     {
00124     case FRI_QUALITY_UNACCEPTABLE:
00125         sprintf(StringPart, "UDP communication quality: Unacceptable");
00126         break;
00127     case FRI_QUALITY_BAD:
00128         sprintf(StringPart, "UDP communication quality: Bad");
00129         break;
00130     case FRI_QUALITY_OK:
00131         sprintf(StringPart, "UDP communication quality: Ok");
00132         break;
00133     case FRI_QUALITY_PERFECT:
00134         sprintf(StringPart, "UDP communication quality: Perfect");
00135         break;
00136     default:
00137         sprintf(StringPart, "UDP communication quality: UNKNOWN");
00138         break;
00139     }
00140     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00141     CharCounter +=  strlen(StringPart) + 1;
00142     // ---------------------------------------------------------------------------------------------------
00143     sprintf(StringPart, "UDP answer rate: %f percent", 100.0 * this->GetUDPAnswerRate());
00144     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00145     CharCounter +=  strlen(StringPart) + 1;
00146     // ---------------------------------------------------------------------------------------------------
00147     sprintf(StringPart, "UDP latency: %f seconds", this->GetUDPLatencyInSeconds());
00148     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00149     CharCounter +=  strlen(StringPart) + 1;
00150     // ---------------------------------------------------------------------------------------------------
00151     sprintf(StringPart, "UDP jitter: %f seconds", this->GetUDPJitterInSeconds());
00152     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00153     CharCounter +=  strlen(StringPart) + 1;
00154     // ---------------------------------------------------------------------------------------------------
00155     sprintf(StringPart, "UDP package loss rate: %f percent", 100.0 * this->GetUDPPackageLossRate());
00156     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00157     CharCounter +=  strlen(StringPart) + 1;
00158     // ---------------------------------------------------------------------------------------------------
00159     sprintf(StringPart, "Absolute number of missed packages: %d FRI data telegram packages", this->GetNumberOfMissedUDPPackages());
00160     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00161     CharCounter +=  strlen(StringPart) + 1;
00162     // ---------------------------------------------------------------------------------------------------
00163     sprintf(StringPart, "Sequence counter: %d", this->GetValueOfKRCSequenceCounter());
00164     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00165     CharCounter +=  strlen(StringPart) + 1;
00166     // ---------------------------------------------------------------------------------------------------
00167     sprintf(StringPart, SINGLE_LINE);
00168     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00169     CharCounter +=  strlen(StringPart) + 1;
00170     // ---------------------------------------------------------------------------------------------------
00171     sprintf(StringPart, "KRL Data");
00172     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00173     CharCounter +=  strlen(StringPart) + 1;
00174     // ---------------------------------------------------------------------------------------------------
00175     sprintf(StringPart, SINGLE_LINE);
00176     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00177     CharCounter +=  strlen(StringPart) + 1;
00178     // ---------------------------------------------------------------------------------------------------
00179     this->GetKRLBoolValues(BoolArray);
00180     sprintf(StringPart, "Bool array: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d"
00181             ,   BoolArray[ 0]
00182             ,   BoolArray[ 1]
00183             ,   BoolArray[ 2]
00184             ,   BoolArray[ 3]
00185             ,   BoolArray[ 4]
00186             ,   BoolArray[ 5]
00187             ,   BoolArray[ 6]
00188             ,   BoolArray[ 7]
00189             ,   BoolArray[ 8]
00190             ,   BoolArray[ 9]
00191             ,   BoolArray[10]
00192             ,   BoolArray[11]
00193             ,   BoolArray[12]
00194             ,   BoolArray[13]
00195             ,   BoolArray[14]
00196             ,   BoolArray[15]);
00197     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00198     CharCounter +=  strlen(StringPart) + 1;
00199     // ---------------------------------------------------------------------------------------------------
00200     this->GetKRLIntValues(IntArray);
00201     sprintf(StringPart, "Int array: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d"
00202             ,   IntArray[ 0]
00203             ,   IntArray[ 1]
00204             ,   IntArray[ 2]
00205             ,   IntArray[ 3]
00206             ,   IntArray[ 4]
00207             ,   IntArray[ 5]
00208             ,   IntArray[ 6]
00209             ,   IntArray[ 7]
00210             ,   IntArray[ 8]
00211             ,   IntArray[ 9]
00212             ,   IntArray[10]
00213             ,   IntArray[11]
00214             ,   IntArray[12]
00215             ,   IntArray[13]
00216             ,   IntArray[14]
00217             ,   IntArray[15]);
00218     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00219     CharCounter +=  strlen(StringPart) + 1;
00220     // ---------------------------------------------------------------------------------------------------
00221     this->GetKRLFloatValues(FloatArray);
00222     sprintf(StringPart, "Float array: %4.f %4.f %4.f %4.f %4.f %f %4.f %4.f %4.f %4.f %4.f %4.f %4.f %4.f %4.f %4.f"
00223             ,   FloatArray[ 0]
00224             ,   FloatArray[ 1]
00225             ,   FloatArray[ 2]
00226             ,   FloatArray[ 3]
00227             ,   FloatArray[ 4]
00228             ,   FloatArray[ 5]
00229             ,   FloatArray[ 6]
00230             ,   FloatArray[ 7]
00231             ,   FloatArray[ 8]
00232             ,   FloatArray[ 9]
00233             ,   FloatArray[10]
00234             ,   FloatArray[11]
00235             ,   FloatArray[12]
00236             ,   FloatArray[13]
00237             ,   FloatArray[14]
00238             ,   FloatArray[15]);
00239     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00240     CharCounter +=  strlen(StringPart) + 1;
00241     // ---------------------------------------------------------------------------------------------------
00242     sprintf(StringPart, SINGLE_LINE);
00243     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00244     CharCounter +=  strlen(StringPart) + 1;
00245     // ---------------------------------------------------------------------------------------------------
00246     sprintf(StringPart, "Robot Control Data");
00247     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00248     CharCounter +=  strlen(StringPart) + 1;
00249     // ---------------------------------------------------------------------------------------------------
00250     sprintf(StringPart, SINGLE_LINE);
00251     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00252     CharCounter +=  strlen(StringPart) + 1;
00253     // ---------------------------------------------------------------------------------------------------
00254     this->GetMeasuredJointPositions(FloatArray);
00255     sprintf(StringPart, "Measured joint positions [deg]: %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f"
00256             ,   FloatArray[0] * 180.0 / PI
00257             ,   FloatArray[1] * 180.0 / PI
00258             ,   FloatArray[2] * 180.0 / PI
00259             ,   FloatArray[3] * 180.0 / PI
00260             ,   FloatArray[4] * 180.0 / PI
00261             ,   FloatArray[5] * 180.0 / PI
00262             ,   FloatArray[6] * 180.0 / PI);
00263     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00264     CharCounter +=  strlen(StringPart) + 1;
00265     // ---------------------------------------------------------------------------------------------------
00266     this->GetCommandedJointPositions(FloatArray);
00267     sprintf(StringPart, "Commanded joint positions [deg]: %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f"
00268             ,   FloatArray[0] * 180.0 / PI
00269             ,   FloatArray[1] * 180.0 / PI
00270             ,   FloatArray[2] * 180.0 / PI
00271             ,   FloatArray[3] * 180.0 / PI
00272             ,   FloatArray[4] * 180.0 / PI
00273             ,   FloatArray[5] * 180.0 / PI
00274             ,   FloatArray[6] * 180.0 / PI);
00275     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00276     CharCounter +=  strlen(StringPart) + 1;
00277     // ---------------------------------------------------------------------------------------------------
00278     this->GetCommandedJointPositionOffsets(FloatArray);
00279     sprintf(StringPart, "Commanded joint position offsets [deg]: %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f"
00280             ,   FloatArray[0] * 180.0 / PI
00281             ,   FloatArray[1] * 180.0 / PI
00282             ,   FloatArray[2] * 180.0 / PI
00283             ,   FloatArray[3] * 180.0 / PI
00284             ,   FloatArray[4] * 180.0 / PI
00285             ,   FloatArray[5] * 180.0 / PI
00286             ,   FloatArray[6] * 180.0 / PI);
00287     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00288     CharCounter +=  strlen(StringPart) + 1;
00289     // ---------------------------------------------------------------------------------------------------
00290     this->GetMeasuredJointTorques(FloatArray);
00291     sprintf(StringPart, "Measured joint torques [Nm]: %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f"
00292             ,   FloatArray[0]
00293             ,   FloatArray[1]
00294             ,   FloatArray[2]
00295             ,   FloatArray[3]
00296             ,   FloatArray[4]
00297             ,   FloatArray[5]
00298             ,   FloatArray[6]);
00299     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00300     CharCounter +=  strlen(StringPart) + 1;
00301     // ---------------------------------------------------------------------------------------------------
00302     this->GetEstimatedExternalJointTorques(FloatArray);
00303     sprintf(StringPart, "Estimated external joint torques [Nm]: %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f"
00304             ,   FloatArray[0]
00305             ,   FloatArray[1]
00306             ,   FloatArray[2]
00307             ,   FloatArray[3]
00308             ,   FloatArray[4]
00309             ,   FloatArray[5]
00310             ,   FloatArray[6]);
00311     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00312     CharCounter +=  strlen(StringPart) + 1;
00313     // ---------------------------------------------------------------------------------------------------
00314     this->GetMeasuredCartPose(FloatArray);
00315     sprintf(StringPart, "Measured Cart. pose frame: ( %12.3f %12.3f %12.3f %12.3f )"
00316             ,   FloatArray[ 0]
00317             ,   FloatArray[ 1]
00318             ,   FloatArray[ 2]
00319             ,   FloatArray[ 3]);
00320     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00321     CharCounter +=  strlen(StringPart) + 1;
00322     sprintf(StringPart, "                           ( %12.3f %12.3f %12.3f %12.3f )"
00323             ,   FloatArray[ 4]
00324             ,   FloatArray[ 5]
00325             ,   FloatArray[ 6]
00326             ,   FloatArray[ 7]);
00327     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00328     CharCounter +=  strlen(StringPart) + 1;
00329     sprintf(StringPart, "                           ( %12.3f %12.3f %12.3f %12.3f )"
00330             ,   FloatArray[ 8]
00331             ,   FloatArray[ 9]
00332             ,   FloatArray[10]
00333             ,   FloatArray[11]);
00334     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00335     CharCounter +=  strlen(StringPart) + 1;
00336     sprintf(StringPart, "                           ( %12.3f %12.3f %12.3f %12.3f )"
00337             ,   0.0
00338             ,   0.0
00339             ,   0.0
00340             ,   1.0);
00341     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00342     CharCounter +=  strlen(StringPart) + 1;
00343     // ---------------------------------------------------------------------------------------------------
00344     this->GetCommandedCartPose(FloatArray);
00345     sprintf(StringPart, "Commanded Cart. pose frame: ( %12.3f %12.3f %12.3f %12.3f )"
00346             ,   FloatArray[ 0]
00347             ,   FloatArray[ 1]
00348             ,   FloatArray[ 2]
00349             ,   FloatArray[ 3]);
00350     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00351     CharCounter +=  strlen(StringPart) + 1;
00352     sprintf(StringPart, "                            ( %12.3f %12.3f %12.3f %12.3f )"
00353             ,   FloatArray[ 4]
00354             ,   FloatArray[ 5]
00355             ,   FloatArray[ 6]
00356             ,   FloatArray[ 7]);
00357     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00358     CharCounter +=  strlen(StringPart) + 1;
00359     sprintf(StringPart, "                            ( %12.3f %12.3f %12.3f %12.3f )"
00360             ,   FloatArray[ 8]
00361             ,   FloatArray[ 9]
00362             ,   FloatArray[10]
00363             ,   FloatArray[11]);
00364     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00365     CharCounter +=  strlen(StringPart) + 1;
00366     sprintf(StringPart, "                            ( %12.3f %12.3f %12.3f %12.3f )"
00367             ,   0.0
00368             ,   0.0
00369             ,   0.0
00370             ,   1.0);
00371     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00372     CharCounter +=  strlen(StringPart) + 1;
00373     // ---------------------------------------------------------------------------------------------------
00374     this->GetCommandedCartPoseOffsets(FloatArray);
00375     sprintf(StringPart, "Commanded Cart. pose offset frame: ( %12.3f %12.3f %12.3f %12.3f )"
00376             ,   FloatArray[ 0]
00377             ,   FloatArray[ 1]
00378             ,   FloatArray[ 2]
00379             ,   FloatArray[ 3]);
00380     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00381     CharCounter +=  strlen(StringPart) + 1;
00382     sprintf(StringPart, "                                   ( %12.3f %12.3f %12.3f %12.3f )"
00383             ,   FloatArray[ 4]
00384             ,   FloatArray[ 5]
00385             ,   FloatArray[ 6]
00386             ,   FloatArray[ 7]);
00387     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00388     CharCounter +=  strlen(StringPart) + 1;
00389     sprintf(StringPart, "                                   ( %12.3f %12.3f %12.3f %12.3f )"
00390             ,   FloatArray[ 8]
00391             ,   FloatArray[ 9]
00392             ,   FloatArray[10]
00393             ,   FloatArray[11]);
00394     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00395     CharCounter +=  strlen(StringPart) + 1;
00396     sprintf(StringPart, "                                   ( %12.3f %12.3f %12.3f %12.3f )"
00397             ,   0.0
00398             ,   0.0
00399             ,   0.0
00400             ,   1.0);
00401     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00402     CharCounter +=  strlen(StringPart) + 1;
00403     // ---------------------------------------------------------------------------------------------------
00404     this->GetEstimatedExternalCartForcesAndTorques(FloatArray);
00405     sprintf(StringPart, "Estimated external Cart. forces/torques: %8.3f N %8.3f N %8.3f N %8.3f Nm %8.3f Nm %8.3f Nm"
00406             ,   FloatArray[0]
00407             ,   FloatArray[1]
00408             ,   FloatArray[2]
00409             ,   FloatArray[3]
00410             ,   FloatArray[4]
00411             ,   FloatArray[5]);
00412     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00413     CharCounter +=  strlen(StringPart) + 1;
00414     // ---------------------------------------------------------------------------------------------------
00415     sprintf(StringPart, SINGLE_LINE);
00416     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00417     CharCounter +=  strlen(StringPart) + 1;
00418     // ---------------------------------------------------------------------------------------------------
00419     sprintf(StringPart, "Robot Status Data");
00420     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00421     CharCounter +=  strlen(StringPart) + 1;
00422     // ---------------------------------------------------------------------------------------------------
00423     sprintf(StringPart, SINGLE_LINE);
00424     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00425     CharCounter +=  strlen(StringPart) + 1;
00426     // ---------------------------------------------------------------------------------------------------
00427     switch (this->GetFRIMode())
00428     {
00429     case FRI_STATE_OFF:
00430         sprintf(StringPart, "FRI mode: The KRC has NOT opened the FRI yet (OFF).");
00431         break;
00432     case FRI_STATE_MON:
00433         sprintf(StringPart, "FRI mode: MONITOR Mode");
00434         break;
00435     case FRI_STATE_CMD:
00436         sprintf(StringPart, "FRI mode: COMMAND Mode");
00437         break;
00438     default:
00439         sprintf(StringPart, "UDP communication quality: UNKNOWN");
00440         break;
00441     }
00442     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00443     CharCounter +=  strlen(StringPart) + 1;
00444     // ---------------------------------------------------------------------------------------------------
00445     if (this->IsRobotArmPowerOn())
00446     {
00447         sprintf(StringPart, "Robot arm power: ON");
00448     }
00449     else
00450     {
00451         sprintf(StringPart, "Robot arm power: OFF");
00452     }
00453     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00454     CharCounter +=  strlen(StringPart) + 1;
00455     // ---------------------------------------------------------------------------------------------------
00456     if (this->DoesAnyDriveSignalAnError())
00457     {
00458         sprintf(StringPart, "Drive fault: YES");
00459     }
00460     else
00461     {
00462         sprintf(StringPart, "Drive fault: NO");
00463     }
00464     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00465     CharCounter +=  strlen(StringPart) + 1;
00466     // ---------------------------------------------------------------------------------------------------
00467     if (this->DoesAnyDriveSignalAWarning())
00468     {
00469         sprintf(StringPart, "Drive warning: YES");
00470     }
00471     else
00472     {
00473         sprintf(StringPart, "Drive warning: NO");
00474     }
00475     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00476     CharCounter +=  strlen(StringPart) + 1;
00477     // ---------------------------------------------------------------------------------------------------
00478     this->GetDriveTemperatures(FloatArray);
00479     sprintf(StringPart, "Drive temperatures: %8.1f %8.1f %8.1f %8.1f %8.1f %8.1f %8.1f"
00480             ,   FloatArray[0]
00481             ,   FloatArray[1]
00482             ,   FloatArray[2]
00483             ,   FloatArray[3]
00484             ,   FloatArray[4]
00485             ,   FloatArray[5]
00486             ,   FloatArray[6]);
00487     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00488     CharCounter +=  strlen(StringPart) + 1;
00489     // ---------------------------------------------------------------------------------------------------
00490     switch (this->GetCurrentControlScheme())
00491     {
00492     case FastResearchInterface::JOINT_POSITION_CONTROL:
00493         sprintf(StringPart, "Control strategy: Joint position control");
00494         break;
00495     case FastResearchInterface::CART_IMPEDANCE_CONTROL:
00496         sprintf(StringPart, "Control strategy: Cartesian impedance control");
00497         break;
00498     case FastResearchInterface::JOINT_IMPEDANCE_CONTROL:
00499         sprintf(StringPart, "Control strategy: Joint impedance control");
00500         break;
00501     default:
00502         sprintf(StringPart, "Control strategy: UNKNOWN!");
00503         break;
00504     }
00505     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00506     CharCounter +=  strlen(StringPart) + 1;
00507     // ---------------------------------------------------------------------------------------------------
00508     sprintf(StringPart, DOUBLE_LINE);
00509     sprintf(&(this->RobotStateString[CharCounter]), "%s\n", StringPart);
00510     CharCounter +=  strlen(StringPart) + 1;
00511     // ---------------------------------------------------------------------------------------------------
00512 
00513     return((const char*)this->RobotStateString);
00514 }
This document was generated with Doxygen on Thu Apr 12 2012 11:18:54. User documentation of the Fast Research Interface Library for the KUKA Lightweight Robot IV by the Stanford Robotics Research Group. Copyright 2010–2012.