ViSP
2.10.0
|
#include <vpViper.h>
Static Public Attributes | |
static const unsigned int | njoint = 6 |
Protected Attributes | |
vpHomogeneousMatrix | eMc |
vpTranslationVector | etc |
vpRxyzVector | erc |
double | a1 |
double | d1 |
double | a2 |
double | a3 |
double | d4 |
double | d6 |
double | c56 |
vpColVector | joint_max |
vpColVector | joint_min |
Friends | |
VISP_EXPORT std::ostream & | operator<< (std::ostream &os, const vpViper &viper) |
Modelisation of the ADEPT Viper robot.
This robot has six degrees of freedom.
The non modified Denavit-Hartenberg representation of the robot is given in the table below, where are the variable joint positions.
In this modelisation, different frames have to be considered.
The forward kinematics of the robot is implemented in get_fMw(), get_fMe() and get_fMc().
The robot forward jacobian used to compute the cartesian velocities from joint ones is given and implemented in get_fJw(), get_fJe() and get_eJe().
vpViper::vpViper | ( | ) |
Default constructor.
Definition at line 70 of file vpViper.cpp.
References a1, a2, a3, c56, d1, d4, d6, eMc, joint_max, joint_min, njoint, vpMath::rad(), vpColVector::resize(), and vpHomogeneousMatrix::setIdentity().
void vpViper::get_cMe | ( | vpHomogeneousMatrix & | cMe | ) | const |
Get the geometric transformation between the camera frame and the end-effector frame. This transformation is constant and correspond to the extrinsic camera parameters estimated by calibration.
cMe | : Transformation between the camera frame and the end-effector frame. |
Definition at line 931 of file vpViper.cpp.
References eMc, and vpHomogeneousMatrix::inverse().
Referenced by vpSimulatorViper850::get_cMe(), vpRobotViper850::get_cMe(), vpRobotViper650::get_cMe(), get_cVe(), vpSimulatorViper850::get_cVe(), vpRobotViper850::get_cVe(), and vpRobotViper650::get_cVe().
void vpViper::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 . |
Definition at line 952 of file vpViper.cpp.
References vpVelocityTwistMatrix::buildFrom(), and get_cMe().
void vpViper::get_eJe | ( | const vpColVector & | q, |
vpMatrix & | eJe | ||
) | const |
Get the robot jacobian which gives the velocity of the origin of the end-effector frame expressed in end-effector frame.
q | : A six-dimension vector that contains the joint positions of the robot expressed in radians. |
eJe | : Robot jacobian that express the velocity of the end-effector in the robot end-effector frame. |
Definition at line 985 of file vpViper.cpp.
References vpHomogeneousMatrix::extract(), get_fJw(), get_fMw(), get_wMe(), vpRotationMatrix::inverse(), vpHomogeneousMatrix::inverse(), and vpTranslationVector::skew().
Referenced by vpSimulatorViper850::computeArticularVelocity(), vpSimulatorViper850::get_eJe(), vpRobotViper650::get_eJe(), vpRobotViper850::get_eJe(), and vpSimulatorViper850::getVelocity().
void vpViper::get_eMc | ( | vpHomogeneousMatrix & | eMc_ | ) | const |
Get the geometric transformation between the end-effector frame and the camera frame. This transformation is constant and correspond to the extrinsic camera parameters estimated by calibration.
eMc_ | : Transformation between the the end-effector frame and the camera frame. |
Definition at line 914 of file vpViper.cpp.
References eMc.
Referenced by getInverseKinematics().
void vpViper::get_fJe | ( | const vpColVector & | q, |
vpMatrix & | fJe | ||
) | const |
Get the robot jacobian which gives the velocity of the origin of the end-effector frame expressed in the robot reference frame also called fix frame.
q | : A six-dimension vector that contains the joint positions of the robot expressed in radians. |
fJe | : Robot jacobian that express the velocity of the end-effector in the robot reference frame. |
Definition at line 1177 of file vpViper.cpp.
References vpHomogeneousMatrix::extract(), get_fJw(), get_fMw(), get_wMe(), and vpHomogeneousMatrix::inverse().
Referenced by vpSimulatorViper850::computeArticularVelocity(), vpSimulatorViper850::get_fJe(), vpRobotViper650::get_fJe(), vpRobotViper850::get_fJe(), and vpSimulatorViper850::getVelocity().
void vpViper::get_fJw | ( | const vpColVector & | q, |
vpMatrix & | fJw | ||
) | const |
Get the robot jacobian which express the velocity of the origin of the wrist frame in the robot reference frame also called fix frame.
with
q | : A six-dimension vector that contains the joint positions of the robot expressed in radians. |
fJw | : Robot jacobian that express the velocity of the point w (origin of the wrist frame) in the robot reference frame. |
Definition at line 1071 of file vpViper.cpp.
References a1, a2, a3, d4, and vpMatrix::resize().
vpHomogeneousMatrix vpViper::get_fMc | ( | const vpColVector & | q | ) | const |
Compute the forward kinematics (direct geometric model) as an homogeneous matrix.
By forward kinematics we mean here the position and the orientation of the camera relative to the base frame given the joint positions of all the six joints.
This method is the same than getForwardKinematics(const vpColVector & q).
q | : Vector of six joint positions expressed in radians. |
Definition at line 615 of file vpViper.cpp.
Referenced by vpSimulatorViper850::compute_fMi(), getForwardKinematics(), vpSimulatorViper850::getPosition(), vpRobotViper850::getVelocity(), vpRobotViper650::getVelocity(), vpSimulatorViper850::setPosition(), vpRobotViper650::setPosition(), and vpRobotViper850::setPosition().
void vpViper::get_fMc | ( | const vpColVector & | q, |
vpHomogeneousMatrix & | fMc | ||
) | const |
Compute the forward kinematics (direct geometric model) as an homogeneous matrix.
By forward kinematics we mean here the position and the orientation of the camera relative to the base frame given the six joint positions.
q | : Vector of six joint positions expressed in radians. |
fMc | The homogeneous matrix corresponding to the direct geometric model which expresses the transformation between the fix frame and the camera frame. |
Definition at line 645 of file vpViper.cpp.
void vpViper::get_fMe | ( | const vpColVector & | q, |
vpHomogeneousMatrix & | fMe | ||
) | const |
Compute the forward kinematics (direct geometric model) as an homogeneous matrix .
By forward kinematics we mean here the position and the orientation of the end effector with respect to the base frame given the motor positions of all the six joints.
with
q | : A 6-dimension vector that contains the 6 joint positions expressed in radians. |
fMe | The homogeneous matrix corresponding to the direct geometric model which expresses the transformation between the fix frame and the end effector frame. |
Note that this transformation can also be computed by considering the wrist frame .
Definition at line 732 of file vpViper.cpp.
References a1, a2, a3, d1, d4, and d6.
Referenced by get_fMc().
void vpViper::get_fMw | ( | const vpColVector & | q, |
vpHomogeneousMatrix & | fMw | ||
) | const |
Compute the transformation between the fix frame and the wrist frame. The wrist frame is located on the intersection of the 3 last rotations.
q | : A 6-dimension vector that contains the 6 joint positions expressed in radians. |
fMw | The homogeneous matrix corresponding to the transformation between the fix frame and the wrist frame (fMw). |
with
Definition at line 828 of file vpViper.cpp.
void vpViper::get_wMe | ( | vpHomogeneousMatrix & | wMe | ) | const |
Return the transformation between the wrist frame and the end-effector. The wrist frame is located on the intersection of the 3 last rotations.
wMe | The homogeneous matrix corresponding to the transformation between the wrist frame and the end-effector frame (wMe). |
Definition at line 893 of file vpViper.cpp.
References d6, and vpHomogeneousMatrix::setIdentity().
Referenced by get_eJe(), get_fJe(), and getInverseKinematics().
double vpViper::getCoupl56 | ( | ) | const |
Return the coupling factor between join 5 and joint 6.
This factor should be only useful when motor positions are considered. Since the positions returned by the robot are joint positions which takes into account the coupling factor, it has not to be considered in the modelization of the robot.
Definition at line 1248 of file vpViper.cpp.
References c56.
vpHomogeneousMatrix vpViper::getForwardKinematics | ( | const vpColVector & | q | ) | const |
Compute the forward kinematics (direct geometric model) as an homogeneous matrix.
By forward kinematics we mean here the position and the orientation of the camera relative to the base frame given the six joint positions.
This method is the same than get_fMc(const vpColVector & q).
q | : A six dimension vector corresponding to the robot joint positions expressed in radians. |
Definition at line 129 of file vpViper.cpp.
References get_fMc().
unsigned int vpViper::getInverseKinematics | ( | const vpHomogeneousMatrix & | fMc, |
vpColVector & | q, | ||
const bool & | verbose = false |
||
) | const |
Compute the inverse kinematics (inverse geometric model).
By inverse kinematics we mean here the six joint values given the position and the orientation of the camera frame relative to the base frame.
fMc | : Homogeneous matrix describing the transformation from base frame to the camera frame. |
q | : In input, a six dimension vector corresponding to the current joint positions expressed in radians. In output, the solution of the inverse kinematics, ie. the joint positions corresponding to . |
verbose | : Add extra printings. |
The code below shows how to compute the inverse geometric model:
Definition at line 577 of file vpViper.cpp.
References get_eMc(), get_wMe(), getInverseKinematicsWrist(), and vpHomogeneousMatrix::inverse().
Referenced by vpSimulatorViper850::initialiseCameraRelativeToObject(), vpSimulatorViper850::setPosition(), vpRobotViper650::setPosition(), and vpRobotViper850::setPosition().
unsigned int vpViper::getInverseKinematicsWrist | ( | const vpHomogeneousMatrix & | fMw, |
vpColVector & | q, | ||
const bool & | verbose = false |
||
) | const |
Compute the inverse kinematics (inverse geometric model).
By inverse kinematics we mean here the six joint values given the position and the orientation of the camera frame relative to the base frame.
fMw | : Homogeneous matrix describing the transformation from base frame to the wrist frame. |
q | : In input, a six dimension vector corresponding to the current joint positions expressed in radians. In output, the solution of the inverse kinematics, ie. the joint positions corresponding to . |
verbose | : Add extra printings. |
The code below shows how to compute the inverse geometric model:
Definition at line 232 of file vpViper.cpp.
References a1, a2, a3, d1, d4, vpMatrix::getRows(), njoint, vpMath::rad(), vpColVector::resize(), and vpMath::sqr().
Referenced by getInverseKinematics().
vpColVector vpViper::getJointMax | ( | ) | const |
Get maximal joint values.
Definition at line 1232 of file vpViper.cpp.
References joint_max.
vpColVector vpViper::getJointMin | ( | ) | const |
Get minimal joint values.
Definition at line 1219 of file vpViper.cpp.
References joint_min.
|
friend |
Print on the output stream os the robot parameters (joint min/max, coupling factor between axis 5 and 6, hand-to-eye constant homogeneous matrix .
os | : Output stream. |
viper | : Robot parameters. |
Definition at line 1262 of file vpViper.cpp.
|
protected |
Definition at line 152 of file vpViper.h.
Referenced by vpSimulatorViper850::compute_fMi(), get_fJw(), get_fMe(), get_fMw(), getInverseKinematicsWrist(), vpSimulatorViper850::singularityTest(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
protected |
for joint 2
Definition at line 153 of file vpViper.h.
Referenced by vpSimulatorViper850::compute_fMi(), get_fJw(), get_fMe(), get_fMw(), getInverseKinematicsWrist(), vpSimulatorViper850::singularityTest(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
protected |
for joint 3
Definition at line 154 of file vpViper.h.
Referenced by vpSimulatorViper850::compute_fMi(), get_fJw(), get_fMe(), get_fMw(), getInverseKinematicsWrist(), vpSimulatorViper850::singularityTest(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
protected |
Mechanical coupling between joint 5 and joint 6.
Definition at line 157 of file vpViper.h.
Referenced by getCoupl56(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
protected |
for joint 1
Definition at line 152 of file vpViper.h.
Referenced by vpSimulatorViper850::compute_fMi(), get_fMe(), get_fMw(), getInverseKinematicsWrist(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
protected |
for joint 4
Definition at line 155 of file vpViper.h.
Referenced by vpSimulatorViper850::compute_fMi(), get_fJw(), get_fMe(), get_fMw(), getInverseKinematicsWrist(), vpSimulatorViper850::singularityTest(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
protected |
for joint 6
Definition at line 156 of file vpViper.h.
Referenced by vpSimulatorViper850::compute_fMi(), get_fMe(), get_wMe(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
protected |
End effector to camera transformation.
Definition at line 146 of file vpViper.h.
Referenced by vpSimulatorViper850::computeArticularVelocity(), get_cMe(), get_eMc(), get_fMc(), vpSimulatorViper850::getVelocity(), vpViper850::init(), vpViper650::init(), vpSimulatorViper850::init(), vpViper850::parseConfigFile(), vpViper650::parseConfigFile(), and vpViper().
|
protected |
Definition at line 149 of file vpViper.h.
Referenced by vpViper650::init(), vpViper850::init(), vpSimulatorViper850::init(), vpRobotViper650::init(), vpRobotViper850::init(), vpViper850::parseConfigFile(), and vpViper650::parseConfigFile().
|
protected |
Definition at line 148 of file vpViper.h.
Referenced by vpViper650::init(), vpViper850::init(), vpSimulatorViper850::init(), vpRobotViper650::init(), vpRobotViper850::init(), vpViper850::parseConfigFile(), and vpViper650::parseConfigFile().
|
protected |
Definition at line 160 of file vpViper.h.
Referenced by getJointMax(), vpSimulatorViper850::init(), vpRobotViper850::init(), vpRobotViper650::init(), vpSimulatorViper850::isInJointLimit(), vpSimulatorViper850::setJointLimit(), vpSimulatorViper850::updateArticularPosition(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
protected |
Definition at line 161 of file vpViper.h.
Referenced by getJointMin(), vpSimulatorViper850::init(), vpRobotViper850::init(), vpRobotViper650::init(), vpSimulatorViper850::isInJointLimit(), vpSimulatorViper850::setJointLimit(), vpSimulatorViper850::updateArticularPosition(), vpViper(), vpViper650::vpViper650(), and vpViper850::vpViper850().
|
static |
Number of joint.
Definition at line 143 of file vpViper.h.
Referenced by vpRobotViper650::get_eJe(), vpRobotViper850::get_eJe(), vpRobotViper850::get_fJe(), vpRobotViper650::get_fJe(), vpRobotViper850::getDisplacement(), vpRobotViper650::getDisplacement(), getInverseKinematicsWrist(), vpSimulatorViper850::init(), vpSimulatorViper850::readPosFile(), vpRobotViper650::readPosFile(), vpRobotViper850::readPosFile(), vpRobotViper650::setPosition(), vpRobotViper850::setPosition(), vpRobotViper650::setVelocity(), vpRobotViper850::setVelocity(), and vpViper().