From 4784eb7f29875013f74b10897092a90edfd952cc Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Wed, 4 Oct 2023 18:27:26 +0200 Subject: [PATCH 1/2] Polish Biclops PT unit material - Introduce an image to explain where the end-effector frame is located - Update IBVS example to use a realsense camera and an AprilTag --- .../visual-servo/img-biclops-frames.jpg | Bin 0 -> 18359 bytes .../visual-servo/img-biclops-frames.pptx | Bin 0 -> 125919 bytes example/servo-biclops/moveBiclops.cpp | 179 ++++---- .../servoBiclopsPoint2DArtVelocity.cpp | 434 +++++++----------- .../include/visp3/robot/vpRobotBiclops.h | 15 +- 5 files changed, 267 insertions(+), 361 deletions(-) create mode 100644 doc/image/tutorial/visual-servo/img-biclops-frames.jpg create mode 100644 doc/image/tutorial/visual-servo/img-biclops-frames.pptx diff --git a/doc/image/tutorial/visual-servo/img-biclops-frames.jpg b/doc/image/tutorial/visual-servo/img-biclops-frames.jpg new file mode 100644 index 0000000000000000000000000000000000000000..218922584bc7f0f24df2274f33b1119b1498cfb2 GIT binary patch literal 18359 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 AkN^Mx literal 0 HcmV?d00001 diff --git a/doc/image/tutorial/visual-servo/img-biclops-frames.pptx b/doc/image/tutorial/visual-servo/img-biclops-frames.pptx new file mode 100644 index 0000000000000000000000000000000000000000..be04329f3a8f09efd56ea7ab920ee59de626b0c5 GIT binary patch literal 125919 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ξ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�?;BG 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 #include @@ -64,14 +54,12 @@ #define GETOPTARGS "c:h" /* - -Print the program options. - - \param name : Program name. - \param badparam : Bad parameter name. - \param conf : Biclops configuration file. - -*/ + * Print the program options. + * + * \param name : Program name. + * \param badparam : Bad parameter name. + * \param conf : Biclops configuration file. + */ void usage(const char *name, const char *badparam, std::string conf) { fprintf(stdout, "\n\ @@ -80,7 +68,7 @@ Move the biclops robot\n\ SYNOPSIS\n\ %s [-c ] [-h]\n\ ", - name); +name); fprintf(stdout, "\n\ OPTIONS: Default\n\ @@ -95,16 +83,14 @@ OPTIONS: Default\n\ } /*! - -Set the program options. - - \param argc : Command line number of parameters. - \param argv : Array of command line parameters. - \param conf : Biclops configuration file. - - \return false if the program has to be stopped, true otherwise. - -*/ + * Set the program options. + * + * \param argc : Command line number of parameters. + * \param argv : Array of command line parameters. + * \param conf : Biclops configuration file. + * + * \return false if the program has to be stopped, true otherwise. + */ bool getOptions(int argc, const char **argv, std::string &conf) { const char *optarg_; @@ -147,7 +133,7 @@ int main(int argc, const char **argv) return EXIT_FAILURE; } try { - vpRobotBiclops robot(opt_conf.c_str()); + vpRobotBiclops robot(opt_conf); vpColVector q(vpBiclops::ndof); // desired position vpColVector qdot(vpBiclops::ndof); // desired velocity @@ -160,122 +146,123 @@ int main(int argc, const char **argv) q[0] = vpMath::rad(-10); q[1] = vpMath::rad(-20); std::cout << "Set position in the articular frame: " - << " pan: " << vpMath::deg(q[0]) << " deg" - << " tilt: " << vpMath::deg(q[1]) << " deg" << std::endl; + << " pan: " << vpMath::deg(q[0]) << " deg" + << " tilt: " << vpMath::deg(q[1]) << " deg" << std::endl; robot.setPositioningVelocity(30.); - robot.setPosition(vpRobot::ARTICULAR_FRAME, q); + robot.setPosition(vpRobot::JOINT_STATE, q); - robot.getPosition(vpRobot::ARTICULAR_FRAME, qm); + robot.getPosition(vpRobot::JOINT_STATE, qm); std::cout << "Position in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; - robot.getVelocity(vpRobot::ARTICULAR_FRAME, qm); + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + robot.getVelocity(vpRobot::JOINT_STATE, qm); std::cout << "Velocity in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; q[0] = vpMath::rad(10); q[1] = vpMath::rad(20); std::cout << "Set position in the articular frame: " - << " pan: " << vpMath::deg(q[0]) << " deg" - << " tilt: " << vpMath::deg(q[1]) << " deg" << std::endl; + << " pan: " << vpMath::deg(q[0]) << " deg" + << " tilt: " << vpMath::deg(q[1]) << " deg" << std::endl; robot.setPositioningVelocity(10); - robot.setPosition(vpRobot::ARTICULAR_FRAME, q); + robot.setPosition(vpRobot::JOINT_STATE, q); - robot.getPosition(vpRobot::ARTICULAR_FRAME, qm); + robot.getPosition(vpRobot::JOINT_STATE, qm); std::cout << "Position in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; - robot.getVelocity(vpRobot::ARTICULAR_FRAME, qm); + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + robot.getVelocity(vpRobot::JOINT_STATE, qm); std::cout << "Velocity in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; std::cout << "Set STATE_VELOCITY_CONTROL" << std::endl; robot.setRobotState(vpRobot::STATE_VELOCITY_CONTROL); - robot.getPosition(vpRobot::ARTICULAR_FRAME, qm); + robot.getPosition(vpRobot::JOINT_STATE, qm); std::cout << "Position in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " deg" - << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; - robot.getVelocity(vpRobot::ARTICULAR_FRAME, qm); + << " pan: " << vpMath::deg(qm[0]) << " deg" + << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; + robot.getVelocity(vpRobot::JOINT_STATE, qm); std::cout << "Velocity in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; qdot = 0; // qdot[0] = vpMath::rad(0.1) ; qdot[1] = vpMath::rad(25); - std::cout << "Set articular frame velocity " - << " pan: " << vpMath::deg(qdot[0]) << " deg/s" - << " tilt: " << vpMath::deg(qdot[1]) << " deg/s" << std::endl; - robot.setVelocity(vpRobot::ARTICULAR_FRAME, qdot); + std::cout << "Set articular frame velocity for 5 sec" + << " pan: " << vpMath::deg(qdot[0]) << " deg/s" + << " tilt: " << vpMath::deg(qdot[1]) << " deg/s" << std::endl; + robot.setVelocity(vpRobot::JOINT_STATE, qdot); // waits 5000ms vpTime::wait(5000.0); - robot.getPosition(vpRobot::ARTICULAR_FRAME, qm); + robot.getPosition(vpRobot::JOINT_STATE, qm); std::cout << "Position in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " deg" - << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; - robot.getVelocity(vpRobot::ARTICULAR_FRAME, qm); + << " pan: " << vpMath::deg(qm[0]) << " deg" + << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; + robot.getVelocity(vpRobot::JOINT_STATE, qm); std::cout << "Velocity in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; qdot = 0; // qdot[0] = vpMath::rad(0.1) ; qdot[1] = -vpMath::rad(25); - std::cout << "Set articular frame velocity " - << " pan: " << vpMath::deg(qdot[0]) << " deg/s" - << " tilt: " << vpMath::deg(qdot[1]) << " deg/s" << std::endl; - robot.setVelocity(vpRobot::ARTICULAR_FRAME, qdot); + std::cout << "Set articular frame velocity for 3 sec" + << " pan: " << vpMath::deg(qdot[0]) << " deg/s" + << " tilt: " << vpMath::deg(qdot[1]) << " deg/s" << std::endl; + robot.setVelocity(vpRobot::JOINT_STATE, qdot); // waits 3000 ms vpTime::wait(3000.0); - robot.getPosition(vpRobot::ARTICULAR_FRAME, qm); + robot.getPosition(vpRobot::JOINT_STATE, qm); std::cout << "Position in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " deg" - << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; - robot.getVelocity(vpRobot::ARTICULAR_FRAME, qm); + << " pan: " << vpMath::deg(qm[0]) << " deg" + << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; + robot.getVelocity(vpRobot::JOINT_STATE, qm); std::cout << "Velocity in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; qdot = 0; // qdot[0] = vpMath::rad(0.1) ; qdot[1] = vpMath::rad(10); - std::cout << "Set articular frame velocity " - << " pan: " << vpMath::deg(qdot[0]) << " deg/s" - << " tilt: " << vpMath::deg(qdot[1]) << " deg/s" << std::endl; - robot.setVelocity(vpRobot::ARTICULAR_FRAME, qdot); + std::cout << "Set articular frame velocity for 2 sec" + << " pan: " << vpMath::deg(qdot[0]) << " deg/s" + << " tilt: " << vpMath::deg(qdot[1]) << " deg/s" << std::endl; + robot.setVelocity(vpRobot::JOINT_STATE, qdot); // waits 2000 ms vpTime::wait(2000.0); - robot.getPosition(vpRobot::ARTICULAR_FRAME, qm); + robot.getPosition(vpRobot::JOINT_STATE, qm); std::cout << "Position in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " deg" - << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; - robot.getVelocity(vpRobot::ARTICULAR_FRAME, qm); + << " pan: " << vpMath::deg(qm[0]) << " deg" + << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; + robot.getVelocity(vpRobot::JOINT_STATE, qm); std::cout << "Velocity in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; qdot = 0; qdot[0] = vpMath::rad(-5); // qdot[1] = vpMath::rad(-5); - std::cout << "Set articular frame velocity " - << " pan: " << vpMath::deg(qdot[0]) << " deg/s" - << " tilt: " << vpMath::deg(qdot[1]) << " deg/s" << std::endl; - robot.setVelocity(vpRobot::ARTICULAR_FRAME, qdot); + std::cout << "Set articular frame velocity for 2 sec" + << " pan: " << vpMath::deg(qdot[0]) << " deg/s" + << " tilt: " << vpMath::deg(qdot[1]) << " deg/s" << std::endl; + robot.setVelocity(vpRobot::JOINT_STATE, qdot); // waits 2000 ms vpTime::wait(2000.0); - robot.getPosition(vpRobot::ARTICULAR_FRAME, qm); + robot.getPosition(vpRobot::JOINT_STATE, qm); std::cout << "Position in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " deg" - << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; - robot.getVelocity(vpRobot::ARTICULAR_FRAME, qm); + << " pan: " << vpMath::deg(qm[0]) << " deg" + << " tilt: " << vpMath::deg(qm[1]) << " deg" << std::endl; + robot.getVelocity(vpRobot::JOINT_STATE, qm); std::cout << "Velocity in the articular frame: " - << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; + << " pan: " << vpMath::deg(qm[0]) << " tilt: " << vpMath::deg(qm[1]) << std::endl; return EXIT_SUCCESS; - } catch (const vpException &e) { + } + catch (const vpException &e) { std::cout << "Catch an exception: " << e.getMessage() << std::endl; return EXIT_FAILURE; } diff --git a/example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp b/example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp index 7cf6e1cce1..f3214f9a87 100644 --- a/example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp +++ b/example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp @@ -1,5 +1,4 @@ -/**************************************************************************** - * +/* * ViSP, open source Visual Servoing Platform software. * Copyright (C) 2005 - 2023 by Inria. All rights reserved. * @@ -32,130 +31,83 @@ * tests the control law * eye-in-hand control * velocity computed in articular - * -*****************************************************************************/ - -/*! - \file servoBiclopsPoint2DArtVelocity.cpp - - \brief Example of eye-in-hand control law. We control here a real robot, the - biclops robot (pan-tilt head provided by Traclabs). The velocity is computed - in articular. The visual feature is the center of gravity of a point. - -*/ + */ /*! - \example servoBiclopsPoint2DArtVelocity.cpp - - Example of eye-in-hand control law. We control here a real robot, the - biclops robot (pan-tilt head provided by Traclabs). The velocity is computed - in articular. The visual feature is the center of gravity of a point. - -*/ + * \file servoBiclopsPoint2DArtVelocity.cpp + * \example servoBiclopsPoint2DArtVelocity.cpp + * + * Example of eye-in-hand control law. We control here a real robot, the + * biclops robot (pan-tilt head provided by Traclabs). The velocity is computed + * in articular. The visual feature is the center of gravity of a point. + */ -#include -#include #include -#include // Debug trace -#include -#if (defined(VISP_HAVE_BICLOPS) && (defined(VISP_HAVE_DC1394) || defined(VISP_HAVE_DIRECTSHOW))) -#ifdef VISP_HAVE_PTHREAD -#include -#endif +#if defined(VISP_HAVE_BICLOPS) && defined(VISP_HAVE_APRILTAG) && defined(VISP_HAVE_REALSENSE2) #include +#include +#include #include +#include #include #include #include -#include -#include - -#include -#include -#include -#include -#include #include #include +#include #include #include #include #include -// Exception -#include - -#ifdef VISP_HAVE_PTHREAD -pthread_mutex_t mutexEndLoop = PTHREAD_MUTEX_INITIALIZER; -#endif - -void signalCtrC(int /* signumber */) -{ -#ifdef VISP_HAVE_PTHREAD - pthread_mutex_unlock(&mutexEndLoop); -#endif - vpTime::wait(10); - vpTRACE("Ctrl-C pressed..."); -} - // List of allowed command line options #define GETOPTARGS "c:d:h" /*! - - Print the program options. - - \param name : Program name. - \param badparam : Bad parameter name. - \param conf : Robot configuration file. - \param debugdir : Debug file directory. - \param user : Username. - + * Print the program options. + * + * \param name : Program name. + * \param badparam : Bad parameter name. + * \param conf : Robot configuration file. */ -void usage(const char *name, const char *badparam, std::string &conf, std::string &debugdir, std::string &user) +void usage(const char *name, const char *badparam, std::string &conf) { fprintf(stdout, "\n\ Example of eye-in-hand control law. We control here a real robot, the biclops\n\ - robot (pan-tilt head provided by Traclabs). The velocity is\n\ - computed in articular. The visual feature is the center of gravity of a\n\ - point.\n\ + robot (pan-tilt head provided by Traclabs) equipped with a Realsense camera\n\ + mounted on its end-effector. The velocity to apply to the PT head is joint\n\ + velocity. The visual feature is a point corresponding to the center of\n\ + gravity of an AprilTag. \n\ \n\ SYNOPSIS\n\ - %s [-c ] [-d ] [-h]\n", + %s [-c ] [-h]\n", name); fprintf(stdout, "\n\ OPTIONS: Default\n\ -c %s\n\ - Sets the biclops robot configuration file.\n\n\ - -d %s\n\ - Sets the debug file directory.\n\ - From this directory, creates the\"%s\"\n\ - subdirectory depending on the username, where\n\ - it writes biclops.txt file.\n", - conf.c_str(), debugdir.c_str(), user.c_str()); + Sets the biclops robot configuration file.\n", + conf.c_str()); if (badparam) { fprintf(stderr, "ERROR: \n"); fprintf(stderr, "\nBad parameter [%s]\n", badparam); } } -/*! - -Set the program options. - \param argc : Command line number of parameters. - \param argv : Array of command line parameters. - \param conf : Robot configuration file. - \param debugdir : Debug file directory. - \param user : Username. - - \return false if the program has to be stopped, true otherwise. - -*/ -bool getOptions(int argc, const char **argv, std::string &conf, std::string &debugdir, std::string &user) +/*! + * Set the program options. + * + * \param argc : Command line number of parameters. + * \param argv : Array of command line parameters. + * \param conf : Robot configuration file. + * + * \return false if the program has to be stopped, true otherwise. + * + */ +bool getOptions(int argc, const char **argv, std::string &conf) { const char *optarg_; int c; @@ -165,16 +117,13 @@ bool getOptions(int argc, const char **argv, std::string &conf, std::string &deb case 'c': conf = optarg_; break; - case 'd': - debugdir = optarg_; - break; case 'h': - usage(argv[0], NULL, conf, debugdir, user); + usage(argv[0], NULL, conf); return false; break; default: - usage(argv[0], optarg_, conf, debugdir, user); + usage(argv[0], optarg_, conf); return false; break; } @@ -182,7 +131,7 @@ bool getOptions(int argc, const char **argv, std::string &conf, std::string &deb if ((c == 1) || (c == -1)) { // standalone param or error - usage(argv[0], NULL, conf, debugdir, user); + usage(argv[0], NULL, conf); std::cerr << "ERROR: " << std::endl; std::cerr << " Bad argument " << optarg_ << std::endl << std::endl; return false; @@ -193,223 +142,192 @@ bool getOptions(int argc, const char **argv, std::string &conf, std::string &deb int main(int argc, const char **argv) { - std::cout << std::endl; - std::cout << "-------------------------------------------------------" << std::endl; - std::cout << " Test program for vpServo " << std::endl; - std::cout << " Eye-in-hand task control, velocity computed in the camera frame" << std::endl; - std::cout << " Simulation " << std::endl; - std::cout << " task : servo a point " << std::endl; - std::cout << "-------------------------------------------------------" << std::endl; - std::cout << std::endl; - try { - -#ifdef VISP_HAVE_PTHREAD - pthread_mutex_lock(&mutexEndLoop); -#endif - signal(SIGINT, &signalCtrC); - - // default unix configuration file path + // Default unix configuration file path std::string opt_conf = "/usr/share/BiclopsDefault.cfg"; - std::string username; - std::string debugdir; - std::string opt_debugdir; - -// Set the default output path -#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__))) // UNIX - opt_debugdir = "/tmp"; -#elif defined(_WIN32) - opt_debugdir = "C:/temp"; -#endif - - // Get the user login name - vpIoTools::getUserName(username); - // Read the command line options - if (getOptions(argc, argv, opt_conf, opt_debugdir, username) == false) { + if (getOptions(argc, argv, opt_conf) == false) { return EXIT_FAILURE; } - // Get the option value - if (!opt_debugdir.empty()) - debugdir = opt_debugdir; - - // Append to the output path string, the login name of the user - std::string dirname = debugdir + "/" + username; - - // Test if the output path exist. If no try to create it - if (vpIoTools::checkDirectory(dirname) == false) { - try { - // Create the dirname - vpIoTools::makeDirectory(dirname); - } catch (...) { - usage(argv[0], NULL, opt_conf, debugdir, username); - std::cerr << std::endl << "ERROR:" << std::endl; - std::cerr << " Cannot create " << dirname << std::endl; - std::cerr << " Check your -d " << debugdir << " option " << std::endl; - return EXIT_FAILURE; - } - } - - // Create the debug file: debugdir/$user/biclops.txt - std::string filename; - filename = debugdir + "/biclops.txt"; - FILE *fd = fopen(filename.c_str(), "w"); + // Initialize PTU + vpRobotBiclops robot(opt_conf); + + /* + * Biclops DH2 has the following axis orientation + * + * tilt + <---- (end-effector-frame) + * | + * \/ pan + + * + * The end-effector-frame from PT unit rear view is the following + * + * /\ x + * | + * (e) ----> y + * + * + * + * The camera frame attached to the PT unit is the following (rear view) + * + * (c) ----> x + * | + * \/ y + * + * The corresponding cRe (camera to end-effector rotation matrix) is then the following + * + * ( 0 1 0) + * cRe = (-1 0 0) + * ( 0 0 1) + * + * Translation cte (camera to end-effector) can be neglected + * + * (0) + * cte = (0) + * (0) + */ - vpRobotBiclops robot(opt_conf.c_str()); robot.setDenavitHartenbergModel(vpBiclops::DH2); + vpRotationMatrix cRe; + cRe[0][0] = 0; cRe[0][1] = 1; cRe[0][2] = 0; + cRe[1][0] = -1; cRe[1][1] = 0; cRe[1][2] = 0; + cRe[2][0] = 0; cRe[2][1] = 0; cRe[2][2] = 1; + vpTranslationVector cte; // By default set to 0 - { - vpColVector q(2); - q = 0; - robot.setRobotState(vpRobot::STATE_POSITION_CONTROL); - robot.setPosition(vpRobot::ARTICULAR_FRAME, q); - } - - vpImage I; - -#if defined VISP_HAVE_DC1394 - vp1394TwoGrabber g; -#elif defined VISP_HAVE_DIRECTSHOW - vpDirectShowGrabber g; -#endif + // Robot Jacobian (expressed in the end-effector frame) + vpMatrix eJe; + // Camera to end-effector frame transformation + vpHomogeneousMatrix cMe(cte, cRe); + // Velocity twist transformation to express a velocity from end-effector to camera frame + vpVelocityTwistMatrix cVe(cMe); + + // Initialize grabber + vpRealSense2 g; + rs2::config config; + config.disable_stream(RS2_STREAM_DEPTH); + config.disable_stream(RS2_STREAM_INFRARED); + config.enable_stream(RS2_STREAM_COLOR, 640, 480, RS2_FORMAT_RGBA8, 30); + g.open(config); + + std::cout << "Read camera parameters from Realsense device" << std::endl; + vpCameraParameters cam; + cam = g.getCameraParameters(RS2_STREAM_COLOR, vpCameraParameters::perspectiveProjWithoutDistortion); - g.open(I); + vpColVector q(vpBiclops::ndof); + q = 0; + std::cout << "Move PT to initial position: " << q.t() << std::endl; + robot.setRobotState(vpRobot::STATE_POSITION_CONTROL); + robot.setPosition(vpRobot::JOINT_STATE, q); - try { - g.acquire(I); - } catch (...) { - vpERROR_TRACE(" Error caught"); - return EXIT_FAILURE; - } + vpImage I; + g.acquire(I); -// We open a window using either X11 or GTK or GDI. -// Its size is automatically defined by the image (I) size + // We open a window using either X11 or GTK or GDI. + // Its size is automatically defined by the image (I) size #if defined(VISP_HAVE_X11) vpDisplayX display(I, 100, 100, "Display X..."); #elif defined(VISP_HAVE_GTK) vpDisplayGTK display(I, 100, 100, "Display GTK..."); -#elif defined(_WIN32) +#elif defined(VISP_HAVE_GDI) vpDisplayGDI display(I, 100, 100, "Display GDI..."); #endif - try { - vpDisplay::display(I); - vpDisplay::flush(I); - } catch (...) { - vpERROR_TRACE(" Error caught"); - return EXIT_FAILURE; - } - - vpServo task; - - vpDot dot; - - try { - std::cout << "Click on a dot to initialize the tracking..." << std::endl; - dot.setGraphics(true); - dot.initTracking(I); - dot.track(I); - vpERROR_TRACE("after dot.initTracking(I) "); - } catch (...) { - vpERROR_TRACE(" Error caught"); - return EXIT_FAILURE; - } + vpDisplay::display(I); + vpDisplay::flush(I); - vpCameraParameters cam; + vpDetectorAprilTag detector; - // sets the current position of the visual feature - vpFeaturePoint p; - vpFeatureBuilder::create(p, cam, dot); // retrieve x,y and Z of the vpPoint structure + vpServo task; - p.set_Z(1); - // sets the desired position of the visual feature - vpFeaturePoint pd; + // Create current and desired point visual feature + vpFeaturePoint p, pd; + // Sets the desired position of the visual feature + // Here we set Z desired to 1 meter, and (x,y)=(0,0) to center the tag in the image pd.buildFrom(0, 0, 1); - // define the task + // Define the task // - we want an eye-in-hand control law - // - articular velocity are computed + // - joint velocities are computed + // - interaction matrix is the one at desired position task.setServo(vpServo::EYEINHAND_L_cVe_eJe); task.setInteractionMatrixType(vpServo::DESIRED, vpServo::PSEUDO_INVERSE); - - vpTRACE("Set the position of the end-effector frame in the camera frame"); - vpHomogeneousMatrix cMe; - // robot.get_cMe(cMe) ; - - vpVelocityTwistMatrix cVe; - robot.get_cVe(cVe); - std::cout << cVe << std::endl; task.set_cVe(cVe); - - std::cout << "Click in the image to start the servoing..." << std::endl; - vpDisplay::getClick(I); - - // Set the Jacobian (expressed in the end-effector frame) - vpMatrix eJe; - robot.get_eJe(eJe); - task.set_eJe(eJe); - - // we want to see a point on a point + // We want to see a point on a point task.addFeature(p, pd); - - // set the gain + // Set the gain task.setLambda(0.2); - // Display task information - task.print(); - robot.setRobotState(vpRobot::STATE_VELOCITY_CONTROL); - unsigned int iter = 0; - vpTRACE("\t loop"); -#ifdef VISP_HAVE_PTHREAD - while (0 != pthread_mutex_trylock(&mutexEndLoop)) -#else - for (;;) -#endif - { - std::cout << "---------------------------------------------" << iter << std::endl; + bool quit = false; + bool send_velocities = false; + vpColVector q_dot; + while (!quit) { g.acquire(I); vpDisplay::display(I); - dot.track(I); + { + std::stringstream ss; + ss << "Left click to " << (send_velocities ? "stop the robot" : "servo the robot") << ", right click to quit."; + vpDisplay::displayText(I, 20, 20, ss.str(), vpColor::red); + } - vpFeatureBuilder::create(p, cam, dot); + if (detector.detect(I)) { + // We consider the first tag only + vpImagePoint cog = detector.getCog(0); // 0 is the id of the first tag - // get the jacobian - robot.get_eJe(eJe); - task.set_eJe(eJe); + vpFeatureBuilder::create(p, cam, cog); - // std::cout << (vpMatrix)cVe*eJe << std::endl ; + // Get the jacobian + robot.get_eJe(eJe); + task.set_eJe(eJe); - vpColVector v; - v = task.computeControlLaw(); + q_dot = task.computeControlLaw(); - vpServoDisplay::display(task, cam, I); - vpDisplay::flush(I); + vpServoDisplay::display(task, cam, I); + vpDisplay::flush(I); - std::cout << "v: " << v.t(); - robot.setVelocity(vpRobot::ARTICULAR_FRAME, v); + std::cout << "q_dot: " << q_dot.t() << std::endl; - std::cout << "|| s - s* || = " << (task.getError()).sumSquare() << std::endl; + std::cout << "|| s - s* || = " << (task.getError()).sumSquare() << std::endl; + } + else { + q_dot = 0; + } + if (!send_velocities) { + q_dot = 0; + } - { - vpColVector s_minus_sStar(2); - s_minus_sStar = task.s - task.sStar; - fprintf(fd, "%f %f %f %f %f\n", v[0], v[1], s_minus_sStar[0], s_minus_sStar[1], (task.getError()).sumSquare()); + robot.setVelocity(vpRobot::JOINT_STATE, q_dot); + + vpDisplay::flush(I); + + vpMouseButton::vpMouseButtonType button; + if (vpDisplay::getClick(I, button, false)) { + switch (button) { + case vpMouseButton::button1: + send_velocities = !send_velocities; + break; + + case vpMouseButton::button3: + quit = true; + q_dot = 0; + break; + + default: + break; + } } } - std::cout << "Display task information " << std::endl; - task.print(); - - fclose(fd); + std::cout << "Stop the robot " << std::endl; + robot.setRobotState(vpRobot::STATE_STOP); return EXIT_SUCCESS; - } catch (const vpException &e) { + } + catch (const vpException &e) { std::cout << "Catch an exception: " << e.getMessage() << std::endl; return EXIT_FAILURE; } diff --git a/modules/robot/include/visp3/robot/vpRobotBiclops.h b/modules/robot/include/visp3/robot/vpRobotBiclops.h index aec8573df1..bf1b93c9e5 100644 --- a/modules/robot/include/visp3/robot/vpRobotBiclops.h +++ b/modules/robot/include/visp3/robot/vpRobotBiclops.h @@ -1,5 +1,4 @@ -/**************************************************************************** - * +/* * ViSP, open source Visual Servoing Platform software. * Copyright (C) 2005 - 2023 by Inria. All rights reserved. * @@ -30,8 +29,7 @@ * * Description: * Interface for the Biclops robot. - * -*****************************************************************************/ + */ #ifndef _vpRobotBiclops_h_ #define _vpRobotBiclops_h_ @@ -67,14 +65,18 @@ \brief Interface for the biclops, pan, tilt head control. + Two different models are proposed and can be set using vpBiclops::DenavitHartenbergModel. + The vpBiclops::DH1 and vpBiclops::DH2 model differ in the orientation of the tilt axis. + The following image gives the location of the end-effector frame and a potential camera frame. + + \image html img-biclops-frames.jpg Biclops PT models + See http://www.traclabs.com/biclopspt.html for more details. This class provide a position and a speed control interface for the biclops head. To manage the biclops joint limits in speed control, a control loop is running in a separate thread implemented in vpRobotBiclopsSpeedControlLoop(). - The control of the head is done by vpRobotBiclopsController class. - \warning Velocity control mode is not exported from the top-level Biclops API class provided by Traclabs. That means that there is no protection in this mode to prevent an axis from striking its hard limit. In position mode, @@ -86,7 +88,6 @@ speed/power can damage the unit, damage due to velocity mode commanding is under user responsibility. - */ class VISP_EXPORT vpRobotBiclops : public vpBiclops, public vpRobot { From 88afa65749becb9c7b64411ddebceffb876c5879 Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Thu, 5 Oct 2023 12:06:15 +0200 Subject: [PATCH 2/2] Fix build when biclops sdk is not used --- example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp b/example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp index f3214f9a87..2ef49b5a8a 100644 --- a/example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp +++ b/example/servo-biclops/servoBiclopsPoint2DArtVelocity.cpp @@ -42,6 +42,8 @@ * in articular. The visual feature is the center of gravity of a point. */ +#include + #include #if defined(VISP_HAVE_BICLOPS) && defined(VISP_HAVE_APRILTAG) && defined(VISP_HAVE_REALSENSE2)