51#include <visp3/core/vpHomogeneousMatrix.h>
52#include <visp3/core/vpMath.h>
53#include <visp3/io/vpParseArgv.h>
54#include <visp3/robot/vpSimulatorCamera.h>
55#include <visp3/visual_features/vpFeatureBuilder.h>
56#include <visp3/visual_features/vpFeaturePoint.h>
57#include <visp3/vs/vpServo.h>
62void usage(
const char *name,
const char *badparam);
63bool getOptions(
int argc,
const char **argv);
73void usage(
const char *name,
const char *badparam)
76Simulation of a 2D visual servoing on a point:\n\
77- eye-in-hand control law,\n\
78- velocity computed in the camera frame,\n\
91 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
104bool getOptions(
int argc,
const char **argv)
112 usage(argv[0], NULL);
116 usage(argv[0], optarg_);
121 if ((c == 1) || (c == -1)) {
123 usage(argv[0], NULL);
124 std::cerr <<
"ERROR: " << std::endl;
125 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
132int main(
int argc,
const char **argv)
134#if (defined(VISP_HAVE_LAPACK) || defined(VISP_HAVE_EIGEN3) || defined(VISP_HAVE_OPENCV))
137 if (getOptions(argc, argv) ==
false) {
152 robot.getPosition(wMc);
176 std::cout << std::endl;
185 unsigned int iter = 0;
187 while (iter++ < 100) {
188 std::cout <<
"---------------------------------------------" << iter << std::endl;
192 robot.getPosition(wMc);
207 std::cout <<
"|| s - s* || = " << (task.
getError()).sumSquare() << std::endl;
214 std::cout <<
"Catch a ViSP exception: " << e << std::endl;
220 std::cout <<
"Cannot run this example: install Lapack, Eigen3 or OpenCV" << std::endl;
Implementation of column vector and the associated operations.
error that can be emited by ViSP classes.
static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot &d)
Class that defines a 2D point visual feature which is composed by two parameters that are the cartes...
void buildFrom(double x, double y, double Z)
Implementation of an homogeneous matrix and operations on such kind of matrices.
vpHomogeneousMatrix inverse() const
static bool parse(int *argcPtr, const char **argv, vpArgvInfo *argTable, int flags)
Class that defines a 3D point in the object frame and allows forward projection of a 3D point in the ...
void setVelocity(const vpRobot::vpControlFrameType frame, const vpColVector &vel)
void print(const vpServo::vpServoPrintType display_level=ALL, std::ostream &os=std::cout)
void setServo(const vpServoType &servo_type)
vpColVector getError() const
vpColVector computeControlLaw()
void addFeature(vpBasicFeature &s, vpBasicFeature &s_star, unsigned int select=vpBasicFeature::FEATURE_ALL)
Class that defines the simplest robot: a free flying camera.