55#include <visp3/core/vpHomogeneousMatrix.h>
56#include <visp3/core/vpMath.h>
57#include <visp3/io/vpParseArgv.h>
58#include <visp3/robot/vpSimulatorCamera.h>
59#include <visp3/visual_features/vpFeatureBuilder.h>
60#include <visp3/visual_features/vpFeaturePoint.h>
61#include <visp3/vs/vpServo.h>
66void usage(
const char *name,
const char *badparam);
67bool getOptions(
int argc,
const char **argv);
77void usage(
const char *name,
const char *badparam)
80Simulation of a 2D visual servoing on a point:\n\
81- eye-in-hand control law,\n\
82- articular velocity are computed,\n\
96 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
109bool getOptions(
int argc,
const char **argv)
117 usage(argv[0], NULL);
121 usage(argv[0], optarg_);
126 if ((c == 1) || (c == -1)) {
128 usage(argv[0], NULL);
129 std::cerr <<
"ERROR: " << std::endl;
130 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
137int main(
int argc,
const char **argv)
139#if (defined(VISP_HAVE_LAPACK) || defined(VISP_HAVE_EIGEN3) || defined(VISP_HAVE_OPENCV))
142 if (getOptions(argc, argv) ==
false) {
149 std::cout << std::endl;
150 std::cout <<
"-------------------------------------------------------" << std::endl;
151 std::cout <<
" Test program for vpServo " << std::endl;
152 std::cout <<
" Eye-in-hand task control, articular velocity are computed" << std::endl;
153 std::cout <<
" Simulation " << std::endl;
154 std::cout <<
" task : servo a point " << std::endl;
155 std::cout <<
"-------------------------------------------------------" << std::endl;
156 std::cout << std::endl;
165 robot.getPosition(wMc);
207 unsigned int iter = 0;
209 while (iter++ < 100) {
210 std::cout <<
"---------------------------------------------" << iter << std::endl;
219 robot.getPosition(wMc);
236 std::cout <<
"|| s - s* || = " << (task.
getError()).sumSquare() << std::endl;
243 std::cout <<
"Catch a ViSP exception: " << e << std::endl;
249 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 emitted 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
Implementation of a matrix and operations on matrices.
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 get_eJe(vpMatrix &eJe)
void setInteractionMatrixType(const vpServoIteractionMatrixType &interactionMatrixType, const vpServoInversionType &interactionMatrixInversion=PSEUDO_INVERSE)
void set_cVe(const vpVelocityTwistMatrix &cVe_)
void print(const vpServo::vpServoPrintType display_level=ALL, std::ostream &os=std::cout)
void set_eJe(const vpMatrix &eJe_)
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.