![]() |
Visual Servoing Platform
version 3.1.0
|
#include <vpRobotCamera.h>
Inheritance diagram for vpRobotCamera: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 | |
| vpRobotCamera () | |
| virtual | ~vpRobotCamera () |
Inherited functionalities from vpRobotCamera | |
| void | get_cVe (vpVelocityTwistMatrix &cVe) const |
| void | get_eJe (vpMatrix &eJe) |
| void | getPosition (vpHomogeneousMatrix &cMw) const |
| void | getPosition (const vpRobot::vpControlFrameType frame, vpColVector &q) |
| void | setPosition (const vpHomogeneousMatrix &cMw) |
| void | setVelocity (const vpRobot::vpControlFrameType frame, const vpColVector &v) |
Inherited functionalities from vpRobotSimulator | |
| double | getSamplingTime () const |
| virtual void | setSamplingTime (const double &delta_t) |
Inherited functionalities from vpRobot | |
| double | getMaxTranslationVelocity (void) const |
| double | getMaxRotationVelocity (void) const |
| vpColVector | getPosition (const vpRobot::vpControlFrameType frame) |
| virtual vpRobotStateType | getRobotState (void) const |
| 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 Public Member Functions inherited from vpRobot | |
| static vpColVector | saturateVelocities (const vpColVector &v_in, const vpColVector &v_max, bool verbose=false) |
Protected Member Functions | |
Protected Member Functions Inherited from vpRobot | |
| vpControlFrameType | setRobotFrame (vpRobot::vpControlFrameType newFrame) |
| vpControlFrameType | getRobotFrame (void) const |
Protected Attributes | |
| vpHomogeneousMatrix | cMw_ |
| double | delta_t_ |
| 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 |
Class that defines the simplest robot: a free flying camera. We recommend to use vpSimulatorCamera instead.
This free flying camera has 6 dof; 3 in translation and 3 in rotation. It evolves as a gentry robot with respect to a world frame. This class is similar to vpSimulatorCamera class except that here the position of the robot is provided as the transformation from camera frame to world frame; cMw. Since the position of the camera frame evolves, this representation is less intuitive than the one implemented in vpSimulatorCamera where the transformation from world to camera frame is considered; wMc.
For this particular simulated robot, the end-effector and camera frame are confused. That means that the cMe transformation is equal to identity.
The robot jacobian expressed in the end-effector frame
is also set to identity (see get_eJe()).
The following code shows how to control this robot in position and velocity.
Definition at line 110 of file vpRobotCamera.h.
|
inherited |
Robot control frames.
|
inherited |
| vpRobotCamera::vpRobotCamera | ( | ) |
Constructor.
Initialise the robot by a call to init().
Sampling time is set to 40 ms. To change it you should call setSamplingTime().
Robot jacobian expressed in the end-effector frame
is set to identity (see get_eJe()).
Definition at line 72 of file vpRobotCamera.cpp.
References vpRobot::areJointLimitsAvailable, vpRobot::eJe, vpRobot::eJeAvailable, vpMatrix::eye(), vpRobot::fJeAvailable, vpRobot::nDof, vpRobot::qmax, vpRobot::qmin, vpMath::rad(), vpRobot::setMaxRotationVelocity(), and vpRobot::setMaxTranslationVelocity().
|
virtual |
Destructor.
Definition at line 99 of file vpRobotCamera.cpp.
| void vpRobotCamera::get_cVe | ( | vpVelocityTwistMatrix & | cVe | ) | const |
Get the twist transformation from camera frame to end-effector frame. This transformation allows to compute a velocity expressed in the end-effector frame into the camera frame.
| cVe | : Twist transformation. Here this transformation is equal to identity since camera frame and end-effector frame are at the same location. |
Definition at line 111 of file vpRobotCamera.cpp.
|
virtual |
Get the robot jacobian expressed in the end-effector frame. For that simple robot the Jacobian is the identity.
| eJe_ | : A 6 by 6 matrix representing the robot jacobian expressed in the end-effector frame. |
Implements vpRobot.
Definition at line 124 of file vpRobotCamera.cpp.
References vpRobot::eJe.
|
inherited |
Get the maximal rotation velocity that can be sent to the robot during a velocity control.
Definition at line 273 of file vpRobot.cpp.
References vpRobot::maxRotationVelocity.
Referenced by vpSimulatorAfma6::computeArticularVelocity(), vpSimulatorViper850::computeArticularVelocity(), vpSimulatorAfma6::findHighestPositioningSpeed(), vpSimulatorViper850::findHighestPositioningSpeed(), vpSimulatorAfma6::setPosition(), vpSimulatorCamera::setVelocity(), setVelocity(), vpSimulatorPioneer::setVelocity(), vpRobotPioneer::setVelocity(), vpSimulatorPioneerPan::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 251 of file vpRobot.cpp.
References vpRobot::maxTranslationVelocity.
Referenced by vpSimulatorAfma6::setPosition(), vpSimulatorCamera::setVelocity(), setVelocity(), vpSimulatorPioneer::setVelocity(), vpRobotPioneer::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpSimulatorAfma6::setVelocity(), vpSimulatorViper850::setVelocity(), vpRobotAfma4::setVelocity(), vpRobotAfma6::setVelocity(), vpRobotViper650::setVelocity(), and vpRobotViper850::setVelocity().
| void vpRobotCamera::getPosition | ( | vpHomogeneousMatrix & | cMw | ) | const |
Get the robot position as the transformation from camera frame to world frame.
Definition at line 189 of file vpRobotCamera.cpp.
References cMw_.
|
virtual |
Get the robot position (frame has to be specified).
Implements vpRobot.
Definition at line 212 of file vpRobotCamera.cpp.
References vpRobot::ARTICULAR_FRAME, vpRxyzVector::buildFrom(), vpRobot::CAMERA_FRAME, cMw_, vpHomogeneousMatrix::extract(), vpRobot::MIXT_FRAME, vpRobot::REFERENCE_FRAME, and vpColVector::resize().
|
inherited |
Return the current robot position in the specified frame.
Definition at line 216 of file vpRobot.cpp.
References vpRobot::getPosition().
|
inlineprotectedinherited |
Definition at line 167 of file vpRobot.h.
Referenced by vpSimulatorAfma6::computeArticularVelocity(), and vpSimulatorViper850::computeArticularVelocity().
|
inlinevirtualinherited |
Definition at line 139 of file vpRobot.h.
Referenced by vpRobotBiclops::getPosition(), vpRobotBiclops::getVelocity(), vpRobotPtu46::setPosition(), vpSimulatorCamera::setPosition(), setPosition(), vpRobotBiclops::setPosition(), vpSimulatorAfma6::setPosition(), vpRobotAfma4::setPosition(), vpSimulatorViper850::setPosition(), vpRobotAfma6::setPosition(), vpRobotViper650::setPosition(), vpRobotViper850::setPosition(), vpRobotPtu46::setRobotState(), vpRobotBiclops::setRobotState(), vpSimulatorAfma6::setRobotState(), vpRobotAfma4::setRobotState(), vpSimulatorViper850::setRobotState(), vpRobotAfma6::setRobotState(), vpRobotViper650::setRobotState(), vpRobotViper850::setRobotState(), vpRobotPtu46::setVelocity(), vpSimulatorCamera::setVelocity(), setVelocity(), vpSimulatorPioneer::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpRobotBiclops::setVelocity(), vpSimulatorAfma6::setVelocity(), vpSimulatorViper850::setVelocity(), vpRobotAfma4::setVelocity(), vpRobotAfma6::setVelocity(), vpRobotViper650::setVelocity(), vpRobotViper850::setVelocity(), vpSimulatorAfma6::stopMotion(), vpSimulatorViper850::stopMotion(), vpRobotViper650::stopMotion(), and vpRobotViper850::stopMotion().
|
inlineinherited |
Return the sampling time.
Definition at line 82 of file vpRobotSimulator.h.
Referenced by vpVirtualGrabber::acquire(), vpSimulatorAfma6::updateArticularPosition(), and vpSimulatorViper850::updateArticularPosition().
|
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(), setVelocity(), vpSimulatorPioneer::setVelocity(), vpRobotPioneer::setVelocity(), vpSimulatorPioneerPan::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 260 of file vpRobot.cpp.
References vpRobot::maxRotationVelocity.
Referenced by vpRobotViper650::getControlMode(), vpRobotViper850::getControlMode(), vpRobotViper650::setMaxRotationVelocity(), vpRobotViper850::setMaxRotationVelocity(), vpSimulatorAfma6::setPosition(), vpRobotCamera(), and vpSimulatorCamera::vpSimulatorCamera().
|
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 239 of file vpRobot.cpp.
References vpRobot::maxTranslationVelocity.
Referenced by vpSimulatorAfma6::setPosition(), vpRobotCamera(), and vpSimulatorCamera::vpSimulatorCamera().
| void vpRobotCamera::setPosition | ( | const vpHomogeneousMatrix & | cMw | ) |
Set the robot position as the transformation from camera frame to world frame.
Definition at line 246 of file vpRobotCamera.cpp.
References cMw_, vpRobot::getRobotState(), vpRobot::setRobotState(), and vpRobot::STATE_POSITION_CONTROL.
|
protectedinherited |
Definition at line 207 of file vpRobot.cpp.
Referenced by vpSimulatorAfma6::init(), vpSimulatorViper850::init(), vpSimulatorCamera::setVelocity(), vpSimulatorPioneer::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpSimulatorAfma6::setVelocity(), and vpSimulatorViper850::setVelocity().
|
virtualinherited |
Reimplemented in vpRobotViper850, vpRobotViper650, vpRobotAfma6, vpSimulatorViper850, vpRobotAfma4, vpSimulatorAfma6, vpRobotBiclops, and vpRobotPtu46.
Definition at line 201 of file vpRobot.cpp.
Referenced by vpRobotViper650::getControlMode(), vpRobotViper850::getControlMode(), vpSimulatorCamera::setPosition(), setPosition(), vpSimulatorAfma6::setPositioningVelocity(), vpSimulatorViper850::setPositioningVelocity(), vpRobotPtu46::setRobotState(), vpRobotBiclops::setRobotState(), vpSimulatorAfma6::setRobotState(), vpRobotAfma4::setRobotState(), vpSimulatorViper850::setRobotState(), vpRobotAfma6::setRobotState(), vpRobotViper650::setRobotState(), vpRobotViper850::setRobotState(), vpSimulatorCamera::setVelocity(), setVelocity(), vpSimulatorPioneer::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpSimulatorAfma6::stopMotion(), and vpSimulatorViper850::stopMotion().
|
inlinevirtualinherited |
Set the sampling time.
| delta_t | : Sampling time in second used to compute the robot displacement from the velocity applied to the robot during this time. |
Reimplemented in vpRobotWireFrameSimulator.
Definition at line 91 of file vpRobotSimulator.h.
Referenced by vpVirtualGrabber::acquire().
|
virtual |
Send to the controller a velocity.
| frame | : Control frame type. Only articular (vpRobot::ARTICULAR_FRAME) and camera frame (vpRobot::CAMERA_FRAME) are implemented. |
| v | : Velocity twist to apply to the robot. |
where
are the translation velocities in m/s and
the rotation velocities in rad/s applied in the camera frame.Internally, the exponential map (vpExponentialMap) is used to update the camera position from its velocity after applying the velocity during a sampling time. This sampling time can be set using setSamplingTime().
Implements vpRobot.
Definition at line 148 of file vpRobotCamera.cpp.
References vpRobot::ARTICULAR_FRAME, vpRobot::CAMERA_FRAME, cMw_, vpRobotSimulator::delta_t_, vpExponentialMap::direct(), vpRobot::getMaxRotationVelocity(), vpRobot::getMaxTranslationVelocity(), vpRobot::getRobotState(), vpHomogeneousMatrix::inverse(), vpRobot::MIXT_FRAME, vpRobot::REFERENCE_FRAME, vpRobot::saturateVelocities(), vpRobot::setRobotState(), vpRobot::STATE_VELOCITY_CONTROL, vpERROR_TRACE, and vpRobotException::wrongStateError.
|
inlineinherited |
Definition at line 154 of file vpRobot.h.
Referenced by vpRobotAfma4::vpRobotAfma4(), vpRobotAfma6::vpRobotAfma6(), vpRobotViper650::vpRobotViper650(), and vpRobotViper850::vpRobotViper850().
|
protectedinherited |
Definition at line 107 of file vpRobot.h.
Referenced by vpRobot::operator=(), vpRobotCamera(), vpSimulatorCamera::vpSimulatorCamera(), vpSimulatorPioneer::vpSimulatorPioneer(), and vpSimulatorPioneerPan::vpSimulatorPioneerPan().
|
protected |
Definition at line 113 of file vpRobotCamera.h.
Referenced by getPosition(), setPosition(), and setVelocity().
|
protectedinherited |
Definition at line 65 of file vpRobotSimulator.h.
Referenced by vpSimulatorCamera::setVelocity(), setVelocity(), vpSimulatorPioneer::setVelocity(), and vpSimulatorPioneerPan::setVelocity().
|
protectedinherited |
robot Jacobian expressed in the end-effector frame
Definition at line 99 of file vpRobot.h.
Referenced by vpSimulatorCamera::get_eJe(), get_eJe(), vpRobot::operator=(), vpRobotAfma4::setVelocity(), vpRobotCamera(), and vpSimulatorCamera::vpSimulatorCamera().
|
protectedinherited |
is the robot Jacobian expressed in the end-effector frame available
Definition at line 101 of file vpRobot.h.
Referenced by vpRobot::operator=(), vpRobotCamera(), vpSimulatorCamera::vpSimulatorCamera(), vpSimulatorPioneer::vpSimulatorPioneer(), and vpSimulatorPioneerPan::vpSimulatorPioneerPan().
|
protectedinherited |
robot Jacobian expressed in the robot reference frame available
Definition at line 103 of file vpRobot.h.
Referenced by vpRobot::operator=().
|
protectedinherited |
is the robot Jacobian expressed in the robot reference frame available
Definition at line 105 of file vpRobot.h.
Referenced by vpRobot::operator=(), vpRobotCamera(), vpSimulatorCamera::vpSimulatorCamera(), vpSimulatorPioneer::vpSimulatorPioneer(), and vpSimulatorPioneerPan::vpSimulatorPioneerPan().
|
protectedinherited |
Definition at line 93 of file vpRobot.h.
Referenced by vpRobot::getMaxRotationVelocity(), vpRobot::operator=(), vpRobot::setMaxRotationVelocity(), vpRobotPtu46::setVelocity(), vpRobotViper650::vpRobotViper650(), and vpRobotViper850::vpRobotViper850().
|
staticprotectedinherited |
|
protectedinherited |
Definition at line 91 of file vpRobot.h.
Referenced by vpRobot::getMaxTranslationVelocity(), vpRobot::operator=(), and vpRobot::setMaxTranslationVelocity().
|
staticprotectedinherited |
|
protectedinherited |
number of degrees of freedom
Definition at line 97 of file vpRobot.h.
Referenced by vpRobot::operator=(), vpRobotCamera(), vpSimulatorCamera::vpSimulatorCamera(), vpSimulatorPioneer::vpSimulatorPioneer(), and vpSimulatorPioneerPan::vpSimulatorPioneerPan().
|
protectedinherited |
Definition at line 109 of file vpRobot.h.
Referenced by vpRobot::operator=(), vpRobotCamera(), vpSimulatorCamera::vpSimulatorCamera(), vpSimulatorPioneer::vpSimulatorPioneer(), vpSimulatorPioneerPan::vpSimulatorPioneerPan(), and vpRobot::~vpRobot().
|
protectedinherited |
Definition at line 108 of file vpRobot.h.
Referenced by vpRobot::operator=(), vpRobotCamera(), vpSimulatorCamera::vpSimulatorCamera(), vpSimulatorPioneer::vpSimulatorPioneer(), vpSimulatorPioneerPan::vpSimulatorPioneerPan(), and vpRobot::~vpRobot().
|
protectedinherited |
Definition at line 111 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().