ViSP  2.7.0
vpRobotTemplate Class Reference

#include <vpRobotTemplate.h>

+ Inheritance diagram for vpRobotTemplate:

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 }
 

Public Member Functions

void init ()
 
 vpRobotTemplate ()
 
virtual ~vpRobotTemplate ()
 
void get_eJe (vpMatrix &_eJe)
 
void get_fJe (vpMatrix &_fJe)
 
void sendCameraVelocity (const vpColVector &v)
 
void sendArticularVelocity (const vpColVector &qdot)
 
void setVelocity (const vpRobot::vpControlFrameType frame, const vpColVector &vel)
 
void getPosition (vpPoseVector &q)
 
void getArticularPosition (vpColVector &q)
 
void getPosition (const vpRobot::vpControlFrameType frame, vpColVector &q)
 
void setPosition (const vpRobot::vpControlFrameType frame, const vpColVector &q)
 
void getDisplacement (const vpRobot::vpControlFrameType frame, vpColVector &q)
 
double getMaxTranslationVelocity (void) const
 
double getMaxRotationVelocity (void) const
 
vpColVector getPosition (const vpRobot::vpControlFrameType frame)
 
virtual vpRobotStateType getRobotState (void)
 
void setMaxRotationVelocity (const double maxVr)
 
void setMaxTranslationVelocity (const double maxVt)
 
virtual vpRobotStateType setRobotState (const vpRobot::vpRobotStateType newState)
 
void setVerbose (bool verbose)
 

Static Public Member Functions

static vpColVector saturateVelocities (const vpColVector &v_in, const vpColVector &v_max, bool verbose=false)
 

Protected Member Functions

vpControlFrameType setRobotFrame (vpRobot::vpControlFrameType newFrame)
 
vpControlFrameType getRobotFrame (void)
 

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
 

Detailed Description

class that defines a robot just to show which function you must implement

Definition at line 58 of file vpRobotTemplate.h.

Member Enumeration Documentation

Robot control frames.

Enumerator
REFERENCE_FRAME 

Corresponds to a fixed reference frame attached to the robot structure.

ARTICULAR_FRAME 

Corresponds to the joint space.

CAMERA_FRAME 

Corresponds to a frame attached to the camera mounted on the robot end-effector.

MIXT_FRAME 

Corresponds to a "virtual" frame where translations are expressed in the reference frame, and rotations in the camera frame.

Definition at line 78 of file vpRobot.h.

enum vpRobot::vpRobotStateType
inherited

Robot control states.

Enumerator
STATE_STOP 

Stops robot motion especially in velocity and acceleration control.

STATE_VELOCITY_CONTROL 

Initialize the velocity controller.

STATE_POSITION_CONTROL 

Initialize the position controller.

STATE_ACCELERATION_CONTROL 

Initialize the acceleration controller.

Definition at line 66 of file vpRobot.h.

Constructor & Destructor Documentation

vpRobotTemplate::vpRobotTemplate ( )

constructor

Definition at line 60 of file vpRobotTemplate.cpp.

References init().

vpRobotTemplate::~vpRobotTemplate ( )
virtual

destructor

constructor

Definition at line 67 of file vpRobotTemplate.cpp.

Member Function Documentation

void vpRobotTemplate::get_eJe ( vpMatrix _eJe)
virtual

get the robot Jacobian expressed in the end-effector frame

Implements vpRobot.

Definition at line 83 of file vpRobotTemplate.cpp.

void vpRobotTemplate::get_fJe ( vpMatrix _fJe)
virtual

get the robot Jacobian expressed in the robot reference frame

Implements vpRobot.

Definition at line 90 of file vpRobotTemplate.cpp.

void vpRobotTemplate::getArticularPosition ( vpColVector q)

get a position expressed in the articular frame

Definition at line 145 of file vpRobotTemplate.cpp.

void vpRobotTemplate::getDisplacement ( const vpRobot::vpControlFrameType  frame,
vpColVector q 
)
virtual

get a displacement (frame as to be specified)

get a displacement (frame as to ve specified)

Implements vpRobot.

Definition at line 165 of file vpRobotTemplate.cpp.

double vpRobot::getMaxTranslationVelocity ( void  ) const
inherited
void vpRobotTemplate::getPosition ( vpPoseVector q)

get a position expressed in the robot reference frame

Definition at line 139 of file vpRobotTemplate.cpp.

void vpRobotTemplate::getPosition ( const vpRobot::vpControlFrameType  frame,
vpColVector q 
)
virtual

get a displacement (frame as to be specified)

get a displacement (frame as to ve specified)

Implements vpRobot.

Definition at line 151 of file vpRobotTemplate.cpp.

vpColVector vpRobot::getPosition ( const vpRobot::vpControlFrameType  frame)
inherited

Return the current robot position in the specified frame.

Definition at line 171 of file vpRobot.cpp.

vpControlFrameType vpRobot::getRobotFrame ( void  )
inlineprotectedinherited
void vpRobotTemplate::init ( void  )
virtual

basic initialization

Implements vpRobot.

Definition at line 53 of file vpRobotTemplate.cpp.

References vpTRACE.

Referenced by vpRobotTemplate().

