All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
PatternGeneratorJRL::PinocchioRobot Class Reference

#include <jrl/walkgen/pinocchiorobot.hh>

Public Member Functions

EIGEN_MAKE_ALIGNED_OPERATOR_NEW PinocchioRobot ()
 Constructor and Destructor. More...
 
virtual ~PinocchioRobot ()
 
void computeInverseDynamics ()
 Functions computing kinematics and dynamics. More...
 
void computeInverseDynamics (MAL_VECTOR_TYPE(double)&q, MAL_VECTOR_TYPE(double)&v, MAL_VECTOR_TYPE(double)&a)
 
void computeForwardKinematics ()
 
void computeForwardKinematics (MAL_VECTOR_TYPE(double)&q)
 
void RPYToSpatialFreeFlyer (Eigen::Vector3d &rpy, Eigen::Vector3d &drpy, Eigen::Vector3d &ddrpy, Eigen::Quaterniond &quat, Eigen::Vector3d &omega, Eigen::Vector3d &domega)
 
virtual bool ComputeSpecializedInverseKinematics (const se3::JointIndex &jointRoot, const se3::JointIndex &jointEnd, const MAL_S4x4_MATRIX_TYPE(double)&jointRootPosition, const MAL_S4x4_MATRIX_TYPE(double)&jointEndPosition, MAL_VECTOR_TYPE(double)&q)
 ComputeSpecializedInverseKinematics : compute POSITION (not velocity) of the joints from end effector pose This is the implementation of the analitycal inverse kinematic extracted from the book of Kajita Authors Shuuji Kajita ; Hirohisa Hirukawa ; Kensuke Harada ; Kazuhito Yokoi ISBN 9782287877162 ; 9782287877155 It needs a specific distribution of the joint to work. More...
 
virtual bool testInverseKinematics ()
 testInverseKinematics : test if the robot has the good joint configuration to use the analitical inverse geometry to be overloaded if the user wants another inverse kinematics More...
 
virtual void initializeInverseKinematics ()
 initializeInverseKinematics : initialize the internal data for the inverse kinematic e.g. More...
 
std::vector< se3::JointIndex > jointsBetween (se3::JointIndex first, se3::JointIndex second)
 tools : More...
 
std::vector< se3::JointIndex > fromRootToIt (se3::JointIndex it)
 
se3::Data * Data ()
 Getters ///////. More...
 
se3::Data * DataInInitialePose ()
 
se3::Model * Model ()
 
PRFootleftFoot ()
 
PRFootrightFoot ()
 
se3::JointIndex leftWrist ()
 
se3::JointIndex rightWrist ()
 
se3::JointIndex chest ()
 
se3::JointIndex waist ()
 
double mass ()
 
se3::JointModelVector & getActuatedJoints ()
 
 MAL_VECTOR_TYPE (double) currentConfiguration()
 
 MAL_VECTOR_TYPE (double) currentVelocity()
 
 MAL_VECTOR_TYPE (double) currentAcceleration()
 
unsigned numberDof ()
 
void zeroMomentumPoint (MAL_S3_VECTOR_TYPE(double)&zmp)
 
void positionCenterOfMass (MAL_S3_VECTOR_TYPE(double)&com)
 
void CenterOfMass (MAL_S3_VECTOR_TYPE(double)&com, MAL_S3_VECTOR_TYPE(double)&dcom, MAL_S3_VECTOR_TYPE(double)&ddcom)
 
void currentConfiguration (MAL_VECTOR_TYPE(double) conf)
 SETTERS ///////. More...
 
void currentVelocity (MAL_VECTOR_TYPE(double) vel)
 
void currentAcceleration (MAL_VECTOR_TYPE(double) acc)
 
bool isInitialized ()
 Initialization functions ////////////////////////. More...
 
bool checkModel (se3::Model *robotModel)
 
bool initializeRobotModelAndData (se3::Model *robotModel, se3::Data *robotData)
 
bool initializeLeftFoot (PRFoot leftFoot)
 
bool initializeRightFoot (PRFoot rightFoot)
 

Constructor & Destructor Documentation

EIGEN_MAKE_ALIGNED_OPERATOR_NEW PatternGeneratorJRL::PinocchioRobot::PinocchioRobot ( )

Constructor and Destructor.

virtual PatternGeneratorJRL::PinocchioRobot::~PinocchioRobot ( )
virtual

Member Function Documentation

void PatternGeneratorJRL::PinocchioRobot::CenterOfMass ( MAL_S3_VECTOR_TYPE(double)&  com,
MAL_S3_VECTOR_TYPE(double)&  dcom,
MAL_S3_VECTOR_TYPE(double)&  ddcom 
)
inline
bool PatternGeneratorJRL::PinocchioRobot::checkModel ( se3::Model *  robotModel)
se3::JointIndex PatternGeneratorJRL::PinocchioRobot::chest ( )
inline
void PatternGeneratorJRL::PinocchioRobot::computeForwardKinematics ( )
void PatternGeneratorJRL::PinocchioRobot::computeForwardKinematics ( MAL_VECTOR_TYPE(double)&  q)
void PatternGeneratorJRL::PinocchioRobot::computeInverseDynamics ( )

