hpp-rbprm  4.10.0
Implementation of RB-PRM planner using hpp.
hpp::rbprm::reachability Namespace Reference

Classes

struct  Result
 

Enumerations

enum  Status {
  UNREACHABLE, UNABLE_TO_COMPUTE, SAME_ROOT_POSITION, TOO_MANY_CONTACTS_VARIATION,
  NO_CONTACT_VARIATION, CONTACT_BREAK_FAILED, CONTACT_CREATION_FAILED, QUASI_STATIC,
  REACHABLE
}
 

Functions

std::pair< MatrixX3, MatrixX3loadConstraintsFromObj (const std::string &fileName, double minDistance=0.)
 loadConstraintsFromObj load the obj file and compute a list of normal and vertex position from it More...
 
std::pair< MatrixX3, VectorXcomputeAllKinematicsConstraints (const RbPrmFullBodyPtr_t &fullBody, const pinocchio::ConfigurationPtr_t &configuration)
 
std::pair< MatrixX3, VectorXcomputeKinematicsConstraintsForState (const RbPrmFullBodyPtr_t &fullBody, const State &state)
 
std::pair< MatrixX3, VectorXcomputeKinematicsConstraintsForLimb (const RbPrmFullBodyPtr_t &fullBody, const State &state, const std::string &limbName)
 
std::pair< MatrixX3, VectorXgetInequalitiesAtTransform (const std::pair< MatrixX3, MatrixX3 > &NV, const hpp::pinocchio::Transform3f &transform)
 
bool verifyKinematicConstraints (const std::pair< MatrixX3, VectorX > &Ab, const fcl::Vec3f &point)
 
bool verifyKinematicConstraints (const std::pair< MatrixX3, MatrixX3 > &NV, const hpp::pinocchio::Transform3f &transform, const fcl::Vec3f &point)
 
bool verifyKinematicConstraints (const RbPrmFullBodyPtr_t &fullbody, const State &state, fcl::Vec3f point)
 
std::pair< MatrixXX, VectorXstackConstraints (const std::pair< MatrixXX, VectorX > &Ab, const std::pair< MatrixXX, VectorX > &Cd)
 
bool intersectionExist (const std::pair< MatrixXX, VectorX > &Ab, const fcl::Vec3f &c, fcl::Vec3f &c_out)
 
std::pair< MatrixXX, VectorXcomputeStabilityConstraints (const centroidal_dynamics::Equilibrium &contactPhase, const fcl::Vec3f &int_point=fcl::Vec3f(0, 0, 0), const fcl::Vec3f &acc=fcl::Vec3f(0, 0, 0))
 
std::pair< MatrixXX, VectorXcomputeStabilityConstraintsForState (const RbPrmFullBodyPtr_t &fullbody, State &state, bool &success, const fcl::Vec3f &acc)
 
std::pair< MatrixXX, VectorXcomputeConstraintsForState (const RbPrmFullBodyPtr_t &fullbody, State &state, bool &success)
 
