hpp-fcl  2.4.1
HPP fork of FCL -- The Flexible Collision Library
hpp::fcl::HeightField< BV > Class Template Reference

Data structure depicting a height field given by the base grid dimensions and the elevation along the grid. More...

#include <hpp/fcl/hfield.h>

Inheritance diagram for hpp::fcl::HeightField< BV >:
Collaboration diagram for hpp::fcl::HeightField< BV >:

Public Types

typedef CollisionGeometry Base
 
typedef HFNode< BV > Node
 
typedef std::vector< NodeBVS
 

Public Member Functions

 HeightField ()
 Constructing an empty HeightField. More...
 
 HeightField (const FCL_REAL x_dim, const FCL_REAL y_dim, const MatrixXf &heights, const FCL_REAL min_height=(FCL_REAL) 0)
 Constructing an HeightField from its base dimensions and the set of heights points. The granularity of the height field along X and Y direction is extraded from the Z grid. More...
 
 HeightField (const HeightField &other)
 Copy contructor from another HeightField. More...
 
const VecXfgetXGrid () const
 Returns a const reference of the grid along the X direction. More...
 
const VecXfgetYGrid () const
 Returns a const reference of the grid along the Y direction. More...
 
const MatrixXfgetHeights () const
 Returns a const reference of the heights. More...
 
FCL_REAL getXDim () const
 Returns the dimension of the Height Field along the X direction. More...
 
FCL_REAL getYDim () const
 Returns the dimension of the Height Field along the Y direction. More...
 
FCL_REAL getMinHeight () const
 Returns the minimal height value of the Height Field. More...
 
FCL_REAL getMaxHeight () const
 Returns the maximal height value of the Height Field. More...
 
virtual HeightField< BV > * clone () const
 Clone *this into a new CollisionGeometry. More...
 
virtual ~HeightField ()
 deconstruction, delete mesh data related. More...
 
void computeLocalAABB ()
 Compute the AABB for the HeightField, used for broad-phase collision. More...
 
void updateHeights (const MatrixXf &new_heights)
 Update Height Field height. More...
 
const HFNode< BV > & getBV (unsigned int i) const
 Access the bv giving the its index. More...
 
HFNode< BV > & getBV (unsigned int i)
 Access the bv giving the its index. More...
 
NODE_TYPE getNodeType () const
 Get the BV type: default is unknown. More...
 
NODE_TYPE getNodeType () const
 Specialization of getNodeType() for HeightField with different BV types. More...
 
NODE_TYPE getNodeType () const
 get the node type More...
 
NODE_TYPE getNodeType () const
 get the node type More...
 
NODE_TYPE getNodeType () const
 get the node type More...
 
NODE_TYPE getNodeType () const
 get the node type More...
 
NODE_TYPE getNodeType () const
 get the node type More...
 
NODE_TYPE getNodeType () const
 get the node type More...
 
NODE_TYPE getNodeType () const
 get the node type More...
 
- Public Member Functions inherited from hpp::fcl::CollisionGeometry
 CollisionGeometry ()
 
 CollisionGeometry (const CollisionGeometry &other)=default
 Copy constructor. More...
 
virtual ~CollisionGeometry ()
 
bool operator== (const CollisionGeometry &other) const
 Equality operator. More...
 
bool operator!= (const CollisionGeometry &other) const
 Difference operator. More...
 
void * getUserData () const
 get user data in geometry More...
 
void setUserData (void *data)
 set user data in geometry More...
 
bool isOccupied () const
 whether the object is completely occupied More...
 
bool isFree () const
 whether the object is completely free More...
 
bool isUncertain () const
 whether the object has some uncertainty More...
 
virtual Matrix3f computeMomentofInertiaRelatedToCOM () const
 compute the inertia matrix, related to the com More...
 

Protected Member Functions

void init (const FCL_REAL x_dim, const FCL_REAL y_dim, const MatrixXf &heights, const FCL_REAL min_height)
 
OBJECT_TYPE getObjectType () const
 Get the object type: it is a HFIELD. More...
 
Vec3f computeCOM () const
 compute center of mass More...
 
FCL_REAL computeVolume () const
 compute the volume More...
 
Matrix3f computeMomentofInertia () const
 compute the inertia matrix, related to the origin More...
 
int buildTree ()
 Build the bounding volume hierarchy. More...
 
FCL_REAL recursiveUpdateHeight (const size_t bv_id)
 
FCL_REAL recursiveBuildTree (const size_t bv_id, const Eigen::DenseIndex x_id, const Eigen::DenseIndex x_size, const Eigen::DenseIndex y_id, const Eigen::DenseIndex y_size)
 

Protected Attributes

FCL_REAL x_dim
 Dimensions in meters along X and Y directions. More...
 
FCL_REAL y_dim
 
