62 #include <visp3/core/vpConfig.h> 63 #include <visp3/core/vpDebug.h> 64 #if (defined(VISP_HAVE_AFMA6) && defined(VISP_HAVE_DC1394)) 66 #include <visp3/core/vpDisplay.h> 67 #include <visp3/core/vpImage.h> 68 #include <visp3/gui/vpDisplayGTK.h> 69 #include <visp3/gui/vpDisplayOpenCV.h> 70 #include <visp3/gui/vpDisplayX.h> 71 #include <visp3/sensor/vp1394TwoGrabber.h> 73 #include <visp3/core/vpHomogeneousMatrix.h> 74 #include <visp3/core/vpMath.h> 75 #include <visp3/visual_features/vpFeatureBuilder.h> 76 #include <visp3/visual_features/vpFeatureEllipse.h> 77 #include <visp3/vs/vpServo.h> 79 #include <visp3/robot/vpRobotAfma6.h> 82 #include <visp3/core/vpException.h> 83 #include <visp3/vs/vpServoDisplay.h> 85 #include <visp3/blob/vpDot.h> 100 vpDisplayX display(I, 100, 100,
"Current image");
101 #elif defined(VISP_HAVE_OPENCV) 103 #elif defined(VISP_HAVE_GTK) 110 std::cout << std::endl;
111 std::cout <<
"-------------------------------------------------------" << std::endl;
112 std::cout <<
" Test program for vpServo " << std::endl;
113 std::cout <<
" Eye-in-hand task control, velocity computed in the camera frame" << std::endl;
114 std::cout <<
" Simulation " << std::endl;
115 std::cout <<
" task : servo a point " << std::endl;
116 std::cout <<
"-------------------------------------------------------" << std::endl;
117 std::cout << std::endl;
124 std::cout <<
"Click on an ellipse..." << std::endl;
139 vpTRACE(
"sets the current position of the visual feature ");
143 std::cout <<
" Learning 0/1 " << std::endl;
145 std::cin >> learning;
146 char name[FILENAME_MAX];
147 sprintf(name,
"dat/ellipse.dat");
150 vpTRACE(
"Save the location of the object in a file dat/ellipse.dat");
151 std::ofstream f(name);
157 vpTRACE(
"sets the desired position of the visual feature ");
159 std::ifstream f(
"dat/ellipse.dat");
160 double x, y, mu20, mu11, mu02;
178 unsigned int iter = 0;
179 double lambda_av = 0.01;
183 std::cout <<
"alpha 0.7" << std::endl;
185 std::cout <<
"beta 5" << std::endl;
188 std::cout <<
"---------------------------------------------" << iter++ << std::endl;
204 if (std::fabs(alpha) <= std::numeric_limits<double>::epsilon())
207 gain = alpha * exp(-beta * (task.
getError()).sumSquare()) + lambda_av;
216 std::cout <<
"rank " << task.
getTaskRank() << std::endl;
225 vpTRACE(
"Display task information ");
231 std::cout <<
"Test failed with exception: " << e << std::endl;
239 std::cout <<
"You do not have an afma6 robot connected to your computer..." << std::endl;
void getCameraParameters(vpCameraParameters &cam, const unsigned int &image_width, const unsigned int &image_height) const
void setMaxDotSize(double percentage)
Use the X11 console to display images on unix-like OS. Thus to enable this class X11 should be instal...
void addFeature(vpBasicFeature &s, vpBasicFeature &s_star, const unsigned int select=vpBasicFeature::FEATURE_ALL)
void track(const vpImage< unsigned char > &I)
error that can be emited by ViSP classes.
static const vpColor green
void acquire(vpImage< unsigned char > &I)
static void flush(const vpImage< unsigned char > &I)
Control of Irisa's gantry robot named Afma6.
void open(vpImage< unsigned char > &I)
vpImagePoint getCog() const
Initialize the velocity controller.
vpColVector getError() const
vpColVector computeControlLaw()
static void display(const vpImage< unsigned char > &I)
The vpDisplayOpenCV allows to display image using the OpenCV library. Thus to enable this class OpenC...
Generic class defining intrinsic camera parameters.
The vpDisplayGTK allows to display image using the GTK 3rd party library. Thus to enable this class G...
vpRobot::vpRobotStateType setRobotState(vpRobot::vpRobotStateType newState)
void setABC(const double A, const double B, const double C)
void setInteractionMatrixType(const vpServoIteractionMatrixType &interactionMatrixType, const vpServoInversionType &interactionMatrixInversion=PSEUDO_INVERSE)
static void displayCross(const vpImage< unsigned char > &I, const vpImagePoint &ip, unsigned int size, const vpColor &color, unsigned int thickness=1)
Implementation of column vector and the associated operations.
void setFramerate(vp1394TwoFramerateType fps)
void setVideoMode(vp1394TwoVideoModeType videomode)
void print(const vpServo::vpServoPrintType display_level=ALL, std::ostream &os=std::cout)
This tracker is meant to track a dot (connected pixels with same gray level) on a vpImage...
void setComputeMoments(const bool activate)
void buildFrom(const double x, const double y, const double mu20, const double mu11, const double mu02)
Class for firewire ieee1394 video devices using libdc1394-2.x api.
void setVelocity(const vpRobot::vpControlFrameType frame, const vpColVector &velocity)
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
Class that defines 2D ellipse visual feature.
static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot &d)
vpColVector get_s(unsigned int select=FEATURE_ALL) const
Get the feature vector .
void setServo(const vpServoType &servo_type)
void initTracking(const vpImage< unsigned char > &I)
static void display(const vpServo &s, const vpCameraParameters &cam, const vpImage< unsigned char > &I, vpColor currentColor=vpColor::green, vpColor desiredColor=vpColor::red, unsigned int thickness=1)
unsigned int getTaskRank() const
static const vpColor blue