RobWorkProject  23.9.11-
Classes | Public Types | Public Member Functions | List of all members
ProximityStrategyBullet Class Reference

This is a strategy wrapper for the distance and collision library Gimpact from the Bullet physicsengine. More...

#include <ProximityStrategyBullet.hpp>

Inherits CollisionStrategy, CollisionToleranceStrategy, DistanceStrategy, and DistanceMultiStrategy.

Classes

struct  BulletModel
 
struct  ProximityCacheBullet
 cache for any of the queries possible on this BulletStrategy More...
 
struct  ProximityModelBullet
 

Public Types

typedef rw::core::Ptr< ProximityStrategyBulletPtr
 
typedef std::pair< rw::geometry::GeometryData *, double > CacheKey
 cache key
 
- Public Types inherited from CollisionStrategy
enum  QueryType { FirstContact , AllContacts }
 the type of query that is to be performed
 
typedef rw::core::Ptr< CollisionStrategyPtr
 smart pointer type to this class
 
using Result = CollisionResult
 
- Public Types inherited from ProximityStrategy
typedef rw::core::Ptr< ProximityStrategyPtr
 smart pointer type to this class
 
- Public Types inherited from CollisionToleranceStrategy
typedef rw::core::Ptr< CollisionToleranceStrategyPtr
 smart pointer type to this class
 
- Public Types inherited from DistanceStrategy
typedef rw::core::Ptr< DistanceStrategyPtr
 smart pointer type to this class
 
- Public Types inherited from DistanceMultiStrategy
typedef rw::core::Ptr< DistanceMultiStrategyPtr
 smart pointer type to this class
 

Public Member Functions

 ProximityStrategyBullet ()
 Constructor.
 
virtual rw::proximity::ProximityModel::Ptr createModel ()
 creates an empty ProximityModel More...
 
void destroyModel (rw::proximity::ProximityModel *model)
 deallocates the memory used for model More...
 
bool addGeometry (rw::proximity::ProximityModel *model, const rw::geometry::Geometry &geom)
 
bool addGeometry (rw::proximity::ProximityModel *model, rw::core::Ptr< rw::geometry::Geometry > geom, bool forceCopy=false)
 
bool removeGeometry (rw::proximity::ProximityModel *model, const std::string &geomId)
 removes a geometry from a specific proximity model More...
 
std::vector< std::string > getGeometryIDs (rw::proximity::ProximityModel *model)
 the list of all geometry ids that are associated to the proximity model model is returned More...
 
- Public Member Functions inherited from CollisionStrategy
virtual ~CollisionStrategy ()
 Destroys object.
 
bool inCollision (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, QueryType type=FirstContact)
 Checks to see if two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \) are in collision. More...
 
bool inCollision (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, class ProximityStrategyData &data, QueryType type=FirstContact)
 Checks to see if two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \) are in collision. More...
 
bool inCollision (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, ProximityStrategyData &data)
 Checks to see if two proximity models are in collision. More...
 
virtual void getCollisionContacts (std::vector< CollisionStrategy::Contact > &contacts, ProximityStrategyData &data)=0
 this method interprets the collision query result and calculates a list of contacts to represent the collision geometry between the colliding geometries. More...
 
- Public Member Functions inherited from ProximityStrategy
virtual ~ProximityStrategy ()
 Destructor.
 
virtual bool addModel (rw::core::Ptr< rw::models::Object > object)
 Adds a Proximity model of a frame to this strategy. More...
 
virtual bool addModel (const rw::core::Ptr< rw::kinematics::Frame > frame, const rw::geometry::Geometry &faces)
 Adds a Proximity model to a frame where the geometry is copied in the underlying proximity strategy. More...
 
virtual bool addModel (const rw::core::Ptr< rw::kinematics::Frame > frame, rw::core::Ptr< rw::geometry::Geometry > faces, bool forceCopy=false)
 Adds a Proximity model to a frame. More...
 
virtual bool hasModel (const rw::core::Ptr< rw::kinematics::Frame > frame)
 Tells whether the frame has a proximity model in the strategy. More...
 
virtual void clearFrame (const rw::core::Ptr< rw::kinematics::Frame > frame)
 Clear (remove all) model information for frame frame.
 
virtual void clearFrames ()
 Clear (remove all) model information for all frames.
 
ProximityModel::Ptr getModel (const rw::core::Ptr< rw::kinematics::Frame > frame)
 get the proximitymodel associated to frame. If no model has been associated to frame then NULL is returned. More...
 
virtual std::vector< rw::core::Ptr< rw::geometry::Geometry > > getGeometries (rw::proximity::ProximityModel *model)=0
 the list of all geometry that are associated to the proximity model model is returned More...
 
 DEPRECATED ("This function is deprecated due to a spelling mistake, use the correct " "spelling \"getGeometries\" instead") std
 
virtual void clear ()=0
 Clears any stored model information.
 
void useThreads (int threads)
 setNumber of threads the strategy may use More...
 
- Public Member Functions inherited from CollisionToleranceStrategy
virtual ~CollisionToleranceStrategy ()
 Destroys object.
 
bool isWithinDistance (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, double tolerance)
 Checks to see if the geometry attached to two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \) are closer than the specified tolerance. More...
 
bool isWithinDistance (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, double distance, class ProximityStrategyData &data)
 Checks to see if the geometry attached to two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \) are closer than the specified tolerance. Result is cached in data. More...
 
bool isWithinDistance (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, double tolerance, class ProximityStrategyData &data)
 Checks to see if two proximity models \( \mathcal{F}_a \) and \( \mathcal{F}_b \) are closer than the specified tolerance. Result is cached in data. More...
 
- Public Member Functions inherited from DistanceStrategy
virtual ~DistanceStrategy ()
 Destroys object.
 
Result distance (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb)
 Calculates the distance between two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \). More...
 
Resultdistance (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, class ProximityStrategyData &data)
 Calculates the distance between two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \). More...
 
Resultdistance (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, class ProximityStrategyData &data)
 Calculates the distance between two proximity models \( \mathcal{a} \) and \( \mathcal{b} \). More...
 
Result distance (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, double threshold)
 Calculates the distance between two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \) if the distance are within threshold. If the distance between the frames are larger than the threshold, the result will be inaccurate. More...
 
DistanceStrategy::Resultdistance (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, double threshold, ProximityStrategyData &data)
 Calculates the distance between two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \) if the distance are within threshold. If the distance between the frames are larger than the threshold, the result will be inaccurate. More...
 
DistanceStrategy::Resultdistance (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, double threshold, ProximityStrategyData &data)
 Calculates the distance between two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \) if the distance are within threshold. If the distance between the frames are larger than the threshold, the result will be inaccurate. More...
 
- Public Member Functions inherited from DistanceMultiStrategy
virtual ~DistanceMultiStrategy ()
 Destroys object.
 
Result distances (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, double tolerance)
 Calculates all distances between geometry of two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \). More...
 
Resultdistances (const rw::core::Ptr< kinematics::Frame > a, const math::Transform3D< double > &wTa, const rw::core::Ptr< kinematics::Frame > b, const math::Transform3D< double > &wTb, double tolerance, class ProximityStrategyData &data)
 Calculates all distances between geometry of two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \). More...
 
Resultdistances (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, double tolerance, class ProximityStrategyData &data)
 Calculates all distances between two given objects \( \mathcal{F}_a \) and \( \mathcal{F}_b \) where the distances are below a certain threshold. More...
 
virtual std::pair< rw::math::Vector3D< double >, rw::math::Vector3D< double > > getSurfaceNormals (rw::proximity::DistanceMultiStrategy::Result &res, int idx)=0
 Get the Surface Normals. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from CollisionStrategy
static CollisionStrategy::Ptr make (rw::core::Ptr< CollisionToleranceStrategy > strategy, double tolerance)
 A collision strategy constructed from a collision tolerance strategy and a resolution. More...
 
static CollisionStrategy::Ptr make (rw::core::Ptr< CollisionToleranceStrategy > strategy, const rw::kinematics::FrameMap< double > &frameToTolerance, double defaultTolerance)
 A collision strategy constructed from a collision tolerance strategy and a resolution. More...
 
- Protected Member Functions inherited from CollisionStrategy
virtual bool doInCollision (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, ProximityStrategyData &data)=0
 Checks to see if two proximity models are in collision. More...
 
 CollisionStrategy ()
 Creates object.
 
- Protected Member Functions inherited from ProximityStrategy
 ProximityStrategy ()
 Creates object.
 
- Protected Member Functions inherited from CollisionToleranceStrategy
virtual bool doIsWithinDistance (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, double tolerance, class ProximityStrategyData &data)=0
 Checks to see if two proximity models \( \mathcal{F}_a \) and \( \mathcal{F}_b \) are closer than the specified tolerance. Result is cached in data. More...
 
 CollisionToleranceStrategy ()
 Creates object.
 
- Protected Member Functions inherited from DistanceStrategy
virtual ResultdoDistance (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, class ProximityStrategyData &data)=0
 Calculates the distance between two proximity models \( \mathcal{a} \) and \( \mathcal{b} \). More...
 
virtual DistanceStrategy::ResultdoDistanceThreshold (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, double threshold, ProximityStrategyData &data)
 Calculates the distance between two given frames \( \mathcal{F}_a \) and \( \mathcal{F}_b \) if the distance are within threshold. If the distance between the frames are larger than the threshold, the result will be inaccurate. More...
 
 DistanceStrategy ()
 Creates object.
 
- Protected Member Functions inherited from DistanceMultiStrategy
virtual ResultdoDistances (ProximityModel::Ptr a, const math::Transform3D< double > &wTa, ProximityModel::Ptr b, const math::Transform3D< double > &wTb, double tolerance, class ProximityStrategyData &data)=0
 Calculates all distances between two given objects \( \mathcal{F}_a \) and \( \mathcal{F}_b \) where the distances are below a certain threshold. More...
 
 DistanceMultiStrategy ()
 Creates object.
 
- Protected Attributes inherited from ProximityStrategy
size_t _threads
 the number of threads the strategy may use
 

Detailed Description

This is a strategy wrapper for the distance and collision library Gimpact from the Bullet physicsengine.

Member Function Documentation

◆ addGeometry() [1/2]

bool addGeometry ( rw::proximity::ProximityModel model,
const rw::geometry::Geometry geom 
)
virtual

Parameters
model[in] the proximity model to add data to
geom[in] the geometry that is to be added

Implements ProximityStrategy.

◆ addGeometry() [2/2]

bool addGeometry ( rw::proximity::ProximityModel model,
rw::core::Ptr< rw::geometry::Geometry geom,
bool  forceCopy = false 
)
virtual

Parameters
model
geom
forceCopy
Returns

Implements ProximityStrategy.

◆ createModel()

virtual rw::proximity::ProximityModel::Ptr createModel ( )
virtual

creates an empty ProximityModel

Implements ProximityStrategy.

◆ destroyModel()

void destroyModel ( rw::proximity::ProximityModel model)
virtual

deallocates the memory used for model

Parameters
model

Implements ProximityStrategy.

◆ getGeometryIDs()

std::vector<std::string> getGeometryIDs ( rw::proximity::ProximityModel model)
virtual

the list of all geometry ids that are associated to the proximity model model is returned

Parameters
model[in] the model containing the geometries
Returns
all geometry ids associated to the proximity model

Implements ProximityStrategy.

◆ removeGeometry()

bool removeGeometry ( rw::proximity::ProximityModel model,
const std::string &  geomId 
)
virtual

removes a geometry from a specific proximity model

Implements ProximityStrategy.


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