Choreonoid  1.5
CollisionDetector.h
Go to the documentation of this file.
1 
6 #ifndef CNOID_UTIL_COLLISION_DETECTOR_H
7 #define CNOID_UTIL_COLLISION_DETECTOR_H
8 
9 #include "Collision.h"
10 #include "SceneGraph.h"
11 #include "EigenTypes.h"
12 #include <boost/shared_ptr.hpp>
13 #include "exportdecl.h"
14 
15 namespace cnoid {
16 
17 struct CollisionPair {
18  int geometryId[2];
20 };
21 typedef boost::shared_ptr<CollisionPair> CollisionPairPtr;
22 
24 typedef boost::shared_ptr<CollisionDetector> CollisionDetectorPtr;
25 
27 {
28 public:
29  static bool registerFactory(const std::string& name, boost::function<CollisionDetectorPtr()> factory);
30  static int numFactories();
31  static std::string factoryName(int factoryIndex);
32  static int factoryIndex(const std::string& name);
33  static CollisionDetectorPtr create(int factoryIndex);
34 
35  virtual ~CollisionDetector();
36  virtual const char* name() const = 0;
37 
43  virtual CollisionDetectorPtr clone() const = 0;
44 
45  virtual bool enableGeometryCache(bool on) = 0;
46  virtual void clearGeometryCache(SgNodePtr geometry) = 0;
47  virtual void clearAllGeometryCaches() = 0;
48 
49  virtual void clearGeometries() = 0;
53  virtual int numGeometries() const = 0;
54  virtual int addGeometry(SgNodePtr geometry) = 0;
55  virtual void setGeometryStatic(int geometryId, bool isStatic = true) = 0;
56  virtual void setNonInterfarenceGeometyrPair(int geometryId1, int geometryId2) = 0;
57  virtual bool makeReady() = 0;
58  virtual void updatePosition(int geometryId, const Position& position) = 0;
59 
60  // Is this faster than the above function?
61  //virtual void updatePositions(int begin, int end, const std::vector<Position>& positions) = 0;
62 
63  virtual void detectCollisions(boost::function<void(const CollisionPair&)> callback) = 0;
64 
65  // or
66  // virtual void detectCollisions(std::vector<CollisionPair>& out_collisionPairs) = 0;
67 
68 };
69 
70 }
71 
72 #endif
boost::shared_ptr< CollisionDetector > CollisionDetectorPtr
Definition: CollisionDetector.h:23
int geometryId[2]
Definition: CollisionDetector.h:18
Definition: CollisionDetector.h:26
Eigen::Transform< double, 3, Eigen::AffineCompact > Position
Definition: EigenTypes.h:73
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
std::vector< Collision > CollisionArray
Definition: Collision.h:20
boost::shared_ptr< CollisionPair > CollisionPairPtr
Definition: CollisionDetector.h:21
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
CollisionArray collisions
Definition: CollisionDetector.h:19
Definition: CollisionDetector.h:17