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> 66 #define GETOPTARGS "h" 68 void usage(
const char *name,
const char *badparam);
69 bool getOptions(
int argc,
const char **argv);
79 void usage(
const char *name,
const char *badparam)
82 Simulation 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);
111 bool getOptions(
int argc,
const char **argv)
119 usage(argv[0], NULL);
124 usage(argv[0], optarg_);
130 if ((c == 1) || (c == -1)) {
132 usage(argv[0], NULL);
133 std::cerr <<
"ERROR: " << std::endl;
134 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
141 int main(
int argc,
const char **argv)
145 if (getOptions(argc, argv) ==
false) {
152 std::cout << std::endl;
153 std::cout <<
"-------------------------------------------------------" << std::endl;
154 std::cout <<
" Test program for vpServo " << std::endl;
155 std::cout <<
" Eye-in-hand task control, articular velocity are computed" << std::endl;
156 std::cout <<
" Simulation " << std::endl;
157 std::cout <<
" task : servo a point " << std::endl;
158 std::cout <<
"-------------------------------------------------------" << std::endl;
159 std::cout << std::endl;
210 unsigned int iter = 0;
212 while (iter++ < 100) {
213 std::cout <<
"---------------------------------------------" << iter << std::endl;
236 std::cout <<
"|| s - s* || = " << (task.
getError()).sumSquare() << std::endl;
244 std::cout <<
"Catch a ViSP exception: " << e << std::endl;
Implementation of a matrix and operations on matrices.
void setVelocity(const vpRobot::vpControlFrameType frame, const vpColVector &vel)
Implementation of an homogeneous matrix and operations on such kind of matrices.
Class that defines the simplest robot: a free flying camera.
void set_eJe(const vpMatrix &eJe_)
void addFeature(vpBasicFeature &s, vpBasicFeature &s_star, const unsigned int select=vpBasicFeature::FEATURE_ALL)
error that can be emited by ViSP classes.
Class that defines a 2D point visual feature which is composed by two parameters that are the cartes...
static bool parse(int *argcPtr, const char **argv, vpArgvInfo *argTable, int flags)
Class that defines what is a point.
vpColVector getError() const
vpColVector computeControlLaw()
static unsigned int selectX()
vpHomogeneousMatrix getPosition() const
void buildFrom(const double x, const double y, const double Z)
Implementation of column vector and the associated operations.
void set_cVe(const vpVelocityTwistMatrix &cVe_)
vpHomogeneousMatrix inverse() const
void print(const vpServo::vpServoPrintType display_level=ALL, std::ostream &os=std::cout)
static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot &d)
void get_eJe(vpMatrix &eJe)
void setServo(const vpServoType &servo_type)