pinocchio  UNKNOWN
se3 Namespace Reference

Classes

struct  AbaBackwardStep
 
struct  AbaForwardStep1
 
struct  AbaForwardStep2
 
struct  AlgorithmCheckerBase
 CRTP class describing the API of the checkers. More...
 
struct  AlgorithmCheckerList
 Checker having a list of Checker as input argument. More...
 
struct  BiasSphericalZYXTpl
 
struct  BiasZero
 
struct  CartesianAxis
 
struct  CartesianProductOperation
 
struct  CATBackwardStep
 
struct  CATForwardStep
 
struct  CcrbaBackwardStep
 
struct  CcrbaForwardStep
 
struct  CollisionPair
 
struct  computeABADerivativesBackwardStep1
 
struct  computeABADerivativesBackwardStep2
 
struct  computeABADerivativesForwardStep1
 
struct  computeABADerivativesForwardStep2
 
struct  computeGeneralizedGravityBackwardStep
 
struct  computeGeneralizedGravityDerivativeBackwardStep
 
struct  computeGeneralizedGravityDerivativeForwardStep
 
struct  computeGeneralizedGravityForwardStep
 
struct  computeMinverseBackwardStep
 
struct  computeMinverseForwardStep1
 
struct  computeMinverseForwardStep2
 
struct  computeRNEADerivativesBackwardStep
 
struct  computeRNEADerivativesForwardStep
 
class  ConstraintBase
 
struct  ConstraintIdentityTpl
 
struct  ConstraintPlanarTpl
 
struct  ConstraintPrismatic
 
struct  ConstraintPrismaticUnaligned
 
struct  ConstraintRevoluteTpl
 
struct  ConstraintRevoluteUnalignedTpl
 
struct  ConstraintSphericalTpl
 
struct  ConstraintSphericalZYXTpl
 
class  ConstraintTpl
 
struct  ConstraintTranslationTpl
 
struct  CoriolisMatrixBackwardStep
 
struct  CoriolisMatrixForwardStep
 
struct  CrbaBackwardStep
 
struct  CrbaBackwardStepMinimal
 
struct  CrbaForwardStep
 
struct  CrbaForwardStepMinimal
 
class  CreateJointData
 CreateJointData visitor. More...
 
struct  Data
 
struct  DCcrbaBackwardStep
 
struct  DCcrbaForwardStep
 
struct  DifferenceStep
 
struct  DifferenceStepAlgo
 
struct  emptyForwardStep
 
struct  eval_set_dim
 
struct  eval_set_dim< dim, Eigen::Dynamic >
 
struct  eval_set_dim< Eigen::Dynamic, dim >
 
class  Exception
 
class  ForceBase
 Base interface for forces representation. More...
 
class  ForceDense
 
class  ForceRef
 
class  ForceSetTpl
 
class  ForceTpl
 
struct  ForwardKinematicFirstStep
 
struct  ForwardKinematicsDerivativesForwardStep
 
struct  ForwardKinematicSecondStep
 
struct  ForwardKinematicZeroStep
 
struct  FrameTpl
 A Plucker coordinate frame attached to a parent joint inside a kinematic tree. More...
 
struct  GeometryData
 
struct  GeometryModel
 
struct  GeometryObject
 
class  InertiaBase
 
class  InertiaTpl
 
struct  IntegrateStep
 
struct  IntegrateStepAlgo
 
struct  InterpolateStep
 
struct  InterpolateStepAlgo
 
struct  IsSameConfigurationStep
 
struct  IsSameConfigurationStepAlgo
 
struct  JacobianCenterOfMassBackwardStep
 
struct  JointAccelerationDerivativesBackwardStep
 
class  JointBiasVisitor
 JointBiasVisitor visitor. More...
 
struct  JointCalcAbaVisitor
 JointCalcAbaVisitor fusion visitor. More...
 
struct  JointCalcFirstOrderVisitor
 JointCalcFirstOrderVisitor fusion visitor. More...
 
struct  JointCalcZeroOrderVisitor
 JointCalcZeroOrderVisitor fusion visitor. More...
 
struct  JointCompositeCalcFirstOrderStep
 
struct  JointCompositeCalcZeroOrderStep
 
class  JointConstraintVisitor
 JointConstraintVisitor visitor. More...
 
struct  JointData
 
struct  JointDataBase
 
struct  JointDataComposite
 
struct  JointDataFreeFlyerTpl
 
struct  JointDataPlanarTpl
 
struct  JointDataPrismatic
 
struct  JointDataPrismaticUnalignedTpl
 
struct  JointDataRevoluteTpl
 
struct  JointDataRevoluteUnalignedTpl
 
struct  JointDataRevoluteUnboundedTpl
 
struct  JointDataSphericalTpl
 
struct  JointDataSphericalZYXTpl
 
struct  JointDataTranslationTpl
 
class  JointDInvInertiaVisitor
 JointDInvInertiaVisitor visitor. More...
 
struct  JointEpsVisitor
 
struct  JointFreeFlyerTpl
 
class  JointIdVisitor
 JointIdVisitor visitor. More...
 
class  JointIdxQVisitor
 JointIdxQVisitor visitor. More...
 
class  JointIdxVVisitor
 JointIdxVVisitor visitor. More...
 
struct  JointJacobianForwardStep
 
struct  JointJacobiansForwardStep
 
struct  JointJacobiansForwardStep2
 
struct  JointJacobiansTimeVariationForwardStep
 
struct  JointModel
 
struct  JointModelBase
 
struct  JointModelComposite
 
struct  JointModelFreeFlyerTpl
 
struct  JointModelPlanarTpl
 
struct  JointModelPrismatic
 
struct  JointModelPrismaticUnalignedTpl
 
struct  JointModelRevoluteTpl
 
struct  JointModelRevoluteUnalignedTpl
 
struct  JointModelRevoluteUnboundedTpl
 
struct  JointModelSphericalTpl
 
struct  JointModelSphericalZYXTpl
 
struct  JointModelTranslationTpl
 
class  JointMotionVisitor
 JointMotionVisitor visitor. More...
 
class  JointNqVisitor
 JointNqVisitor visitor. More...
 
class  JointNvVisitor
 JointNvVisitor visitor. More...
 
struct  JointPlanarTpl
 
struct  JointPrismatic
 
struct  JointPrismatic< Scalar, Options, 0 >
 
struct  JointPrismatic< Scalar, Options, 1 >
 
struct  JointPrismatic< Scalar, Options, 2 >
 
struct  JointPrismaticUnalignedTpl
 
struct  JointRevoluteTpl
 
struct  JointRevoluteTpl< Scalar, Options, 0 >
 
struct  JointRevoluteTpl< Scalar, Options, 1 >
 
struct  JointRevoluteTpl< Scalar, Options, 2 >
 
struct  JointRevoluteUnalignedTpl
 
struct  JointRevoluteUnboundedTpl
 
class  JointSetIndexesVisitor
 JointSetIndexesVisitor visitor. More...
 
class  JointShortnameVisitor
 JointShortnameVisitor visitor. More...
 
struct  JointSphericalTpl
 
struct  JointSphericalZYXTpl
 
class  JointTransformVisitor
 JointTransformVisitor visitor. More...
 
struct  JointTranslationTpl
 
class  JointUDInvInertiaVisitor
 JointUDInvInertiaVisitor visitor. More...
 
class  JointUInertiaVisitor
 JointUInertiaVisitor visitor. More...
 
struct  JointVelocityDerivativesBackwardStep
 
struct  LieGroup
 
struct  LieGroupBase
 
struct  LieGroupIntegrateVisitor
 Visitor of the Lie Group integrate method. More...
 
struct  LieGroupMap
 
struct  LieGroupNameVisitor
 Visitor of the Lie Group name. More...
 
struct  LieGroupNeutralVisitor
 Visitor of the Lie Group neutral element. More...
 
struct  LieGroupNqVisitor
 Lie Group visitor of the dimension of the configuration space nq. More...
 
struct  LieGroupNvVisitor
 Lie Group visitor of the dimension of the tangent space nv. More...
 
struct  Model
 
class  MotionBase
 
class  MotionDense
 
struct  MotionPlanarTpl
 
struct  MotionPrismatic
 
struct  MotionPrismaticUnaligned
 
class  MotionRef
 
struct  MotionRevoluteTpl
 
struct  MotionRevoluteUnalignedTpl
 
struct  MotionSpherical
 
struct  MotionSphericalZYXTpl
 
class  MotionTpl
 
struct  MotionTranslationTpl
 
struct  NeutralStep
 
struct  NeutralStepAlgo
 
struct  NLEBackwardStep
 
struct  NLEForwardStep
 
struct  NormalizeStep
 
struct  NormalizeStepAlgo
 
struct  RandomConfigurationStep
 
struct  RandomConfigurationStepAlgo
 
struct  RneaBackwardStep
 
struct  RneaForwardStep
 
class  SE3Base
 
class  SE3Tpl
 
struct  SizeDepType
 
struct  SizeDepType< Eigen::Dynamic >
 
struct  SpatialAxis
 
struct  SpecialEuclideanOperation
 
struct  SpecialEuclideanOperation< 2 >
 
struct  SpecialEuclideanOperation< 3 >
 SE(3) More...
 
struct  SpecialOrthogonalOperation
 
struct  SpecialOrthogonalOperation< 2 >
 
struct  SpecialOrthogonalOperation< 3 >
 
struct  SquaredDistanceStep
 
struct  SquaredDistanceStepAlgo
 
class  Symmetric3Tpl
 
struct  traits
 
struct  traits< BiasSphericalZYXTpl< _Scalar, _Options > >
 
struct  traits< BiasZero >
 
struct  traits< CartesianProductOperation< LieGroup1, LieGroup2 > >
 
struct  traits< ConstraintIdentityTpl< _Scalar, _Options > >
 
struct  traits< ConstraintPlanarTpl< _Scalar, _Options > >
 
struct  traits< ConstraintPrismatic< _Scalar, _Options, axis > >
 
struct  traits< ConstraintPrismaticUnaligned< _Scalar, _Options > >
 
struct  traits< ConstraintRevoluteTpl< _Scalar, _Options, axis > >
 
struct  traits< ConstraintRevoluteUnalignedTpl< _Scalar, _Options > >
 
struct  traits< ConstraintSphericalTpl< _Scalar, _Options > >
 
struct  traits< ConstraintSphericalZYXTpl< _Scalar, _Options > >
 
struct  traits< ConstraintTpl< D, T, U > >
 
struct  traits< ConstraintTranslationTpl< _Scalar, _Options > >
 
struct  traits< ForceRef< Vector6ArgType > >
 
struct  traits< ForceTpl< _Scalar, _Options > >
 
struct  traits< InertiaTpl< T, U > >
 
struct  traits< Joint >
 
struct  traits< JointComposite >
 
struct  traits< JointData >
 
struct  traits< JointDataComposite >
 
struct  traits< JointDataFreeFlyerTpl< Scalar, Options > >
 
struct  traits< JointDataPlanarTpl< Scalar, Options > >
 
struct  traits< JointDataPrismatic< Scalar, Options, axis > >
 
struct  traits< JointDataPrismaticUnalignedTpl< Scalar, Options > >
 
struct  traits< JointDataRevoluteTpl< Scalar, Options, axis > >
 
struct  traits< JointDataRevoluteUnalignedTpl< Scalar, Options > >
 
struct  traits< JointDataRevoluteUnboundedTpl< Scalar, Options, axis > >
 
struct  traits< JointDataSphericalTpl< Scalar, Options > >
 
struct  traits< JointDataSphericalZYXTpl< Scalar, Options > >
 
struct  traits< JointDataTranslationTpl< Scalar, Options > >
 
struct  traits< JointFreeFlyerTpl< _Scalar, _Options > >
 
struct  traits< JointModel >
 
struct  traits< JointModelComposite >
 
struct  traits< JointModelFreeFlyerTpl< Scalar, Options > >
 
struct  traits< JointModelPlanarTpl< Scalar, Options > >
 
struct  traits< JointModelPrismatic< Scalar, Options, axis > >
 
struct  traits< JointModelPrismaticUnalignedTpl< Scalar, Options > >
 
struct  traits< JointModelRevoluteTpl< Scalar, Options, axis > >
 
struct  traits< JointModelRevoluteUnalignedTpl< Scalar, Options > >
 
struct  traits< JointModelRevoluteUnboundedTpl< Scalar, Options, axis > >
 
struct  traits< JointModelSphericalTpl< Scalar, Options > >
 
struct  traits< JointModelSphericalZYXTpl< Scalar, Options > >
 
struct  traits< JointModelTranslationTpl< Scalar, Options > >
 
struct  traits< JointPlanarTpl< _Scalar, _Options > >
 
struct  traits< JointPrismatic< _Scalar, _Options, axis > >
 
struct  traits< JointPrismaticUnalignedTpl< _Scalar, _Options > >
 
struct  traits< JointRevoluteTpl< _Scalar, _Options, axis > >
 
struct  traits< JointRevoluteUnalignedTpl< _Scalar, _Options > >
 
struct  traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >
 
struct  traits< JointSphericalTpl< _Scalar, _Options > >
 
struct  traits< JointSphericalZYXTpl< _Scalar, _Options > >
 
struct  traits< JointTranslationTpl< _Scalar, _Options > >
 
struct  traits< MotionPlanarTpl< _Scalar, _Options > >
 
struct  traits< MotionPrismatic< _Scalar, _Options, _axis > >
 
struct  traits< MotionPrismaticUnaligned< _Scalar, _Options > >
 
struct  traits< MotionRef< Vector6ArgType > >
 
struct  traits< MotionRevoluteTpl< _Scalar, _Options, axis > >
 
struct  traits< MotionRevoluteUnalignedTpl< _Scalar, _Options > >
 
struct  traits< MotionSpherical< _Scalar, _Options > >
 
struct  traits< MotionSphericalZYXTpl< Scalar, Options > >
 
struct  traits< MotionTpl< _Scalar, _Options > >
 
struct  traits< MotionTranslationTpl< _Scalar, _Options > >
 
struct  traits< SE3Tpl< T, U > >
 
struct  traits< SpecialEuclideanOperation< 2 > >
 
struct  traits< SpecialEuclideanOperation< 3 > >
 
struct  traits< SpecialEuclideanOperation< N > >
 
struct  traits< SpecialOrthogonalOperation< 2 > >
 
struct  traits< SpecialOrthogonalOperation< 3 > >
 
struct  traits< SpecialOrthogonalOperation< N > >
 
struct  traits< VectorSpaceOperation< Size > >
 
struct  VectorSpaceOperation
 

Typedefs

typedef ConstraintTpl< 1, double, 0 > Constraint1d
 
typedef ConstraintTpl< 3, double, 0 > Constraint3d
 
typedef ConstraintTpl< 6, double, 0 > Constraint6d
 
typedef ConstraintTpl< Eigen::Dynamic, double, 0 > ConstraintXd
 
typedef std::vector< CollisionPairCollisionPairsVector_t
 
typedef ForceSetTpl< double, 0 > ForceSet
 
typedef std::size_t Index
 
typedef Index JointIndex
 
typedef Index GeomIndex
 
typedef Index FrameIndex
 
typedef Index PairIndex
 
typedef FrameTpl< double > Frame
 
typedef JointModelRevoluteUnalignedTpl< double > JointModelRevoluteUnaligned
 
typedef JointDataRevoluteUnalignedTpl< double > JointDataRevoluteUnaligned
 
typedef JointModelSphericalTpl< double > JointModelSpherical
 
typedef JointDataSphericalTpl< double > JointDataSpherical
 
typedef JointModelSphericalZYXTpl< double > JointModelSphericalZYX
 
typedef JointDataSphericalZYXTpl< double > JointDataSphericalZYX
 
typedef JointModelPrismaticUnalignedTpl< double > JointModelPrismaticUnaligned
 
typedef JointDataPrismaticUnalignedTpl< double > JointDataPrismaticUnaligned
 
typedef JointModelFreeFlyerTpl< double > JointModelFreeFlyer
 
typedef JointDataFreeFlyerTpl< double > JointDataFreeFlyer
 
typedef JointModelPlanarTpl< double > JointModelPlanar
 
typedef JointDataPlanarTpl< double > JointDataPlanar
 
typedef JointModelTranslationTpl< double > JointModelTranslation
 
typedef JointDataTranslationTpl< double > JointDataTranslation
 
typedef JointPrismaticUnalignedTpl< double, 0 > JointPrismaticUnaligned
 
typedef JointPrismatic< double, 0, 0 > JointPX
 
typedef JointDataPrismatic< double, 0, 0 > JointDataPX
 
typedef JointModelPrismatic< double, 0, 0 > JointModelPX
 
typedef JointPrismatic< double, 0, 1 > JointPY
 
typedef JointDataPrismatic< double, 0, 1 > JointDataPY
 
typedef JointModelPrismatic< double, 0, 1 > JointModelPY
 
typedef JointPrismatic< double, 0, 2 > JointPZ
 
typedef JointDataPrismatic< double, 0, 2 > JointDataPZ
 
typedef JointModelPrismatic< double, 0, 2 > JointModelPZ
 
typedef JointRevoluteUnboundedTpl< double, 0, 0 > JointRUBX
 
typedef JointDataRevoluteUnboundedTpl< double, 0, 0 > JointDataRUBX
 
typedef JointModelRevoluteUnboundedTpl< double, 0, 0 > JointModelRUBX
 
typedef JointRevoluteUnboundedTpl< double, 0, 1 > JointRUBY
 
typedef JointDataRevoluteUnboundedTpl< double, 0, 1 > JointDataRUBY
 
typedef JointModelRevoluteUnboundedTpl< double, 0, 1 > JointModelRUBY
 
typedef JointRevoluteUnboundedTpl< double, 0, 2 > JointRUBZ
 
typedef JointDataRevoluteUnboundedTpl< double, 0, 2 > JointDataRUBZ
 
typedef JointModelRevoluteUnboundedTpl< double, 0, 2 > JointModelRUBZ
 
typedef JointRevoluteTpl< double, 0, 0 > JointRX
 
typedef JointDataRevoluteTpl< double, 0, 0 > JointDataRX
 
typedef JointModelRevoluteTpl< double, 0, 0 > JointModelRX
 
typedef JointRevoluteTpl< double, 0, 1 > JointRY
 
typedef JointDataRevoluteTpl< double, 0, 1 > JointDataRY
 
typedef JointModelRevoluteTpl< double, 0, 1 > JointModelRY
 
