Shows how to build a task with a segment visual feature.
#include <fstream>
#include <iostream>
#include <numeric>
#include <vector>
#include <visp3/core/vpConfig.h>
#if defined(VISP_HAVE_MODULE_ROBOT) \
&& (defined(VISP_HAVE_LAPACK) || defined(VISP_HAVE_EIGEN3) || defined(VISP_HAVE_OPENCV))
#include <visp3/core/vpCameraParameters.h>
#include <visp3/core/vpDisplay.h>
#include <visp3/core/vpHomogeneousMatrix.h>
#include <visp3/core/vpImage.h>
#include <visp3/core/vpMath.h>
#include <visp3/core/vpPoint.h>
#include <visp3/gui/vpDisplayGDI.h>
#include <visp3/gui/vpDisplayX.h>
#include <visp3/gui/vpPlot.h>
#include <visp3/io/vpParseArgv.h>
#include <visp3/robot/vpSimulatorCamera.h>
#include <visp3/visual_features/vpFeatureBuilder.h>
#include <visp3/visual_features/vpFeatureSegment.h>
#include <visp3/vs/vpServo.h>
int main(int argc, const char **argv)
{
try {
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
int opt_no_display = 0;
int opt_curves = 1;
#endif
int opt_normalized = 1;
vpParseArgv::vpArgvInfo argTable[] = {
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
#endif
"1 to use normalized features, 0 for non normalized."},
};
return (false);
}
std::cout << "Used options: " << std::endl;
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
opt_curves = (opt_no_display == 0) ? 1 : 0;
std::cout << " - no display: " << opt_no_display << std::endl;
std::cout << " - curves : " << opt_curves << std::endl;
#endif
std::cout << " - normalized: " << opt_normalized << std::endl;
#if defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI)
if (!opt_no_display) {
#if defined(VISP_HAVE_X11)
#elif defined VISP_HAVE_GDI
#endif
}
#endif
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
if (!opt_no_display)
display->init(I);
#endif
for (int i = 0; i < 4; i++) {
Pd[i] = P[i];
}
for (int i = 0; i < 4; i++) {
Pc[i] = P[i];
}
for (int i = 0; i < 2; i++) {
if (opt_normalized) {
} else {
}
}
for (int i = 0; i < 2; i++)
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
if (!opt_no_display) {
for (int i = 0; i < 2; i++) {
}
}
#endif
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
if (opt_curves) {
graph =
new vpPlot(2, 500, 500, 700, 10,
"Curves...");
}
#endif
float sampling_time = 0.02f;
int iter = 0;
do {
for (int i = 0; i < 4; i++)
Pc[i].project(cMo);
for (int i = 0; i < 2; i++)
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
if (!opt_no_display) {
for (int i = 0; i < 2; i++) {
}
}
#endif
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
if (opt_curves) {
}
#endif
iter++;
}
while ((task.
getError()).sumSquare() > 0.0005);
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
if (graph != NULL)
delete graph;
#endif
#if (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI))
if (!opt_no_display && display != NULL)
delete display;
#endif
std::cout <<
"final error=" << (task.
getError()).sumSquare() << std::endl;
return 0;
std::cout << "Catch an exception: " << e << std::endl;
return 1;
}
}
#elif !(defined(VISP_HAVE_LAPACK) || defined(VISP_HAVE_EIGEN3) || defined(VISP_HAVE_OPENCV))
int main()
{
std::cout << "Cannot run this example: install Lapack, Eigen3 or OpenCV" << std::endl;
return EXIT_SUCCESS;
}
#else
int main()
{
std::cout << "Test empty since visp_robot module is not available.\n" << std::endl;
return 0;
}
#endif