33 #ifndef DART_COLLISION_COLLISIONDETECTOR_HPP_ 34 #define DART_COLLISION_COLLISIONDETECTOR_HPP_ 39 #include <Eigen/Dense> 41 #include "dart/common/Factory.hpp" 42 #include "dart/dynamics/CollisionOption.hpp" 43 #include "dart/dynamics/CollisionResult.hpp" 44 #include "dart/dynamics/Contact.hpp" 45 #include "dart/dynamics/DistanceOption.hpp" 46 #include "dart/dynamics/DistanceResult.hpp" 47 #include "dart/dynamics/RaycastOption.hpp" 48 #include "dart/dynamics/RaycastResult.hpp" 49 #include "dart/dynamics/SmartPointer.hpp" 54 class CollisionObject;
65 std::shared_ptr<CollisionDetector>>;
69 template <
typename Derived>
74 std::shared_ptr<CollisionDetector>>;
88 virtual const std::string&
getType()
const = 0;
109 template <
typename... Args>
113 template <
typename... Args>
115 const Args&... args);
179 const Eigen::Vector3d& from,
180 const Eigen::Vector3d& to,
209 std::unique_ptr<CollisionObjectManager> mCollisionObjectManager;
250 struct CollisionObjectDeleter final
259 const CollisionObjectDeleter mCollisionObjectDeleter;
280 struct CollisionObjectDeleter final
289 const CollisionObjectDeleter mCollisionObjectDeleter;
291 using CollisionObjectMap
292 = std::map<const dynamics::ShapeFrame*, std::weak_ptr<CollisionObject>>;
294 CollisionObjectMap mCollisionObjectMap;
300 #include "dart/dynamics/detail/CollisionDetector.hpp" 302 #endif // DART_COLLISION_COLLISIONDETECTOR_HPP_ Helper class to register a object creator function to the Singleton.
Definition: Factory.hpp:124
virtual void refreshCollisionObject(CollisionObject *object)=0
Update the collision geometry of a ShapeFrame.
virtual bool collide(CollisionGroup *group, const CollisionOption &option=CollisionOption(false, 1u, nullptr), CollisionResult *result=nullptr)=0
Perform collision check for a single group.
Definition: CollisionDetector.hpp:236
Definition: DistanceResult.hpp:46
Definition: Aspect.cpp:40
virtual void notifyCollisionObjectDestroying(CollisionObject *object)
Notify that a CollisionObject is destroying. Do nothing by default.
Definition: CollisionDetector.cpp:84
Definition: CollisionDetector.hpp:213
Definition: CollisionOption.hpp:44
CollisionDetector()=default
Constructor.
virtual std::unique_ptr< CollisionObject > createCollisionObject(const dynamics::ShapeFrame *shapeFrame)=0
Create CollisionObject.
Definition: CollisionResult.hpp:51
Definition: DistanceOption.hpp:44
virtual const std::string & getType() const =0
Return collision detection engine type as a std::string.
Definition: CollisionObject.hpp:43
static Factory * getFactory()
Returns the singleton factory.
Definition: CollisionDetector.cpp:47
Definition: CollisionGroup.hpp:51
virtual ~CollisionDetector()=default
Destructor.
Definition: RaycastResult.hpp:62
Singleton template class.
Definition: Singleton.hpp:50
Definition: CollisionDetector.hpp:263
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.
Definition: CollisionDetector.cpp:60
Definition: ShapeFrame.hpp:189
Definition: RaycastOption.hpp:42
std::shared_ptr< CollisionGroup > createCollisionGroupAsSharedPtr()
Helper function that creates and returns CollisionGroup as a shared_ptr.
Definition: CollisionDetector.cpp:54
Definition: CollisionDetector.hpp:56
Implementation of the Abstract Factory Pattern.
Definition: Factory.hpp:62
virtual std::shared_ptr< CollisionDetector > cloneWithoutCollisionObjects() const =0
Create a clone of this CollisionDetector.
std::shared_ptr< CollisionObject > claimCollisionObject(const dynamics::ShapeFrame *shapeFrame)
Claim CollisionObject associated with shapeFrame.
Definition: CollisionDetector.cpp:73
virtual std::unique_ptr< CollisionGroup > createCollisionGroup()=0
Create a collision group.
virtual double distance(CollisionGroup *group, const DistanceOption &option=DistanceOption(false, 0.0, nullptr), DistanceResult *result=nullptr)=0
Get the minimum signed distance between the Shape pairs in the given CollisionGroup.