typedef JointRevoluteTpl< double, 0, 2 > JointRZ
 
typedef JointDataRevoluteTpl< double, 0, 2 > JointDataRZ
 
typedef JointModelRevoluteTpl< double, 0, 2 > JointModelRZ
 
typedef boost::variant< JointModelRX, JointModelRY, JointModelRZ, JointModelRevoluteUnaligned, JointModelSpherical, JointModelSphericalZYX, JointModelPX, JointModelPY, JointModelPZ, JointModelPrismaticUnaligned, JointModelFreeFlyer, JointModelPlanar, JointModelTranslation, JointModelRUBX, JointModelRUBY, JointModelRUBZ, boost::recursive_wrapper< JointModelComposite > > JointModelVariant
 
typedef boost::variant< JointDataRX, JointDataRY, JointDataRZ, JointDataRevoluteUnaligned, JointDataSpherical, JointDataSphericalZYX, JointDataPX, JointDataPY, JointDataPZ, JointDataPrismaticUnaligned, JointDataFreeFlyer, JointDataPlanar, JointDataTranslation, JointDataRUBX, JointDataRUBY, JointDataRUBZ, boost::recursive_wrapper< JointDataComposite > > JointDataVariant
 
typedef container::aligned_vector< JointDataJointDataVector
 
typedef container::aligned_vector< JointModelJointModelVector
 
typedef boost::variant< SpecialOrthogonalOperation< 2 >,SpecialOrthogonalOperation< 3 >,SpecialEuclideanOperation< 2 >,SpecialEuclideanOperation< 3 >,VectorSpaceOperation< 1 >,VectorSpaceOperation< 2 >,VectorSpaceOperation< 3 >,VectorSpaceOperation< Eigen::Dynamic > > LieGroupVariant
 
typedef CartesianAxis< 0 > AxisX
 
typedef CartesianAxis< 1 > AxisY
 
typedef CartesianAxis< 2 > AxisZ
 
typedef SE3Tpl< double, 0 > SE3
 
typedef MotionTpl< double, 0 > Motion
 
typedef ForceTpl< double, 0 > Force
 
typedef InertiaTpl< double, 0 > Inertia
 
typedef Symmetric3Tpl< double, 0 > Symmetric3
 
typedef SpatialAxis< 0 > AxisVX
 
typedef SpatialAxis< 1 > AxisVY
 
typedef SpatialAxis< 2 > AxisVZ
 
typedef SpatialAxis< 3 > AxisWX
 
typedef SpatialAxis< 4 > AxisWY
 
typedef SpatialAxis< 5 > AxisWZ
 

Enumerations

enum  GeometryType {
  VISUAL,
  COLLISION
}
 
enum  FrameType {
  OP_FRAME = 0x1 << 0,
  JOINT = 0x1 << 1,
  FIXED_JOINT = 0x1 << 2,
  BODY = 0x1 << 3,
  SENSOR = 0x1 << 4
}
 Enum on the possible types of frame.
 
enum  ReferenceFrame {
  WORLD = 0,
  LOCAL = 1
}
 
enum  { MAX_JOINT_NV = 6 }
 
enum  ModelFileExtensionType {
  UNKNOWN = 0,
  URDF,
  LUA
}
 Supported model file extensions.
 
enum  AssignmentOperatorType {
  SETTO,
  ADDTO,
  RMTO
}
 

Functions

void computeABADerivatives (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau, Eigen::MatrixXd &aba_partial_dq, Eigen::MatrixXd &aba_partial_dv, Data::RowMatrixXd &aba_partial_dtau)
 The derivatives of the Articulated-Body algorithm. More...
 
void computeABADerivatives (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau)
 The derivatives of the Articulated-Body algorithm. More...
 
const Eigen::VectorXd & aba (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau)
 The Articulated-Body algorithm. It computes the forward dynamics, aka the joint accelerations given the current state and actuation of the model. More...
 
const Eigen::VectorXd & aba (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau, const container::aligned_vector< Force > &fext)
 The Articulated-Body algorithm. It computes the forward dynamics, aka the joint accelerations given the current state and actuation of the model. More...
 
const Data::RowMatrixXd & computeMinverse (const Model &model, Data &data, const Eigen::VectorXd &q)
 Computes the inverse of the joint space inertia matrix using Articulated Body formulation. More...
 
 DEFINE_ALGO_CHECKER (ABA)
 
const SE3::Vector3 & centerOfMass (const Model &model, Data &data, const Eigen::VectorXd &q, const bool computeSubtreeComs=true)
 Computes the center of mass position of a given model according to a particular joint configuration. The result is accessible through data.com[0] for the full body com and data.com[i] for the subtree supported by joint i (expressed in the joint i frame). More...
 
const SE3::Vector3 & centerOfMass (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const bool computeSubtreeComs=true)
 Computes the center of mass position and velocity of a given model according to a particular joint configuration and velocity. The result is accessible through data.com[0], data.vcom[0] for the full body com position and velocity. And data.com[i] and data.vcom[i] for the subtree supported by joint i (expressed in the joint i frame). More...
 
const SE3::Vector3 & centerOfMass (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a, const bool computeSubtreeComs=true)
 Computes the center of mass position, velocity and acceleration of a given model according to a particular joint configuration, velocity and acceleration. The result is accessible through data.com[0], data.vcom[0], data.acom[0] for the full body com position, velocity and acceleation. And data.com[i], data.vcom[i] and data.acom[i] for the subtree supported by joint i (expressed in the joint i frame). More...
 
template<bool do_position, bool do_velocity, bool do_acceleration>
void centerOfMass (const Model &model, Data &data, const bool computeSubtreeComs=true)
 Computes the center of mass position, velocity and acceleration of a given model according to the current kinematic values contained in data and the template value parameters. The result is accessible through data.com[0], data.vcom[0] and data.acom[0] for the full body com position and velocity. And data.com[i] and data.vcom[i] for the subtree supported by joint i (expressed in the joint i frame). More...
 
const Data::Matrix3xjacobianCenterOfMass (const Model &model, Data &data, const Eigen::VectorXd &q, const bool computeSubtreeComs=true, const bool updateKinematics=true)
 Computes both the jacobian and the the center of mass position of a given model according to a particular joint configuration. The results are accessible through data.Jcom and data.com[0] and are both expressed in the world frame. In addition, the algorithm also computes the Jacobian of all the joints (. More...
 
const SE3::Vector3 & getComFromCrba (const Model &model, Data &data)
 Extracts the center of mass position from the joint space inertia matrix (also called the mass matrix). More...
 
const Data::Matrix3xgetJacobianComFromCrba (const Model &model, Data &data)
 Extracts both the jacobian of the center of mass (CoM), the total mass of the system and the CoM position from the joint space inertia matrix (also called the mass matrix). The results are accessible through data.Jcom, data.mass[0] and data.com[0] and are both expressed in the world frame. More...
 
const Data::Matrix6xccrba (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Computes the Centroidal Momentum Matrix, the Composite Ridig Body Inertia as well as the centroidal momenta according to the current joint configuration and velocity. More...
 
const Data::Matrix6xdccrba (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Computes the time derivative of the Centroidal Momentum Matrix according to the current configuration and velocity vectors. More...
 
 DEFINE_ALGO_CHECKER (Parent)
 Simple model checker, that assert that model.parents is indeed a tree.
 
bool checkData (const Model &model, const Data &data)
 
void computeAllTerms (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Computes efficiently all the terms needed for dynamic simulation. It is equivalent to the call at the same time to: More...
 
template<int level>
void copy (const Model &model, const Data &origin, Data &dest)
 Copy part of the data from <orig> to <dest>. Template parameter can be used to select at which differential level the copy should occur. More...
 
const Eigen::MatrixXd & crba (const Model &model, Data &data, const Eigen::VectorXd &q)
 Computes the upper triangular part of the joint space inertia matrix M by using the Composite Rigid Body Algorithm (Chapter 6, Rigid-Body Dynamics Algorithms, R. Featherstone, 2008). The result is accessible through data.M. More...
 
const Eigen::MatrixXd & crbaMinimal (const Model &model, Data &data, const Eigen::VectorXd &q)
 Computes the upper triangular part of the joint space inertia matrix M by using the Composite Rigid Body Algorithm (Chapter 6, Rigid-Body Dynamics Algorithms, R. Featherstone, 2008). The result is accessible through data.M. More...
 
 DEFINE_ALGO_CHECKER (CRBA)
 
AlgorithmCheckerList< ParentChecker, CRBAChecker, ABAChecker > makeDefaultCheckerList ()
 Default checker-list, used as the default argument in Model::check().
 
const Eigen::VectorXd & forwardDynamics (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &tau, const Eigen::MatrixXd &J, const Eigen::VectorXd &gamma, const double inv_damping=0., const bool updateKinematics=true)
 Compute the forward dynamics with contact constraints. More...
 
const Eigen::VectorXd & impulseDynamics (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v_before, const Eigen::MatrixXd &J, const double r_coeff=0., const bool updateKinematics=true)
 Compute the impulse dynamics with contact constraints. More...
 
double kineticEnergy (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const bool update_kinematics=true)
 Computes the kinetic energy of the system. The result is accessible through data.kinetic_energy. More...
 
double potentialEnergy (const Model &model, Data &data, const Eigen::VectorXd &q, const bool update_kinematics=true)
 Computes the potential energy of the system, i.e. the potential energy linked to the gravity field. The result is accessible through data.potential_energy. More...
 
Eigen::VectorXd finiteDifferenceIncrement (const Model &model)
 Computes the finite difference increments for each degree of freedom according to the current joint configuration. More...
 
void updateFramePlacements (const Model &model, Data &data)
 Updates the placement of each frame contained in the model. More...
 
const SE3updateFramePlacement (const Model &model, Data &data, const Model::FrameIndex frame_id)
 Updates the placement of the given frame. More...
 
PINOCCHIO_DEPRECATED void framesForwardKinematics (const Model &model, Data &data)
 Updates the placement of each frame contained in the model. More...
 
void framesForwardKinematics (const Model &model, Data &data, const Eigen::VectorXd &q)
 First calls the forwardKinematics on the model, then computes the placement of each frame. /sa se3::forwardKinematics. More...
 
void getFrameVelocity (const Model &model, const Data &data, const Model::FrameIndex frame_id, Motion &frame_v)
 Returns the spatial velocity of the frame expressed in the LOCAL frame coordinate system. You must first call se3::forwardKinematics to update placement and velocity values in data structure. More...
 
void getFrameAcceleration (const Model &model, const Data &data, const Model::FrameIndex frame_id, Motion &frame_a)
 Returns the spatial acceleration of the frame expressed in the LOCAL frame coordinate system. You must first call se3::forwardKinematics to update placement values in data structure. More...
 
template<ReferenceFrame rf>
void getFrameJacobian (const Model &model, const Data &data, const Model::FrameIndex frame_id, Data::Matrix6x &J)
 Returns the jacobian of the frame expressed either in the LOCAL frame coordinate system or in the WORLD coordinate system, depending on the value of the template parameter rf. You must first call se3::computeJointJacobians followed by se3::framesForwardKinematics to update placement values in data structure. More...
 
template<ReferenceFrame rf>
void getFrameJacobianTimeVariation (const Model &model, const Data &data, const Model::FrameIndex frameId, Data::Matrix6x &dJ)
 Computes the Jacobian time variation of a specific frame (given by frame_id) expressed either in the world frame (rf = WORLD) or in the local frame (rf = LOCAL). More...
 
void updateGeometryPlacements (const Model &model, Data &data, const GeometryModel &geomModel, GeometryData &geomData, const Eigen::VectorXd &q)
 Apply a forward kinematics and update the placement of the geometry objects. More...
 
void updateGeometryPlacements (const Model &model, const Data &data, const GeometryModel &geomModel, GeometryData &geomData)
 Update the placement of the geometry objects according to the current joint placements contained in data. More...
 
bool computeCollision (const GeometryModel &geomModel, GeometryData &geomData, const PairIndex &pairId)
 Compute the collision status between a SINGLE collision pair. The result is store in the collisionResults vector. More...
 
bool computeCollisions (const Model &model, Data &data, const GeometryModel &geomModel, GeometryData &geomData, const Eigen::VectorXd &q, const bool stopAtFirstCollision=false)
 
fcl::DistanceResult & computeDistance (const GeometryModel &geomModel, GeometryData &geomData, const PairIndex &pairId)
 Compute the minimal distance between collision objects of a SINGLE collison pair. More...
 
template<bool ComputeShortest>
std::size_t computeDistances (const Model &model, Data &data, const GeometryModel &geomModel, GeometryData &geomData, const Eigen::VectorXd &q)
 
void computeBodyRadius (const Model &model, const GeometryModel &geomModel, GeometryData &geomData)
 
void appendGeometryModel (GeometryModel &geomModel1, GeometryData &geomData1)
 
bool computeCollisions (const GeometryModel &geomModel, GeometryData &geomData, const bool stopAtFirstCollision=true)
 
template<bool COMPUTE_SHORTEST>
std::size_t computeDistances (const GeometryModel &geomModel, GeometryData &geomData)
 
void appendGeometryModel (GeometryModel &geomModel1, const GeometryModel &geomModel2)
 
const Data::Matrix6xcomputeJointJacobians (const Model &model, Data &data, const Eigen::VectorXd &q)
 Computes the full model Jacobian, i.e. the stack of all motion subspace expressed in the world frame. The result is accessible through data.J. This function computes also the forwardKinematics of the model. More...
 
PINOCCHIO_DEPRECATED const Data::Matrix6xcomputeJacobians (const Model &model, Data &data, const Eigen::VectorXd &q)
 Computes the full model Jacobian, i.e. the stack of all motion subspace expressed in the world frame. The result is accessible through data.J. This function computes also the forwardKinematics of the model. More...
 
const Data::Matrix6xcomputeJointJacobians (const Model &model, Data &data)
 Computes the full model Jacobian, i.e. the stack of all motion subspace expressed in the world frame. The result is accessible through data.J. This function assumes that se3::forwardKinematics has been called before. More...
 
PINOCCHIO_DEPRECATED const Data::Matrix6xcomputeJacobians (const Model &model, Data &data)
 Computes the full model Jacobian, i.e. the stack of all motion subspace expressed in the world frame. The result is accessible through data.J. This function assumes that se3::forwardKinematics has been called before. More...
 
template<ReferenceFrame rf>
void getJointJacobian (const Model &model, const Data &data, const Model::JointIndex jointId, Data::Matrix6x &J)
 Computes the Jacobian of a specific joint frame expressed either in the world (rf = WORLD) frame or in the local frame (rf = LOCAL) of the joint. More...
 
template<ReferenceFrame rf>
PINOCCHIO_DEPRECATED void getJacobian (const Model &model, const Data &data, const Model::JointIndex jointId, Data::Matrix6x &J)
 Computes the Jacobian of a specific joint frame expressed either in the world (rf = WORLD) frame or in the local frame (rf = LOCAL) of the joint. More...
 
void jointJacobian (const Model &model, Data &data, const Eigen::VectorXd &q, const Model::JointIndex jointId, Data::Matrix6x &J)
 Computes the Jacobian of a specific joint frame expressed in the local frame of the joint and store the result in the input argument J. More...
 
PINOCCHIO_DEPRECATED void jacobian (const Model &model, Data &data, const Eigen::VectorXd &q, const Model::JointIndex jointId, Data::Matrix6x &J)
 Computes the Jacobian of a specific joint frame expressed in the local frame of the joint and store the result in the input argument J. More...
 
PINOCCHIO_DEPRECATED const Data::Matrix6xjointJacobian (const Model &model, Data &data, const Eigen::VectorXd &q, const Model::JointIndex jointId)
 Computes the Jacobian of a specific joint frame expressed in the local frame of the joint. The result is stored in data.J. More...
 
const Data::Matrix6xcomputeJointJacobiansTimeVariation (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Computes the full model Jacobian variations with respect to time. It corresponds to dJ/dt which depends both on q and v. The result is accessible through data.dJ. More...
 
PINOCCHIO_DEPRECATED const Data::Matrix6xcomputeJacobiansTimeVariation (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Computes the full model Jacobian variations with respect to time. It corresponds to dJ/dt which depends both on q and v. The result is accessible through data.dJ. More...
 
template<ReferenceFrame rf>
void getJointJacobianTimeVariation (const Model &model, const Data &data, const Model::JointIndex jointId, Data::Matrix6x &dJ)
 Computes the Jacobian time variation of a specific joint frame expressed either in the world frame (rf = WORLD) or in the local frame (rf = LOCAL) of the joint. More...
 
template<ReferenceFrame rf>
PINOCCHIO_DEPRECATED void getJacobianTimeVariation (const Model &model, const Data &data, const Model::JointIndex jointId, Data::Matrix6x &dJ)
 Computes the Jacobian time variation of a specific joint frame expressed either in the world frame (rf = WORLD) or in the local frame (rf = LOCAL) of the joint. More...
 
template<typename LieGroup_t >
Eigen::VectorXd integrate (const Model &model, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Integrate a configuration for the specified model for a tangent vector during one unit time. More...
 
template<typename LieGroup_t >
Eigen::VectorXd interpolate (const Model &model, const Eigen::VectorXd &q0, const Eigen::VectorXd &q1, const double u)
 Interpolate the model between two configurations. More...
 
template<typename LieGroup_t >
Eigen::VectorXd difference (const Model &model, const Eigen::VectorXd &q0, const Eigen::VectorXd &q1)
 Compute the tangent vector that must be integrated during one unit time to go from q0 to q1. More...
 
template<typename LieGroup_t >
Eigen::VectorXd squaredDistance (const Model &model, const Eigen::VectorXd &q0, const Eigen::VectorXd &q1)
 Squared distance between two configuration vectors. More...
 
template<typename LieGroup_t >
double distance (const Model &model, const Eigen::VectorXd &q0, const Eigen::VectorXd &q1)
 Distance between two configuration vectors. More...
 
template<typename LieGroup_t >
Eigen::VectorXd randomConfiguration (const Model &model, const Eigen::VectorXd &lowerLimits, const Eigen::VectorXd &upperLimits)
 Generate a configuration vector uniformly sampled among provided limits. More...
 
template<typename LieGroup_t >
Eigen::VectorXd randomConfiguration (const Model &model)
 Generate a configuration vector uniformly sampled among the joint limits of the specified Model. More...
 
template<typename LieGroup_t >
void normalize (const Model &model, Eigen::VectorXd &q)
 Normalize a configuration. More...
 
template<typename LieGroup_t >
bool isSameConfiguration (const Model &model, const Eigen::VectorXd &q1, const Eigen::VectorXd &q2, const double &prec=Eigen::NumTraits< double >::dummy_precision())
 Return true if the given configurations are equivalents. More...
 
template<typename LieGroup_t >
Eigen::VectorXd neutral (const Model &model)
 Return the neutral configuration element related to the model configuration space. More...
 
void computeForwardKinematicsDerivatives (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a)
 Computes all the terms required to compute the derivatives of the placement, spatial velocity and acceleration for any joint of the model. More...
 
template<ReferenceFrame rf>
void getJointVelocityDerivatives (const Model &model, Data &data, const Model::JointIndex jointId, Data::Matrix6x &v_partial_dq, Data::Matrix6x &v_partial_dv)
 Computes the partial derivaties of the spatial velocity of a given with respect to the joint configuration and velocity. You must first call computForwardKinematicsDerivatives before calling this function. More...
 
template<ReferenceFrame rf>
void getJointAccelerationDerivatives (const Model &model, Data &data, const Model::JointIndex jointId, Data::Matrix6x &v_partial_dq, Data::Matrix6x &a_partial_dq, Data::Matrix6x &a_partial_dv, Data::Matrix6x &a_partial_da)
 Computes the partial derivaties of the spatial acceleration of a given with respect to the joint configuration, velocity and acceleration. You must first call computForwardKinematicsDerivatives before calling this function. It is important to notice that a direct outcome (for free) of this algo is v_partial_dq and v_partial_dv which is equal to a_partial_da. More...
 
void emptyForwardPass (const Model &model, Data &data)
 Browse through the kinematic structure with a void step. More...
 
void updateGlobalPlacements (const Model &model, Data &data)
 Update the global placement of the joints oMi according to the relative placements of the joints. More...
 
void forwardKinematics (const Model &model, Data &data, const Eigen::VectorXd &q)
 Update the joint placements according to the current joint configuration. More...
 
void forwardKinematics (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Update the joint placements and spatial velocities according to the current joint configuration and velocity. More...
 
void forwardKinematics (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a)
 Update the joint placements, spatial velocities and spatial accelerations according to the current joint configuration, velocity and acceleration. More...
 
void computeGeneralizedGravityDerivatives (const Model &model, Data &data, const Eigen::VectorXd &q, Eigen::MatrixXd &gravity_partial_dq)
 Computes the derivative of the generalized gravity contribution with respect to the joint configuration. More...
 
void computeRNEADerivatives (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a, Eigen::MatrixXd &rnea_partial_dq, Eigen::MatrixXd &rnea_partial_dv, Eigen::MatrixXd &rnea_partial_da)
 Computes the derivatives of the Recursive Newton Euler Algorithms with respect to the joint configuration and the joint velocity. More...
 
void computeRNEADerivatives (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a)
 Computes the derivatives of the Recursive Newton Euler Algorithms with respect to the joint configuration and the joint velocity. More...
 
const Eigen::VectorXd & rnea (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a)
 The Recursive Newton-Euler algorithm. It computes the inverse dynamics, aka the joint torques according to the current state of the system and the desired joint accelerations. More...
 
const Eigen::VectorXd & rnea (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const Eigen::VectorXd &a, const container::aligned_vector< Force > &fext)
 The Recursive Newton-Euler algorithm. It computes the inverse dynamics, aka the joint torques according to the current state of the system, the desired joint accelerations and the external forces. More...
 
const Eigen::VectorXd & nonLinearEffects (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Computes the non-linear effects (Corriolis, centrifual and gravitationnal effects), also called the bias terms \( b(q,\dot{q}) \) of the Lagrangian dynamics:

\( \begin{eqnarray} M \ddot{q} + b(q, \dot{q}) = \tau \end{eqnarray} \)


More...

 
const Eigen::VectorXd & computeGeneralizedGravity (const Model &model, Data &data, const Eigen::VectorXd &q)
 Computes the generalized gravity contribution \( g(q) \) of the Lagrangian dynamics:

\( \begin{eqnarray} M \ddot{q} + c(q, \dot{q}) + g(q) = \tau \end{eqnarray} \)


More...

 
const Eigen::MatrixXd & computeCoriolisMatrix (const Model &model, Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Computes the Coriolis Matrix \( C(q,\dot{q}) \) of the Lagrangian dynamics:

\( \begin{eqnarray} M \ddot{q} + C(q, \dot{q})\dot{q} + g(q) = \tau \end{eqnarray} \)


More...

 
template<typename Scalar >
const Scalar PI ()
 Returns the value of PI according to the template parameters Scalar. More...
 
template<typename Derived >
bool hasNaN (const Eigen::DenseBase< Derived > &m)
 
template<typename D1 , typename D2 >
D1::Scalar angleBetweenQuaternions (const Eigen::QuaternionBase< D1 > &q1, const Eigen::QuaternionBase< D2 > &q2)
 Compute the minimal angle between q1 and q2. More...
 
template<typename D1 , typename D2 >
bool defineSameRotation (const Eigen::QuaternionBase< D1 > &q1, const Eigen::QuaternionBase< D2 > &q2, const typename D1::RealScalar &prec=Eigen::NumTraits< typename D1::Scalar >::dummy_precision())
 Check if two quaternions define the same rotations. More...
 
template<typename D >
void firstOrderNormalize (const Eigen::QuaternionBase< D > &q)
 
template<typename D >
void uniformRandom (const Eigen::QuaternionBase< D > &q)
 Uniformly random quaternion sphere.
 
std::ostream & operator<< (std::ostream &os, const CollisionPair &X)
 
bool operator== (const fcl::CollisionObject &lhs, const fcl::CollisionObject &rhs)
 
bool operator== (const GeometryObject &lhs, const GeometryObject &rhs)
 
std::ostream & operator<< (std::ostream &os, const GeometryObject &geom_object)
 
template<typename Scalar , int Options>
std::ostream & operator<< (std::ostream &os, const FrameTpl< Scalar, Options > &f)
 
std::ostream & operator<< (std::ostream &os, const GeometryModel &geomModel)
 
std::ostream & operator<< (std::ostream &os, const GeometryData &geomData)
 
JointDataVariant createData (const JointModelVariant &jmodel)
 Visit a JointModelVariant through CreateData visitor to create a JointDataVariant. More...
 
void calc_zero_order (const JointModelVariant &jmodel, JointDataVariant &jdata, const Eigen::VectorXd &q)
 Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcZeroOrderVisitor to compute the joint data kinematics at order zero. More...
 
void calc_first_order (const JointModelVariant &jmodel, JointDataVariant &jdata, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcFirstOrderVisitor to compute the joint data kinematics at order one. More...
 
void calc_aba (const JointModelVariant &jmodel, JointDataVariant &jdata, Inertia::Matrix6 &I, const bool update_I)
 Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcAbaVisitor to. More...
 
double finiteDifferenceIncrement (const JointModelVariant &jmodel)
 Returns the finite difference increment of the joint model. More...
 
int nv (const JointModelVariant &jmodel)
 Visit a JointModelVariant through JointNvVisitor to get the dimension of the joint tangent space. More...
 
int nq (const JointModelVariant &jmodel)
 Visit a JointModelVariant through JointNqVisitor to get the dimension of the joint configuration space. More...
 
int idx_q (const JointModelVariant &jmodel)
 Visit a JointModelVariant through JointIdxQVisitor to get the index in the full model configuration space corresponding to the first degree of freedom of the Joint. More...
 
int idx_v (const JointModelVariant &jmodel)
 Visit a JointModelVariant through JointIdxVVisitor to get the index in the full model tangent space corresponding to the first joint tangent space degree. More...
 
JointIndex id (const JointModelVariant &jmodel)
 Visit a JointModelVariant through JointIdVisitor to get the index of the joint in the kinematic chain. More...
 
void setIndexes (JointModelVariant &jmodel, JointIndex id, int q, int v)
 Visit a JointModelVariant through JointSetIndexesVisitor to set the indexes of the joint in the kinematic chain. More...
 
std::string shortname (const JointModelVariant &jmodel)
 Visit a JointModelVariant through JointShortnameVisitor to get the shortname of the derived joint model. More...
 
ConstraintXd constraint_xd (const JointDataVariant &jdata)
 Visit a JointDataVariant through JointConstraintVisitor to get the joint constraint as a dense constraint. More...
 
SE3 joint_transform (const JointDataVariant &jdata)
 Visit a JointDataVariant through JointTransformVisitor to get the joint internal transform (transform between the entry frame and the exit frame of the joint) More...
 
Motion motion (const JointDataVariant &jdata)
 Visit a JointDataVariant through JointMotionVisitor to get the joint internal motion as a dense motion. More...
 
Motion bias (const JointDataVariant &jdata)
 Visit a JointDataVariant through JointBiasVisitor to get the joint bias as a dense motion. More...
 
Eigen::Matrix< double, 6, Eigen::Dynamic > u_inertia (const JointDataVariant &jdata)
 Visit a JointDataVariant through JointUInertiaVisitor to get the U matrix of the inertia matrix decomposition. More...
 
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > dinv_inertia (const JointDataVariant &jdata)
 Visit a JointDataVariant through JointDInvInertiaVisitor to get the D^{-1} matrix of the inertia matrix decomposition. More...
 
Eigen::Matrix< double, 6, Eigen::Dynamic > udinv_inertia (const JointDataVariant &jdata)
 Visit a JointDataVariant through JointUDInvInertiaVisitor to get U*D^{-1} matrix of the inertia matrix decomposition. More...
 
std::ostream & operator<< (std::ostream &os, const JointModelComposite &jmodel)
 
template<typename Scalar , int Options, typename Vector6Like >
ConstraintIdentityTpl< Scalar, Options >::Motion operator* (const ConstraintIdentityTpl< Scalar, Options > &, const Eigen::MatrixBase< Vector6Like > &v)
 
template<typename S1 , int O1, typename S2 , int O2>
InertiaTpl< S1, O1 >::Matrix6 operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintIdentityTpl< S2, O2 > &)
 
template<typename Matrix6Like , typename S2 , int O2>
 EIGEN_REF_CONSTTYPE (Matrix6Like) operator*(const Eigen
 
template<typename Scalar , int Options, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const MotionPlanarTpl< Scalar, Options > &m1, const MotionDense< MotionDerived > &m2)
 
template<typename Scalar , int Options, typename MatrixDerived >
MotionTpl< Scalar, Options > operator* (const ConstraintPlanarTpl< Scalar, Options > &, const Eigen::MatrixBase< MatrixDerived > &v)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionPlanarTpl< S2, O2 > &m2)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S1, 6, 3, O1 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintPlanarTpl< S2, O2 > &)
 
template<typename M6Like , typename S2 , int O2>
Eigen::Matrix< S2, 6, 3, O2 > operator* (const Eigen::MatrixBase< M6Like > &Y, const ConstraintPlanarTpl< S2, O2 > &)
 
template<typename Scalar , int Options, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const MotionPrismaticUnaligned< Scalar, Options > &m1, const MotionDense< MotionDerived > &m2)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionPrismaticUnaligned< S2, O2 > &m2)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S1, 6, 1 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintPrismaticUnaligned< S2, O2 > &cpu)
 
template<typename M6 , typename S2 , int O2>
const Eigen::ProductReturnType< Eigen::Block< const M6, 6, 3 >, const typename ConstraintPrismaticUnaligned< S2, O2 >::Vector3 >::Type operator* (const Eigen::MatrixBase< M6 > &Y, const ConstraintPrismaticUnaligned< S2, O2 > &cpu)
 
template<typename Scalar , int Options, int axis, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const MotionPrismatic< Scalar, Options, axis > &m1, const MotionDense< MotionDerived > &m2)
 
template<typename MotionDerived , typename S1 , int O1>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionPrismatic< S1, O1, 0 > &m2)
 
template<typename MotionDerived , typename S1 , int O1>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionPrismatic< S1, O1, 1 > &m2)
 
template<typename MotionDerived , typename S1 , int O1>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionPrismatic< S1, O1, 2 > &m2)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S1, 6, 1, O1 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintPrismatic< S2, O2, 0 > &)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S1, 6, 1, O1 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintPrismatic< S2, O2, 1 > &)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S1, 6, 1, O1 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintPrismatic< S2, O2, 2 > &)
 
