44 #include <visp3/core/vpCameraParameters.h>
45 #include <visp3/core/vpDebug.h>
46 #include <visp3/core/vpRotationMatrix.h>
47 #include <visp3/core/vpRxyzVector.h>
48 #include <visp3/core/vpTranslationVector.h>
49 #include <visp3/core/vpVelocityTwistMatrix.h>
50 #include <visp3/robot/vpAfma4.h>
51 #include <visp3/robot/vpRobotException.h>
91 this->
_erc[1] = -M_PI / 2.;
217 fMc = fMe * this->
_eMc;
272 fMe[0][0] = c1 * s4 * c5 + s1 * c4 * c5;
273 fMe[0][1] = -c1 * s4 * s5 - s1 * c4 * s5;
274 fMe[0][2] = c1 * c4 - s1 * s4;
275 fMe[0][3] = c1 * this->
_a1 - s1 * (this->
_d3);
277 fMe[1][0] = s1 * s4 * c5 - c1 * c4 * c5;
278 fMe[1][1] = -s1 * s4 * s5 + c1 * c4 * s5;
279 fMe[1][2] = s1 * c4 + c1 * s4;
280 fMe[1][3] = s1 * this->
_a1 + c1 * (this->
_d3);
285 fMe[2][3] = this->
_d4 + q2;
407 eJe[0][0] = -(this->
_a1 * c4 + this->
_d3 * s4) * c5;
409 eJe[1][0] = (this->
_a1 * c4 + this->
_d3 * s4) * s5;
411 eJe[2][0] = (this->
_a1 * s4 - this->
_d3 * c4);
412 eJe[3][0] = eJe[3][2] = -s5;
413 eJe[4][0] = eJe[4][2] = -c5;
457 double c14 = cos(q1 + q4);
458 double s14 = sin(q1 + q4);
462 fJe[0][0] = -s1 * this->
_a1 - c1 * this->
_d3;
464 fJe[1][0] = c1 * this->
_a1 - s1 * this->
_d3;
472 fJe[5][0] = fJe[5][2] = 1.0;
514 double c14 = cos(q1 + q4);
515 double s14 = sin(q1 + q4);
517 double det = this->
_a1 * this->
_a1 + this->
_d3 * this->
_d3;
519 fJe_inverse[0][0] = (-s1 * this->
_a1 - c1 * this->
_d3) / det;
520 fJe_inverse[0][1] = (c1 * this->
_a1 - s1 * this->
_d3) / det;
522 fJe_inverse[1][2] = fJe_inverse[2][5] = 1.;
524 fJe_inverse[2][0] = -fJe_inverse[0][0];
525 fJe_inverse[2][1] = -fJe_inverse[0][1];
527 fJe_inverse[3][3] = c14;
528 fJe_inverse[3][4] = s14;
542 for (
unsigned int i = 0; i < 4; i++)
558 for (
unsigned int i = 0; i < 4; i++)
578 os <<
"Joint Max:" << std::endl
582 <<
"Joint Min: " << std::endl
586 <<
"a1: " << std::endl
587 <<
"\t" << afma4.
_a1 <<
"\t" << std::endl
589 <<
"d3: " << std::endl
590 <<
"\t" << afma4.
_d3 <<
"\t" << std::endl
592 <<
"d4: " << std::endl
593 <<
"\t" << afma4.
_d4 <<
"\t" << std::endl
595 <<
"eMc: " << std::endl
596 <<
"\tTranslation (m): " << afma4.
_eMc[0][3] <<
" " << afma4.
_eMc[1][3] <<
" " << afma4.
_eMc[2][3] <<
"\t"
598 <<
"\tRotation Rxyz (rad) : " << rxyz[0] <<
" " << rxyz[1] <<
" " << rxyz[2] <<
"\t" << std::endl
600 <<
"\t" << std::endl;
Modelization of Irisa's cylindrical robot named Afma4.
vpColVector getJointMin() const
void get_fJe(const vpColVector &q, vpMatrix &fJe) const
vpHomogeneousMatrix get_fMc(const vpColVector &q) const
void get_cMe(vpHomogeneousMatrix &cMe) const
void get_cVe(vpVelocityTwistMatrix &cVe) const
void get_eJe(const vpColVector &q, vpMatrix &eJe) const
void get_fJe_inverse(const vpColVector &q, vpMatrix &fJe_inverse) const
void get_cVf(const vpColVector &q, vpVelocityTwistMatrix &cVf) const
vpColVector getJointMax() const
static const unsigned int njoint
Number of joint.
void get_fMe(const vpColVector &q, vpHomogeneousMatrix &fMe) const
vpHomogeneousMatrix getForwardKinematics(const vpColVector &q) const
void resize(unsigned int nrows, unsigned int ncols, bool flagNullify=true, bool recopy_=true)
friend std::ostream & operator<<(std::ostream &s, const vpArray2D< Type > &A)
Implementation of column vector and the associated operations.
Implementation of an homogeneous matrix and operations on such kind of matrices.
vpHomogeneousMatrix & buildFrom(const vpTranslationVector &t, const vpRotationMatrix &R)
vpHomogeneousMatrix inverse() const
void extract(vpRotationMatrix &R) const
static double deg(double rad)
Implementation of a matrix and operations on matrices.
Implementation of a rotation matrix and operations on such kind of matrices.
Implementation of a rotation vector as Euler angle minimal representation.
vpVelocityTwistMatrix & buildFrom(const vpTranslationVector &t, const vpRotationMatrix &R)