MatrixXf heights
 Elevation values in meters of the Height Field. More...
 
FCL_REAL min_height
 Minimal height of the Height Field: all values bellow min_height will be discarded. More...
 
FCL_REAL max_height
 
VecXf x_grid
 Grids along the X and Y directions. Useful for plotting or other related things. More...
 
VecXf y_grid
 
BVS bvs
 Bounding volume hierarchy. More...
 
unsigned int num_bvs
 

Additional Inherited Members

- Public Attributes inherited from hpp::fcl::CollisionGeometry
Vec3f aabb_center
 AABB center in local coordinate. More...
 
FCL_REAL aabb_radius
 AABB radius. More...
 
AABB aabb_local
 AABB in local coordinate, used for tight AABB when only translation transform. More...
 
void * user_data
 pointer to user defined data specific to this object More...
 
FCL_REAL cost_density
 collision cost for unit volume More...
 
FCL_REAL threshold_occupied
 threshold for occupied ( >= is occupied) More...
 
FCL_REAL threshold_free
 threshold for free (<= is free) More...
 

Detailed Description

template<typename BV>
class hpp::fcl::HeightField< BV >

Data structure depicting a height field given by the base grid dimensions and the elevation along the grid.

Template Parameters
BVone of the bounding volume class in Bounding volumes.

An height field is defined by its base dimensions along the X and Y axes and a set ofpoints defined by their altitude, regularly dispatched on the grid. The height field is centered at the origin and the corners of the geometry correspond to the following coordinates [± x_dim/2; ± y_dim/2].

Member Typedef Documentation

◆ Base

template<typename BV >
typedef CollisionGeometry hpp::fcl::HeightField< BV >::Base

◆ BVS

template<typename BV >
typedef std::vector<Node> hpp::fcl::HeightField< BV >::BVS

◆ Node

template<typename BV >
typedef HFNode<BV> hpp::fcl::HeightField< BV >::Node

Constructor & Destructor Documentation

◆ HeightField() [1/3]

template<typename BV >
hpp::fcl::HeightField< BV >::HeightField ( )
inline

Constructing an empty HeightField.

◆ HeightField() [2/3]

template<typename BV >
hpp::fcl::HeightField< BV >::HeightField ( const FCL_REAL  x_dim,
const FCL_REAL  y_dim,
const MatrixXf heights,
const FCL_REAL  min_height = (FCL_REAL)0 
)
inline

Constructing an HeightField from its base dimensions and the set of heights points. The granularity of the height field along X and Y direction is extraded from the Z grid.

Parameters
[in]x_dimDimension along the X axis
[in]y_dimDimension along the Y axis
[in]heightsMatrix containing the altitude of each point compositng the height field
[in]min_heightMinimal height of the height field

◆ HeightField() [3/3]

template<typename BV >
hpp::fcl::HeightField< BV >::HeightField ( const HeightField< BV > &  other)
inline

Copy contructor from another HeightField.

Parameters
[in]otherto copy.

◆ ~HeightField()

template<typename BV >
virtual hpp::fcl::HeightField< BV >::~HeightField ( )
inlinevirtual

deconstruction, delete mesh data related.

Member Function Documentation

◆ buildTree()

template<typename BV >
int hpp::fcl::HeightField< BV >::buildTree ( )
inlineprotected

Build the bounding volume hierarchy.

◆ clone()

template<typename BV >
virtual HeightField<BV>* hpp::fcl::HeightField< BV >::clone ( ) const
inlinevirtual

Clone *this into a new CollisionGeometry.

Implements hpp::fcl::CollisionGeometry.

◆ computeCOM()

template<typename BV >
Vec3f hpp::fcl::HeightField< BV >::computeCOM ( ) const
inlineprotectedvirtual

compute center of mass

Reimplemented from hpp::fcl::CollisionGeometry.

◆ computeLocalAABB()

template<typename BV >
void hpp::fcl::HeightField< BV >::computeLocalAABB ( )
inlinevirtual

Compute the AABB for the HeightField, used for broad-phase collision.

Implements hpp::fcl::CollisionGeometry.

◆ computeMomentofInertia()

template<typename BV >
Matrix3f hpp::fcl::HeightField< BV >::computeMomentofInertia ( ) const
inlineprotectedvirtual

compute the inertia matrix, related to the origin

Reimplemented from hpp::fcl::CollisionGeometry.

◆ computeVolume()

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::computeVolume ( ) const
inlineprotectedvirtual

compute the volume

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getBV() [1/2]

template<typename BV >
HFNode<BV>& hpp::fcl::HeightField< BV >::getBV ( unsigned int  i)
inline

Access the bv giving the its index.

◆ getBV() [2/2]

template<typename BV >
const HFNode<BV>& hpp::fcl::HeightField< BV >::getBV ( unsigned int  i) const
inline

