DART
6.10.1
|
OdeCollisionDetector wraps the ODE collision detector. More...
#include <OdeCollisionDetector.hpp>
Public Types | |
using | Factory = common::Factory< std::string, CollisionDetector, std::shared_ptr< CollisionDetector > > |
using | SingletonFactory = common::Singleton< Factory > |
template<typename Derived > | |
using | Registrar = common::FactoryRegistrar< std::string, CollisionDetector, Derived, std::shared_ptr< CollisionDetector > > |
Public Member Functions | |
virtual | ~OdeCollisionDetector () |
Constructor. More... | |
std::shared_ptr< CollisionDetector > | cloneWithoutCollisionObjects () const override |
Create a clone of this CollisionDetector. More... | |
const std::string & | getType () const override |
Return collision detection engine type as a std::string. More... | |
std::unique_ptr< CollisionGroup > | createCollisionGroup () override |
Create a collision group. More... | |
bool | collide (CollisionGroup *group, const CollisionOption &option=CollisionOption(false, 1u, nullptr), CollisionResult *result=nullptr) override |
Perform collision check for a single group. More... | |
bool | collide (CollisionGroup *group1, CollisionGroup *group2, const CollisionOption &option=CollisionOption(false, 1u, nullptr), CollisionResult *result=nullptr) override |
Perform collision check for two groups. More... | |
double | distance (CollisionGroup *group, const DistanceOption &option=DistanceOption(false, 0.0, nullptr), DistanceResult *result=nullptr) override |
double | distance (CollisionGroup *group1, CollisionGroup *group2, const DistanceOption &option=DistanceOption(false, 0.0, nullptr), DistanceResult *result=nullptr) override |
virtual std::unique_ptr< CollisionGroup > | createCollisionGroup ()=0 |
Create a collision group. More... | |
template<typename... Args> | |
std::unique_ptr< CollisionGroup > | createCollisionGroup (const Args &... args) |
Create a collision group from any objects that are supported by CollisionGroup::addShapeFramesOf(). More... | |
template<typename... Args> | |
std::unique_ptr< CollisionGroup > | createCollisionGroup (const Args &... args) |
Create a collision group from any objects that are supported by CollisionGroup::addShapeFramesOf(). More... | |
std::shared_ptr< CollisionGroup > | createCollisionGroupAsSharedPtr () |
Helper function that creates and returns CollisionGroup as a shared_ptr. More... | |
template<typename... Args> | |
std::shared_ptr< CollisionGroup > | createCollisionGroupAsSharedPtr (const Args &... args) |
Helper function that creates and returns CollisionGroup as shared_ptr. More... | |
virtual bool | raycast (CollisionGroup *group, const Eigen::Vector3d &from, const Eigen::Vector3d &to, const RaycastOption &option=RaycastOption(), RaycastResult *result=nullptr) |
Performs raycast to a collision group. More... | |
Static Public Member Functions | |
static std::shared_ptr< OdeCollisionDetector > | create () |
static const std::string & | getStaticType () |
Get collision detector type for this class. More... | |
static Factory * | getFactory () |
Returns the singleton factory. More... | |
Protected Member Functions | |
OdeCollisionDetector () | |
Constructor. More... | |
std::unique_ptr< CollisionObject > | createCollisionObject (const dynamics::ShapeFrame *shapeFrame) override |
Create CollisionObject. More... | |
void | refreshCollisionObject (CollisionObject *object) override |
Update the collision geometry of a ShapeFrame. More... | |
dWorldID | getOdeWorldId () const |
std::shared_ptr< CollisionObject > | claimCollisionObject (const dynamics::ShapeFrame *shapeFrame) |
Claim CollisionObject associated with shapeFrame. More... | |
virtual void | notifyCollisionObjectDestroying (CollisionObject *object) |
Notify that a CollisionObject is destroying. Do nothing by default. More... | |
Protected Attributes | |
dWorldID | mWorldId |
Top-level world for all bodies. More... | |
std::unique_ptr< CollisionObjectManager > | mCollisionObjectManager |
Private Member Functions | |
dGeomID | createOdeCollisionGeometry (const dynamics::ConstShapePtr &shape) |
Private Attributes | |
dContactGeom | contactCollisions [250] |
Static Private Attributes | |
static Registrar< OdeCollisionDetector > | mRegistrar |
Friends | |
class | OdeCollisionObject |
OdeCollisionDetector wraps the ODE collision detector.
The supported collision shape types are sphere, box, capsule, cylinder, plane, and trimesh.
ODE additionally supports ray and heightfiled, but DART doesn't support them yet.
|
inherited |
|
inherited |
|
inherited |
|
virtual |
Constructor.
|
protected |
Constructor.
|
protectedinherited |
Claim CollisionObject associated with shapeFrame.
New CollisionObject will be created if it hasn't created yet for shapeFrame.
|
overridevirtual |
Create a clone of this CollisionDetector.
All the properties will be copied over, but not collision objects.
Implements dart::collision::CollisionDetector.
|
overridevirtual |
Perform collision check for a single group.
If nullptr is passed to result, then the this returns only simple information whether there is a collision of not.
Implements dart::collision::CollisionDetector.
|
overridevirtual |
Perform collision check for two groups.
If nullptr is passed to result, then the this returns only simple information whether there is a collision of not.
Implements dart::collision::CollisionDetector.
|
static |
|
overridevirtual |
Create a collision group.
Implements dart::collision::CollisionDetector.
|
virtual |
Create a collision group.
Implements dart::collision::CollisionDetector.
|
inherited |
Create a collision group from any objects that are supported by CollisionGroup::addShapeFramesOf().
The objects can be any of ShapeFrame, std::vector<ShapeFrame>, CollisionGroup, BodyNode, and Skeleton.
Note that this function adds only the ShapeFrames of each object at the moment that this function is called. Any later addition to or removal of the ShapeFrames that are attached to these objects will NOT be noticed.
std::unique_ptr< CollisionGroup > dart::collision::CollisionDetector::createCollisionGroup | ( | typename... | Args | ) |
Create a collision group from any objects that are supported by CollisionGroup::addShapeFramesOf().
The objects can be any of ShapeFrame, std::vector<ShapeFrame>, CollisionGroup, BodyNode, and Skeleton.
Note that this function adds only the ShapeFrames of each object at the moment that this function is called. Any later addition to or removal of the ShapeFrames that are attached to these objects will NOT be noticed.
|
inherited |
Helper function that creates and returns CollisionGroup as a shared_ptr.
Internally, this function creates a shared_ptr from unique_ptr returned from createCollisionGroup() so the performance would be slighly worse than using std::make_unique.
|
inherited |
Helper function that creates and returns CollisionGroup as shared_ptr.
|
overrideprotectedvirtual |
Create CollisionObject.
Implements dart::collision::CollisionDetector.
|
private |
|
overridevirtual |
Implements dart::collision::CollisionDetector.
|
overridevirtual |
Implements dart::collision::CollisionDetector.
|
staticinherited |
Returns the singleton factory.
|
protected |
|
static |
Get collision detector type for this class.
|
overridevirtual |
Return collision detection engine type as a std::string.
Implements dart::collision::CollisionDetector.
|
protectedvirtualinherited |
Notify that a CollisionObject is destroying. Do nothing by default.
Reimplemented in dart::collision::BulletCollisionDetector.
|
virtualinherited |
Performs raycast to a collision group.
[in] | group | The collision group the ray will be casted onto. |
[in] | from | The start point of the ray in world coordinates. |
[in] | to | The end point of the ray in world coordinates. |
[in] | option | The raycast option. |
[in] | result | The raycast result. |
Reimplemented in dart::collision::BulletCollisionDetector.
|
overrideprotectedvirtual |
Update the collision geometry of a ShapeFrame.
Implements dart::collision::CollisionDetector.
|
friend |
|
private |
|
protectedinherited |
|
staticprivate |
|
protected |
Top-level world for all bodies.