template<typename M6Like , typename S2 , int O2, int axis>
const M6Like::ConstColXpr operator* (const Eigen::MatrixBase< M6Like > &Y, const ConstraintPrismatic< S2, O2, axis > &)
 
template<typename S1 , int O1, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const MotionRevoluteUnalignedTpl< S1, O1 > &m1, const MotionDense< MotionDerived > &m2)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionRevoluteUnalignedTpl< S2, O2 > &m2)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S2, 6, 1, O2 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintRevoluteUnalignedTpl< S2, O2 > &cru)
 
template<typename M6Like , typename S2 , int O2>
const Eigen::ProductReturnType< typename Eigen::internal::remove_const< typename SizeDepType< 3 >::ColsReturn< M6Like >::ConstType >::type, typename ConstraintRevoluteUnalignedTpl< S2, O2 >::Vector3 >::Type operator* (const Eigen::MatrixBase< M6Like > &Y, const ConstraintRevoluteUnalignedTpl< S2, O2 > &cru)
 
template<typename S1 , int O1, int axis, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const MotionRevoluteTpl< S1, O1, axis > &m1, const MotionDense< MotionDerived > &m2)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionRevoluteTpl< S2, O2, 0 > &m2)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionRevoluteTpl< S2, O2, 1 > &m2)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionRevoluteTpl< S2, O2, 2 > &m2)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S2, 6, 1, O2 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintRevoluteTpl< S2, O2, 0 > &)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S2, 6, 1, O2 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintRevoluteTpl< S2, O2, 1 > &)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S2, 6, 1, O2 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintRevoluteTpl< S2, O2, 2 > &)
 
template<typename M6Like , typename S2 , int O2, int axis>
const M6Like::ConstColXpr operator* (const Eigen::MatrixBase< M6Like > &Y, const ConstraintRevoluteTpl< S2, O2, axis > &)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator+ (const MotionDense< MotionDerived > &v, const BiasSphericalZYXTpl< S2, O2 > &c)
 
template<typename S1 , int O1, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const BiasSphericalZYXTpl< S1, O1 > &c, const MotionDense< MotionDerived > &v)
 
template<typename S1 , int O1, typename S2 , int O2>
MotionSphericalZYXTpl< S1, O1 > operator+ (const MotionSphericalZYXTpl< S1, O1 > &m, const BiasSphericalZYXTpl< S2, O2 > &c)
 
template<typename S1 , int O1, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const MotionSphericalZYXTpl< S1, O1 > &m1, const MotionDense< MotionDerived > &m2)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionSphericalZYXTpl< S2, O2 > &m2)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S1, 6, 3, O1 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintSphericalZYXTpl< S2, O2 > &S)
 
template<typename Matrix6Like , typename S2 , int O2>
const Eigen::ProductReturnType< typename Eigen::internal::remove_const< typename SizeDepType< 3 >::ColsReturn< Matrix6Like >::ConstType >::type, typename ConstraintSphericalZYXTpl< S2, O2 >::Matrix3 >::Type operator* (const Eigen::MatrixBase< Matrix6Like > &Y, const ConstraintSphericalZYXTpl< S2, O2 > &S)
 
template<typename S1 , int O1, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const MotionSpherical< S1, O1 > &m1, const MotionDense< MotionDerived > &m2)
 
template<typename Scalar , int Options, typename Vector3Like >
MotionSpherical< Scalar, Options > operator* (const ConstraintSphericalTpl< Scalar, Options > &, const Eigen::MatrixBase< Vector3Like > &v)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionSpherical< S2, O2 > &m2)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S2, 6, 3, O2 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintSphericalTpl< S2, O2 > &)
 
template<typename M6Like , typename S2 , int O2>
SizeDepType< 3 >::ColsReturn< M6Like >::ConstType operator* (const Eigen::MatrixBase< M6Like > &Y, const ConstraintSphericalTpl< S2, O2 > &)
 
template<typename S1 , int O1, typename MotionDerived >
MotionDerived::MotionPlain operator+ (const MotionTranslationTpl< S1, O1 > &m1, const MotionDense< MotionDerived > &m2)
 
template<typename MotionDerived , typename S2 , int O2>
MotionDerived::MotionPlain operator^ (const MotionDense< MotionDerived > &m1, const MotionTranslationTpl< S2, O2 > &m2)
 
template<typename S1 , int O1, typename S2 , int O2>
Eigen::Matrix< S2, 6, 3, O2 > operator* (const InertiaTpl< S1, O1 > &Y, const ConstraintTranslationTpl< S2, O2 > &)
 
template<typename M6Like , typename S2 , int O2>
const SizeDepType< 3 >::ColsReturn< M6Like >::ConstType operator* (const Eigen::MatrixBase< M6Like > &Y, const ConstraintTranslationTpl< S2, O2 > &)
 
 SE3_DETAILS_DISPATCH_JOINT_COMPOSITE_3 (IntegrateStep, IntegrateStepAlgo)
 
 SE3_DETAILS_DISPATCH_JOINT_COMPOSITE_4 (InterpolateStep, InterpolateStepAlgo)
 
 SE3_DETAILS_DISPATCH_JOINT_COMPOSITE_3 (DifferenceStep, DifferenceStepAlgo)
 
 SE3_DETAILS_DISPATCH_JOINT_COMPOSITE_4 (SquaredDistanceStep, SquaredDistanceStepAlgo)
 
 SE3_DETAILS_DISPATCH_JOINT_COMPOSITE_3 (RandomConfigurationStep, RandomConfigurationStepAlgo)
 
 SE3_DETAILS_DISPATCH_JOINT_COMPOSITE_1 (NormalizeStep, NormalizeStepAlgo)
 
 SE3_DETAILS_DISPATCH_JOINT_COMPOSITE_4 (IsSameConfigurationStep, IsSameConfigurationStepAlgo)
 
 SE3_DETAILS_DISPATCH_JOINT_COMPOSITE_1 (NeutralStep, NeutralStepAlgo)
 
int nq (const LieGroupVariant &lg)
 Visit a LieGroupVariant to get the dimension of the Lie group configuration space. More...
 
int nv (const LieGroupVariant &lg)
 Visit a LieGroupVariant to get the dimension of the Lie group tangent space. More...
 
std::string name (const LieGroupVariant &lg)
 Visit a LieGroupVariant to get the name of it. More...
 
