Visual Servoing Platform
version 3.0.1
|
#include <visp3/robot/vpRobotPtu46.h>
Public Types | |
enum | vpRobotStateType { STATE_STOP, STATE_VELOCITY_CONTROL, STATE_POSITION_CONTROL, STATE_ACCELERATION_CONTROL } |
enum | vpControlFrameType { REFERENCE_FRAME, ARTICULAR_FRAME, CAMERA_FRAME, MIXT_FRAME } |
Static Public Member Functions | |
Static Public Member Functions inherited from vpRobot | |
static vpColVector | saturateVelocities (const vpColVector &v_in, const vpColVector &v_max, bool verbose=false) |
Static Public Attributes | |
static const double | defaultPositioningVelocity = 10.0 |
static const unsigned int | ndof = 2 |
static const float | L = 0.0765f |
static const float | h = 0.068f |
Protected Member Functions | |
Protected Member Functions Inherited from vpRobot | |
vpControlFrameType | setRobotFrame (vpRobot::vpControlFrameType newFrame) |
vpControlFrameType | getRobotFrame (void) const |
Protected Attributes | |
double | maxTranslationVelocity |
double | maxRotationVelocity |
int | nDof |
vpMatrix | eJe |
int | eJeAvailable |
vpMatrix | fJe |
int | fJeAvailable |
int | areJointLimitsAvailable |
double * | qmin |
double * | qmax |
bool | verbose_ |
Static Protected Attributes | |
static const double | maxTranslationVelocityDefault = 0.2 |
static const double | maxRotationVelocityDefault = 0.7 |
Interface for the Directed Perception ptu-46 pan, tilt head .
See http://www.DPerception.com for more details.
This class provide a position and a speed control interface for the ptu-46 head.
Definition at line 84 of file vpRobotPtu46.h.
|
inherited |
Robot control frames.
|
inherited |
vpRobotPtu46::vpRobotPtu46 | ( | const char * | device = "/dev/ttyS0" | ) |
Default constructor.
Initialize the ptu-46 pan, tilt head by opening the serial port.
Definition at line 72 of file vpRobotPtu46.cpp.
References defaultPositioningVelocity, init(), setRobotState(), vpRobot::STATE_STOP, vpDEBUG_TRACE, and vpERROR_TRACE.
vpRobotPtu46::vpRobotPtu46 | ( | vpRobotPtu46 * | pub | ) |
|
virtual |
Destructor. Close the serial connection with the head.
Definition at line 116 of file vpRobotPtu46.cpp.
References setRobotState(), vpRobot::STATE_STOP, and vpERROR_TRACE.
|
inherited |
Compute the direct geometric model of the camera: fMc
q | : Articular position for pan and tilt axis. |
fMc | : Homogeneous matrix corresponding to the direct geometric model of the camera. Describes the transformation between the robot reference frame (called fixed) and the camera frame. |
Definition at line 75 of file vpPtu46.cpp.
References vpException::dimensionError, vpArray2D< Type >::getRows(), vpPtu46::h, vpPtu46::L, vpCDEBUG, and vpERROR_TRACE.
Referenced by vpPtu46::computeMGD().
|
inherited |
Return the direct geometric model of the camera: fMc
q | : Articular position for pan and tilt axis. |
Definition at line 126 of file vpPtu46.cpp.
References vpPtu46::computeMGD().
|
inherited |
Compute the direct geometric model of the camera in terms of pose vector.
q | : Articular position for pan and tilt axis. |
r | : Pose vector corresponding to the transformation between the robot reference frame (called fixed) and the camera frame. |
Definition at line 145 of file vpPtu46.cpp.
References vpPoseVector::buildFrom(), vpPtu46::computeMGD(), and vpHomogeneousMatrix::inverse().
void vpRobotPtu46::get_cMe | ( | vpHomogeneousMatrix & | cMe | ) | const |
Get the homogeneous matrix corresponding to the transformation between the camera frame and the end effector frame. The end effector frame is located on the tilt axis.
cMe | : Homogeneous matrix between camera and end effector frame. |
Definition at line 253 of file vpRobotPtu46.cpp.
References vpPtu46::get_cMe().
void vpRobotPtu46::get_cVe | ( | vpVelocityTwistMatrix & | cVe | ) | const |
Get the twist matrix corresponding to the transformation between the camera frame and the end effector frame. The end effector frame is located on the tilt axis.
cVe | : Twist transformation between camera and end effector frame to expess a velocity skew from end effector frame in camera frame. |
Definition at line 235 of file vpRobotPtu46.cpp.
References vpVelocityTwistMatrix::buildFrom(), and vpPtu46::get_cMe().
|
inherited |
Get the robot jacobian expressed in the end-effector frame.
q | : Articular position for pan and tilt axis. |
eJe | : Jacobian between end effector frame and end effector frame (on tilt axis). |
Definition at line 272 of file vpPtu46.cpp.
References vpException::dimensionError, vpArray2D< Type >::getRows(), vpArray2D< Type >::resize(), and vpERROR_TRACE.
Referenced by get_eJe().
|
virtual |
Get the robot jacobian expressed in the end-effector frame.
eJe | : Jacobian between end effector frame and end effector frame (on tilt axis). |
Implements vpRobot.
Definition at line 269 of file vpRobotPtu46.cpp.
References vpRobot::ARTICULAR_FRAME, vpPtu46::get_eJe(), getPosition(), and vpERROR_TRACE.
|
inherited |
Get the robot jacobian expressed in the robot reference frame
q | : Articular position for pan and tilt axis. |
fJe | : Jacobian between reference frame (or fix frame) and end effector frame (on tilt axis). |
Definition at line 303 of file vpPtu46.cpp.
References vpException::dimensionError, vpArray2D< Type >::getRows(), vpArray2D< Type >::resize(), and vpERROR_TRACE.
Referenced by get_fJe().
|
virtual |
Get the robot jacobian expressed in the robot reference frame
fJe | : Jacobian between reference frame (or fix frame) and end effector frame (on tilt axis). |
Implements vpRobot.
Definition at line 293 of file vpRobotPtu46.cpp.
References vpRobot::ARTICULAR_FRAME, vpPtu46::get_fJe(), getPosition(), and vpERROR_TRACE.
|
virtual |
Get the robot displacement since the last call of this method.
frame | The frame in which the measured displacement is expressed. |
d | The displacement:
|
vpRobotException::wrongStateError | If a not supported frame type is given. |
Implements vpRobot.
Definition at line 885 of file vpRobotPtu46.cpp.
References vpRobot::ARTICULAR_FRAME, vpRobot::CAMERA_FRAME, vpRobot::MIXT_FRAME, vpPtu46::ndof, vpRobot::REFERENCE_FRAME, vpColVector::resize(), vpERROR_TRACE, and vpRobotException::wrongStateError.
|
inherited |
Get the maximal rotation velocity that can be sent to the robot during a velocity control.
Definition at line 275 of file vpRobot.cpp.
Referenced by vpSimulatorAfma6::computeArticularVelocity(), vpSimulatorViper850::computeArticularVelocity(), vpSimulatorAfma6::findHighestPositioningSpeed(), vpSimulatorViper850::findHighestPositioningSpeed(), vpSimulatorAfma6::setPosition(), vpSimulatorCamera::setVelocity(), vpSimulatorPioneer::setVelocity(), vpRobotCamera::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpRobotPioneer::setVelocity(), vpSimulatorAfma6::setVelocity(), vpSimulatorViper850::setVelocity(), vpRobotAfma4::setVelocity(), vpRobotAfma6::setVelocity(), vpRobotViper650::setVelocity(), and vpRobotViper850::setVelocity().
|
inherited |
Get the maximal translation velocity that can be sent to the robot during a velocity control.
Definition at line 250 of file vpRobot.cpp.
Referenced by vpSimulatorAfma6::setPosition(), vpSimulatorCamera::setVelocity(), vpSimulatorPioneer::setVelocity(), vpRobotCamera::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpRobotPioneer::setVelocity(), vpSimulatorAfma6::setVelocity(), vpSimulatorViper850::setVelocity(), vpRobotAfma4::setVelocity(), vpRobotAfma6::setVelocity(), vpRobotViper650::setVelocity(), and vpRobotViper850::setVelocity().
|
virtual |
Return the position of each axis.
frame | : Control frame. This head can only be controlled in articular. |
q | : The position of the axis. |
vpRobotException::wrongStateError | : If a not supported frame type is given. |
Implements vpRobot.
Definition at line 480 of file vpRobotPtu46.cpp.
References vpRobot::ARTICULAR_FRAME, vpRobot::CAMERA_FRAME, vpRobotException::lowLevelError, vpRobot::MIXT_FRAME, vpPtu46::ndof, vpRobot::REFERENCE_FRAME, vpColVector::resize(), vpDEBUG_TRACE, and vpERROR_TRACE.
|
inherited |
Return the current robot position in the specified frame.
Definition at line 218 of file vpRobot.cpp.
double vpRobotPtu46::getPositioningVelocity | ( | void | ) |
Get the velocity in % used for a position control.
Definition at line 329 of file vpRobotPtu46.cpp.
|
inlineprotectedinherited |
Definition at line 170 of file vpRobot.h.
Referenced by vpSimulatorAfma6::computeArticularVelocity(), and vpSimulatorViper850::computeArticularVelocity().
|
inlinevirtualinherited |
Definition at line 141 of file vpRobot.h.
Referenced by vpRobotBiclops::getPosition(), vpRobotBiclops::getVelocity(), vpSimulatorCamera::setPosition(), setPosition(), vpRobotCamera::setPosition(), vpRobotBiclops::setPosition(), vpSimulatorAfma6::setPosition(), vpSimulatorViper850::setPosition(), vpRobotAfma4::setPosition(), vpRobotAfma6::setPosition(), vpRobotViper650::setPosition(), vpRobotViper850::setPosition(), setRobotState(), vpRobotBiclops::setRobotState(), vpSimulatorAfma6::setRobotState(), vpSimulatorViper850::setRobotState(), vpRobotAfma4::setRobotState(), vpRobotAfma6::setRobotState(), vpRobotViper650::setRobotState(), vpRobotViper850::setRobotState(), vpSimulatorCamera::setVelocity(), vpSimulatorPioneer::setVelocity(), vpRobotCamera::setVelocity(), vpSimulatorPioneerPan::setVelocity(), setVelocity(), vpRobotBiclops::setVelocity(), vpSimulatorAfma6::setVelocity(), vpSimulatorViper850::setVelocity(), vpRobotAfma4::setVelocity(), vpRobotAfma6::setVelocity(), vpRobotViper650::setVelocity(), vpRobotViper850::setVelocity(), vpSimulatorAfma6::stopMotion(), vpSimulatorViper850::stopMotion(), vpRobotViper650::stopMotion(), and vpRobotViper850::stopMotion().
void vpRobotPtu46::getVelocity | ( | const vpRobot::vpControlFrameType | frame, |
vpColVector & | q_dot | ||
) |
Get the articular velocity.
frame | : Control frame. This head can only be controlled in articular. |
q_dot | : The measured articular velocity in rad/s. |
vpRobotException::wrongStateError | : If a not supported frame type is given. |
Definition at line 680 of file vpRobotPtu46.cpp.
References vpRobot::ARTICULAR_FRAME, vpRobot::CAMERA_FRAME, vpRobot::MIXT_FRAME, vpPtu46::ndof, vpRobot::REFERENCE_FRAME, vpColVector::resize(), vpERROR_TRACE, and vpRobotException::wrongStateError.
Referenced by getVelocity().
vpColVector vpRobotPtu46::getVelocity | ( | const vpRobot::vpControlFrameType | frame | ) |
Return the articular velocity.
frame | : Control frame. This head can only be controlled in articular. |
vpRobotException::wrongStateError | : If a not supported frame type is given. |
Definition at line 743 of file vpRobotPtu46.cpp.
References getVelocity().
|
virtual |
Open the serial port.
vpRobotException::constructionError | : If the device cannot be oppened. |
Implements vpRobot.
Definition at line 148 of file vpRobotPtu46.cpp.
References vpRobotException::constructionError, vpDEBUG_TRACE, and vpERROR_TRACE.
Referenced by vpRobotPtu46().
bool vpRobotPtu46::readPositionFile | ( | const std::string & | filename, |
vpColVector & | q | ||
) |
Get an articular position from the position file.
filename | : Position file. |
q | : The articular position read in the file. |
Definition at line 771 of file vpRobotPtu46.cpp.
References vpColVector::deg2rad(), vpPtu46::ndof, vpColVector::resize(), and vpIoTools::splitChain().
Referenced by setPosition().
|
staticinherited |
Saturate velocities.
v_in | : Vector of input velocities to saturate. Translation velocities should be expressed in m/s while rotation velocities in rad/s. |
v_max | : Vector of maximal allowed velocities. Maximal translation velocities should be expressed in m/s while maximal rotation velocities in rad/s. |
verbose | : Print a message indicating which axis causes the saturation. |
vpRobotException::dimensionError | : If the input vectors have different dimensions. |
The code below shows how to use this static method in order to saturate a velocity skew vector.
Definition at line 163 of file vpRobot.cpp.
References vpException::dimensionError, and vpArray2D< Type >::size().
Referenced by vpSimulatorCamera::setVelocity(), vpSimulatorPioneer::setVelocity(), vpRobotCamera::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpRobotPioneer::setVelocity(), vpRobotAfma4::setVelocity(), vpRobotAfma6::setVelocity(), vpRobotViper650::setVelocity(), and vpRobotViper850::setVelocity().
|
inherited |
Set the maximal rotation velocity that can be sent to the robot during a velocity control.
w_max | : Maximum rotation velocity expressed in rad/s. |
Definition at line 262 of file vpRobot.cpp.
Referenced by vpRobotViper650::setMaxRotationVelocity(), vpRobotViper850::setMaxRotationVelocity(), and vpSimulatorAfma6::setPosition().
|
inherited |
Set the maximal translation velocity that can be sent to the robot during a velocity control.
v_max | : Maximum translation velocity expressed in m/s. |
Definition at line 238 of file vpRobot.cpp.
Referenced by vpSimulatorAfma6::setPosition().
|
virtual |
Move the robot in position control.
frame | : Control frame. This head can only be controlled in articular. |
q | : The position to set for each axis. |
vpRobotException::wrongStateError | : If a not supported frame type is given. |
Implements vpRobot.
Definition at line 352 of file vpRobotPtu46.cpp.
References vpRobot::ARTICULAR_FRAME, vpRobot::CAMERA_FRAME, vpRobot::getRobotState(), vpRobotException::lowLevelError, vpRobot::MIXT_FRAME, vpRobot::REFERENCE_FRAME, setRobotState(), vpRobot::STATE_POSITION_CONTROL, vpERROR_TRACE, and vpRobotException::wrongStateError.
Referenced by setPosition().
void vpRobotPtu46::setPosition | ( | const vpRobot::vpControlFrameType | frame, |
const double & | q1, | ||
const double & | q2 | ||
) |
Move the robot in position control.
frame | : Control frame. This head can only be controlled in articular. |
q1 | : The pan position to set. |
q2 | : The tilt position to set. |
vpRobotException::wrongStateError | : If a not supported frame type is given. |
Definition at line 424 of file vpRobotPtu46.cpp.
References setPosition(), and vpERROR_TRACE.
void vpRobotPtu46::setPosition | ( | const char * | filename | ) |
Read the content of the position file and moves to head to articular position.
filename | : Position filename |
vpRobotException::readingParametersError | : If the articular position cannot be read from file. |
Definition at line 455 of file vpRobotPtu46.cpp.
References vpRobot::ARTICULAR_FRAME, vpRobotException::readingParametersError, readPositionFile(), setPosition(), and vpERROR_TRACE.
void vpRobotPtu46::setPositioningVelocity | ( | const double | velocity | ) |
Set the velocity used for a position control.
velocity | : Velocity in % of the maximum velocity between [0,100]. |
Definition at line 318 of file vpRobotPtu46.cpp.
|
protectedinherited |
Definition at line 208 of file vpRobot.cpp.
Referenced by vpSimulatorAfma6::init(), vpSimulatorViper850::init(), vpSimulatorCamera::setVelocity(), vpSimulatorPioneer::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpSimulatorAfma6::setVelocity(), and vpSimulatorViper850::setVelocity().
|
virtual |
Change the state of the robot either to stop them, or to set position or speed control.
Reimplemented from vpRobot.
Definition at line 170 of file vpRobotPtu46.cpp.
References vpRobot::getRobotState(), vpRobot::setRobotState(), vpRobot::STATE_POSITION_CONTROL, vpRobot::STATE_STOP, vpRobot::STATE_VELOCITY_CONTROL, and vpDEBUG_TRACE.
Referenced by setPosition(), stopMotion(), vpRobotPtu46(), and ~vpRobotPtu46().
|
virtual |
Send a velocity on each axis.
frame | : Control frame. This head can only be controlled in articular and camera frame. Be aware, the reference frame (vpRobot::REFERENCE_FRAME) and the mixt frame (vpRobot::MIXT_FRAME) are not implemented. |
v | : The desired velocity of the axis. The size of this vector is always 2. Velocitoes are expressed in rad/s. |
vpRobotException::wrongStateError | : If a the robot is not configured to handle a velocity. The robot can handle a velocity only if the velocity control mode is set. For that, call setRobotState( vpRobot::STATE_VELOCITY_CONTROL) before setVelocity(). |
vpRobotException::wrongStateError | : If a not supported frame type (vpRobot::REFERENCE_FRAME, vpRobot::MIXT_FRAME) is given. |
Implements vpRobot.
Definition at line 557 of file vpRobotPtu46.cpp.
References vpRobot::ARTICULAR_FRAME, vpRobot::CAMERA_FRAME, vpRobot::getRobotState(), vpArray2D< Type >::getRows(), vpRobot::MIXT_FRAME, vpRobot::REFERENCE_FRAME, vpRobot::STATE_VELOCITY_CONTROL, vpCDEBUG, vpDEBUG_TRACE, vpERROR_TRACE, and vpRobotException::wrongStateError.
|
inlineinherited |
Definition at line 157 of file vpRobot.h.
Referenced by vpRobotAfma4::vpRobotAfma4(), vpRobotAfma6::vpRobotAfma6(), vpRobotViper650::vpRobotViper650(), and vpRobotViper850::vpRobotViper850().
void vpRobotPtu46::stopMotion | ( | void | ) |
Halt all the axis.
Definition at line 217 of file vpRobotPtu46.cpp.
References setRobotState(), and vpRobot::STATE_STOP.
|
protectedinherited |
Definition at line 109 of file vpRobot.h.
Referenced by vpRobot::operator=().
|
static |
Definition at line 105 of file vpRobotPtu46.h.
Referenced by vpRobotPtu46().
|
protectedinherited |
robot Jacobian expressed in the end-effector frame
Definition at line 101 of file vpRobot.h.
Referenced by vpSimulatorCamera::get_eJe(), vpRobotCamera::get_eJe(), vpRobot::operator=(), and vpRobotAfma4::setVelocity().
|
protectedinherited |
is the robot Jacobian expressed in the end-effector frame available
Definition at line 103 of file vpRobot.h.
Referenced by vpRobot::operator=().
|
protectedinherited |
robot Jacobian expressed in the robot reference frame available
Definition at line 105 of file vpRobot.h.
Referenced by vpRobot::operator=().
|
protectedinherited |
is the robot Jacobian expressed in the robot reference frame available
Definition at line 107 of file vpRobot.h.
Referenced by vpRobot::operator=().
|
staticinherited |
Horizontal offset along the last joint, from last joint to camera frame.
Definition at line 86 of file vpPtu46.h.
Referenced by vpPtu46::computeMGD(), and vpPtu46::get_cMe().
|
staticinherited |
Geometric model
Definition at line 85 of file vpPtu46.h.
Referenced by vpPtu46::computeMGD(), and vpPtu46::get_cMe().
|
protectedinherited |
Definition at line 95 of file vpRobot.h.
Referenced by vpRobot::operator=(), vpRobotViper650::vpRobotViper650(), and vpRobotViper850::vpRobotViper850().
|
staticprotectedinherited |
|
protectedinherited |
Definition at line 93 of file vpRobot.h.
Referenced by vpRobot::operator=().
|
staticprotectedinherited |
|
staticinherited |
Nombre d'articulations du robot. Number of dof
Definition at line 82 of file vpPtu46.h.
Referenced by getDisplacement(), getPosition(), getVelocity(), and readPositionFile().
|
protectedinherited |
number of degrees of freedom
Definition at line 99 of file vpRobot.h.
Referenced by vpRobot::operator=().
|
protectedinherited |
Definition at line 111 of file vpRobot.h.
Referenced by vpRobot::operator=(), and vpRobot::~vpRobot().
|
protectedinherited |
Definition at line 110 of file vpRobot.h.
Referenced by vpRobot::operator=(), and vpRobot::~vpRobot().
|
protectedinherited |
Definition at line 113 of file vpRobot.h.
Referenced by vpRobotAfma4::init(), vpRobotAfma6::init(), vpRobotViper650::init(), vpRobotViper850::init(), vpRobot::operator=(), vpRobotAfma4::vpRobotAfma4(), vpRobotAfma6::vpRobotAfma6(), vpRobotViper650::vpRobotViper650(), and vpRobotViper850::vpRobotViper850().