Functions computing kinematics and dynamics.

Referenced by PatternGeneratorJRL::ZMPPreviewControlWithMultiBodyZMP::EvaluateMultiBodyZMP().

void PatternGeneratorJRL::PinocchioRobot::computeInverseDynamics ( MAL_VECTOR_TYPE(double)&  q,
MAL_VECTOR_TYPE(double)&  v,
MAL_VECTOR_TYPE(double)&  a 
)
virtual bool PatternGeneratorJRL::PinocchioRobot::ComputeSpecializedInverseKinematics ( const se3::JointIndex &  jointRoot,
const se3::JointIndex &  jointEnd,
const MAL_S4x4_MATRIX_TYPE(double)&  jointRootPosition,
const MAL_S4x4_MATRIX_TYPE(double)&  jointEndPosition,
MAL_VECTOR_TYPE(double)&  q 
)
virtual

ComputeSpecializedInverseKinematics : compute POSITION (not velocity) of the joints from end effector pose This is the implementation of the analitycal inverse kinematic extracted from the book of Kajita Authors Shuuji Kajita ; Hirohisa Hirukawa ; Kensuke Harada ; Kazuhito Yokoi ISBN 9782287877162 ; 9782287877155 It needs a specific distribution of the joint to work.

a test at the initialization of the class is [should be] done to check if everything is correct param root joint index, i.e. the waist or the shoulder param end joint index, i.e, the wrist or ankle indexes param root joint homogenous matrix position, param root joint homogenous matrix index, param 6D vector output, filled with zeros if the robot is not compatible

se3::Data* PatternGeneratorJRL::PinocchioRobot::Data ( )
inline

Getters ///////.

se3::Data* PatternGeneratorJRL::PinocchioRobot::DataInInitialePose ( )
inline
std::vector<se3::JointIndex> PatternGeneratorJRL::PinocchioRobot::fromRootToIt ( se3::JointIndex  it)
se3::JointModelVector& PatternGeneratorJRL::PinocchioRobot::getActuatedJoints ( )
inline
virtual void PatternGeneratorJRL::PinocchioRobot::initializeInverseKinematics ( )
virtual

initializeInverseKinematics : initialize the internal data for the inverse kinematic e.g.

the femur length

Returns
bool PatternGeneratorJRL::PinocchioRobot::initializeLeftFoot ( PRFoot  leftFoot)
bool PatternGeneratorJRL::PinocchioRobot::initializeRightFoot ( PRFoot  rightFoot)
bool PatternGeneratorJRL::PinocchioRobot::initializeRobotModelAndData ( se3::Model *  robotModel,
se3::Data *  robotData 
)
bool PatternGeneratorJRL::PinocchioRobot::isInitialized ( )
inline

Initialization functions ////////////////////////.

std::vector<se3::JointIndex> PatternGeneratorJRL::PinocchioRobot::jointsBetween ( se3::JointIndex  first,
se3::JointIndex  second 
)

tools :

se3::JointIndex PatternGeneratorJRL::PinocchioRobot::leftWrist ( )
inline
PatternGeneratorJRL::PinocchioRobot::MAL_VECTOR_TYPE ( double  )
inline
PatternGeneratorJRL::PinocchioRobot::MAL_VECTOR_TYPE ( double  )
inline
PatternGeneratorJRL::PinocchioRobot::MAL_VECTOR_TYPE ( double  )
inline
double PatternGeneratorJRL::PinocchioRobot::mass ( )
inline
se3::Model* PatternGeneratorJRL::PinocchioRobot::Model ( )
inline
unsigned PatternGeneratorJRL::PinocchioRobot::numberDof ( )
inline
void PatternGeneratorJRL::PinocchioRobot::positionCenterOfMass ( MAL_S3_VECTOR_TYPE(double)&  com)
inline
PRFoot* PatternGeneratorJRL::PinocchioRobot::rightFoot ( )
inline
se3::JointIndex PatternGeneratorJRL::PinocchioRobot::rightWrist ( )
inline
void PatternGeneratorJRL::PinocchioRobot::RPYToSpatialFreeFlyer ( Eigen::Vector3d &  rpy,
Eigen::Vector3d &  drpy,
Eigen::Vector3d &  ddrpy,
Eigen::Quaterniond &  quat,
Eigen::Vector3d &  omega,
Eigen::Vector3d &  domega 
)
virtual bool PatternGeneratorJRL::PinocchioRobot::testInverseKinematics ( )
virtual

testInverseKinematics : test if the robot has the good joint configuration to use the analitical inverse geometry to be overloaded if the user wants another inverse kinematics

Returns
se3::JointIndex PatternGeneratorJRL::PinocchioRobot::waist ( )
inline
void PatternGeneratorJRL::PinocchioRobot::zeroMomentumPoint ( MAL_S3_VECTOR_TYPE(double)&  zmp)
inline