Eigen::VectorXd neutral (const LieGroupVariant &lg)
 Visit a LieGroupVariant to get the neutral element of it. More...
 
template<class ConfigIn_t , class Tangent_t , class ConfigOut_t >
void integrate (const LieGroupVariant &lg, const Eigen::MatrixBase< ConfigIn_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< ConfigOut_t > &qout)
 Visit a LieGroupVariant to call its integrate method. More...
 
std::ostream & operator<< (std::ostream &os, const Model &model)
 
ModelFileExtensionType checkModelFileExtension (const std::string &filename)
 Extract the type of the given model file according to its extension. More...
 
std::string retrieveResourcePath (const std::string &string, const std::vector< std::string > &package_dirs) throw (std::invalid_argument)
 Retrieve the path of the file whose path is given in an url-format. Currently convert from the folliwing patterns : package:// or file://. More...
 
template<typename Vector3Like >
Eigen::Matrix< typename Vector3Like::Scalar, 3, 3, EIGEN_PLAIN_TYPE(Vector3Like)::Options > exp3 (const Eigen::MatrixBase< Vector3Like > &v)
 Exp: so3 -> SO3. More...
 
template<typename Matrix3Like , typename S2 >
Eigen::Matrix< typename Matrix3Like::Scalar, 3, 1, Eigen::internal::traits< Matrix3Like >::Options > log3 (const Eigen::MatrixBase< Matrix3Like > &R, S2 &theta)
 Same as log3. More...
 
template<typename Matrix3Like >
Eigen::Matrix< typename Matrix3Like::Scalar, 3, 1, Eigen::internal::traits< Matrix3Like >::Options > log3 (const Eigen::MatrixBase< Matrix3Like > &R)
 Log: SO3 -> so3. More...
 
template<typename Vector3Like , typename Matrix3Like >
void Jexp3 (const Eigen::MatrixBase< Vector3Like > &r, const Eigen::MatrixBase< Matrix3Like > &Jexp)
 Derivative of \( \exp{r} \)

\[ \frac{\sin{||r||}}{||r||} I_3 - \frac{1-\cos{||r||}}{||r||^2} \left[ r \right]_x + \frac{1}{||n||^2} (1-\frac{\sin{||r||}}{||r||}) r r^T \]

.

 
template<typename Scalar , typename Vector3Like , typename Matrix3Like >
void Jlog3 (const Scalar &theta, const Eigen::MatrixBase< Vector3Like > &log, const Eigen::MatrixBase< Matrix3Like > &Jlog)
 
template<typename Matrix3Like1 , typename Matrix3Like2 >
void Jlog3 (const Eigen::MatrixBase< Matrix3Like1 > &R, const Eigen::MatrixBase< Matrix3Like2 > &Jlog)
 
template<typename MotionDerived >
SE3Tpl< typename MotionDerived::Scalar, Eigen::internal::traits< typename MotionDerived::Vector3 >::Options > exp6 (const MotionDense< MotionDerived > &nu)
 Exp: se3 -> SE3. More...
 
template<typename Vector6Like >
SE3Tpl< typename Vector6Like::Scalar, Eigen::internal::traits< Vector6Like >::Options > exp6 (const Eigen::MatrixBase< Vector6Like > &v)
 Exp: se3 -> SE3. More...
 
template<typename Scalar , int Options>
MotionTpl< Scalar, Options > log6 (const SE3Tpl< Scalar, Options > &M)
 Log: SE3 -> se3. More...
 
template<typename D >
MotionTpl< typename D::Scalar, Eigen::internal::traits< D >::Options > log6 (const Eigen::MatrixBase< D > &M)
 Log: SE3 -> se3. More...
 
template<typename MotionDerived , typename Matrix6Like >
void Jexp6 (const MotionDense< MotionDerived > &nu, const Eigen::MatrixBase< Matrix6Like > &Jexp)
 Derivative of exp6 Computed as the inverse of Jlog6.
 
template<typename Scalar , int Options, typename Matrix6Like >
void Jlog6 (const SE3Tpl< Scalar, Options > &M, const Eigen::MatrixBase< Matrix6Like > &Jlog)
 Derivative of log6

\[ \left(\begin{array}{cc} Jlog3(R) & J * Jlog3(R) \\ 0 & Jlog3(R) \\ \end{array}\right) where \f[ \begin{eqnarray} J &=& \frac{1}{2}[\mathbf{p}]_{\times} + \dot{\beta} (\normr) \frac{\rot^T\mathbf{p}}{\normr}\rot\rot^T - (\normr\dot{\beta} (\normr) + 2 \beta(\normr)) \mathbf{p}\rot^T\right.\\ &&\left. + \rot^T\mathbf{p}\beta (\normr)I_3 + \beta (\normr)\rot\mathbf{p}^T \end{eqnarray} \]

and

\[ \beta(x)=\left(\frac{1}{x^2} - \frac{\sin x}{2x(1-\cos x)}\right) \]

.

 
fcl::Transform3f toFclTransform3f (const SE3 &m)
 
SE3 toPinocchioSE3 (const fcl::Transform3f &tf)
 
template<typename F1 >
traits< F1 >::ForcePlain operator* (const typename traits< F1 >::Scalar alpha, const ForceDense< F1 > &f)
 Basic operations specialization.
 
template<typename M1 , typename M2 >
traits< M1 >::MotionPlain operator^ (const MotionDense< M1 > &v1, const MotionDense< M2 > &v2)
 Basic operations specialization.
 
template<typename M1 , typename F1 >
traits< F1 >::ForcePlain operator^ (const MotionDense< M1 > &v, const ForceBase< F1 > &f)
 
template<typename M1 >
traits< M1 >::MotionPlain operator* (const typename traits< M1 >::Scalar alpha, const MotionDense< M1 > &v)
 
template<typename M1 >
const M1 & operator+ (const MotionBase< M1 > &v, const BiasZero &)
 
template<typename M1 >
const M1 & operator+ (const BiasZero &, const MotionBase< M1 > &v)
 
template<typename Vector3 , typename Matrix3 >
void skew (const Eigen::MatrixBase< Vector3 > &v, const Eigen::MatrixBase< Matrix3 > &M)
 Computes the skew representation of a given 3d vector, i.e. the antisymmetric matrix representation of the cross product operator ( \( [v]_{\cross} x = v \cross x \)) More...
 
template<typename D >
Eigen::Matrix< typename D::Scalar, 3, 3, EIGEN_PLAIN_TYPE(D)::Options > skew (const Eigen::MatrixBase< D > &v)
 Computes the skew representation of a given 3D vector, i.e. the antisymmetric matrix representation of the cross product operator. More...
 
template<typename Matrix3 , typename Vector3 >
void unSkew (const Eigen::MatrixBase< Matrix3 > &M, const Eigen::MatrixBase< Vector3 > &v)
 Inverse of skew operator. From a given skew-symmetric matrix M of dimension 3x3, it extracts the supporting vector, i.e. the entries of M. Mathematically speacking, it computes \( v \) such that \( M x = v \cross x \). More...
 
template<typename Matrix3 >
Eigen::Matrix< typename EIGEN_PLAIN_TYPE(Matrix3)::Scalar, 3, 1, EIGEN_PLAIN_TYPE(Matrix3)::Options > unSkew (const Eigen::MatrixBase< Matrix3 > &M)
 Inverse of skew operator. From a given skew-symmetric matrix M of dimension 3x3, it extracts the supporting vector, i.e. the entries of M. Mathematically speacking, it computes \( v \) such that \( M x = v \cross x \). More...
 
template<typename Scalar , typename Vector3 , typename Matrix3 >
void alphaSkew (const Scalar alpha, const Eigen::MatrixBase< Vector3 > &v, const Eigen::MatrixBase< Matrix3 > &M)
 Computes the skew representation of a given 3d vector multiplied by a given scalar. i.e. the antisymmetric matrix representation of the cross product operator ( \( [\alpha v]_{\cross} x = \alpha v \cross x \)) More...
 
template<typename Scalar , typename Vector3 >
Eigen::Matrix< typename Vector3::Scalar, 3, 3, EIGEN_PLAIN_TYPE(Vector3)::Options > alphaSkew (const Scalar alpha, const Eigen::MatrixBase< Vector3 > &v)
 Computes the skew representation of a given 3d vector multiplied by a given scalar. i.e. the antisymmetric matrix representation of the cross product operator ( \( [\alpha v]_{\cross} x = \alpha v \cross x \)) More...
 
template<typename V1 , typename V2 , typename Matrix3 >
void skewSquare (const Eigen::MatrixBase< V1 > &u, const Eigen::MatrixBase< V2 > &v, const Eigen::MatrixBase< Matrix3 > &C)
 Computes the square cross product linear operator C(u,v) such that for any vector w, \( u \times ( v \times w ) = C(u,v) w \). More...
 
template<typename V1 , typename V2 >
Eigen::Matrix< typename V1::Scalar, 3, 3, EIGEN_PLAIN_TYPE(V1)::Options > skewSquare (const Eigen::MatrixBase< V1 > &u, const Eigen::MatrixBase< V2 > &v)
 Computes the square cross product linear operator C(u,v) such that for any vector w, \( u \times ( v \times w ) = C(u,v) w \). More...
 
template<typename Vector3 , typename Matrix3xIn , typename Matrix3xOut >
void cross (const Eigen::MatrixBase< Vector3 > &v, const Eigen::MatrixBase< Matrix3xIn > &Min, const Eigen::MatrixBase< Matrix3xOut > &Mout)
 Applies the cross product onto the columns of M. More...
 
template<typename Vector3 , typename Matrix3x >
 EIGEN_PLAIN_TYPE (Matrix3x) cross(const Eigen
 Applies the cross product onto the columns of M. More...
 
template<int axis>
char axisLabel ()
 Generate the label (X, Y or Z) of the axis relative to its index. More...
 
template<>
char axisLabel< 0 > ()
 
template<>
char axisLabel< 1 > ()
 
template<>
char axisLabel< 2 > ()
 
std::vector< std::string > extractPathFromEnvVar (const std::string &env_var_name, const std::string &delimiter=":")
 Parse an environment variable if exists and extract paths according to the delimiter. More...
 
std::vector< std::string > rosPaths ()
 Parse the environment variable ROS_PACKAGE_PATH and extract paths. More...
 
std::string randomStringGenerator (const int len)
 Generate a random string composed of alphanumeric symbols of a given length. More...
 
std::string printVersion (const std::string &delimiter=".")
 Returns the current version of Pinocchio as a string using the following standard: PINOCCHIO_MINOR_VERSION.PINOCCHIO_MINOR_VERSION.PINOCCHIO_PATCH_VERSION.
 
bool checkVersionAtLeast (unsigned int major_version, unsigned int minor_version, unsigned int patch_version)
 Checks if the current version of Pinocchio is at least the version provided by the input arguments. More...
 

Variables

const double PId = PI<double>()
 The value of PI for double scalar type.
 

Detailed Description

This module represents a spatial force, e.g. a spatial impulse or force associated to a body. The spatial force is the mathematical representation of \( se^{*}(3) \), the dual of \( se(3) \).

Function Documentation

const Eigen::VectorXd & aba ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  tau 
)
inline

The Articulated-Body algorithm. It computes the forward dynamics, aka the joint accelerations given the current state and actuation of the model.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]tauThe joint torque vector (dim model.nv).
Returns
The current joint acceleration stored in data.ddq.

Definition at line 192 of file aba.hxx.

References Data::a, Model::check(), Data::ddq, Model::gravity, Data::joints, Model::joints, Model::njoints, Data::u, and Data::v.

const Eigen::VectorXd & aba ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  tau,
const container::aligned_vector< Force > &  fext 
)
inline

The Articulated-Body algorithm. It computes the forward dynamics, aka the joint accelerations given the current state and actuation of the model.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]tauThe joint torque vector (dim model.nv).
[in]fextVector of external forces expressed in the local frame of the joints (dim model.njoints)
Returns
The current joint acceleration stored in data.ddq.

Definition at line 226 of file aba.hxx.

References Data::a, Model::check(), Data::ddq, Data::f, Model::gravity, Data::joints, Model::joints, Model::njoints, Data::u, and Data::v.

void se3::alphaSkew ( const Scalar  alpha,
const Eigen::MatrixBase< Vector3 > &  v,
const Eigen::MatrixBase< Matrix3 > &  M 
)

Computes the skew representation of a given 3d vector multiplied by a given scalar. i.e. the antisymmetric matrix representation of the cross product operator ( \( [\alpha v]_{\cross} x = \alpha v \cross x \))

Parameters
[in]alphaa real scalar.
[in]va vector of dimension 3.
[out]Mthe skew matrix representation of dimension 3x3.

Definition at line 116 of file skew.hpp.

Referenced by alphaSkew(), Jexp6(), Jlog6(), and log6().

Eigen::Matrix<typename Vector3::Scalar,3,3,EIGEN_PLAIN_TYPE(Vector3)::Options> se3::alphaSkew ( const Scalar  alpha,
const Eigen::MatrixBase< Vector3 > &  v 
)
inline

Computes the skew representation of a given 3d vector multiplied by a given scalar. i.e. the antisymmetric matrix representation of the cross product operator ( \( [\alpha v]_{\cross} x = \alpha v \cross x \))

Parameters
[in]alphaa real scalar.
[in]va vector of dimension 3.
Returns
the skew matrix representation of \( \alpha v \).

Definition at line 142 of file skew.hpp.

References alphaSkew().

D1::Scalar se3::angleBetweenQuaternions ( const Eigen::QuaternionBase< D1 > &  q1,
const Eigen::QuaternionBase< D2 > &  q2 
)

Compute the minimal angle between q1 and q2.

Parameters
[in]q1input quaternion.
[in]q2input quaternion.
Returns
angle between the two quaternions

Definition at line 35 of file quaternion.hpp.

void se3::appendGeometryModel ( GeometryModel geomModel1,
GeometryData geomData1 
)
inline

Append geomModel2 to geomModel1

The steps for appending are:

  • add GeometryObject of geomModel2 to geomModel1,
  • add the collision pairs of geomModel2 into geomModel1 (indexes are updated)
  • add all the collision pairs between geometry objects of geomModel1 and geomModel2. It is possible to ommit both data (an additional function signature is available which makes them optionnal), then inner/outer objects are not updated.
Parameters
[out]geomModel1geometry model where the data is added
[in]geomModel2geometry model from which new geometries are taken
Note
Of course, the geomData corresponding to geomModel1 will not be valid anymore, and should be updated (or more simply, re-created from the new setting of geomModel1).
Todo:
This function is not asserted in unittest.
void se3::appendGeometryModel ( GeometryModel geomModel1,
const GeometryModel geomModel2 
)
inline

Append the geometry objects and geometry positions

  1. copy the collision pairs and update geomData1 accordingly.
  2. add the collision pairs between geomModel1 and geomModel2.

Definition at line 250 of file algorithm/geometry.hxx.

References GeometryModel::collisionPairs, GeometryModel::geometryObjects, and GeometryModel::ngeoms.

char se3::axisLabel ( )
inline

Generate the label (X, Y or Z) of the axis relative to its index.

Template Parameters
axisIndex of the axis (either 0 for X, 1 for Y and Z for 2).
Returns
a char containing the label of the axis.
Motion bias ( const JointDataVariant &  jdata)
inline

Visit a JointDataVariant through JointBiasVisitor to get the joint bias as a dense motion.

Parameters
[in]jdataThe jdata
Returns
The motion dense corresponding to the joint derived bias

Definition at line 321 of file joint-basic-visitors.hxx.

void calc_aba ( const JointModelVariant &  jmodel,
JointDataVariant &  jdata,
Inertia::Matrix6 &  I,
const bool  update_I 
)
inline

Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcAbaVisitor to.

Parameters
[in]jmodelThe corresponding JointModelVariant to the JointDataVariant we want to update
jdataThe JointDataVariant we want to update
IInertia matrix of the subtree following the jmodel in the kinematic chain as dense matrix
[in]update_IIf I should be updated or not

Definition at line 123 of file joint-basic-visitors.hxx.

Referenced by JointModelComposite::addJoint().

void calc_first_order ( const JointModelVariant &  jmodel,
JointDataVariant &  jdata,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcFirstOrderVisitor to compute the joint data kinematics at order one.

Parameters
[in]jmodelThe corresponding JointModelVariant to the JointDataVariant we want to update
jdataThe JointDataVariant we want to update
[in]qThe full model's (in which the joint belongs to) configuration vector

Definition at line 95 of file joint-basic-visitors.hxx.

void calc_zero_order ( const JointModelVariant &  jmodel,
JointDataVariant &  jdata,
const Eigen::VectorXd &  q 
)
inline

Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcZeroOrderVisitor to compute the joint data kinematics at order zero.

Parameters
[in]jmodelThe corresponding JointModelVariant to the JointDataVariant we want to update
jdataThe JointDataVariant we want to update
[in]qThe full model's (in which the joint belongs to) configuration vector

Definition at line 68 of file joint-basic-visitors.hxx.

const Data::Matrix6x & ccrba ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Computes the Centroidal Momentum Matrix, the Composite Ridig Body Inertia as well as the centroidal momenta according to the current joint configuration and velocity.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
Returns
The Centroidal Momentum Matrix Ag.

Definition at line 94 of file centroidal.hxx.

References Data::Ag, Model::check(), Data::com, forwardKinematics(), Data::hg, Data::Ig, Model::inertias, Data::joints, Model::joints, Data::Matrix6x, Model::njoints, Model::nv, ForceBase< Derived >::toVector(), and Data::Ycrb.

const SE3::Vector3 & centerOfMass ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const bool  computeSubtreeComs = true 
)
inline

Computes the center of mass position of a given model according to a particular joint configuration. The result is accessible through data.com[0] for the full body com and data.com[i] for the subtree supported by joint i (expressed in the joint i frame).

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]computeSubtreeComsIf true, the algorithm computes also the center of mass of the subtrees.
Returns
The center of mass position of the full rigid body system expressed in the world frame.

Definition at line 28 of file center-of-mass.hxx.

References Data::com, and forwardKinematics().

Referenced by centerOfMass().

const SE3::Vector3 & centerOfMass ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const bool  computeSubtreeComs = true 
)
inline

Computes the center of mass position and velocity of a given model according to a particular joint configuration and velocity. The result is accessible through data.com[0], data.vcom[0] for the full body com position and velocity. And data.com[i] and data.vcom[i] for the subtree supported by joint i (expressed in the joint i frame).

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]computeSubtreeComsIf true, the algorithm computes also the center of mass of the subtrees.
Returns
The center of mass position of the full rigid body system expressed in the world frame.

