36 #include <visp3/core/vpConfig.h>
38 #if defined(VISP_HAVE_MODULE_GUI) && ((defined(_WIN32) && !defined(WINRT_8_0)) || defined(VISP_HAVE_PTHREAD))
39 #include <visp3/robot/vpRobotWireFrameSimulator.h>
40 #include <visp3/robot/vpSimulatorViper850.h>
42 #include "../wireframe-simulator/vpBound.h"
43 #include "../wireframe-simulator/vpScene.h"
44 #include "../wireframe-simulator/vpVwstack.h"
51 artCoord(), artVel(), velocity(),
53 #elif defined(VISP_HAVE_PTHREAD)
56 m_mutex_fMi(), m_mutex_eMc(), m_mutex_artVel(), m_mutex_artCoord(), m_mutex_velocity(), m_mutex_display(), m_mutex_robotStop(), m_mutex_frame(), m_mutex_setVelocityCalled(), m_mutex_scene(),
58 robotStop(false), jointLimit(false), jointLimitArt(false), singularityManagement(true), cameraParam(),
59 #if defined(VISP_HAVE_DISPLAY)
62 displayType(MODEL_3D), displayAllowed(true), constantSamplingTimeMode(false), setVelocityCalled(false),
69 #if defined(VISP_HAVE_DISPLAY)
80 artCoord(), artVel(), velocity(),
82 #elif defined(VISP_HAVE_PTHREAD)
85 m_mutex_fMi(), m_mutex_eMc(), m_mutex_artVel(), m_mutex_artCoord(), m_mutex_velocity(), m_mutex_display(), m_mutex_robotStop(), m_mutex_frame(), m_mutex_setVelocityCalled(), m_mutex_scene(),
86 displayBusy(false), robotStop(false), jointLimit(false), jointLimitArt(false), singularityManagement(true),
88 #if defined(VISP_HAVE_DISPLAY)
91 displayType(MODEL_3D), displayAllowed(do_display), constantSamplingTimeMode(false), setVelocityCalled(false),
99 #if defined(VISP_HAVE_DISPLAY)
130 free_Bound_scene(&(this->
camera));
134 free_Bound_scene(&(this->
camera));
154 free_Bound_scene(&(this->
camera));
158 free_Bound_scene(&(this->
camera));
178 free_Bound_scene(&(this->
camera));
182 free_Bound_scene(&(this->
camera));
200 free_Bound_scene(&(this->
camera));
204 free_Bound_scene(&(this->
camera));
239 float o44c[4][4], o44cd[4][4], x, y, z;
240 Matrix
id = IDENTITY_MATRIX;
253 add_vwstack(
"start",
"cop", o44c[3][0], o44c[3][1], o44c[3][2]);
254 x = o44c[2][0] + o44c[3][0];
255 y = o44c[2][1] + o44c[3][1];
256 z = o44c[2][2] + o44c[3][2];
257 add_vwstack(
"start",
"vrp", x, y, z);
258 add_vwstack(
"start",
"vpn", o44c[2][0], o44c[2][1], o44c[2][2]);
259 add_vwstack(
"start",
"vup", o44c[1][0], o44c[1][1], o44c[1][2]);
260 add_vwstack(
"start",
"window", -u, u, -v, v);
264 add_vwstack(
"start",
"cop", o44cd[3][0], o44cd[3][1], o44cd[3][2]);
265 x = o44cd[2][0] + o44cd[3][0];
266 y = o44cd[2][1] + o44cd[3][1];
267 z = o44cd[2][2] + o44cd[3][2];
268 add_vwstack(
"start",
"vrp", x, y, z);
269 add_vwstack(
"start",
"vpn", o44cd[2][0], o44cd[2][1], o44cd[2][2]);
270 add_vwstack(
"start",
"vup", o44cd[1][0], o44cd[1][1], o44cd[1][2]);
271 add_vwstack(
"start",
"window", -u, u, -v, v);
312 float o44c[4][4], o44cd[4][4], x, y, z;
313 Matrix
id = IDENTITY_MATRIX;
326 add_vwstack(
"start",
"cop", o44c[3][0], o44c[3][1], o44c[3][2]);
327 x = o44c[2][0] + o44c[3][0];
328 y = o44c[2][1] + o44c[3][1];
329 z = o44c[2][2] + o44c[3][2];
330 add_vwstack(
"start",
"vrp", x, y, z);
331 add_vwstack(
"start",
"vpn", o44c[2][0], o44c[2][1], o44c[2][2]);
332 add_vwstack(
"start",
"vup", o44c[1][0], o44c[1][1], o44c[1][2]);
333 add_vwstack(
"start",
"window", -u, u, -v, v);
338 add_vwstack(
"start",
"cop", o44cd[3][0], o44cd[3][1], o44cd[3][2]);
339 x = o44cd[2][0] + o44cd[3][0];
340 y = o44cd[2][1] + o44cd[3][1];
341 z = o44cd[2][2] + o44cd[3][2];
342 add_vwstack(
"start",
"vrp", x, y, z);
343 add_vwstack(
"start",
"vpn", o44cd[2][0], o44cd[2][1], o44cd[2][2]);
344 add_vwstack(
"start",
"vup", o44cd[1][0], o44cd[1][1], o44cd[1][2]);
345 add_vwstack(
"start",
"window", -u, u, -v, v);
371 #elif !defined(VISP_BUILD_SHARED_LIBS)
374 void dummy_vpRobotWireFrameSimulator(){};
void resize(unsigned int i, bool flagNullify=true)
void init(vpImage< unsigned char > &I, int win_x=-1, int win_y=-1, const std::string &win_title="")
Implementation of an homogeneous matrix and operations on such kind of matrices.
vpHomogeneousMatrix inverse() const
unsigned int getWidth() const
void resize(unsigned int h, unsigned int w)
resize the image : Image initialization
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.
vpHomogeneousMatrix get_cMo()
void initScene(const vpSceneObject &obj, const vpSceneDesiredObject &desiredObject)
vpRobotWireFrameSimulator()
void set_displayBusy(const bool &status)
void getInternalView(vpImage< vpRGBa > &I)
virtual ~vpRobotWireFrameSimulator()
virtual void get_fMi(vpHomogeneousMatrix *fMit)=0
void setSamplingTime(const double &delta_t)
Implementation of a wire frame simulator. Compared to the vpSimulator class, it does not require thir...
vpSceneDesiredObject desiredObject
@ D_TOOL
A cylindrical tool is attached to the camera.
void initScene(const vpSceneObject &obj, const vpSceneDesiredObject &desiredObject)
void display_scene(Matrix mat, Bound_scene &sc, const vpImage< vpRGBa > &I, const vpColor &color)
bool displayDesiredObject
VISP_EXPORT int wait(double t0, double t)