57#include <visp3/core/vpHomogeneousMatrix.h>
58#include <visp3/core/vpMath.h>
59#include <visp3/io/vpParseArgv.h>
60#include <visp3/robot/vpSimulatorCamera.h>
61#include <visp3/visual_features/vpFeatureBuilder.h>
62#include <visp3/visual_features/vpFeaturePoint.h>
63#include <visp3/vs/vpServo.h>
68void usage(
const char *name,
const char *badparam);
69bool getOptions(
int argc,
const char **argv);
79void usage(
const char *name,
const char *badparam)
82Simulation of a 2D visual servoing on a point:\n\
83- eye-in-hand control law,\n\
84- articular velocity are computed,\n\
86- only the X coordinate of the point is selected.\n\
98 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
111bool getOptions(
int argc,
const char **argv)
119 usage(argv[0], NULL);
123 usage(argv[0], optarg_);
128 if ((c == 1) || (c == -1)) {
130 usage(argv[0], NULL);
131 std::cerr <<
"ERROR: " << std::endl;
132 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
139int main(
int argc,
const char **argv)
141#if (defined(VISP_HAVE_LAPACK) || defined(VISP_HAVE_EIGEN3) || defined(VISP_HAVE_OPENCV))
144 if (getOptions(argc, argv) ==
false) {
151 std::cout << std::endl;
152 std::cout <<
"-------------------------------------------------------" << std::endl;
153 std::cout <<
" Test program for vpServo " << std::endl;
154 std::cout <<
" Eye-in-hand task control, articular velocity are computed" << std::endl;
155 std::cout <<
" Simulation " << std::endl;
156 std::cout <<
" task : servo a point " << std::endl;
157 std::cout <<
"-------------------------------------------------------" << std::endl;
158 std::cout << std::endl;
167 robot.getPosition(wMc);
209 unsigned int iter = 0;
211 while (iter++ < 100) {
212 std::cout <<
"---------------------------------------------" << iter << std::endl;
221 robot.getPosition(wMc);
235 std::cout <<
"|| s - s* || = " << (task.
getError()).sumSquare() << std::endl;
242 std::cout <<
"Catch a ViSP exception: " << e << std::endl;
248 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)
static unsigned int selectX()
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 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.