|
| ConvexShapeContact (const std::string &name, const DevicePtr_t &robot) |
|
void | addObjectTriangle (const fcl::TriangleP &t, const JointPtr_t &joint) HPP_CONSTRAINTS_DEPRECATED |
|
void | addFloorTriangle (const fcl::TriangleP &t, const JointPtr_t &joint) HPP_CONSTRAINTS_DEPRECATED |
|
void | addObject (const ConvexShape &t) |
| Add a ConvexShape as an object. More...
|
|
void | addFloor (const ConvexShape &t) |
|
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...
|
|
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 |
|
The function returns a relative transformation between the two "closest" convex shapes it contains.
Two set 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 \( d_{i,j} = d (o_i, f_j) \) between object surface \(o_i\) and environment surface \( f_j \) is defined by:
\begin{equation*} d(i,j)^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. \end{equation*}
where
- \(P (C_{o_i}, f_j)\) is the projection of the center \(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 ConvexShape::distance,
- \(d_{\perp} = \textbf{n}_{f_j}.C_{f_j}P(C_{o_i}, f_j)\) is the distance along the normal of \( f_j \),
The function first selects the pair \((o_i,f_j)\) with shortest distance. \(o_i\) is inside \(f_j\) if \(d(i,j) < 0\). It returns a value that depends on the contact types:
Contact type | Inside | Outside |
ConvexShapeContact::POINT_ON_PLANE | \((x+m,0,0,0,0)\) | \((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
- \(m\) is the normal margin (used to avoid collisions),
- \(x,y,z,rx,ry,rz\) represents the output of the RelativeTransformation between the element of the pair.
- See also
- ConvexShapeContactComplement