Definition at line 39 of file center-of-mass.hxx.

References forwardKinematics().

const SE3::Vector3 & centerOfMass ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  a,
const bool  computeSubtreeComs = true 
)
inline

Computes the center of mass position, velocity and acceleration of a given model according to a particular joint configuration, velocity and acceleration. The result is accessible through data.com[0], data.vcom[0], data.acom[0] for the full body com position, velocity and acceleation. And data.com[i], data.vcom[i] and data.acom[i] for the subtree supported by joint i (expressed in the joint i frame).

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]aThe joint acceleration vector (dim model.nv).
[in]computeSubtreeComsIf true, the algorithm computes also the center of mass of the subtrees.
Returns
The center of mass position of the full rigid body system expressed in the world frame.

Definition at line 51 of file center-of-mass.hxx.

References Data::a, Data::acom, centerOfMass(), Model::check(), Data::com, forwardKinematics(), Model::inertias, Data::liMi, Data::mass, Model::njoints, Model::parents, Data::v, and Data::vcom.

void centerOfMass ( const Model model,
Data data,
const bool  computeSubtreeComs = true 
)
inline

Computes the center of mass position, velocity and acceleration of a given model according to the current kinematic values contained in data and the template value parameters. The result is accessible through data.com[0], data.vcom[0] and data.acom[0] for the full body com position and velocity. And data.com[i] and data.vcom[i] for the subtree supported by joint i (expressed in the joint i frame).

Computes the center of mass position, velocity and acceleration of a given model according to the current kinematic values contained in data. The result is accessible through data.com[0], data.vcom[0] and data.acom[0] for the full body com position and velocity. And data.com[i] and data.vcom[i] for the subtree supported by joint i (expressed in the joint i frame).

Template Parameters
do_positionCompute the center of mass position.
do_velocityCompute the center of mass velocity.
do_accelerationCompute the center of mass acceleration.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]computeSubtreeComsIf true, the algorithm computes also the center of mass of the subtrees.
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]computeSubtreeComsIf true, the algorithm computes also the center of mass of the subtrees.

Definition at line 111 of file center-of-mass.hpp.

References getComFromCrba(), getJacobianComFromCrba(), and jacobianCenterOfMass().

bool checkData ( const Model model,
const Data data 
)
inline

Check the validity of data wrt to model, in particular if model has been modified.

Parameters
[in]modelreference model
[in]datacorresponding data
Returns
True if data is valid wrt model.

Definition at line 69 of file check.hxx.

References Data::a, Data::a_gf, Data::acom, Data::Ag, Data::com, Data::D, Data::ddq, Data::dq_after, Data::f, Data::Fcrb, Data::iMf, Data::J, Data::Jcom, Data::joints, Model::joints, Data::lastChild, Data::liMi, Data::M, Data::mass, Data::Matrix6x, Model::nframes, Model::njoints, Data::nle, Model::nv, nv(), Data::nvSubtree, Data::nvSubtree_fromRow, Data::oMf, Data::oMi, Model::parents, Data::parents_fromRow, Data::tau, Data::tmp, Data::torque_residual, Data::u, Data::U, Data::v, Data::vcom, Data::Yaba, and Data::Ycrb.

Referenced by Model::check().

ModelFileExtensionType se3::checkModelFileExtension ( const std::string &  filename)
inline

Extract the type of the given model file according to its extension.

Parameters
[in]filemaneThe complete path to the model file.
Returns
The type of the extension of the model file

Definition at line 53 of file utils.hpp.

bool se3::checkVersionAtLeast ( unsigned int  major_version,
unsigned int  minor_version,
unsigned int  patch_version 
)

Checks if the current version of Pinocchio is at least the version provided by the input arguments.

Parameters
[in]major_versionMajor version to check.
[in]minor_versionMinor version to check.
[in]patch_versionPatch version to check.
Returns
true if the current version of Pinocchio is greater than the version provided by the input arguments.

Definition at line 55 of file version.hpp.

void computeABADerivatives ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  tau,
Eigen::MatrixXd &  aba_partial_dq,
Eigen::MatrixXd &  aba_partial_dv,
Data::RowMatrixXd &  aba_partial_dtau 
)
inline

The derivatives of the Articulated-Body algorithm.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]tauThe joint torque vector (dim model.nv).
[out]aba_partial_dqPartial derivative of the generalized torque vector with respect to the joint configuration.
[out]aba_partial_dvPartial derivative of the generalized torque vector with respect to the joint velocity.
[out]aba_partial_dtauPartial derivative of the generalized torque vector with respect to the joint torque.
See also
se3::aba

First, compute Minv and a, the joint acceleration vector

First, compute Minv and a, the joint acceleration vector

Definition at line 301 of file aba-derivatives.hxx.

References Data::a, Model::check(), Data::dtau_dq, Data::dtau_dv, Data::Fcrb, Model::gravity, Data::joints, Model::joints, Model::njoints, Model::nq, Model::nv, Data::oa, and Data::u.

Referenced by computeABADerivatives().

void se3::computeABADerivatives ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  tau 
)
inline

The derivatives of the Articulated-Body algorithm.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]tauThe joint torque vector (dim model.nv).
Returns
The results are stored in data.ddq_dq, data.ddq_dv and data.Minv which respectively correspond to the partial derivatives of the joint acceleration vector with respect to the joint configuration, velocity and torque. And as for se3::computeMinverse, only the upper triangular part of data.Minv is filled.
See also
se3::aba and
se3::computeABADerivatives.

Definition at line 64 of file aba-derivatives.hpp.

References computeABADerivatives(), Data::ddq_dq, Data::ddq_dv, and Data::Minv.

void computeAllTerms ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Computes efficiently all the terms needed for dynamic simulation. It is equivalent to the call at the same time to:

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
Returns
All the results are stored in data. Please refer to the specific algorithm for further details.

Definition at line 203 of file compute-all-terms.hpp.

References Data::a, Data::a_gf, Model::check(), Data::com, Model::gravity, Data::Jcom, Data::joints, Model::joints, kineticEnergy(), Data::mass, Model::njoints, potentialEnergy(), Data::v, and Data::vcom.

Referenced by Pendulum::dynamics(), and forwardDynamics().

void computeBodyRadius ( const Model model,
const GeometryModel geomModel,
GeometryData geomData 
)
inline

Compute the radius of the geometry volumes attached to every joints.

See also
GeometryData::radius

For all bodies of the model, compute the point of the geometry model that is the further from the center of the joint. This quantity is used in some continuous collision test.

Definition at line 214 of file algorithm/geometry.hxx.

References SE3Base< Derived >::act(), GeometryObject::fcl, GeometryModel::geometryObjects, Model::joints, GeometryObject::parentJoint, GeometryObject::placement, and GeometryData::radius.

bool computeCollision ( const GeometryModel geomModel,
GeometryData geomData,
const PairIndex &  pairId 
)
inline

Compute the collision status between a SINGLE collision pair. The result is store in the collisionResults vector.

Parameters
[in]GeomModelthe geometry model (const)
[out]GeomDatathe corresponding geometry data, where computations are done.
[in]pairIdThe collsion pair index in the GeometryModel.
Returns
Return true is the collision objects are colliding.
Note
The complete collision result is also available in geomData.collisionResults[pairId]

Definition at line 65 of file algorithm/geometry.hxx.

References GeometryData::activeCollisionPairs, GeometryData::collisionObjects, GeometryModel::collisionPairs, GeometryData::collisionRequest, GeometryData::collisionResults, and computeCollisions().

Referenced by ur5x4::loadRobot().

bool computeCollisions ( const Model model,
Data data,
const GeometryModel geomModel,
GeometryData geomData,
const Eigen::VectorXd &  q,
const bool  stopAtFirstCollision = false 
)
inline

Compute the forward kinematics, update the geometry placements and calls computeCollision for every active pairs of GeometryData.

Parameters
[in]modelrobot model (const)
[out]datacorresponding data (nonconst) where FK results are stored
[in]geomModelgeometry model (const)
[out]geomDatacorresponding geometry data (nonconst) where distances are computed
[in]qrobot configuration.
[in]stopAtFirstCollisionif true, stop the loop on pairs after the first collision.
Returns
When ComputeShortest is true, the index of the collision pair which has the shortest distance. When ComputeShortest is false, the number of collision pairs.
Warning
if stopAtFirstcollision = true, then the collisions vector will not be entirely fulfilled (of course).
Note
A similar function is available without model, data and q, not recomputing the FK.

Definition at line 107 of file algorithm/geometry.hxx.

References Model::check(), and updateGeometryPlacements().

Referenced by computeCollision().

const Eigen::MatrixXd & computeCoriolisMatrix ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Computes the Coriolis Matrix \( C(q,\dot{q}) \) of the Lagrangian dynamics:

\( \begin{eqnarray} M \ddot{q} + C(q, \dot{q})\dot{q} + g(q) = \tau \end{eqnarray} \)


Note
In the previous equation, \( c(q, \dot{q}) = C(q, \dot{q})\dot{q} \).
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
Returns
The Coriolis matrix stored in data.C.

Definition at line 403 of file rnea.hxx.

References Data::C, Model::check(), Data::joints, Model::joints, Model::njoints, Model::nq, and Model::nv.

fcl::DistanceResult & computeDistance ( const GeometryModel geomModel,
GeometryData geomData,
const PairIndex &  pairId 
)
inline

Compute the minimal distance between collision objects of a SINGLE collison pair.

Parameters
[in]GeomModelthe geometry model (const)
[out]GeomDatathe corresponding geometry data, where computations are done.
[in]pairIdThe index of the collision pair in geom model.
Returns
A reference on fcl struct containing the distance result, referring an element of vector geomData::distanceResults.
Note
The complete distance result is also available in geomData.distanceResults[pairId]

Definition at line 126 of file algorithm/geometry.hxx.

References GeometryData::activeCollisionPairs, GeometryData::collisionObjects, GeometryModel::collisionPairs, computeDistances(), GeometryData::distanceRequest, and GeometryData::distanceResults.

std::size_t computeDistances ( const Model model,
Data data,
const GeometryModel geomModel,
GeometryData geomData,
const Eigen::VectorXd &  q 
)
inline

Compute the forward kinematics, update the geometry placements and calls computeDistance for every active pairs of GeometryData.

Parameters
[in]ComputeShortestdefault to true.
[in]

Definition at line 176 of file algorithm/geometry.hxx.

References Model::check(), and updateGeometryPlacements().

Referenced by computeDistance().

void computeForwardKinematicsDerivatives ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  a 
)
inline

Computes all the terms required to compute the derivatives of the placement, spatial velocity and acceleration for any joint of the model.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration (vector dim model.nq).
[in]vThe joint velocity (vector dim model.nv).
Remarks
This function is similar to do a forwardKinematics(model,data,q,v) followed by a computeJointJacobians(model,data,q). In addition, it computes the spatial velocity of the joint expressed in the world frame (see data.ov).

Definition at line 85 of file kinematics-derivatives.hxx.

References Data::a, Model::check(), Data::joints, Model::joints, Model::njoints, Model::nq, Model::nv, and Data::v.

const Eigen::VectorXd & computeGeneralizedGravity ( const Model model,
Data data,
const Eigen::VectorXd &  q 
)
inline

Computes the generalized gravity contribution \( g(q) \) of the Lagrangian dynamics:

\( \begin{eqnarray} M \ddot{q} + c(q, \dot{q}) + g(q) = \tau \end{eqnarray} \)


Note
This function is equivalent to se3::rnea(model, data, q, 0, 0).
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
Returns
The bias terms stored in data.g.

Definition at line 278 of file rnea.hxx.

References Data::a_gf, Model::check(), Data::g, Model::gravity, Data::joints, Model::joints, and Model::njoints.

void computeGeneralizedGravityDerivatives ( const Model model,
Data data,
const Eigen::VectorXd &  q,
Eigen::MatrixXd &  gravity_partial_dq 
)
inline

Computes the derivative of the generalized gravity contribution with respect to the joint configuration.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[out]gravity_partial_dqPartial derivative of the generalized gravity vector with respect to the joint configuration.
Remarks
gravity_partial_dq must be first initialized with zeros (gravity_partial_dq.setZero).
See also
se3::computeGeneralizedGravity

Definition at line 125 of file rnea-derivatives.hxx.

References Data::a_gf, Model::check(), Model::gravity, Data::joints, Model::joints, Model::njoints, Model::nq, and Model::nv.

PINOCCHIO_DEPRECATED const Data::Matrix6x& se3::computeJacobians ( const Model model,
Data data,
const Eigen::VectorXd &  q 
)
inline

Computes the full model Jacobian, i.e. the stack of all motion subspace expressed in the world frame. The result is accessible through data.J. This function computes also the forwardKinematics of the model.

Deprecated:
This function is now deprecated. Please refer now to se3::computeJointJacobians for similar function with updated name.
Note
This Jacobian does not correspond to any specific joint frame Jacobian. From this Jacobian, it is then possible to easily extract the Jacobian of a specific joint frame.
See also
se3::getJointJacobian for doing this specific extraction.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
Returns
The full model Jacobian (matrix 6 x model.nv).

Definition at line 60 of file jacobian.hpp.

References computeJointJacobians(), and Data::Matrix6x.

PINOCCHIO_DEPRECATED const Data::Matrix6x& se3::computeJacobians ( const Model model,
Data data 
)
inline

Computes the full model Jacobian, i.e. the stack of all motion subspace expressed in the world frame. The result is accessible through data.J. This function assumes that se3::forwardKinematics has been called before.

Deprecated:
This function is now deprecated. Please refer now to se3::computeJointJacobians for similar function with updated name.
Note
This Jacobian does not correspond to any specific joint frame Jacobian. From this Jacobian, it is then possible to easily extract the Jacobian of a specific joint frame.
See also
se3::getJointJacobian for doing this specific extraction.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
Returns
The full model Jacobian (matrix 6 x model.nv).

Definition at line 95 of file jacobian.hpp.

References computeJointJacobians(), getJointJacobian(), and Data::Matrix6x.

PINOCCHIO_DEPRECATED const Data::Matrix6x& se3::computeJacobiansTimeVariation ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Computes the full model Jacobian variations with respect to time. It corresponds to dJ/dt which depends both on q and v. The result is accessible through data.dJ.

Deprecated:
This function is now deprecated. Please refer now to se3::computeJointJacobiansTimeVariation for similar function with updated name.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
Returns
The full model Jacobian (matrix 6 x model.nv).

Definition at line 241 of file jacobian.hpp.

References computeJointJacobiansTimeVariation(), getJointJacobianTimeVariation(), and Data::Matrix6x.

const Data::Matrix6x & computeJointJacobians ( const Model model,
Data data,
const Eigen::VectorXd &  q 
)
inline

Computes the full model Jacobian, i.e. the stack of all motion subspace expressed in the world frame. The result is accessible through data.J. This function computes also the forwardKinematics of the model.

Note
This Jacobian does not correspond to any specific joint frame Jacobian. From this Jacobian, it is then possible to easily extract the Jacobian of a specific joint frame.
See also
se3::getJointJacobian for doing this specific extraction.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
Returns
The full model Jacobian (matrix 6 x model.nv).

Definition at line 59 of file jacobian.hxx.

References Model::check(), Data::J, Data::joints, Model::joints, and Model::njoints.

Referenced by computeJacobians().

const Data::Matrix6x & computeJointJacobians ( const Model model,
Data data 
)
inline

Computes the full model Jacobian, i.e. the stack of all motion subspace expressed in the world frame. The result is accessible through data.J. This function assumes that se3::forwardKinematics has been called before.

Note
This Jacobian does not correspond to any specific joint frame Jacobian. From this Jacobian, it is then possible to easily extract the Jacobian of a specific joint frame.
See also
se3::getJointJacobian for doing this specific extraction.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
Returns
The full model Jacobian (matrix 6 x model.nv).

Definition at line 92 of file jacobian.hxx.

References Model::check(), Data::J, Data::joints, Model::joints, and Model::njoints.

const Data::Matrix6x & computeJointJacobiansTimeVariation ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Computes the full model Jacobian variations with respect to time. It corresponds to dJ/dt which depends both on q and v. The result is accessible through data.dJ.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
Returns
The full model Jacobian (matrix 6 x model.nv).

Definition at line 228 of file jacobian.hxx.

References Model::check(), Data::dJ, Data::joints, Model::joints, and Model::njoints.

Referenced by computeJacobiansTimeVariation(), and jointJacobian().

const Data::RowMatrixXd & computeMinverse ( const Model model,
Data data,
const Eigen::VectorXd &  q 
)
inline

Computes the inverse of the joint space inertia matrix using Articulated Body formulation.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
Returns
The inverse of the joint space inertia matrix stored in data.ddq.

Definition at line 394 of file aba.hxx.

References Model::check(), Data::Fcrb, Model::inertias, Data::joints, Model::joints, Data::Minv, and Model::njoints.

void computeRNEADerivatives ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  a,
Eigen::MatrixXd &  rnea_partial_dq,
Eigen::MatrixXd &  rnea_partial_dv,
Eigen::MatrixXd &  rnea_partial_da 
)
inline

Computes the derivatives of the Recursive Newton Euler Algorithms with respect to the joint configuration and the joint velocity.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]aThe joint acceleration vector (dim model.nv).
[out]rnea_partial_dqPartial derivative of the generalized torque vector with respect to the joint configuration.
[out]rnea_partial_dvPartial derivative of the generalized torque vector with respect to the joint velocity.
[out]rnea_partial_daPartial derivative of the generalized torque vector with respect to the joint acceleration.
Remarks
rnea_partial_dq, rnea_partial_dv and rnea_partial_da must be first initialized with zeros (rnea_partial_dq.setZero(),etc). As for se3::crba, only the upper triangular part of rnea_partial_da is filled.
See also
se3::rnea

Definition at line 332 of file rnea-derivatives.hxx.

References Model::check(), Model::gravity, Data::joints, Model::joints, Model::njoints, Model::nq, Model::nv, and Data::oa.

Referenced by computeRNEADerivatives().

void se3::computeRNEADerivatives ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  a 
)
inline

Computes the derivatives of the Recursive Newton Euler Algorithms with respect to the joint configuration and the joint velocity.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]aThe joint acceleration vector (dim model.nv).
Returns
The results are stored in data.dtau_dq, data.dtau_dv and data.M which respectively correspond to the partial derivatives of the joint torque vector with respect to the joint configuration, velocity and acceleration. And as for se3::crba, only the upper triangular part of data.M is filled.
See also
se3::rnea, se3::crba, se3::cholesky::decompose

