|
const ConvexShapes_t & | floorContactSurfaces () const |
| Get vector of floor contact surfaces. More...
|
|
const ConvexShapes_t & | objectContactSurfaces () const |
| Get vector of object contact surfaces. More...
|
|
value_type | radius () const |
|
void | setNormalMargin (const value_type &margin) |
|
std::vector< ForceData > | computeContactPoints (ConfigurationIn_t q, const value_type &normalMargin) const |
| Compute the contact points. More...
|
|
std::ostream & | print (std::ostream &o) const |
| Display object in a stream. More...
|
|
std::pair< JointConstPtr_t, JointConstPtr_t > | dependsOnRelPoseBetween (DeviceConstPtr_t) const |
|
virtual | ~DifferentiableFunction () |
|
LiegroupElement | operator() (vectorIn_t argument) const |
|
void | value (LiegroupElementRef result, vectorIn_t argument) const |
|
void | jacobian (matrixOut_t jacobian, vectorIn_t argument) const |
|
const ArrayXb & | activeParameters () const |
|
const ArrayXb & | activeDerivativeParameters () const |
|
size_type | inputSize () const |
| Get dimension of input vector. More...
|
|
size_type | inputDerivativeSize () const |
|
LiegroupSpacePtr_t | outputSpace () const |
| Get output space. More...
|
|
size_type | outputSize () const |
| Get dimension of output vector. More...
|
|
size_type | outputDerivativeSize () const |
| Get dimension of output derivative vector. More...
|
|
const std::string & | name () const |
| Get function name. More...
|
|
std::string | context () const |
|
void | context (const std::string &c) |
|
void | finiteDifferenceForward (matrixOut_t jacobian, vectorIn_t arg, DevicePtr_t robot=DevicePtr_t(), value_type eps=std::sqrt(Eigen::NumTraits< value_type >::epsilon())) const |
|
void | finiteDifferenceCentral (matrixOut_t jacobian, vectorIn_t arg, DevicePtr_t robot=DevicePtr_t(), value_type eps=std::sqrt(Eigen::NumTraits< value_type >::epsilon())) const |
|
bool | operator== (DifferentiableFunction const &other) const |
|
bool | operator!= (DifferentiableFunction const &b) const |
|
|
| ConvexShapeContact (const std::string &name, DevicePtr_t robot, const JointAndShapes_t &floorSurfaces, const JointAndShapes_t &objectSurfaces) |
|
bool | isEqual (const DifferentiableFunction &other) const |
|
| DifferentiableFunction (size_type sizeInput, size_type sizeInputDerivative, size_type sizeOutput, std::string name=std::string()) |
| Concrete class constructor should call this constructor. More...
|
|
| DifferentiableFunction (size_type sizeInput, size_type sizeInputDerivative, const LiegroupSpacePtr_t &outputSpace, std::string name=std::string()) |
| Concrete class constructor should call this constructor. More...
|
|
virtual void | impl_compute (LiegroupElementRef result, vectorIn_t argument) const =0 |
| User implementation of function evaluation. More...
|
|
virtual void | impl_jacobian (matrixOut_t jacobian, vectorIn_t arg) const =0 |
|
| DifferentiableFunction () |
|
The function returns a relative transformation between the two "closest" convex shapes it contains.
Two sets of convex shapes can be given to this class:
- a set of object contact surfaces, \( (o_i)_{i \in I } \), which can be in contact with the environment,
- a set of floor contact surfaces, \( (f_j)_{j \in J } \), which can support objects.
The distance \f$ d (f_j, o_i) \f$ between object surface
\f$o_i\f$ and environment surface \f$ f_j \f$ is defined by:
\f{equation*}
d (f_j, o_i)^2 =
\left\lbrace \begin{array}{cl}
d_{\parallel}^2 + d_{\perp}^2 &, \text{ if } d_{\parallel} > 0 \\
d_{\perp}^2 &, \text{ otherwise}
\end{array} \right.
\f}
where
\li \f$P (C_{o_i}, f_j)\f$ is the projection of the center \f$C_{o_i}\f$ of
\(o_i\) onto the plane containing \( f_j \),
- \(\textbf{n}_{f_j}\) is the normal of \( f_j \),
- \(d_{\parallel} = d(f_j, P (C_{o_i}, f_j))\) is the distance returned by ConvexShapeData::distance,
- \(d_{\perp} = \textbf{n}_{f_j}.\vec{C_{f_j}C_{o_i}}\) is the distance along the normal of \( f_j \),
\image html convex-shape-contact.svg
The function first selects the pair \f$(o_i,f_j)\f$ with shortest distance.
\f$o_i\f$ is \em inside \f$f_j\f$ if \f$d(i,j) < 0\f$.
It returns a value that depends on the contact types:
| Contact type | Inside | Outside |
| -------------- | -------- | ------- |
| ConvexShapeContact::POINT_ON_PLANE | \f$(x+m,0,0,0,0)\f$ |
\((x+m,y,z,0,0)\) | | ConvexShapeContact::LINE_ON_PLANE (Unsupported) | \((x+m,0,0,0,rz)\) | \((x+m,y,z,0,rz)\) | | ConvexShapeContact::PLANE_ON_PLANE | \((x+m,0,0,ry,rz)\) | \((x+m,y,z,ry,rz)\) | where
\li \f$m\f$ is the normal margin (used to avoid collisions),
\li \f$x,y,z,rx,ry,rz\f$ represents the output of the RelativeTransformation
between the element of the pair.
\sa ConvexShapeContactComplement