ONLY AVAILABLE WITH FIRMWARE 4.2.9 AND BELOW. This function gets informations about the nearest singularities.
#include <iostream>
#include <dlfcn.h>
#include <vector>
#include "KinovaTypes.h"
using namespace std;
int main()
{
int result;
SingularityVector data;
cout << "GetSingularityVector function example" << endl;
void * commandLayer_handle;
int (*MyInitAPI)();
int (*MyCloseAPI)();
int (*MySingularityVector)(SingularityVector &);
commandLayer_handle = dlopen("Kinova.API.USBCommandLayerUbuntu.so",RTLD_NOW|RTLD_GLOBAL);
MyInitAPI = (int (*)()) dlsym(commandLayer_handle,"InitAPI");
MyCloseAPI = (int (*)()) dlsym(commandLayer_handle,"CloseAPI");
MySingularityVector = (int (*)(SingularityVector &)) dlsym(commandLayer_handle,"GetSingularityVector");
if((MyInitAPI == NULL) || (MyCloseAPI == NULL) || (MySingularityVector == NULL))
{
cout << "Unable to initialize the command layer." << endl;
}
else
{
cout << "The command has been initialized correctly." << endl << endl;
cout << "Calling the method InitAPI()" << endl;
result = (*MyInitAPI)();
cout << "result of InitAPI() = " << result << endl << endl;
result = (*MySingularityVector)(data);
cout << "Orientation singularity : " << data.OrientationSingularityCount << endl;
cout << "Orientation singularity's distance : " << data.OrientationSingularityDistance << endl;
cout << "Translation singularity : " << data.TranslationSingularityCount << endl;
cout << "Translation singularity's distance : " << data.TranslationSingularityDistance << endl;
cout << " Repulsion vector X : " << data.RepulsionVector.X << endl;
cout << " Repulsion vector Y : " << data.RepulsionVector.Y << endl;
cout << " Repulsion vector Z : " << data.RepulsionVector.Z << endl;
cout << "Repulsion vector ThetaX : " << data.RepulsionVector.ThetaX << endl;
cout << "Repulsion vector ThetaY : " << data.RepulsionVector.ThetaY << endl;
cout << "Repulsion vector ThetaZ : " << data.RepulsionVector.ThetaZ << endl;
cout << endl << "Calling the method CloseAPI()" << endl;
result = (*MyCloseAPI)();
cout << "result of CloseAPI() = " << result << endl;
}
return 0;
}