Definition at line 89 of file rnea-derivatives.hpp.

References computeRNEADerivatives(), Data::dtau_dq, Data::dtau_dv, and Data::M.

ConstraintXd constraint_xd ( const JointDataVariant &  jdata)
inline

Visit a JointDataVariant through JointConstraintVisitor to get the joint constraint as a dense constraint.

Parameters
[in]jdataThe jdata
Returns
The constraint dense corresponding to the joint derived constraint

Definition at line 276 of file joint-basic-visitors.hxx.

void copy ( const Model model,
const Data origin,
Data dest 
)
inline

Copy part of the data from <orig> to <dest>. Template parameter can be used to select at which differential level the copy should occur.

Parameters
[in]modelThe model structure of the rigid body system.
[in]origData from which the values are copied.
[in]destData to which the values are copied
[in]LEVELif =0, copy oMi. If =1, also copy v. If =2, also copy a, a_gf and f.

Definition at line 50 of file copy.hpp.

References Data::a, Data::a_gf, Data::f, Model::njoints, Data::oMi, and Data::v.

const Eigen::MatrixXd & crba ( const Model model,
Data data,
const Eigen::VectorXd &  q 
)
inline

Computes the upper triangular part of the joint space inertia matrix M by using the Composite Rigid Body Algorithm (Chapter 6, Rigid-Body Dynamics Algorithms, R. Featherstone, 2008). The result is accessible through data.M.

Note
You can easly get data.M symetric by copying the stricly upper trinangular part in the stricly lower tringular part with data.M.triangularView<Eigen::StrictlyLower>() = data.M.transpose().triangularView<Eigen::StrictlyLower>();
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
Returns
The joint space inertia matrix with only the upper triangular part computed.

Definition at line 168 of file crba.hxx.

References Model::check(), Data::joints, Model::joints, Data::M, and Model::njoints.

Referenced by impulseDynamics(), and ur5x4::loadRobot().

const Eigen::MatrixXd & crbaMinimal ( const Model model,
Data data,
const Eigen::VectorXd &  q 
)
inline

Computes the upper triangular part of the joint space inertia matrix M by using the Composite Rigid Body Algorithm (Chapter 6, Rigid-Body Dynamics Algorithms, R. Featherstone, 2008). The result is accessible through data.M.

Note
You can easly get data.M symetric by copying the stricly upper trinangular part in the stricly lower tringular part with data.M.triangularView<Eigen::StrictlyLower>() = data.M.transpose().triangularView<Eigen::StrictlyLower>();
A direct outcome of this algorithm is the computation of the centroidal momemntum matrix (data.Ag) and the joint jacobian matrix (data.J).
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
Returns
The joint space inertia matrix with only the upper triangular part computed.

Definition at line 189 of file crba.hxx.

References Data::Ag, Model::check(), Data::com, Data::joints, Model::joints, Data::M, Data::Matrix6x, Model::njoints, Model::nv, Model::parents, and Data::Ycrb.

JointDataVariant createData ( const JointModelVariant &  jmodel)
inline

Visit a JointModelVariant through CreateData visitor to create a JointDataVariant.

Parameters
[in]jmodelThe JointModelVariant we want to create a data for
Returns
The created JointDataVariant

Definition at line 43 of file joint-basic-visitors.hxx.

Referenced by JointModelComposite::addJoint().

void se3::cross ( const Eigen::MatrixBase< Vector3 > &  v,
const Eigen::MatrixBase< Matrix3xIn > &  Min,
const Eigen::MatrixBase< Matrix3xOut > &  Mout 
)
inline

Applies the cross product onto the columns of M.

Parameters
[in]va vector of dimension 3.
[in]Mina 3 rows matrix.
[out]Mouta 3 rows matrix.
Returns
the results of \( Mout = [v]_{\cross} Min \).

Definition at line 203 of file skew.hpp.

Referenced by EIGEN_PLAIN_TYPE().

const Data::Matrix6x & dccrba ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Computes the time derivative of the Centroidal Momentum Matrix according to the current configuration and velocity vectors.

Note
The computed terms allow to decomposed the spatial momentum variation as following: \( \dot{h} = A_g \ddot{q} + \dot{A_g}(q,\dot{q})\dot{q}\).
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint configuration vector (dim model.nv).
Returns
The Centroidal Momentum Matrix time derivative dAg

Definition at line 212 of file centroidal.hxx.

References Data::Ag, Model::check(), Data::com, Data::dAg, Data::doYcrb, forwardKinematics(), Data::hg, Data::Ig, Model::inertias, Data::joints, Model::joints, ForceBase< Derived >::linear(), Data::Matrix6x, Model::njoints, Model::nv, Data::oMi, Data::ov, Data::oYcrb, ForceBase< Derived >::toVector(), Data::v, and Data::vcom.

bool se3::defineSameRotation ( const Eigen::QuaternionBase< D1 > &  q1,
const Eigen::QuaternionBase< D2 > &  q2,
const typename D1::RealScalar &  prec = Eigen::NumTraits<typename D1::Scalar>::dummy_precision() 
)

Check if two quaternions define the same rotations.

Note
Two quaternions define the same rotation iff q1 == q2 OR q1 == -q2.
Parameters
[in]q1input quaternion.
[in]q2input quaternion.
Returns
Return true if the two input quaternions define the same rotation.

Definition at line 59 of file quaternion.hpp.

Referenced by SpecialOrthogonalOperation< 3 >::nv().

Eigen::VectorXd difference ( const Model model,
const Eigen::VectorXd &  q0,
const Eigen::VectorXd &  q1 
)
inline

Compute the tangent vector that must be integrated during one unit time to go from q0 to q1.

Parameters
[in]modelModel to be differenced
[in]q0Initial configuration (size model.nq)
[in]q1Wished configuration (size model.nq)
Returns
The corresponding velocity (size model.nv)

Definition at line 83 of file joint-configuration.hxx.

References Model::joints, Model::njoints, and Model::nv.

Referenced by LieGroupBase< Derived >::isSameConfiguration().

Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > dinv_inertia ( const JointDataVariant &  jdata)
inline

Visit a JointDataVariant through JointDInvInertiaVisitor to get the D^{-1} matrix of the inertia matrix decomposition.

Parameters
[in]jdataThe jdata
Returns
The D^{-1} matrix of the inertia matrix decomposition

Definition at line 355 of file joint-basic-visitors.hxx.

double distance ( const Model model,
const Eigen::VectorXd &  q0,
const Eigen::VectorXd &  q1 
)
inline

Distance between two configuration vectors.

Parameters
[in]modelModel we want to compute the distance
[in]q0Configuration 0 (size model.nq)
[in]q1Configuration 1 (size model.nq)
Returns
The distance between the two configurations

Definition at line 129 of file joint-configuration.hxx.

se3::EIGEN_PLAIN_TYPE ( Matrix3x  ) const
inline

Applies the cross product onto the columns of M.

Parameters
[in]va vector of dimension 3.
[in]Ma 3 rows matrix.
Returns
the results of \( [v]_{\cross} M \).

Definition at line 227 of file skew.hpp.

References cross().

Referenced by exp3().

void emptyForwardPass ( const Model model,
Data data 
)
inline

Browse through the kinematic structure with a void step.

Note
This void step allows to quantify the time spent in the rollout.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.

Definition at line 45 of file kinematics.hxx.

References Model::check(), Data::joints, Model::joints, and Model::njoints.

Eigen::Matrix<typename Vector3Like::Scalar,3,3,EIGEN_PLAIN_TYPE(Vector3Like)::Options> se3::exp3 ( const Eigen::MatrixBase< Vector3Like > &  v)

Exp: so3 -> SO3.

Return the integral of the input angular velocity during time 1.

Parameters
[in]vThe angular velocity vector.
Returns
The rotational matrix associated to the integration of the angular velocity during time 1.

Definition at line 43 of file explog.hpp.

References EIGEN_PLAIN_TYPE().

Referenced by SpecialOrthogonalOperation< 3 >::nv().

SE3Tpl<typename MotionDerived::Scalar, Eigen::internal::traits<typename MotionDerived::Vector3>::Options> se3::exp6 ( const MotionDense< MotionDerived > &  nu)

Exp: se3 -> SE3.

Return the integral of the input twist during time 1.

Parameters
[in]nuThe input twist.
Returns
The rigid transformation associated to the integration of the twist during time 1.

Definition at line 241 of file explog.hpp.

Referenced by exp6(), and SpecialEuclideanOperation< 3 >::nv().

SE3Tpl<typename Vector6Like::Scalar, Eigen::internal::traits<Vector6Like>::Options> se3::exp6 ( const Eigen::MatrixBase< Vector6Like > &  v)

Exp: se3 -> SE3.

Return the integral of the input spatial velocity during time 1.

Parameters
[in]vThe twist represented by a vector.
Returns
The rigid transformation associated to the integration of the twist vector during time 1..

Definition at line 307 of file explog.hpp.

References exp6().

std::vector<std::string> se3::extractPathFromEnvVar ( const std::string &  env_var_name,
const std::string &  delimiter = ":" 
)
inline

Parse an environment variable if exists and extract paths according to the delimiter.

Parameters
[in]env_var_nameThe name of the environment variable.
[in]delimiterThe delimiter between two consecutive paths.
Returns
The vector of paths extracted from the environment variable value.

Definition at line 36 of file file-explorer.hpp.

Referenced by rosPaths().

Eigen::VectorXd finiteDifferenceIncrement ( const Model model)
inline

Computes the finite difference increments for each degree of freedom according to the current joint configuration.

[in] model The model of the kinematic tree.

Returns
The finite difference increments for each degree of freedom.

Definition at line 49 of file finite-differences.hxx.

References Model::joints, and Model::nv.

Referenced by JointModelComposite::addJoint().

double finiteDifferenceIncrement ( const JointModelVariant &  jmodel)
inline

Returns the finite difference increment of the joint model.

Parameters
[in]jmodelThe model of the joint.
Returns
The finite diffrence increment.

Definition at line 140 of file joint-basic-visitors.hxx.

void se3::firstOrderNormalize ( const Eigen::QuaternionBase< D > &  q)

Approximately normalize by applying the first order limited development of the normalization function.

Only additions and multiplications are required. Neither square root nor division are used (except a division by 2). Let \( \delta = ||q||^2 - 1 \). Using the following limited development:

\[ \frac{1}{||q||} = (1 + \delta)^{-\frac{1}{2}} = 1 - \frac{\delta}{2} + \mathcal{O}(\delta^2) \]

The output is

\[ q_{out} = q \times \frac{3 - ||q_{in}||^2}{2} \]

The output quaternion is guaranted to statisfy the following:

\[ | ||q_{out}|| - 1 | \le \frac{M}{2} ||q_{in}|| ( ||q_{in}||^2 - 1 )^2 \]

where \( M = \frac{3}{4} (1 - \epsilon)^{-\frac{5}{2}} \) and \( \epsilon \) is the maximum tolerance of \( ||q_{in}||^2 - 1 \).

Warning
\( ||q||^2 - 1 \) should already be close to zero.
Note
See http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html#title3 to know the reason why the argument is const.

Definition at line 88 of file quaternion.hpp.

Referenced by SpecialOrthogonalOperation< 3 >::nv(), and SpecialEuclideanOperation< 3 >::nv().

const Eigen::VectorXd& se3::forwardDynamics ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  tau,
const Eigen::MatrixXd &  J,
const Eigen::VectorXd &  gamma,
const double  inv_damping = 0.,
const bool  updateKinematics = true 
)
inline

Compute the forward dynamics with contact constraints.

Note
It computes the following problem:
\( \begin{eqnarray} \underset{\ddot{q}}{\min} & & \| \ddot{q} - \ddot{q}_{\text{free}} \|_{M(q)} \\ \text{s.t.} & & J (q) \ddot{q} + \gamma (q, \dot{q}) = 0 \end{eqnarray} \)

where \( \ddot{q}_{\text{free}} \) is the free acceleration (i.e. without constraints), \( M \) is the mass matrix, \( J \) the constraint Jacobian and \( \gamma \) is the constraint drift. By default, the constraint Jacobian is assumed to be full rank, and undamped Cholesky inverse is performed.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration (vector dim model.nq).
[in]vThe joint velocity (vector dim model.nv).
[in]tauThe joint torque vector (dim model.nv).
[in]JThe Jacobian of the constraints (dim nb_constraints*model.nv).
[in]gammaThe drift of the constraints (dim nb_constraints).
[in]inv_dampingDamping factor for cholesky decomposition of JMinvJt. Set to zero if constraints are full rank.
[in]updateKinematicsIf true, the algorithm calls first se3::computeAllTerms. Otherwise, it uses the current dynamic values stored in data. \
Note
A hint: 1e-12 as the damping factor gave good result in the particular case of redundancy in contact constraints on the two feet.
Returns
A reference to the joint acceleration stored in data.ddq. The Lagrange Multipliers linked to the contact forces are available throw data.lambda_c vector.

Definition at line 55 of file dynamics.hpp.

References Model::check(), computeAllTerms(), Data::D, Data::ddq, Data::JMinvJt, Data::lambda_c, Data::llt_JMinvJt, Data::nle, Model::nq, Model::nv, Data::sDUiJt, and Data::torque_residual.

void forwardKinematics ( const Model model,
Data data,
const Eigen::VectorXd &  q 
)
inline

Update the joint placements according to the current joint configuration.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration (vector dim model.nq).

Definition at line 106 of file kinematics.hxx.

References Model::check(), Data::joints, Model::joints, Model::njoints, and Model::nq.

Referenced by ccrba(), centerOfMass(), dccrba(), framesForwardKinematics(), jacobianCenterOfMass(), kineticEnergy(), SpecialEuclideanOperation< 2 >::nv(), potentialEnergy(), and updateGeometryPlacements().

void forwardKinematics ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Update the joint placements and spatial velocities according to the current joint configuration and velocity.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration (vector dim model.nq).
[in]vThe joint velocity (vector dim model.nv).

Definition at line 159 of file kinematics.hxx.

References Model::check(), Data::joints, Model::joints, Model::njoints, Model::nq, Model::nv, and Data::v.

void forwardKinematics ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  a 
)
inline

Update the joint placements, spatial velocities and spatial accelerations according to the current joint configuration, velocity and acceleration.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration (vector dim model.nq).
[in]vThe joint velocity (vector dim model.nv).
[in]aThe joint acceleration (vector dim model.nv).

Definition at line 218 of file kinematics.hxx.

References Data::a, Model::check(), Data::joints, Model::joints, Model::njoints, Model::nq, Model::nv, and Data::v.

Referenced by Pendulum::__init__(), and ur5x4::loadRobot().

void framesForwardKinematics ( const Model model,
Data data 
)
inline

Updates the placement of each frame contained in the model.

Deprecated:
This function is now deprecated. Please call se3::updateFramePlacements for same functionality
Parameters
[in]modelThe kinematic model.
dataData associated to model.
Warning
One of the algorithms forwardKinematics should have been called first

Definition at line 60 of file frames.hxx.

References updateFramePlacements().

void framesForwardKinematics ( const Model model,
Data data,
const Eigen::VectorXd &  q 
)
inline

First calls the forwardKinematics on the model, then computes the placement of each frame. /sa se3::forwardKinematics.

Parameters
[in]modelThe kinematic model.
dataData associated to model.
[in]qConfiguration vector.

Definition at line 66 of file frames.hxx.

References Model::check(), forwardKinematics(), and updateFramePlacements().

const SE3::Vector3 & getComFromCrba ( const Model model,
Data data 
)
inline

Extracts the center of mass position from the joint space inertia matrix (also called the mass matrix).

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
Returns
The center of mass position of the rigid body system expressed in the world frame (vector 3).

Definition at line 136 of file center-of-mass.hxx.

References Model::check(), Data::com, Data::liMi, and Data::Ycrb.

Referenced by centerOfMass().

void getFrameAcceleration ( const Model model,
const Data data,
const Model::FrameIndex  frame_id,
Motion frame_a 
)
inline

Returns the spatial acceleration of the frame expressed in the LOCAL frame coordinate system. You must first call se3::forwardKinematics to update placement values in data structure.

Parameters
[in]modelThe kinematic model
[in]dataData associated to model
[in]frame_idId of the operational Frame
[out]frame_aThe spatial acceleration of the Frame expressed in the coordinates Frame.
Warning
Second order forwardKinematics should have been called first

Definition at line 88 of file frames.hxx.

References Data::a, Model::check(), and Model::frames.

void getFrameJacobian ( const Model model,
const Data data,
const Model::FrameIndex  frame_id,
Data::Matrix6x J 
)
inline

Returns the jacobian of the frame expressed either in the LOCAL frame coordinate system or in the WORLD coordinate system, depending on the value of the template parameter rf. You must first call se3::computeJointJacobians followed by se3::framesForwardKinematics to update placement values in data structure.

Returns the jacobian of the frame expresssed the LOCAL frame coordinate system. You must first call se3::computeJointJacobians followed by se3::framesForwardKinematics to update placement values in data structure.

Template Parameters
rfReference frame in which the columns of the Jacobian are expressed.
Remarks
Similarly to se3::getJointJacobian with LOCAL or WORLD templated parameters, if rf == LOCAL, this function returns the Jacobian of the frame expressed in the local coordinates of the frame, or if rl == WORLD, it returns the Jacobian expressed of the point coincident with the origin and expressed in a coordinate system aligned with the WORLD.
Parameters
[in]modelThe kinematic model
[in]dataData associated to model
[in]frame_idId of the operational Frame
[out]JThe Jacobian of the Frame expressed in the coordinates Frame.
Warning
The functions se3::computeJointJacobians and se3::framesForwardKinematics should have been called first.
Deprecated:
This function is now deprecated. Please call se3::getFrameJacobian<ReferenceFrame> for same functionality
Parameters
[in]modelThe kinematic model
[in]dataData associated to model
[in]frame_idId of the operational Frame
[out]JThe Jacobian of the Frame expressed in the coordinates Frame.
Warning
The function se3::computeJointJacobians and se3::framesForwardKinematics should have been called first.

Definition at line 101 of file frames.hxx.

References SE3Base< Derived >::actInv(), Model::check(), Model::frames, idx_v(), Data::J, Model::joints, Data::Matrix6x, Model::nv, nv(), Data::oMf, and Data::parents_fromRow.

void getFrameJacobianTimeVariation ( const Model model,
const Data data,
const Model::FrameIndex  frameId,
Data::Matrix6x dJ 
)