vpColVector vpRobot::saturateVelocities ( const vpColVector v_in,
const vpColVector v_max,
bool  verbose = false 
)
staticinherited

Saturate velocities.

Parameters
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.
Returns
Saturated velocities.
Exceptions
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.

#include <iostream>
#include <visp/vpRobot.h>
int main()
{
// Set a velocity skew vector
v[0] = 0.1; // vx in m/s
v[1] = 0.2; // vy
v[2] = 0.3; // vz
v[3] = vpMath::rad(10); // wx in rad/s
v[4] = vpMath::rad(-10); // wy
v[5] = vpMath::rad(20); // wz
// Set the maximal allowed velocities
vpColVector v_max(6);
for (int i=0; i<3; i++)
v_max[i] = 0.3; // in translation (m/s)
for (int i=3; i<6; i++)
v_max[i] = vpMath::rad(10); // in rotation (rad/s)
// Compute the saturated velocity skew vector
vpColVector v_sat = vpRobot::saturateVelocities(v, v_max, true);
std::cout << "v : " << v.t() << std::endl;
std::cout << "v max: " << v_max.t() << std::endl;
std::cout << "v sat: " << v_sat.t() << std::endl;
return 0;
}

Definition at line 116 of file vpRobot.cpp.

References vpException::dimensionError, and vpColVector::size().

Referenced by vpSimulatorCamera::setVelocity(), vpSimulatorPioneer::setVelocity(), vpRobotCamera::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpRobotPioneer::setVelocity(), vpRobotAfma4::setVelocity(), vpRobotAfma6::setVelocity(), vpRobotViper650::setVelocity(), and vpRobotViper850::setVelocity().

void vpRobotTemplate::sendArticularVelocity ( const vpColVector qdot)

send to the controller a velocity expressed in the articular frame

Definition at line 118 of file vpRobotTemplate.cpp.

void vpRobotTemplate::sendCameraVelocity ( const vpColVector v)

send to the controller a velocity expressed in the camera frame

Definition at line 106 of file vpRobotTemplate.cpp.

void vpRobot::setMaxRotationVelocity ( const double  w_max)
inherited

Set the maximal rotation velocity that can be sent to the robot during a velocity control.

Parameters
w_max: Maximum rotation velocity expressed in rad/s.
Examples:
servoMomentPoints.cpp, servoSimu4Points.cpp, and servoSimuSphere.cpp.

Definition at line 215 of file vpRobot.cpp.

Referenced by vpSimulatorAfma6::setPosition().

void vpRobot::setMaxTranslationVelocity ( const double  v_max)
inherited

Set the maximal translation velocity that can be sent to the robot during a velocity control.

Parameters
v_max: Maximum translation velocity expressed in m/s.
Examples:
servoMomentPoints.cpp, servoSimu4Points.cpp, and servoSimuSphere.cpp.

Definition at line 191 of file vpRobot.cpp.

Referenced by vpSimulatorAfma6::setPosition().

void vpRobotTemplate::setPosition ( const vpRobot::vpControlFrameType  frame,
const vpColVector q 
)
virtual

set a displacement (frame as to be specified)

set a displacement (frame as to ve specified)

Implements vpRobot.

Definition at line 158 of file vpRobotTemplate.cpp.

void vpRobotTemplate::setVelocity ( const vpRobot::vpControlFrameType  frame,
const vpColVector vel 
)
virtual

send to the controller a velocity (frame as to be specified)

send to the controller a velocity (frame as to ve specified)

Implements vpRobot.

Definition at line 124 of file vpRobotTemplate.cpp.

void vpRobot::setVerbose ( bool  verbose)
inlineinherited

Member Data Documentation

int vpRobot::areJointLimitsAvailable
protectedinherited

Definition at line 111 of file vpRobot.h.

int vpRobot::eJeAvailable
protectedinherited

is the robot Jacobian expressed in the end-effector frame available

Definition at line 105 of file vpRobot.h.

vpMatrix vpRobot::fJe
protectedinherited

robot Jacobian expressed in the robot reference frame available

Definition at line 107 of file vpRobot.h.

Referenced by vpSimulatorAfma6::computeArticularVelocity(), vpSimulatorViper850::computeArticularVelocity(), vpSimulatorAfma6::getVelocity(), and vpSimulatorViper850::getVelocity().

int vpRobot::fJeAvailable
protectedinherited

is the robot Jacobian expressed in the robot reference frame available

Definition at line 109 of file vpRobot.h.

double vpRobot::maxRotationVelocity
protectedinherited

Definition at line 97 of file vpRobot.h.

const double vpRobot::maxRotationVelocityDefault = 0.7
staticprotectedinherited

Definition at line 98 of file vpRobot.h.

double vpRobot::maxTranslationVelocity
protectedinherited

Definition at line 95 of file vpRobot.h.

const double vpRobot::maxTranslationVelocityDefault = 0.2
staticprotectedinherited

Definition at line 96 of file vpRobot.h.

int vpRobot::nDof
protectedinherited

number of degrees of freedom

Definition at line 101 of file vpRobot.h.

double* vpRobot::qmax
protectedinherited

Definition at line 113 of file vpRobot.h.

double* vpRobot::qmin
protectedinherited

Definition at line 112 of file vpRobot.h.