Result isReachable (const RbPrmFullBodyPtr_t &fullbody, State &previous, State &next, const fcl::Vec3f &acc=fcl::Vec3f::Zero(), bool useIntermediateState=false)
 isReachable Compute the feasibility of the contact transition between the two state, with the quasiStatic formulation of 2-PAC (https://hal.archives-ouvertes.fr/hal-01609055) More...
 
Result isReachableDynamic (const RbPrmFullBodyPtr_t &fullbody, State &previous, State &next, bool tryQuasiStatic=true, std::vector< double > timings=std::vector< double >(), int numPointsPerPhases=0)
 

Enumeration Type Documentation

◆ Status

Enumerator
UNREACHABLE 
UNABLE_TO_COMPUTE 
SAME_ROOT_POSITION 
TOO_MANY_CONTACTS_VARIATION 
NO_CONTACT_VARIATION 
CONTACT_BREAK_FAILED 
CONTACT_CREATION_FAILED 
QUASI_STATIC 
REACHABLE 

Function Documentation

◆ computeAllKinematicsConstraints()

std::pair<MatrixX3, VectorX> hpp::rbprm::reachability::computeAllKinematicsConstraints ( const RbPrmFullBodyPtr_t fullBody,
const pinocchio::ConfigurationPtr_t &  configuration 
)

◆ computeConstraintsForState()

std::pair<MatrixXX, VectorX> hpp::rbprm::reachability::computeConstraintsForState ( const RbPrmFullBodyPtr_t fullbody,
State state,
bool &  success 
)

◆ computeKinematicsConstraintsForLimb()

std::pair<MatrixX3, VectorX> hpp::rbprm::reachability::computeKinematicsConstraintsForLimb ( const RbPrmFullBodyPtr_t fullBody,
const State state,
const std::string &  limbName 
)

◆ computeKinematicsConstraintsForState()

std::pair<MatrixX3, VectorX> hpp::rbprm::reachability::computeKinematicsConstraintsForState ( const RbPrmFullBodyPtr_t fullBody,
const State state 
)

◆ computeStabilityConstraints()

std::pair<MatrixXX, VectorX> hpp::rbprm::reachability::computeStabilityConstraints ( const centroidal_dynamics::Equilibrium &  contactPhase,
const fcl::Vec3f &  int_point = fcl::Vec3f(0, 0, 0),
const fcl::Vec3f &  acc = fcl::Vec3f(0, 0, 0) 
)

◆ computeStabilityConstraintsForState()

std::pair<MatrixXX, VectorX> hpp::rbprm::reachability::computeStabilityConstraintsForState ( const RbPrmFullBodyPtr_t fullbody,
State state,
bool &  success,
const fcl::Vec3f &  acc 
)

◆ getInequalitiesAtTransform()

std::pair<MatrixX3, VectorX> hpp::rbprm::reachability::getInequalitiesAtTransform ( const std::pair< MatrixX3, MatrixX3 > &  NV,
const hpp::pinocchio::Transform3f &  transform 
)

◆ intersectionExist()

bool hpp::rbprm::reachability::intersectionExist ( const std::pair< MatrixXX, VectorX > &  Ab,
const fcl::Vec3f &  c,
fcl::Vec3f &  c_out 
)

◆ isReachable()

Result hpp::rbprm::reachability::isReachable ( const RbPrmFullBodyPtr_t fullbody,
State previous,
State next,
const fcl::Vec3f &  acc = fcl::Vec3f::Zero(),
bool  useIntermediateState = false 
)

isReachable Compute the feasibility of the contact transition between the two state, with the quasiStatic formulation of 2-PAC (https://hal.archives-ouvertes.fr/hal-01609055)

Parameters
fullbody
previousthe first state of the transition
nextthe last state of the transition
accthe CoM acceleration
useIntermediateStateboolean only relevant in the case of a contact repositionning. If true, use an intermediate state such that there is only one contact change between each state. (and thus compute two intersection between 3 set of constrants). If false it only compute one intersection between two set of constraints.
Returns

◆ isReachableDynamic()

Result hpp::rbprm::reachability::isReachableDynamic ( const RbPrmFullBodyPtr_t fullbody,
State previous,
State next,
bool  tryQuasiStatic = true,
std::vector< double >  timings = std::vector< double >(),
int  numPointsPerPhases = 0 
)

◆ loadConstraintsFromObj()

std::pair<MatrixX3, MatrixX3> hpp::rbprm::reachability::loadConstraintsFromObj ( const std::string &  fileName,
double  minDistance = 0. 
)

loadConstraintsFromObj load the obj file and compute a list of normal and vertex position from it

Parameters
fileName
minDistanceif > 0 : add an additionnal plane of normal (0,0,1) and origin (0,0,minDistance)
Returns

◆ stackConstraints()

std::pair<MatrixXX, VectorX> hpp::rbprm::reachability::stackConstraints ( const std::pair< MatrixXX, VectorX > &  Ab,
const std::pair< MatrixXX, VectorX > &  Cd 
)

◆ verifyKinematicConstraints() [1/3]

bool hpp::rbprm::reachability::verifyKinematicConstraints ( const RbPrmFullBodyPtr_t fullbody,
const State state,
fcl::Vec3f  point 
)

◆ verifyKinematicConstraints() [2/3]

bool hpp::rbprm::reachability::verifyKinematicConstraints ( const std::pair< MatrixX3, MatrixX3 > &  NV,
const hpp::pinocchio::Transform3f &  transform,
const fcl::Vec3f &  point 
)

◆ verifyKinematicConstraints() [3/3]

bool hpp::rbprm::reachability::verifyKinematicConstraints ( const std::pair< MatrixX3, VectorX > &  Ab,
const fcl::Vec3f &  point 
)