Computes the Jacobian time variation of a specific frame (given by frame_id) expressed either in the world frame (rf = WORLD) or in the local frame (rf = LOCAL).

Note
This jacobian is extracted from data.dJ. You have to run se3::computeJacobiansTimeVariation before calling it.
Template Parameters
rfReference frame in which the Jacobian is expressed.
Parameters
[in]localFrameExpressed the Jacobian in the local frame or world frame coordinates system.
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]frameIdThe index of the frame.
[out]dJA reference on the Jacobian matrix where the results will be stored in (dim 6 x model.nv). You must fill dJ with zero elements, e.g. dJ.fill(0.).

Definition at line 140 of file frames.hxx.

References SE3Base< Derived >::actInv(), Model::check(), Data::dJ, Model::frames, idx_v(), Model::joints, nv(), Data::oMf, and Data::parents_fromRow.

void getFrameVelocity ( const Model model,
const Data data,
const Model::FrameIndex  frame_id,
Motion frame_v 
)
inline

Returns the spatial velocity of the frame expressed in the LOCAL frame coordinate system. You must first call se3::forwardKinematics to update placement and velocity values in data structure.

Parameters
[in]modelThe kinematic model
[in]dataData associated to model
[in]frame_idId of the operational Frame
[out]frame_vThe spatial velocity of the Frame expressed in the coordinates Frame.
Warning
Fist or second order forwardKinematics should have been called first

Definition at line 76 of file frames.hxx.

References Model::check(), Model::frames, and Data::v.

PINOCCHIO_DEPRECATED void se3::getJacobian ( const Model model,
const Data data,
const Model::JointIndex  jointId,
Data::Matrix6x J 
)

Computes the Jacobian of a specific joint frame expressed either in the world (rf = WORLD) frame or in the local frame (rf = LOCAL) of the joint.

Note
This jacobian is extracted from data.J. You have to run se3::computeJacobians before calling it.
Deprecated:
This function is now deprecated. Please refer now to se3::getJointJacobian for similar function with updated name.
Template Parameters
rfReference frame in which the Jacobian is expressed.
Parameters
[in]localFrameExpressed the Jacobian in the local frame or world frame coordinates system.
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]jointIdThe id of the joint.
[out]JA reference on the Jacobian matrix where the results will be stored in (dim 6 x model.nv). You must fill J with zero elements, e.g. J.fill(0.).

Definition at line 133 of file jacobian.hpp.

References jointJacobian(), and Data::Matrix6x.

const Data::Matrix3x & getJacobianComFromCrba ( const Model model,
Data data 
)
inline

Extracts both the jacobian of the center of mass (CoM), the total mass of the system and the CoM position from the joint space inertia matrix (also called the mass matrix). The results are accessible through data.Jcom, data.mass[0] and data.com[0] and are both expressed in the world frame.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
Returns
The jacobian of the CoM expressed in the world frame (matrix 3 x model.nv).
Remarks
This extraction of inertial quantities is only valid for free-floating base systems.

Definition at line 253 of file center-of-mass.hxx.

References Model::check(), Data::Jcom, Data::liMi, Data::M, Data::mass, and Model::nv.

Referenced by centerOfMass().

PINOCCHIO_DEPRECATED void se3::getJacobianTimeVariation ( const Model model,
const Data data,
const Model::JointIndex  jointId,
Data::Matrix6x dJ 
)

Computes the Jacobian time variation of a specific joint frame expressed either in the world frame (rf = WORLD) or in the local frame (rf = LOCAL) of the joint.

Note
This jacobian is extracted from data.dJ. You have to run se3::computeJointJacobiansTimeVariation before calling it.
Deprecated:
This function is now deprecated. Please refer now to se3::getJointJacobianTimeVariation for similar function with updated name.
Template Parameters
rfReference frame in which the Jacobian is expressed.
Parameters
[in]localFrameExpressed the Jacobian in the local frame or world frame coordinates system.
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]jointIdThe id of the joint.
[out]dJA reference on the Jacobian matrix where the results will be stored in (dim 6 x model.nv). You must fill dJ with zero elements, e.g. dJ.fill(0.).

Definition at line 280 of file jacobian.hpp.

void getJointAccelerationDerivatives ( const Model model,
Data data,
const Model::JointIndex  jointId,
Data::Matrix6x v_partial_dq,
Data::Matrix6x a_partial_dq,
Data::Matrix6x a_partial_dv,
Data::Matrix6x a_partial_da 
)
inline

Computes the partial derivaties of the spatial acceleration of a given with respect to the joint configuration, velocity and acceleration. You must first call computForwardKinematicsDerivatives before calling this function. It is important to notice that a direct outcome (for free) of this algo is v_partial_dq and v_partial_dv which is equal to a_partial_da.

Template Parameters
rfReference frame in which the Jacobian is expressed.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]jointIdIndex of the joint in model.
[out]v_partial_dqPartial derivative of the joint spatial velocity w.r.t. \( q \).
[out]a_partial_dqPartial derivative of the joint spatial acceleration w.r.t. \( q \).
[out]a_partial_dqPartial derivative of the joint spatial acceleration w.r.t. \( \dot{q} \).
[out]a_partial_dqPartial derivative of the joint spatial acceleration w.r.t. \( \ddot{q} \).

Definition at line 301 of file kinematics-derivatives.hxx.

References Model::check(), Model::joints, Model::nv, Data::oa, Data::ov, and Model::parents.

void getJointJacobian ( const Model model,
const Data data,
const Model::JointIndex  jointId,
Data::Matrix6x J 
)

Computes the Jacobian of a specific joint frame expressed either in the world (rf = WORLD) frame or in the local frame (rf = LOCAL) of the joint.

Note
This jacobian is extracted from data.J. You have to run se3::computeJointJacobians before calling it.
Template Parameters
rfReference frame in which the Jacobian is expressed.
Parameters
[in]localFrameExpressed the Jacobian in the local frame or world frame coordinates system.
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]jointIdThe id of the joint.
[out]JA reference on the Jacobian matrix where the results will be stored in (dim 6 x model.nv). You must fill J with zero elements, e.g. J.fill(0.).

Definition at line 109 of file jacobian.hxx.

References Model::check(), idx_v(), Data::J, Model::joints, nv(), Data::oMi, and Data::parents_fromRow.

Referenced by computeJacobians().

void getJointJacobianTimeVariation ( const Model model,
const Data data,
const Model::JointIndex  jointId,
Data::Matrix6x dJ 
)

Computes the Jacobian time variation of a specific joint frame expressed either in the world frame (rf = WORLD) or in the local frame (rf = LOCAL) of the joint.

Note
This jacobian is extracted from data.dJ. You have to run se3::computeJacobiansTimeVariation before calling it.
Template Parameters
rfReference frame in which the Jacobian is expressed.
Parameters
[in]localFrameExpressed the Jacobian in the local frame or world frame coordinates system.
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]jointIdThe id of the joint.
[out]dJA reference on the Jacobian matrix where the results will be stored in (dim 6 x model.nv). You must fill dJ with zero elements, e.g. dJ.fill(0.).

Definition at line 245 of file jacobian.hxx.

References Model::check(), Data::dJ, idx_v(), Model::joints, nv(), Data::oMi, and Data::parents_fromRow.

Referenced by computeJacobiansTimeVariation().

void getJointVelocityDerivatives ( const Model model,
Data data,
const Model::JointIndex  jointId,
Data::Matrix6x v_partial_dq,
Data::Matrix6x v_partial_dv 
)
inline

Computes the partial derivaties of the spatial velocity of a given with respect to the joint configuration and velocity. You must first call computForwardKinematicsDerivatives before calling this function.

Template Parameters
rfReference frame in which the Jacobian is expressed.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]jointIdIndex of the joint in model.
[out]partial_dqPartial derivative of the joint velociy w.r.t. \( q \).
[out]partial_dqPartial derivative of the joint velociy w.r.t. \( \dot{q} \).

Definition at line 166 of file kinematics-derivatives.hxx.

References Model::check(), Model::joints, Model::nv, Data::oMi, Data::ov, and Model::parents.

JointIndex id ( const JointModelVariant &  jmodel)
inline

Visit a JointModelVariant through JointIdVisitor to get the index of the joint in the kinematic chain.

Parameters
[in]jmodelThe JointModelVariant
Returns
The index of the joint in the kinematic chain

Definition at line 217 of file joint-basic-visitors.hxx.

Referenced by JointModelBase< JointModelPrismatic< _Scalar, _Options, axis > >::finiteDifferenceIncrement().

int idx_q ( const JointModelVariant &  jmodel)
inline

Visit a JointModelVariant through JointIdxQVisitor to get the index in the full model configuration space corresponding to the first degree of freedom of the Joint.

Parameters
[in]jmodelThe JointModelVariant
Returns
The index in the full model configuration space corresponding to the first degree of freedom of jmodel

Definition at line 187 of file joint-basic-visitors.hxx.

Referenced by JointModelBase< JointModelPrismatic< _Scalar, _Options, axis > >::finiteDifferenceIncrement(), and JointModelComposite::updateJointIndexes().

int idx_v ( const JointModelVariant &  jmodel)
inline

Visit a JointModelVariant through JointIdxVVisitor to get the index in the full model tangent space corresponding to the first joint tangent space degree.

Parameters
[in]jmodelThe JointModelVariant
Returns
The index in the full model tangent space corresponding to the first joint tangent space degree

Definition at line 202 of file joint-basic-visitors.hxx.

Referenced by Data::Data(), JointModelBase< JointModelPrismatic< _Scalar, _Options, axis > >::finiteDifferenceIncrement(), getFrameJacobian(), getFrameJacobianTimeVariation(), getJointJacobian(), getJointJacobianTimeVariation(), and JointModelComposite::updateJointIndexes().

const Eigen::VectorXd& se3::impulseDynamics ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v_before,
const Eigen::MatrixXd &  J,
const double  r_coeff = 0.,
const bool  updateKinematics = true 
)
inline

Compute the impulse dynamics with contact constraints.

Note
It computes the following problem:
\( \begin{eqnarray} \underset{\dot{q}^{+}}{\min} & & \| \dot{q}^{+} - \dot{q}^{-} \|_{M(q)} \\ \text{s.t.} & & J (q) \dot{q}^{+} = - \epsilon J (q) \dot{q}^{-} \end{eqnarray} \)

where \( \dot{q}^{-} \) is the generalized velocity before impact, \( M \) is the joint space mass matrix, \( J \) the constraint Jacobian and \( \epsilon \) is the coefficient of restitution (1 for a fully elastic impact or 0 for a rigid impact).
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration (vector dim model.nq).
[in]v_beforeThe joint velocity before impact (vector dim model.nv).
[in]JThe Jacobian of the constraints (dim nb_constraints*model.nv).
[in]r_coeffThe coefficient of restitution. Must be in [0;1].
[in]updateKinematicsIf true, the algorithm calls first se3::crba. Otherwise, it uses the current mass matrix value stored in data.
Returns
A reference to the generalized velocity after impact stored in data.dq_after. The Lagrange Multipliers linked to the contact impulsed are available throw data.impulse_c vector.

Definition at line 126 of file dynamics.hpp.

References Model::check(), crba(), Data::D, Data::dq_after, Data::impulse_c, Data::JMinvJt, Data::llt_JMinvJt, Model::nq, Model::nv, and Data::sDUiJt.

Eigen::VectorXd integrate ( const Model model,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Integrate a configuration for the specified model for a tangent vector during one unit time.

Parameters
[in]modelModel that must be integrated
[in]qInitial configuration (size model.nq)
[in]vVelocity (size model.nv)
Returns
The integrated configuration (size model.nq)

Definition at line 34 of file joint-configuration.hxx.

References Model::joints, Model::njoints, and Model::nq.

Referenced by LieGroupBase< Derived >::isSameConfiguration().

void integrate ( const LieGroupVariant &  lg,
const Eigen::MatrixBase< ConfigIn_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< ConfigOut_t > &  qout 
)
inline

Visit a LieGroupVariant to call its integrate method.

Parameters
[in]lgthe LieGroupVariant.
[in]qthe starting configuration.
[in]vthe tangent velocity.

Definition at line 141 of file liegroup-variant-visitors.hxx.

References nq(), and nv().

Referenced by ur5x4::loadRobot().

Eigen::VectorXd interpolate ( const Model model,
const Eigen::VectorXd &  q0,
const Eigen::VectorXd &  q1,
const double  u 
)
inline

Interpolate the model between two configurations.

Parameters
[in]modelModel to be interpolated
[in]q0Initial configuration vector (size model.nq)
[in]q1Final configuration vector (size model.nq)
[in]uu in [0;1] position along the interpolation.
Returns
The interpolated configuration (q0 if u = 0, q1 if u = 1)

Definition at line 57 of file joint-configuration.hxx.

References Model::joints, Model::njoints, and Model::nq.

Referenced by LieGroupBase< Derived >::isSameConfiguration().

bool isSameConfiguration ( const Model model,
const Eigen::VectorXd &  q1,
const Eigen::VectorXd &  q2,
const double &  prec = Eigen::NumTraits<double>::dummy_precision() 
)
inline

Return true if the given configurations are equivalents.

Warning
Two configurations can be equivalent but not equally coefficient wise (e.g for quaternions)
Parameters
[in]modelModel
[in]q1The first configuraiton to compare
[in]q2The Second configuraiton to compare
[in]precprecision of the comparison
Returns
Wheter the configurations are equivalent or not

Definition at line 193 of file joint-configuration.hxx.

References Model::joints, and Model::njoints.

PINOCCHIO_DEPRECATED void se3::jacobian ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Model::JointIndex  jointId,
Data::Matrix6x J 
)
inline

Computes the Jacobian of a specific joint frame expressed in the local frame of the joint and store the result in the input argument J.

Deprecated:
This function is now deprecated. Please refer now to se3::jointJacobian for similar function with updated name.
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]jointIdThe id of the joint refering to model.joints[jointId].
[out]JA reference on the Jacobian matrix where the results will be stored in (dim 6 x model.nv). You must fill J with zero elements, e.g. J.setZero().
Returns
The Jacobian of the specific joint frame expressed in the local frame of the joint (matrix 6 x model.nv).
Remarks
This function is equivalent to call first computeJacobians(model,data,q) and then call getJointJacobian<LOCAL>(model,data,jointId,J). It is worth to call jacobian if you only need a single Jacobian for a specific joint. Otherwise, for several Jacobians, it is better to call computeJacobians(model,data,q) followed by getJointJacobian<LOCAL>(model,data,jointId,J) for each Jacobian.

Definition at line 178 of file jacobian.hpp.

References jointJacobian(), and Data::Matrix6x.

Referenced by Visual::__init__().

const Data::Matrix3x & jacobianCenterOfMass ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const bool  computeSubtreeComs = true,
const bool  updateKinematics = true 
)
inline

Computes both the jacobian and the the center of mass position of a given model according to a particular joint configuration. The results are accessible through data.Jcom and data.com[0] and are both expressed in the world frame. In addition, the algorithm also computes the Jacobian of all the joints (.

See also
se3::computeJointJacobians). And data.com[i] gives the center of mass of the subtree supported by joint i (expressed in the world frame).
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]computeSubtreeComsIf true, the algorithm computes also the center of mass of the subtrees.
[in]updateKinematicsIf true, the algorithm updates first the geometry of the tree. Otherwise, it uses the current kinematics stored in data.
Returns
The jacobian of center of mass position of the rigid body system expressed in the world frame (matrix 3 x model.nv).

Definition at line 216 of file center-of-mass.hxx.

References Model::check(), Data::com, forwardKinematics(), Model::inertias, Data::Jcom, Data::joints, Model::joints, Data::mass, Model::njoints, and Data::oMi.

Referenced by centerOfMass().

SE3 joint_transform ( const JointDataVariant &  jdata)
inline

Visit a JointDataVariant through JointTransformVisitor to get the joint internal transform (transform between the entry frame and the exit frame of the joint)

Parameters
[in]jdataThe jdata
Returns
The joint transform corresponding to the joint derived transform (sXp)

Definition at line 291 of file joint-basic-visitors.hxx.

void jointJacobian ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Model::JointIndex  jointId,
Data::Matrix6x J 
)
inline

Computes the Jacobian of a specific joint frame expressed in the local frame of the joint and store the result in the input argument J.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]jointIdThe id of the joint refering to model.joints[jointId].
[out]JA reference on the Jacobian matrix where the results will be stored in (dim 6 x model.nv). You must fill J with zero elements, e.g. J.setZero().
Returns
The Jacobian of the specific joint frame expressed in the local frame of the joint (matrix 6 x model.nv).
Remarks
This function is equivalent to call first computeJacobians(model,data,q) and then call getJointJacobian<LOCAL>(model,data,jointId,J). It is worth to call jacobian if you only need a single Jacobian for a specific joint. Otherwise, for several Jacobians, it is better to call computeJacobians(model,data,q) followed by getJointJacobian<LOCAL>(model,data,jointId,J) for each Jacobian.

Definition at line 159 of file jacobian.hxx.

References Model::check(), Data::iMf, Data::joints, Model::joints, and Model::parents.

Referenced by getJacobian(), jacobian(), and jointJacobian().

PINOCCHIO_DEPRECATED const Data::Matrix6x& se3::jointJacobian ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Model::JointIndex  jointId 
)
inline

Computes the Jacobian of a specific joint frame expressed in the local frame of the joint. The result is stored in data.J.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]jointIdThe id of the joint refering to model.joints[jointId].
Returns
The Jacobian of the specific joint frame expressed in the local frame of the joint (matrix 6 x model.nv).

Definition at line 197 of file jacobian.hpp.

References computeJointJacobiansTimeVariation(), Data::J, jointJacobian(), and Data::Matrix6x.

double kineticEnergy ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const bool  update_kinematics = true 
)
inline

Computes the kinetic energy of the system. The result is accessible through data.kinetic_energy.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
Returns
The kinetic energy of the system in [J].

Definition at line 70 of file energy.hpp.

References Model::check(), forwardKinematics(), Model::inertias, Data::kinetic_energy, Model::njoints, and Data::v.

Referenced by computeAllTerms().

Eigen::Matrix<typename Matrix3Like::Scalar,3,1,Eigen::internal::traits<Matrix3Like>::Options> se3::log3 ( const Eigen::MatrixBase< Matrix3Like > &  R,
S2 &  theta 
)

Same as log3.

