50 #include <visp/vpDebug.h>
51 #include <visp/vpVelocityTwistMatrix.h>
52 #include <visp/vpRobotException.h>
53 #include <visp/vpCameraParameters.h>
54 #include <visp/vpRxyzVector.h>
55 #include <visp/vpTranslationVector.h>
56 #include <visp/vpRotationMatrix.h>
57 #include <visp/vpAfma4.h>
72 : _a1(0), _d3(0), _d4(0), _etc(), _erc(), _eMc()
100 this->
_erc[1] = -M_PI/2.;
234 fMc = fMe * this->
_eMc;
288 fMe[0][0] = c1*s4*c5 + s1*c4*c5;
289 fMe[0][1] = -c1*s4*s5 - s1*c4*s5;
290 fMe[0][2] = c1*c4 - s1*s4;
291 fMe[0][3] = c1*this->
_a1 - s1*(this->
_d3);
293 fMe[1][0] = s1*s4*c5 - c1*c4*c5;
294 fMe[1][1] = -s1*s4*s5 + c1*c4*s5;
295 fMe[1][2] = s1*c4+c1*s4;
296 fMe[1][3] = s1*this->
_a1 + c1*(this->
_d3);
301 fMe[2][3] = this->
_d4 + q2;
430 eJe[0][0] = -(this->
_a1*c4 + this->
_d3*s4)*c5; eJe[0][1] = -s5;
431 eJe[1][0] = (this->
_a1*c4 + this->
_d3*s4)*s5; eJe[1][1] = -c5;
432 eJe[2][0] = (this->
_a1*s4 - this->
_d3*c4);
433 eJe[3][0] = eJe[3][2] = -s5;
434 eJe[4][0] = eJe[4][2] = -c5;
479 double c14 = cos(q1 + q4);
480 double s14 = sin(q1 + q4);
484 fJe[0][0] = -s1*this->
_a1 - c1*this->
_d3;
486 fJe[1][0] = c1*this->
_a1 - s1*this->
_d3;
494 fJe[5][0] = fJe[5][2] = 1.0;
528 fJe_inverse.
resize(4, 6) ;
536 double c14 = cos(q1 + q4);
537 double s14 = sin(q1 + q4);
539 double det = this->
_a1 * this->
_a1 + this->
_d3 * this->
_d3;
541 fJe_inverse[0][0] = (-s1*this->
_a1 - c1*this->
_d3)/det;
542 fJe_inverse[0][1] = (c1*this->
_a1 - s1*this->
_d3)/det;
544 fJe_inverse[1][2] = fJe_inverse[2][5] = 1.;
546 fJe_inverse[2][0] = - fJe_inverse[0][0];
547 fJe_inverse[2][1] = - fJe_inverse[0][1];
549 fJe_inverse[3][3] = c14;
550 fJe_inverse[3][4] = s14;
565 for (
unsigned int i=0; i < 4; i ++)
582 for (
unsigned int i=0; i < 4; i ++)
598 VISP_EXPORT std::ostream & operator << (std::ostream & os,
606 <<
"Joint Max:" << std::endl
613 <<
"Joint Min: " << std::endl
620 <<
"a1: " << std::endl
624 <<
"d3: " << std::endl
628 <<
"d4: " << std::endl
632 <<
"eMc: "<< std::endl
633 <<
"\tTranslation (m): "
634 << afma4.
_eMc[0][3] <<
" "
635 << afma4.
_eMc[1][3] <<
" "
638 <<
"\tRotation Rxyz (rad) : "
643 <<
"\tRotation Rxyz (deg) : "
647 <<
"\t" << std::endl;
Definition of the vpMatrix class.
vpHomogeneousMatrix get_fMc(const vpColVector &q) const
void resize(const unsigned int nrows, const unsigned int ncols, const bool nullify=true)
void get_fMe(const vpColVector &q, vpHomogeneousMatrix &fMe) const
void get_cMe(vpHomogeneousMatrix &cMe) const
The class provides a data structure for the homogeneous matrices as well as a set of operations on th...
vpColVector getJointMax() const
void get_cVe(vpVelocityTwistMatrix &cVe) const
void get_cVf(const vpColVector &q, vpVelocityTwistMatrix &cVf) const
void get_eJe(const vpColVector &q, vpMatrix &eJe) const
The vpRotationMatrix considers the particular case of a rotation matrix.
vpVelocityTwistMatrix buildFrom(const vpTranslationVector &t, const vpRotationMatrix &R)
static const unsigned int njoint
Number of joint.
Modelisation of Irisa's cylindrical robot named Afma4.
void extract(vpRotationMatrix &R) const
Class that consider the particular case of twist transformation matrix that allows to transform a vel...
void buildFrom(const vpTranslationVector &t, const vpRotationMatrix &R)
Construction from translation vector and rotation matrix.
vpHomogeneousMatrix getForwardKinematics(const vpColVector &q) const
static double deg(double rad)
Class that provides a data structure for the column vectors as well as a set of operations on these v...
vpColVector getJointMin() const
vpHomogeneousMatrix inverse() const
void get_fJe_inverse(const vpColVector &q, vpMatrix &fJe_inverse) const
Class that consider the case of the Euler angle using the x-y-z convention, where are respectively ...
void get_fJe(const vpColVector &q, vpMatrix &fJe) const