Access the bv giving the its index.

◆ getHeights()

template<typename BV >
const MatrixXf& hpp::fcl::HeightField< BV >::getHeights ( ) const
inline

Returns a const reference of the heights.

◆ getMaxHeight()

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::getMaxHeight ( ) const
inline

Returns the maximal height value of the Height Field.

◆ getMinHeight()

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::getMinHeight ( ) const
inline

Returns the minimal height value of the Height Field.

◆ getNodeType() [1/9]

template<typename BV >
NODE_TYPE hpp::fcl::HeightField< BV >::getNodeType ( ) const
inlinevirtual

Get the BV type: default is unknown.

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getNodeType() [2/9]

NODE_TYPE hpp::fcl::HeightField< AABB >::getNodeType ( ) const
virtual

Specialization of getNodeType() for HeightField with different BV types.

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getNodeType() [3/9]

NODE_TYPE hpp::fcl::HeightField< OBB >::getNodeType ( ) const
virtual

get the node type

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getNodeType() [4/9]

NODE_TYPE hpp::fcl::HeightField< RSS >::getNodeType ( ) const
virtual

get the node type

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getNodeType() [5/9]

NODE_TYPE hpp::fcl::HeightField< kIOS >::getNodeType ( ) const
virtual

get the node type

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getNodeType() [6/9]

NODE_TYPE hpp::fcl::HeightField< OBBRSS >::getNodeType ( ) const
virtual

get the node type

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getNodeType() [7/9]

NODE_TYPE hpp::fcl::HeightField< KDOP< 16 > >::getNodeType ( ) const
virtual

get the node type

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getNodeType() [8/9]

NODE_TYPE hpp::fcl::HeightField< KDOP< 18 > >::getNodeType ( ) const
virtual

get the node type

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getNodeType() [9/9]

NODE_TYPE hpp::fcl::HeightField< KDOP< 24 > >::getNodeType ( ) const
virtual

get the node type

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getObjectType()

template<typename BV >
OBJECT_TYPE hpp::fcl::HeightField< BV >::getObjectType ( ) const
inlineprotectedvirtual

Get the object type: it is a HFIELD.

Reimplemented from hpp::fcl::CollisionGeometry.

◆ getXDim()

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::getXDim ( ) const
inline

Returns the dimension of the Height Field along the X direction.

◆ getXGrid()

template<typename BV >
const VecXf& hpp::fcl::HeightField< BV >::getXGrid ( ) const
inline

Returns a const reference of the grid along the X direction.

◆ getYDim()

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::getYDim ( ) const
inline

Returns the dimension of the Height Field along the Y direction.

◆ getYGrid()

template<typename BV >
const VecXf& hpp::fcl::HeightField< BV >::getYGrid ( ) const
inline

Returns a const reference of the grid along the Y direction.

◆ init()

template<typename BV >
void hpp::fcl::HeightField< BV >::init ( const FCL_REAL  x_dim,
const FCL_REAL  y_dim,
const MatrixXf heights,
const FCL_REAL  min_height 
)
inlineprotected

◆ recursiveBuildTree()

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::recursiveBuildTree ( const size_t  bv_id,
const Eigen::DenseIndex  x_id,
const Eigen::DenseIndex  x_size,
const Eigen::DenseIndex  y_id,
const Eigen::DenseIndex  y_size 
)
inlineprotected

◆ recursiveUpdateHeight()

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::recursiveUpdateHeight ( const size_t  bv_id)
inlineprotected

◆ updateHeights()

template<typename BV >
void hpp::fcl::HeightField< BV >::updateHeights ( const MatrixXf new_heights)
inline

Update Height Field height.

Member Data Documentation

◆ bvs

template<typename BV >
BVS hpp::fcl::HeightField< BV >::bvs
protected

Bounding volume hierarchy.

◆ heights

template<typename BV >
MatrixXf hpp::fcl::HeightField< BV >::heights
protected

Elevation values in meters of the Height Field.

◆ max_height

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::max_height
protected

◆ min_height

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::min_height
protected

Minimal height of the Height Field: all values bellow min_height will be discarded.

◆ num_bvs

template<typename BV >
unsigned int hpp::fcl::HeightField< BV >::num_bvs
protected

◆ x_dim

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::x_dim
protected

Dimensions in meters along X and Y directions.

◆ x_grid

template<typename BV >
VecXf hpp::fcl::HeightField< BV >::x_grid
protected

Grids along the X and Y directions. Useful for plotting or other related things.

◆ y_dim

template<typename BV >
FCL_REAL hpp::fcl::HeightField< BV >::y_dim
protected

◆ y_grid

template<typename BV >
VecXf hpp::fcl::HeightField< BV >::y_grid
protected

The documentation for this class was generated from the following file: