Tesseract
Motion Planning Environment
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
tesseract_collision::tesseract_collision_bullet Namespace Reference

Classes

struct  BroadphaseContactResultCallback
 The BroadphaseContactResultCallback is used to report contact points. More...
 
struct  btPerturbedContactResult
 
struct  btSimplex
 
struct  btSupportVector
 
class  BulletCastBVHManager
 A BVH implementation of a tesseract contact manager. More...
 
class  BulletCastBVHManagerFactory
 
class  BulletCastSimpleManager
 A simple implementation of a tesseract manager which does not use BHV. More...
 
class  BulletCastSimpleManagerFactory
 
class  BulletDiscreteBVHManager
 A BVH implementation of a bullet manager. More...
 
class  BulletDiscreteBVHManagerFactory
 The yaml config for each of the factories below is the same. More...
 
class  BulletDiscreteSimpleManager
 A simple implementation of a bullet manager which does not use BHV. More...
 
class  BulletDiscreteSimpleManagerFactory
 
struct  CastBroadphaseContactResultCallback
 
struct  CastCollisionCollector
 
struct  CastHullShape
 This is a casted collision shape used for checking if an object is collision free between two transforms. More...
 
class  CollisionObjectWrapper
 This is a tesseract bullet collsion object. More...
 
struct  DiscreteBroadphaseContactResultCallback
 
struct  DiscreteCollisionCollector
 
struct  TesseractBridgedManifoldResult
 This is copied directly out of BulletWorld. More...
 
struct  TesseractBroadphaseBridgedManifoldResult
 
class  TesseractCollisionConfiguration
 This is a modified configuration that included the modified Bullet algorithms. More...
 
struct  TesseractCollisionConfigurationInfo
 
class  TesseractCollisionPairCallback
 A callback function that is called as part of the broadphase collision checking. More...
 
class  TesseractCompoundCollisionAlgorithm
 Supports collision between CompoundCollisionShapes and other collision shapes. More...
 
class  TesseractCompoundCompoundCollisionAlgorithm
 Supports collision between two btCompoundCollisionShape shapes. More...
 
struct  TesseractCompoundCompoundLeafCallback
 
struct  TesseractCompoundLeafCallback
 
class  TesseractConvexConvexAlgorithm
 This is a modifed Convex to Convex collision algorithm. More...
 
class  TesseractGjkPairDetector
 This is a modifed Convex to Convex collision algorithm. More...
 
class  TesseractOverlapFilterCallback
 This class is used to filter broadphase. More...
 

Typedefs

using COW = CollisionObjectWrapper
 
using Link2Cow = std::map< std::string, COW::Ptr >
 
using Link2ConstCow = std::map< std::string, COW::ConstPtr >
 

Functions

btVector3 convertEigenToBt (const Eigen::Vector3d &v)
 
Eigen::Vector3d convertBtToEigen (const btVector3 &v)
 
btQuaternion convertEigenToBt (const Eigen::Quaterniond &q)
 
btMatrix3x3 convertEigenToBt (const Eigen::Matrix3d &r)
 
Eigen::Matrix3d convertBtToEigen (const btMatrix3x3 &r)
 
btTransform convertEigenToBt (const Eigen::Isometry3d &t)
 
Eigen::Isometry3d convertBtToEigen (const btTransform &t)
 
void GetAverageSupport (const btConvexShape *shape, const btVector3 &localNormal, btScalar &outsupport, btVector3 &outpt)
 
btTransform getLinkTransformFromCOW (const btCollisionObjectWrapper *cow)
 This transversus the parent tree to find the base object and return its world transform This should be the links transform and it should only need to transverse twice at max. More...
 
bool needsCollisionCheck (const COW &cow1, const COW &cow2, const IsContactAllowedFn &acm, bool verbose=false)
 This is used to check if a collision check is required between the provided two collision objects. More...
 
btScalar addDiscreteSingleResult (btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, const btCollisionObjectWrapper *colObj1Wrap, ContactTestData &collisions)
 
void calculateContinuousData (ContactResult *col, const btCollisionObjectWrapper *cow, const btVector3 &pt_world, const btVector3 &normal_world, const btTransform &link_tf_inv, size_t link_index)
 Calculate the continuous contact data for casted collision shape. More...
 
btScalar addCastSingleResult (btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int index0, const btCollisionObjectWrapper *colObj1Wrap, int index1, ContactTestData &collisions)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const CollisionShapeConstPtr &geom, CollisionObjectWrapper *cow, int shape_index)
 Create a bullet collision shape from tesseract collision shape. More...
 
void updateCollisionObjectFilters (const std::vector< std::string > &active, const COW::Ptr &cow)
 Update a collision objects filters. More...
 
COW::Ptr createCollisionObject (const std::string &name, const int &type_id, const CollisionShapesConst &shapes, const tesseract_common::VectorIsometry3d &shape_poses, bool enabled=true)
 
COW::Ptr makeCastCollisionObject (const COW::Ptr &cow)
 
void updateBroadphaseAABB (const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
 Update the Broadphase AABB for the input collision object. More...
 
void removeCollisionObjectFromBroadphase (const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
 Remove the collision object from broadphase. More...
 
void addCollisionObjectToBroadphase (const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
 Add the collision object to broadphase. More...
 
void updateCollisionObjectFilters (const std::vector< std::string > &active, const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
 Update a collision objects filters for broadphase. More...
 
void refreshBroadphaseProxy (const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
 Refresh the broadphase data structure. More...
 
TesseractCollisionConfigurationInfo getConfigInfo (const YAML::Node &config)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const tesseract_geometry::Box::ConstPtr &geom)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const tesseract_geometry::Sphere::ConstPtr &geom)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const tesseract_geometry::Cylinder::ConstPtr &geom)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const tesseract_geometry::Cone::ConstPtr &geom)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const tesseract_geometry::Capsule::ConstPtr &geom)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const tesseract_geometry::Mesh::ConstPtr &geom, CollisionObjectWrapper *cow, int shape_index)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const tesseract_geometry::ConvexMesh::ConstPtr &geom)
 
std::shared_ptr< btCollisionShape > createShapePrimitive (const tesseract_geometry::Octree::ConstPtr &geom, CollisionObjectWrapper *cow, int shape_index)
 
static DBVT_INLINE bool MyIntersect (const btDbvtAabbMm &a, const btDbvtAabbMm &b, const btTransform &xform, btScalar distanceThreshold)
 
static void MycollideTT (const btDbvtNode *root0, const btDbvtNode *root1, const btTransform &xform, TesseractCompoundCompoundLeafCallback *callback, btScalar distanceThreshold)
 
static SIMD_FORCE_INLINE void segmentsClosestPoints (btVector3 &ptsVector, btVector3 &offsetA, btVector3 &offsetB, btScalar &tA, btScalar &tB, const btVector3 &translation, const btVector3 &dirA, btScalar hlenA, const btVector3 &dirB, btScalar hlenB)
 
static SIMD_FORCE_INLINE btScalar capsuleCapsuleDistance (btVector3 &normalOnB, btVector3 &pointOnB, btScalar capsuleLengthA, btScalar capsuleRadiusA, btScalar capsuleLengthB, btScalar capsuleRadiusB, int capsuleAxisA, int capsuleAxisB, const btTransform &transformA, const btTransform &transformB, btScalar distanceThreshold)
 
static void btComputeSupport (const btConvexShape *convexA, const btTransform &localTransA, const btConvexShape *convexB, const btTransform &localTransB, const btVector3 &dir, bool check2d, btVector3 &supAworld, btVector3 &supBworld, btVector3 &aMinb)
 
static const btVector3 ccd_vec3_origin (0, 0, 0)
 
void btSimplexInit (btSimplex *s)
 
int btSimplexSize (const btSimplex *s)
 
const btSupportVectorbtSimplexPoint (const btSimplex *s, int idx)
 
void btSupportCopy (btSupportVector *d, const btSupportVector *s)
 
void btVec3Copy (btVector3 *v, const btVector3 *w)
 
void ccdVec3Add (btVector3 *v, const btVector3 *w)
 
void ccdVec3Sub (btVector3 *v, const btVector3 *w)
 
void btVec3Sub2 (btVector3 *d, const btVector3 *v, const btVector3 *w)
 
btScalar btVec3Dot (const btVector3 *a, const btVector3 *b)
 
btScalar ccdVec3Dist2 (const btVector3 *a, const btVector3 *b)
 
void btVec3Scale (btVector3 *d, btScalar k)
 
void btVec3Cross (btVector3 *d, const btVector3 *a, const btVector3 *b)
 
void btTripleCross (const btVector3 *a, const btVector3 *b, const btVector3 *c, btVector3 *d)
 
int ccdEq (btScalar _a, btScalar _b)
 
btScalar ccdVec3X (const btVector3 *v)
 
btScalar ccdVec3Y (const btVector3 *v)
 
btScalar ccdVec3Z (const btVector3 *v)
 
int btVec3Eq (const btVector3 *a, const btVector3 *b)
 
void btSimplexAdd (btSimplex *s, const btSupportVector *v)
 
void btSimplexSet (btSimplex *s, size_t pos, const btSupportVector *a)
 
void btSimplexSetSize (btSimplex *s, int size)
 
const btSupportVectorccdSimplexLast (const btSimplex *s)
 
int ccdSign (btScalar val)
 
btScalar btVec3PointSegmentDist2 (const btVector3 *P, const btVector3 *x0, const btVector3 *b, btVector3 *witness)
 
btScalar btVec3PointTriDist2 (const btVector3 *P, const btVector3 *x0, const btVector3 *B, const btVector3 *C, btVector3 *witness)
 
static int btDoSimplex2 (btSimplex *simplex, btVector3 *dir)
 
static int btDoSimplex3 (btSimplex *simplex, btVector3 *dir)
 
static int btDoSimplex4 (btSimplex *simplex, btVector3 *dir)
 
static int btDoSimplex (btSimplex *simplex, btVector3 *dir)
 

Variables

const btScalar BULLET_MARGIN = btScalar(0.0)
 
const btScalar BULLET_SUPPORT_FUNC_TOLERANCE = btScalar(0.01) METERS
 
const btScalar BULLET_LENGTH_TOLERANCE = btScalar(0.001) METERS
 
const btScalar BULLET_EPSILON = btScalar(1e-3)
 
const btScalar BULLET_DEFAULT_CONTACT_DISTANCE = btScalar(0.05)
 
const bool BULLET_COMPOUND_USE_DYNAMIC_AABB = true
 
static const CollisionShapesConst EMPTY_COLLISION_SHAPES_CONST
 
static const tesseract_common::VectorIsometry3d EMPTY_COLLISION_SHAPES_TRANSFORMS
 
static const CollisionShapesConst EMPTY_COLLISION_SHAPES_CONST
 
static const tesseract_common::VectorIsometry3d EMPTY_COLLISION_SHAPES_TRANSFORMS
 
static const CollisionShapesConst EMPTY_COLLISION_SHAPES_CONST
 
static const tesseract_common::VectorIsometry3d EMPTY_COLLISION_SHAPES_TRANSFORMS
 
static const CollisionShapesConst EMPTY_COLLISION_SHAPES_CONST
 
static const tesseract_common::VectorIsometry3d EMPTY_COLLISION_SHAPES_TRANSFORMS
 
static const bool disableCcd = false
 

Typedef Documentation

◆ COW

◆ Link2ConstCow

◆ Link2Cow

Function Documentation

◆ addCastSingleResult()

btScalar tesseract_collision::tesseract_collision_bullet::addCastSingleResult ( btManifoldPoint &  cp,
const btCollisionObjectWrapper *  colObj0Wrap,
int  index0,
const btCollisionObjectWrapper *  colObj1Wrap,
int  index1,
ContactTestData collisions 
)

◆ addCollisionObjectToBroadphase()

void tesseract_collision::tesseract_collision_bullet::addCollisionObjectToBroadphase ( const COW::Ptr cow,
const std::unique_ptr< btBroadphaseInterface > &  broadphase,
const std::unique_ptr< btCollisionDispatcher > &  dispatcher 
)

Add the collision object to broadphase.

Parameters
cowThe collision objects
broadphaseThe bullet broadphase interface
dispatcherThe bullet collision dispatcher

◆ addDiscreteSingleResult()

btScalar tesseract_collision::tesseract_collision_bullet::addDiscreteSingleResult ( btManifoldPoint &  cp,
const btCollisionObjectWrapper *  colObj0Wrap,
const btCollisionObjectWrapper *  colObj1Wrap,
ContactTestData collisions 
)

◆ btComputeSupport()

static void tesseract_collision::tesseract_collision_bullet::btComputeSupport ( const btConvexShape *  convexA,
const btTransform &  localTransA,
const btConvexShape *  convexB,
const btTransform &  localTransB,
const btVector3 &  dir,
bool  check2d,
btVector3 &  supAworld,
btVector3 &  supBworld,
btVector3 &  aMinb 
)
static

◆ btDoSimplex()

static int tesseract_collision::tesseract_collision_bullet::btDoSimplex ( btSimplex simplex,
btVector3 *  dir 
)
static

◆ btDoSimplex2()

static int tesseract_collision::tesseract_collision_bullet::btDoSimplex2 ( btSimplex simplex,
btVector3 *  dir 
)
static

◆ btDoSimplex3()

static int tesseract_collision::tesseract_collision_bullet::btDoSimplex3 ( btSimplex simplex,
btVector3 *  dir 
)
static

◆ btDoSimplex4()

static int tesseract_collision::tesseract_collision_bullet::btDoSimplex4 ( btSimplex simplex,
btVector3 *  dir 
)
static

◆ btSimplexAdd()

void tesseract_collision::tesseract_collision_bullet::btSimplexAdd ( btSimplex s,
const btSupportVector v 
)
inline

◆ btSimplexInit()

void tesseract_collision::tesseract_collision_bullet::btSimplexInit ( btSimplex s)
inline

◆ btSimplexPoint()

const btSupportVector * tesseract_collision::tesseract_collision_bullet::btSimplexPoint ( const btSimplex s,
int  idx 
)
inline

◆ btSimplexSet()

void tesseract_collision::tesseract_collision_bullet::btSimplexSet ( btSimplex s,
size_t  pos,
const btSupportVector a 
)
inline

◆ btSimplexSetSize()

void tesseract_collision::tesseract_collision_bullet::btSimplexSetSize ( btSimplex s,
int  size 
)
inline

◆ btSimplexSize()

int tesseract_collision::tesseract_collision_bullet::btSimplexSize ( const btSimplex s)
inline

◆ btSupportCopy()

void tesseract_collision::tesseract_collision_bullet::btSupportCopy ( btSupportVector d,
const btSupportVector s 
)
inline

◆ btTripleCross()

void tesseract_collision::tesseract_collision_bullet::btTripleCross ( const btVector3 *  a,
const btVector3 *  b,
const btVector3 *  c,
btVector3 *  d 
)
inline

◆ btVec3Copy()

void tesseract_collision::tesseract_collision_bullet::btVec3Copy ( btVector3 *  v,
const btVector3 *  w 
)
inline

◆ btVec3Cross()

void tesseract_collision::tesseract_collision_bullet::btVec3Cross ( btVector3 *  d,
const btVector3 *  a,
const btVector3 *  b 
)
inline

◆ btVec3Dot()

btScalar tesseract_collision::tesseract_collision_bullet::btVec3Dot ( const btVector3 *  a,
const btVector3 *  b 
)
inline

◆ btVec3Eq()

int tesseract_collision::tesseract_collision_bullet::btVec3Eq ( const btVector3 *  a,
const btVector3 *  b 
)
inline

◆ btVec3PointSegmentDist2()

btScalar tesseract_collision::tesseract_collision_bullet::btVec3PointSegmentDist2 ( const btVector3 *  P,
const btVector3 *  x0,
const btVector3 *  b,
btVector3 *  witness 
)
inline

◆ btVec3PointTriDist2()

btScalar tesseract_collision::tesseract_collision_bullet::btVec3PointTriDist2 ( const btVector3 *  P,
const btVector3 *  x0,
const btVector3 *  B,
const btVector3 *  C,
btVector3 *  witness 
)

◆ btVec3Scale()

void tesseract_collision::tesseract_collision_bullet::btVec3Scale ( btVector3 *  d,
btScalar  k 
)
inline

◆ btVec3Sub2()

void tesseract_collision::tesseract_collision_bullet::btVec3Sub2 ( btVector3 *  d,
const btVector3 *  v,
const btVector3 *  w 
)
inline

◆ calculateContinuousData()

void tesseract_collision::tesseract_collision_bullet::calculateContinuousData ( ContactResult col,
const btCollisionObjectWrapper *  cow,
const btVector3 &  pt_world,
const btVector3 &  normal_world,
const btTransform &  link_tf_inv,
size_t  link_index 
)

Calculate the continuous contact data for casted collision shape.

Parameters
colContact results
cowBullet Collision Object Wrapper
pt_worldCasted contact point in world coordinates
normal_worldCasted normal to move shape out of collision in world coordinates
link_tf_invThe links world transform inverse
link_indexThe link index in teh ContactResults the shape is associated with

◆ capsuleCapsuleDistance()

static SIMD_FORCE_INLINE btScalar tesseract_collision::tesseract_collision_bullet::capsuleCapsuleDistance ( btVector3 &  normalOnB,
btVector3 &  pointOnB,
btScalar  capsuleLengthA,
btScalar  capsuleRadiusA,
btScalar  capsuleLengthB,
btScalar  capsuleRadiusB,
int  capsuleAxisA,
int  capsuleAxisB,
const btTransform &  transformA,
const btTransform &  transformB,
btScalar  distanceThreshold 
)
static

◆ ccd_vec3_origin()

static const btVector3 tesseract_collision::tesseract_collision_bullet::ccd_vec3_origin ( ,
,
 
)
static

◆ ccdEq()

int tesseract_collision::tesseract_collision_bullet::ccdEq ( btScalar  _a,
btScalar  _b 
)
inline

◆ ccdSign()

int tesseract_collision::tesseract_collision_bullet::ccdSign ( btScalar  val)
inline

◆ ccdSimplexLast()

const btSupportVector * tesseract_collision::tesseract_collision_bullet::ccdSimplexLast ( const btSimplex s)
inline

◆ ccdVec3Add()

void tesseract_collision::tesseract_collision_bullet::ccdVec3Add ( btVector3 *  v,
const btVector3 *  w 
)
inline

◆ ccdVec3Dist2()

btScalar tesseract_collision::tesseract_collision_bullet::ccdVec3Dist2 ( const btVector3 *  a,
const btVector3 *  b 
)
inline

◆ ccdVec3Sub()

void tesseract_collision::tesseract_collision_bullet::ccdVec3Sub ( btVector3 *  v,
const btVector3 *  w 
)
inline

◆ ccdVec3X()

btScalar tesseract_collision::tesseract_collision_bullet::ccdVec3X ( const btVector3 *  v)

◆ ccdVec3Y()

btScalar tesseract_collision::tesseract_collision_bullet::ccdVec3Y ( const btVector3 *  v)

◆ ccdVec3Z()

btScalar tesseract_collision::tesseract_collision_bullet::ccdVec3Z ( const btVector3 *  v)

◆ convertBtToEigen() [1/3]

Eigen::Matrix3d tesseract_collision::tesseract_collision_bullet::convertBtToEigen ( const btMatrix3x3 &  r)

◆ convertBtToEigen() [2/3]

Eigen::Isometry3d tesseract_collision::tesseract_collision_bullet::convertBtToEigen ( const btTransform &  t)

◆ convertBtToEigen() [3/3]

Eigen::Vector3d tesseract_collision::tesseract_collision_bullet::convertBtToEigen ( const btVector3 &  v)

◆ convertEigenToBt() [1/4]

btTransform tesseract_collision::tesseract_collision_bullet::convertEigenToBt ( const Eigen::Isometry3d &  t)

◆ convertEigenToBt() [2/4]

btMatrix3x3 tesseract_collision::tesseract_collision_bullet::convertEigenToBt ( const Eigen::Matrix3d &  r)

◆ convertEigenToBt() [3/4]

btQuaternion tesseract_collision::tesseract_collision_bullet::convertEigenToBt ( const Eigen::Quaterniond &  q)

◆ convertEigenToBt() [4/4]

btVector3 tesseract_collision::tesseract_collision_bullet::convertEigenToBt ( const Eigen::Vector3d &  v)

◆ createCollisionObject()

COW::Ptr tesseract_collision::tesseract_collision_bullet::createCollisionObject ( const std::string &  name,
const int &  type_id,
const CollisionShapesConst shapes,
const tesseract_common::VectorIsometry3d shape_poses,
bool  enabled = true 
)

◆ createShapePrimitive() [1/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const CollisionShapeConstPtr geom,
CollisionObjectWrapper cow,
int  shape_index 
)

Create a bullet collision shape from tesseract collision shape.

Parameters
geomTesseract collision shape
cowThe collision object wrapper the collision shape is associated with
shape_indexThe collision shapes index within the collision shape wrapper. This can be accessed from the bullet collision shape by calling getUserIndex function.
Returns
Bullet collision shape.

◆ createShapePrimitive() [2/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const tesseract_geometry::Box::ConstPtr geom)

◆ createShapePrimitive() [3/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const tesseract_geometry::Capsule::ConstPtr geom)

◆ createShapePrimitive() [4/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const tesseract_geometry::Cone::ConstPtr geom)

◆ createShapePrimitive() [5/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const tesseract_geometry::ConvexMesh::ConstPtr geom)

◆ createShapePrimitive() [6/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const tesseract_geometry::Cylinder::ConstPtr geom)

◆ createShapePrimitive() [7/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const tesseract_geometry::Mesh::ConstPtr geom,
CollisionObjectWrapper cow,
int  shape_index 
)

◆ createShapePrimitive() [8/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const tesseract_geometry::Octree::ConstPtr geom,
CollisionObjectWrapper cow,
int  shape_index 
)

◆ createShapePrimitive() [9/9]

std::shared_ptr< btCollisionShape > tesseract_collision::tesseract_collision_bullet::createShapePrimitive ( const tesseract_geometry::Sphere::ConstPtr geom)

◆ GetAverageSupport()

void tesseract_collision::tesseract_collision_bullet::GetAverageSupport ( const btConvexShape *  shape,
const btVector3 &  localNormal,
btScalar &  outsupport,
btVector3 &  outpt 
)

◆ getConfigInfo()

TesseractCollisionConfigurationInfo tesseract_collision::tesseract_collision_bullet::getConfigInfo ( const YAML::Node &  config)

◆ getLinkTransformFromCOW()

btTransform tesseract_collision::tesseract_collision_bullet::getLinkTransformFromCOW ( const btCollisionObjectWrapper *  cow)

This transversus the parent tree to find the base object and return its world transform This should be the links transform and it should only need to transverse twice at max.

Parameters
cowBullet collision object wrapper.
Returns
Transform of link in world coordinates

◆ makeCastCollisionObject()

COW::Ptr tesseract_collision::tesseract_collision_bullet::makeCastCollisionObject ( const COW::Ptr cow)

◆ MycollideTT()

static void tesseract_collision::tesseract_collision_bullet::MycollideTT ( const btDbvtNode *  root0,
const btDbvtNode *  root1,
const btTransform &  xform,
TesseractCompoundCompoundLeafCallback callback,
btScalar  distanceThreshold 
)
inlinestatic

◆ MyIntersect()

static DBVT_INLINE bool tesseract_collision::tesseract_collision_bullet::MyIntersect ( const btDbvtAabbMm &  a,
const btDbvtAabbMm &  b,
const btTransform &  xform,
btScalar  distanceThreshold 
)
static

◆ needsCollisionCheck()

bool tesseract_collision::tesseract_collision_bullet::needsCollisionCheck ( const COW cow1,
const COW cow2,
const IsContactAllowedFn acm,
bool  verbose = false 
)

This is used to check if a collision check is required between the provided two collision objects.

Parameters
cow1The first collision object
cow2The second collision object
acmThe contact allowed function pointer
verboseIndicate if verbose information should be printed to the terminal
Returns
True if the two collision objects should be checked for collision, otherwise false

◆ refreshBroadphaseProxy()

void tesseract_collision::tesseract_collision_bullet::refreshBroadphaseProxy ( const COW::Ptr cow,
const std::unique_ptr< btBroadphaseInterface > &  broadphase,
const std::unique_ptr< btCollisionDispatcher > &  dispatcher 
)

Refresh the broadphase data structure.

When change certain properties of a collision object the broadphase is not aware so this function can be called to trigger an update. For example, when changing active links this changes internal flags which may require moving a collision object from the static BVH to the dynamic BVH so this function must be called.

Parameters
cowThe collision object to update.
broadphaseThe broadphase to update.
dispatcherThe dispatcher.

◆ removeCollisionObjectFromBroadphase()

void tesseract_collision::tesseract_collision_bullet::removeCollisionObjectFromBroadphase ( const COW::Ptr cow,
const std::unique_ptr< btBroadphaseInterface > &  broadphase,
const std::unique_ptr< btCollisionDispatcher > &  dispatcher 
)

Remove the collision object from broadphase.

Parameters
cowThe collision objects
broadphaseThe bullet broadphase interface
dispatcherThe bullet collision dispatcher

◆ segmentsClosestPoints()

static SIMD_FORCE_INLINE void tesseract_collision::tesseract_collision_bullet::segmentsClosestPoints ( btVector3 &  ptsVector,
btVector3 &  offsetA,
btVector3 &  offsetB,
btScalar &  tA,
btScalar &  tB,
const btVector3 &  translation,
const btVector3 &  dirA,
btScalar  hlenA,
const btVector3 &  dirB,
btScalar  hlenB 
)
static

◆ updateBroadphaseAABB()

void tesseract_collision::tesseract_collision_bullet::updateBroadphaseAABB ( const COW::Ptr cow,
const std::unique_ptr< btBroadphaseInterface > &  broadphase,
const std::unique_ptr< btCollisionDispatcher > &  dispatcher 
)

Update the Broadphase AABB for the input collision object.

Parameters
cowThe collision objects
broadphaseThe bullet broadphase interface
dispatcherThe bullet collision dispatcher

◆ updateCollisionObjectFilters() [1/2]

