 |
Visual Servoing Platform
version 3.2.0
|
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;
137 robot.getCameraParameters(cam, I);
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;
Initialize the velocity controller.
Use the X11 console to display images on unix-like OS. Thus to enable this class X11 should be instal...
Class that defines 2D ellipse visual feature.
void setVideoMode(vp1394TwoVideoModeType videomode)
void setABC(const double A, const double B, const double C)
void setMaxDotSize(double percentage)
Generic class defining intrinsic camera parameters.
Control of Irisa's gantry robot named Afma6.
void setFramerate(vp1394TwoFramerateType fps)
vpColVector get_s(unsigned int select=FEATURE_ALL) const
Get the feature vector .
void track(const vpImage< unsigned char > &I)
vpImagePoint getCog() const
static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot &d)
Implementation of column vector and the associated operations.
void buildFrom(const double x, const double y, const double mu20, const double mu11, const double mu02)
The vpDisplayOpenCV allows to display image using the OpenCV library. Thus to enable this class OpenC...
void setServo(const vpServoType &servo_type)
virtual vpRobotStateType setRobotState(const vpRobot::vpRobotStateType newState)
static const vpColor green
void print(const vpServo::vpServoPrintType display_level=ALL, std::ostream &os=std::cout)
static void display(const vpImage< unsigned char > &I)
The vpDisplayGTK allows to display image using the GTK 3rd party library. Thus to enable this class G...
vpColVector getError() const
unsigned int getTaskRank() const
Class for firewire ieee1394 video devices using libdc1394-2.x api.
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
void acquire(vpImage< unsigned char > &I)
void setInteractionMatrixType(const vpServoIteractionMatrixType &interactionMatrixType, const vpServoInversionType &interactionMatrixInversion=PSEUDO_INVERSE)
static const vpColor blue
vpColVector computeControlLaw()
void addFeature(vpBasicFeature &s, vpBasicFeature &s_star, const unsigned int select=vpBasicFeature::FEATURE_ALL)
static void flush(const vpImage< unsigned char > &I)
static void displayCross(const vpImage< unsigned char > &I, const vpImagePoint &ip, unsigned int size, const vpColor &color, unsigned int thickness=1)
void open(vpImage< unsigned char > &I)
void setComputeMoments(const bool activate)
void initTracking(const vpImage< unsigned char > &I)
void setVelocity(const vpRobot::vpControlFrameType frame, const vpColVector &vel)
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)
error that can be emited by ViSP classes.
This tracker is meant to track a dot (connected pixels with same gray level) on a vpImage.