Parameters
[in]Rthe rotation matrix.
[out]thetathe angle value.
Returns
The angular velocity vector associated to the rotation matrix.

Definition at line 91 of file explog.hpp.

Referenced by Jexp3(), Jlog6(), log3(), log6(), and SpecialOrthogonalOperation< 3 >::nv().

Eigen::Matrix<typename Matrix3Like::Scalar,3,1,Eigen::internal::traits<Matrix3Like>::Options> se3::log3 ( const Eigen::MatrixBase< Matrix3Like > &  R)

Log: SO3 -> so3.

Pseudo-inverse of log from \( SO3 -> { v \in so3, ||v|| \le pi } \).

Parameters
[in]RThe rotation matrix.
Returns
The angular velocity vector associated to the rotation matrix.

Definition at line 141 of file explog.hpp.

References log3().

MotionTpl<Scalar,Options> se3::log6 ( const SE3Tpl< Scalar, Options > &  M)

Log: SE3 -> se3.

Pseudo-inverse of exp from SE3 -> { v,w se3, ||w|| < 2pi }.

Parameters
[in]MThe rigid transformation.
Returns
The twist associated to the rigid transformation during time 1.

Definition at line 324 of file explog.hpp.

References alphaSkew(), and log3().

Referenced by log6(), and SpecialEuclideanOperation< 3 >::nv().

MotionTpl<typename D::Scalar,Eigen::internal::traits<D>::Options> se3::log6 ( const Eigen::MatrixBase< D > &  M)

Log: SE3 -> se3.

Pseudo-inverse of exp from SE3 -> { v,w se3, ||w|| < 2pi }.

Parameters
[in]RThe rigid transformation represented as an homogenous matrix.
Returns
The twist associated to the rigid transformation during time 1.

Definition at line 362 of file explog.hpp.

References log6().

Motion motion ( const JointDataVariant &  jdata)
inline

Visit a JointDataVariant through JointMotionVisitor to get the joint internal motion as a dense motion.

Parameters
[in]jdataThe jdata
Returns
The motion dense corresponding to the joint derived motion

Definition at line 306 of file joint-basic-visitors.hxx.

std::string name ( const LieGroupVariant &  lg)
inline
Eigen::VectorXd neutral ( const LieGroupVariant &  lg)
inline

Visit a LieGroupVariant to get the neutral element of it.

Parameters
[in]lgthe LieGroupVariant.
Returns
The Lie group neutral element

Definition at line 112 of file liegroup-variant-visitors.hxx.

Eigen::VectorXd neutral ( const Model model)
inline

Return the neutral configuration element related to the model configuration space.

Parameters
[in]modelModel
Returns
The neutral configuration element.

Definition at line 221 of file joint-configuration.hxx.

References Model::joints, Model::njoints, and Model::nq.

Referenced by CartesianProductOperation< LieGroup1, LieGroup2 >::nv(), SpecialOrthogonalOperation< 2 >::nv(), SpecialEuclideanOperation< 2 >::nv(), SpecialOrthogonalOperation< 3 >::nv(), SpecialEuclideanOperation< 3 >::nv(), and VectorSpaceOperation< Size >::VectorSpaceOperation().

const Eigen::VectorXd & nonLinearEffects ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)
inline

Computes the non-linear effects (Corriolis, centrifual and gravitationnal effects), also called the bias terms \( b(q,\dot{q}) \) of the Lagrangian dynamics:

\( \begin{eqnarray} M \ddot{q} + b(q, \dot{q}) = \tau \end{eqnarray} \)


Note
This function is equivalent to se3::rnea(model, data, q, v, 0).
Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
Returns
The bias terms stored in data.nle.

Definition at line 202 of file rnea.hxx.

References Data::a_gf, Model::check(), Model::gravity, Data::joints, Model::joints, Model::njoints, Data::nle, and Data::v.

void normalize ( const Model model,
Eigen::VectorXd &  q 
)
inline

Normalize a configuration.

Parameters
[in]modelModel
[in,out]qConfiguration to normalize

Definition at line 177 of file joint-configuration.hxx.

References Model::joints, and Model::njoints.

Referenced by SpecialEuclideanOperation< 2 >::nv(), and SpecialEuclideanOperation< 3 >::nv().

int nq ( const LieGroupVariant &  lg)
inline

Visit a LieGroupVariant to get the dimension of the Lie group configuration space.

Parameters
[in]lgthe LieGroupVariant.
Returns
The dimension of the Lie group configuration space

Definition at line 68 of file liegroup-variant-visitors.hxx.

int nq ( const JointModelVariant &  jmodel)
inline

Visit a JointModelVariant through JointNqVisitor to get the dimension of the joint configuration space.

Parameters
[in]jmodelThe JointModelVariant
Returns
The dimension of joint configuration space

Definition at line 172 of file joint-basic-visitors.hxx.

Referenced by Model::addJoint(), JointModelComposite::addJoint(), JointModelBase< JointModelPrismatic< _Scalar, _Options, axis > >::finiteDifferenceIncrement(), integrate(), CartesianProductOperation< LieGroup1, LieGroup2 >::nv(), and VectorSpaceOperation< Size >::VectorSpaceOperation().

int nv ( const LieGroupVariant &  lg)
inline

Visit a LieGroupVariant to get the dimension of the Lie group tangent space.

Parameters
[in]lgthe LieGroupVariant.
Returns
The dimension of the Lie group tangent space

Definition at line 82 of file liegroup-variant-visitors.hxx.

int nv ( const JointModelVariant &  jmodel)
inline
const Scalar se3::PI ( )

Returns the value of PI according to the template parameters Scalar.

Template Parameters
ScalarThe scalar type of the return pi value

Definition at line 31 of file math/fwd.hpp.

double potentialEnergy ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const bool  update_kinematics = true 
)
inline

Computes the potential energy of the system, i.e. the potential energy linked to the gravity field. The result is accessible through data.potential_energy.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
Returns
The potential energy of the system in [J].

Definition at line 91 of file energy.hpp.

References Model::check(), forwardKinematics(), Model::gravity, Model::inertias, Model::njoints, Data::oMi, and Data::potential_energy.

Referenced by computeAllTerms().

Eigen::VectorXd randomConfiguration ( const Model model,
const Eigen::VectorXd &  lowerLimits,
const Eigen::VectorXd &  upperLimits 
)
inline

Generate a configuration vector uniformly sampled among provided limits.

Warning
If limits are infinite, exceptions may be thrown in the joint implementation of uniformlySample
Parameters
[in]modelModel we want to generate a configuration vector of
[in]lowerLimitsJoints lower limits
[in]upperLimitsJoints upper limits
Returns
The resulted configuration vector (size model.nq)

Definition at line 146 of file joint-configuration.hxx.

References Model::joints, Model::njoints, and Model::nq.

Referenced by LieGroupBase< Derived >::isSameConfiguration(), and randomConfiguration().

Eigen::VectorXd randomConfiguration ( const Model model)
inline

Generate a configuration vector uniformly sampled among the joint limits of the specified Model.

Warning
If limits are infinite (no one specified when adding a body or no modification directly in my_model.{lowerPositionLimit,upperPositionLimit}, exceptions may be thrown in the joint implementation of uniformlySample
Parameters
[in]modelModel we want to generate a configuration vector of
Returns
The resulted configuration vector (size model.nq)

Definition at line 165 of file joint-configuration.hxx.

References Model::lowerPositionLimit, and randomConfiguration().

std::string se3::randomStringGenerator ( const int  len)
inline

Generate a random string composed of alphanumeric symbols of a given length.

len The length of the output string.

Returns
a random string composed of alphanumeric symbols.

Definition at line 34 of file string-generator.hpp.

std::string se3::retrieveResourcePath ( const std::string &  string,
const std::vector< std::string > &  package_dirs 
)
throw (std::invalid_argument
)
inline

Retrieve the path of the file whose path is given in an url-format. Currently convert from the folliwing patterns : package:// or file://.

Parameters
[in]stringThe path given in the url-format
[in]package_dirsA list of packages directories where to search for files if its pattern starts with package://
Returns
The path to the file (can be a relative or absolute path)

Definition at line 77 of file utils.hpp.

const Eigen::VectorXd & rnea ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  a 
)
inline

The Recursive Newton-Euler algorithm. It computes the inverse dynamics, aka the joint torques according to the current state of the system and the desired joint accelerations.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]aThe joint acceleration vector (dim model.nv).
Returns
The desired joint torques stored in data.tau.

Definition at line 89 of file rnea.hxx.

References Data::a_gf, Model::check(), Model::gravity, Data::joints, Model::joints, Model::njoints, Data::tau, and Data::v.

const Eigen::VectorXd & rnea ( const Model model,
Data data,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const Eigen::VectorXd &  a,
const container::aligned_vector< Force > &  fext 
)
inline

The Recursive Newton-Euler algorithm. It computes the inverse dynamics, aka the joint torques according to the current state of the system, the desired joint accelerations and the external forces.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]qThe joint configuration vector (dim model.nq).
[in]vThe joint velocity vector (dim model.nv).
[in]aThe joint acceleration vector (dim model.nv).
[in]fextVector of external forces expressed in the local frame of the joints (dim model.njoints)
Returns
The desired joint torques stored in data.tau.

Definition at line 115 of file rnea.hxx.

References Data::a_gf, Model::check(), Data::f, Model::gravity, Data::joints, Model::joints, Model::njoints, Data::tau, and Data::v.

Referenced by ur5x4::loadRobot().

std::vector<std::string> se3::rosPaths ( )
inline

Parse the environment variable ROS_PACKAGE_PATH and extract paths.

Returns
The vector of paths extracted from the environment variable ROS_PACKAGE_PATH

Definition at line 69 of file file-explorer.hpp.

References extractPathFromEnvVar().

void setIndexes ( JointModelVariant &  jmodel,
JointIndex  id,
int  q,
int  v 
)
inline

Visit a JointModelVariant through JointSetIndexesVisitor to set the indexes of the joint in the kinematic chain.

Parameters
[in]jmodelThe JointModelVariant
[in]idThe index of joint in the kinematic chain
[in]qThe index in the full model configuration space corresponding to the first degree of freedom
[in]vThe index in the full model tangent space corresponding to the first joint tangent space degree
Returns
The index of the joint in the kinematic chain

Definition at line 239 of file joint-basic-visitors.hxx.

Referenced by JointModelBase< JointModelPrismatic< _Scalar, _Options, axis > >::finiteDifferenceIncrement().

std::string shortname ( const JointModelVariant &  jmodel)
inline

Visit a JointModelVariant through JointShortnameVisitor to get the shortname of the derived joint model.

Parameters
jmodelThe JointModelVariant we want the shortname of the type held in

Definition at line 256 of file joint-basic-visitors.hxx.

Referenced by JointModelBase< JointModelPrismatic< _Scalar, _Options, axis > >::finiteDifferenceIncrement(), and JointModelComposite::setIndexes_impl().

void se3::skew ( const Eigen::MatrixBase< Vector3 > &  v,
const Eigen::MatrixBase< Matrix3 > &  M 
)
inline

Computes the skew representation of a given 3d vector, i.e. the antisymmetric matrix representation of the cross product operator ( \( [v]_{\cross} x = v \cross x \))

Parameters
[in]va vector of dimension 3.
[out]Mthe skew matrix representation of dimension 3x3.

Definition at line 34 of file skew.hpp.

Referenced by SpecialEuclideanOperation< 3 >::nv(), ForceSetTpl< _Scalar, _Options >::se3Action(), ForceSetTpl< _Scalar, _Options >::Block::se3Action(), ForceSetTpl< _Scalar, _Options >::se3ActionInverse(), ForceSetTpl< _Scalar, _Options >::Block::se3ActionInverse(), and skew().

Eigen::Matrix<typename D::Scalar,3,3,EIGEN_PLAIN_TYPE(D)::Options> se3::skew ( const Eigen::MatrixBase< D > &  v)
inline

Computes the skew representation of a given 3D vector, i.e. the antisymmetric matrix representation of the cross product operator.

Parameters
[in]va vector of dimension 3.
Returns
The skew matrix representation of v.

Definition at line 58 of file skew.hpp.

References skew().

void se3::skewSquare ( const Eigen::MatrixBase< V1 > &  u,
const Eigen::MatrixBase< V2 > &  v,
const Eigen::MatrixBase< Matrix3 > &  C 
)
inline

Computes the square cross product linear operator C(u,v) such that for any vector w, \( u \times ( v \times w ) = C(u,v) w \).

Parameters
[in]ua 3 dimensional vector.
[in]va 3 dimensional vector.
[out]Cthe skew square matrix representation of dimension 3x3.

Definition at line 158 of file skew.hpp.

Referenced by skewSquare().

Eigen::Matrix<typename V1::Scalar,3,3,EIGEN_PLAIN_TYPE(V1)::Options> se3::skewSquare ( const Eigen::MatrixBase< V1 > &  u,
const Eigen::MatrixBase< V2 > &  v 
)
inline

Computes the square cross product linear operator C(u,v) such that for any vector w, \( u \times ( v \times w ) = C(u,v) w \).

Parameters
[in]uA 3 dimensional vector.
[in]vA 3 dimensional vector.
Returns
The square cross product matrix C.

Definition at line 184 of file skew.hpp.

References skewSquare().

Eigen::VectorXd squaredDistance ( const Model model,
const Eigen::VectorXd &  q0,
const Eigen::VectorXd &  q1 
)
inline

Squared distance between two configuration vectors.

Parameters
[in]modelModel we want to compute the distance
[in]q0Configuration 0 (size model.nq)
[in]q1Configuration 1 (size model.nq)
Returns
The corresponding squared distances for each joint (size model.njoints-1 = number of joints)

Definition at line 106 of file joint-configuration.hxx.

References Model::joints, and Model::njoints.

Referenced by LieGroupBase< Derived >::distance().

Eigen::Matrix< double, 6, Eigen::Dynamic > u_inertia ( const JointDataVariant &  jdata)
inline

Visit a JointDataVariant through JointUInertiaVisitor to get the U matrix of the inertia matrix decomposition.

Parameters
[in]jdataThe jdata
Returns
The U matrix of the inertia matrix decomposition

Definition at line 340 of file joint-basic-visitors.hxx.

Eigen::Matrix< double, 6, Eigen::Dynamic > udinv_inertia ( const JointDataVariant &  jdata)
inline

Visit a JointDataVariant through JointUDInvInertiaVisitor to get U*D^{-1} matrix of the inertia matrix decomposition.

Parameters
[in]jdataThe jdata
Returns
The U*D^{-1} matrix of the inertia matrix decomposition

Definition at line 371 of file joint-basic-visitors.hxx.

void se3::unSkew ( const Eigen::MatrixBase< Matrix3 > &  M,
const Eigen::MatrixBase< Vector3 > &  v 
)
inline

Inverse of skew operator. From a given skew-symmetric matrix M of dimension 3x3, it extracts the supporting vector, i.e. the entries of M. Mathematically speacking, it computes \( v \) such that \( M x = v \cross x \).

Parameters
[in]Ma 3x3 skew symmetric matrix.
[out]vthe 3d vector representation of M.

Definition at line 74 of file skew.hpp.

Referenced by unSkew().

Eigen::Matrix<typename EIGEN_PLAIN_TYPE(Matrix3)::Scalar,3,1,EIGEN_PLAIN_TYPE(Matrix3)::Options> se3::unSkew ( const Eigen::MatrixBase< Matrix3 > &  M)
inline

Inverse of skew operator. From a given skew-symmetric matrix M of dimension 3x3, it extracts the supporting vector, i.e. the entries of M. Mathematically speacking, it computes \( v \) such that \( M x = v \cross x \).

Parameters
[in]Ma 3x3 matrix.
Returns
The vector entries of the skew-symmetric matrix.

Definition at line 100 of file skew.hpp.

References unSkew().

const SE3 & updateFramePlacement ( const Model model,
Data data,
const Model::FrameIndex  frame_id 
)
inline

Updates the placement of the given frame.

Parameters
[in]modelThe kinematic model.
dataData associated to model.
[in]frame_idId of the operational Frame.
Returns
A reference to the frame placement stored in data.oMf[frame_id]
Warning
One of the algorithms forwardKinematics should have been called first

Definition at line 47 of file frames.hxx.

References Model::frames, Data::oMf, Data::oMi, FrameTpl< _Scalar, _Options >::parent, and FrameTpl< _Scalar, _Options >::placement.

void updateFramePlacements ( const Model model,
Data data 
)
inline

Updates the placement of each frame contained in the model.

Parameters
[in]modelThe kinematic model.
dataData associated to model.
Warning
One of the algorithms forwardKinematics should have been called first

Definition at line 29 of file frames.hxx.

References Model::check(), Model::frames, Model::nframes, Data::oMf, Data::oMi, FrameTpl< _Scalar, _Options >::parent, and FrameTpl< _Scalar, _Options >::placement.

Referenced by framesForwardKinematics().

void updateGeometryPlacements ( const Model model,
Data data,
const GeometryModel geomModel,
GeometryData geomData,
const Eigen::VectorXd &  q 
)
inline

Apply a forward kinematics and update the placement of the geometry objects.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]geomModelThe geometry model containing the collision objects.
[out]geomDataThe geometry data containing the placements of the collision objects. See oMg field in GeometryData.
[in]qThe joint configuration vector (dim model.nq).

Definition at line 28 of file algorithm/geometry.hxx.

References Model::check(), and forwardKinematics().

Referenced by computeCollisions(), and computeDistances().

void updateGeometryPlacements ( const Model model,
const Data data,
const GeometryModel geomModel,
GeometryData geomData 
)
inline

Update the placement of the geometry objects according to the current joint placements contained in data.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
[in]geomModelThe geometry model containing the collision objects.
[out]geomDataThe geometry data containing the placements of the collision objects. See oMg field in GeometryData.

Definition at line 41 of file algorithm/geometry.hxx.

References Model::check(), GeometryData::collisionObjects, GeometryModel::geometryObjects, GeometryModel::ngeoms, GeometryData::oMg, and Data::oMi.

Referenced by ur5x4::loadRobot().

void updateGlobalPlacements ( const Model model,
Data data 
)
inline

Update the global placement of the joints oMi according to the relative placements of the joints.

Parameters
[in]modelThe model structure of the rigid body system.
[in]dataThe data structure of the rigid body system.
Remarks
This algorithm may be useful to call to update global joint placement after calling se3::rnea, se3::aba, etc for example.

Definition at line 59 of file kinematics.hxx.

References Model::check(), Data::liMi, Model::njoints, Data::oMi, and Model::parents.