void tesseract_collision::tesseract_collision_bullet::updateCollisionObjectFilters ( const std::vector< std::string > &  active,
const COW::Ptr cow 
)

Update a collision objects filters.

Parameters
activeA list of active collision objects
cowThe collision object to update.

◆ updateCollisionObjectFilters() [2/2]

void tesseract_collision::tesseract_collision_bullet::updateCollisionObjectFilters ( const std::vector< std::string > &  active,
const COW::Ptr cow,
const std::unique_ptr< btBroadphaseInterface > &  broadphase,
const std::unique_ptr< btCollisionDispatcher > &  dispatcher 
)

Update a collision objects filters for broadphase.

Parameters
activeA list of active collision objects
cowThe collision object to update.
broadphaseThe collision object to update.
dispatcherThe collision object to update.

Variable Documentation

◆ BULLET_COMPOUND_USE_DYNAMIC_AABB

const bool tesseract_collision::tesseract_collision_bullet::BULLET_COMPOUND_USE_DYNAMIC_AABB = true

◆ BULLET_DEFAULT_CONTACT_DISTANCE

const btScalar tesseract_collision::tesseract_collision_bullet::BULLET_DEFAULT_CONTACT_DISTANCE = btScalar(0.05)

◆ BULLET_EPSILON

const btScalar tesseract_collision::tesseract_collision_bullet::BULLET_EPSILON = btScalar(1e-3)

◆ BULLET_LENGTH_TOLERANCE

const btScalar tesseract_collision::tesseract_collision_bullet::BULLET_LENGTH_TOLERANCE = btScalar(0.001) METERS

◆ BULLET_MARGIN

const btScalar tesseract_collision::tesseract_collision_bullet::BULLET_MARGIN = btScalar(0.0)

◆ BULLET_SUPPORT_FUNC_TOLERANCE

const btScalar tesseract_collision::tesseract_collision_bullet::BULLET_SUPPORT_FUNC_TOLERANCE = btScalar(0.01) METERS

◆ disableCcd

const bool tesseract_collision::tesseract_collision_bullet::disableCcd = false
static

◆ EMPTY_COLLISION_SHAPES_CONST [1/4]

const CollisionShapesConst tesseract_collision::tesseract_collision_bullet::EMPTY_COLLISION_SHAPES_CONST
static

◆ EMPTY_COLLISION_SHAPES_CONST [2/4]

const CollisionShapesConst tesseract_collision::tesseract_collision_bullet::EMPTY_COLLISION_SHAPES_CONST
static

◆ EMPTY_COLLISION_SHAPES_CONST [3/4]

const CollisionShapesConst tesseract_collision::tesseract_collision_bullet::EMPTY_COLLISION_SHAPES_CONST
static

◆ EMPTY_COLLISION_SHAPES_CONST [4/4]

const CollisionShapesConst tesseract_collision::tesseract_collision_bullet::EMPTY_COLLISION_SHAPES_CONST
static

◆ EMPTY_COLLISION_SHAPES_TRANSFORMS [1/4]

const tesseract_common::VectorIsometry3d tesseract_collision::tesseract_collision_bullet::EMPTY_COLLISION_SHAPES_TRANSFORMS
static

◆ EMPTY_COLLISION_SHAPES_TRANSFORMS [2/4]

const tesseract_common::VectorIsometry3d tesseract_collision::tesseract_collision_bullet::EMPTY_COLLISION_SHAPES_TRANSFORMS
static

◆ EMPTY_COLLISION_SHAPES_TRANSFORMS [3/4]

const tesseract_common::VectorIsometry3d tesseract_collision::tesseract_collision_bullet::EMPTY_COLLISION_SHAPES_TRANSFORMS
static

◆ EMPTY_COLLISION_SHAPES_TRANSFORMS [4/4]

const tesseract_common::VectorIsometry3d tesseract_collision::tesseract_collision_bullet::EMPTY_COLLISION_SHAPES_TRANSFORMS
static