39 #ifndef vpRobotWireFrameSimulator_HH
40 #define vpRobotWireFrameSimulator_HH
47 #include <visp3/core/vpConfig.h>
49 #if defined(VISP_HAVE_MODULE_GUI) && ((defined(_WIN32) && !defined(WINRT_8_0)) || defined(VISP_HAVE_PTHREAD))
58 #elif defined(VISP_HAVE_PTHREAD)
62 #include <visp3/gui/vpDisplayD3D.h>
63 #include <visp3/gui/vpDisplayGDI.h>
64 #include <visp3/gui/vpDisplayGTK.h>
65 #include <visp3/gui/vpDisplayOpenCV.h>
66 #include <visp3/gui/vpDisplayX.h>
67 #include <visp3/robot/vpRobot.h>
68 #include <visp3/robot/vpRobotSimulator.h>
69 #include <visp3/robot/vpWireFrameSimulator.h>
93 typedef enum { MODEL_3D, MODEL_DH } vpDisplayRobotType;
125 HANDLE mutex_artCoord;
126 HANDLE mutex_velocity;
127 HANDLE mutex_display;
128 #elif defined(VISP_HAVE_PTHREAD)
152 #if defined VISP_HAVE_X11
154 #elif defined VISP_HAVE_GDI
156 #elif defined VISP_HAVE_OPENCV
158 #elif defined VISP_HAVE_D3D9
160 #elif defined VISP_HAVE_GTK
226 if ((std::fabs(px_ext - 1.) >
vpMath::maximum(px_ext, 1.) * std::numeric_limits<double>::epsilon()) &&
227 (std::fabs(py_ext - 1) >
vpMath::maximum(py_ext, 1.) * std::numeric_limits<double>::epsilon()))
258 void initScene(
const vpSceneObject &obj,
const vpSceneDesiredObject &desiredObject);
259 void initScene(
const char *obj,
const char *desiredObject);
260 void initScene(
const vpSceneObject &obj);
281 constantSamplingTimeMode = _constantSamplingTimeMode;
348 this->delta_t_ = delta_t;
375 static DWORD WINAPI launcher(LPVOID lpParam)
380 #elif defined(VISP_HAVE_PTHREAD)
407 #if defined(WINRT_8_1)
408 WaitForSingleObjectEx(mutex_artCoord, INFINITE, FALSE);
410 WaitForSingleObject(mutex_artCoord, INFINITE);
413 artCoordTmp = artCoord;
414 ReleaseMutex(mutex_artCoord);
419 #if defined(WINRT_8_1)
420 WaitForSingleObjectEx(mutex_artCoord, INFINITE, FALSE);
422 WaitForSingleObject(mutex_artCoord, INFINITE);
425 ReleaseMutex(mutex_artCoord);
430 #if defined(WINRT_8_1)
431 WaitForSingleObjectEx(mutex_artVel, INFINITE, FALSE);
433 WaitForSingleObject(mutex_artVel, INFINITE);
436 ReleaseMutex(mutex_artVel);
441 #if defined(WINRT_8_1)
442 WaitForSingleObjectEx(mutex_artVel, INFINITE, FALSE);
444 WaitForSingleObject(mutex_artVel, INFINITE);
447 ReleaseMutex(mutex_artVel);
452 #if defined(WINRT_8_1)
453 WaitForSingleObjectEx(mutex_velocity, INFINITE, FALSE);
455 WaitForSingleObject(mutex_velocity, INFINITE);
458 ReleaseMutex(mutex_velocity);
463 #if defined(WINRT_8_1)
464 WaitForSingleObjectEx(mutex_velocity, INFINITE, FALSE);
466 WaitForSingleObject(mutex_velocity, INFINITE);
469 ReleaseMutex(mutex_velocity);
472 void set_displayBusy(
const bool &status)
474 #if defined(WINRT_8_1)
475 WaitForSingleObjectEx(mutex_display, INFINITE, FALSE);
477 WaitForSingleObject(mutex_display, INFINITE);
479 displayBusy = status;
480 ReleaseMutex(mutex_display);
482 bool get_displayBusy()
484 #if defined(WINRT_8_1)
485 WaitForSingleObjectEx(mutex_display, INFINITE, FALSE);
487 WaitForSingleObject(mutex_display, INFINITE);
489 bool status = displayBusy;
492 ReleaseMutex(mutex_display);
496 #elif defined(VISP_HAVE_PTHREAD)
499 pthread_mutex_lock(&mutex_artCoord);
501 artCoordTmp = artCoord;
502 pthread_mutex_unlock(&mutex_artCoord);
507 pthread_mutex_lock(&mutex_artCoord);
509 pthread_mutex_unlock(&mutex_artCoord);
514 pthread_mutex_lock(&mutex_artVel);
516 pthread_mutex_unlock(&mutex_artVel);
521 pthread_mutex_lock(&mutex_artVel);
523 pthread_mutex_unlock(&mutex_artVel);
528 pthread_mutex_lock(&mutex_velocity);
530 pthread_mutex_unlock(&mutex_velocity);
535 pthread_mutex_lock(&mutex_velocity);
537 pthread_mutex_unlock(&mutex_velocity);
542 pthread_mutex_lock(&mutex_display);
543 displayBusy = status;
544 pthread_mutex_unlock(&mutex_display);
548 pthread_mutex_lock(&mutex_display);
549 bool status = displayBusy;
552 pthread_mutex_unlock(&mutex_display);
Generic class defining intrinsic camera parameters.
Implementation of column vector and the associated operations.
Class to define RGB colors available for display functionnalities.
Display for windows using Direct3D 3rd party. Thus to enable this class Direct3D should be installed....
Display for windows using GDI (available on any windows 32 platform).
The vpDisplayGTK allows to display image using the GTK 3rd party library. Thus to enable this class G...
The vpDisplayOpenCV allows to display image using the OpenCV library. Thus to enable this class OpenC...
Use the X11 console to display images on unix-like OS. Thus to enable this class X11 should be instal...
Implementation of an homogeneous matrix and operations on such kind of matrices.
unsigned int getWidth() const
unsigned int getHeight() const
static Type maximum(const Type &a, const Type &b)
static Type minimum(const Type &a, const Type &b)
This class aims to be a basis used to create all the robot simulators.
This class aims to be a basis used to create all the simulators of robots.
virtual void computeArticularVelocity()=0
vpColVector get_velocity()
vpColVector get_artCoord()
void setDisplayRobotType(const vpDisplayRobotType dispType)
virtual int isInJointLimit()=0
void setGraphicsThickness(unsigned int thickness)
void set_velocity(const vpColVector &vel)
pthread_mutex_t mutex_display
void setCurrentViewColor(const vpColor &col)
void set_displayBusy(const bool &status)
pthread_mutex_t mutex_fMi
vpHomogeneousMatrix * fMi
vpCameraParameters cameraParam
pthread_mutex_t mutex_artCoord
void setDesiredViewColor(const vpColor &col)
vpHomogeneousMatrix getExternalCameraPosition() const
void setVerbose(bool verbose)
vpHomogeneousMatrix get_fMo() const
static void * launcher(void *arg)
vpDisplayRobotType displayType
void setConstantSamplingTimeMode(const bool _constantSamplingTimeMode)
void set_artCoord(const vpColVector &coord)
void setSingularityManagement(bool sm)
void setCameraColor(const vpColor &col)
unsigned int jointLimitArt
virtual void initArms()=0
vpCameraParameters getExternalCameraParameters() const
bool constantSamplingTimeMode
virtual void updateArticularPosition()=0
void setDesiredCameraPosition(const vpHomogeneousMatrix &cdMo_)
virtual void get_fMi(vpHomogeneousMatrix *fMit)=0
pthread_mutex_t mutex_velocity
void set_fMo(const vpHomogeneousMatrix &fMo_)
void setSamplingTime(const double &delta_t)
void setExternalCameraPosition(const vpHomogeneousMatrix &camMf_)
void set_artVel(const vpColVector &vel)
pthread_mutex_t mutex_artVel
bool singularityManagement
Implementation of a wire frame simulator. Compared to the vpSimulator class, it does not require thir...
vpHomogeneousMatrix getExternalCameraPosition() const
void initScene(const vpSceneObject &obj, const vpSceneDesiredObject &desiredObject)
vpHomogeneousMatrix get_cMo() const
void setExternalCameraPosition(const vpHomogeneousMatrix &cam_Mf)
void setDesiredCameraPosition(const vpHomogeneousMatrix &cdMo_)
VISP_EXPORT double getMinTimeForUsleepCall()