Parasol Planning Library (PPL)
CollisionDetectionValidity.h
Go to the documentation of this file.
1 #ifndef PMPL_COLLISION_DETECTION_VALIDITY_H_
2 #define PMPL_COLLISION_DETECTION_VALIDITY_H_
3 
5 
6 #include "Geometry/Bodies/Body.h"
9 
10 #include "Utilities/MetricUtils.h"
11 
16 
17 #include "nonstd/io.h"
18 
19 #include <algorithm>
20 
21 
53 
54  public:
55 
58 
60  typedef typename GroupCfg::Formation Formation;
61 
65 
67 
69 
71 
75 
77  virtual CollisionDetectionMethod* GetCDMethod() const noexcept override;
78 
82  virtual bool IsInsideObstacle(const Point3d& _p) override;
83 
89  virtual bool IsInsideObstacle(const Point3d& _p, std::vector<size_t>* _obstIdxs);
90 
95  virtual bool WorkspaceVisibility(const Point3d& _a, const Point3d& _b) override;
96 
103  virtual bool IsMultiBodyCollision(CDInfo& _cdInfo, const MultiBody* const _a,
104  const MultiBody* const _b, const std::string& _caller) override;
105 
107 
108  protected:
109 
112 
113  virtual bool IsValidImpl(Cfg& _cfg, CDInfo& _cdInfo,
114  const std::string& _caller) override;
115 
116  virtual bool IsValidImpl(GroupCfg& _cfg, CDInfo& _cdInfo,
117  const std::string& _caller) override;
118 
122 
129  virtual bool IsInCollision(CDInfo& _cdInfo, const Cfg& _cfg,
130  const std::string& _caller);
131 
138  virtual bool IsInCollision(CDInfo& _cdInfo, const GroupCfg& _cfg,
139  const std::string& _caller);
140 
148  virtual bool IsInSelfCollision(CDInfo& _cdInfo,
149  const MultiBody* const _multibody, const std::string& _caller);
150 
158  virtual bool IsInBoundaryCollision(CDInfo& _cdInfo, const Cfg& _cfg);
159 
167  virtual bool IsInObstacleCollision(CDInfo& _cdInfo,
168  const MultiBody* const _multibody, const std::string& _caller);
169 
175  virtual bool IsInInterRobotCollision(CDInfo& _cdInfo, Robot* const _robot,
176  const std::vector<Robot*>& _robots, const std::string& _caller);
177 
184  virtual bool setObstacleSubset(const std::vector<MultiBody*>& _obstacleSubset);
185 
189 
192 
193  bool m_ignoreSelfCollision{false};
194  bool m_interRobotCollision{false};
195  bool m_ignoreAdjacentLinks{false};
197  std::vector<MultiBody*> m_obstacleSubset;
198 
200 
201 };
202 
203 #endif
Definition: Cfg.h:38
Definition: CollisionDetectionMethod.h:19
Definition: CollisionDetectionValidityMethod.h:28
Definition: CollisionDetectionValidity.h:52
virtual bool IsValidImpl(Cfg &_cfg, CDInfo &_cdInfo, const std::string &_caller) override
Definition: CollisionDetectionValidity.cpp:208
CollisionDetectionValidityMethod::GroupCfg GroupCfg
Definition: CollisionDetectionValidity.h:59
virtual bool IsInInterRobotCollision(CDInfo &_cdInfo, Robot *const _robot, const std::vector< Robot * > &_robots, const std::string &_caller)
Definition: CollisionDetectionValidity.cpp:509
bool m_ignoreAdjacentLinks
Ignore adj links in self collisions.
Definition: CollisionDetectionValidity.h:195
virtual ~CollisionDetectionValidity()
std::unique_ptr< CollisionDetectionMethod > m_cdMethod
< Underlying collision detection object.
Definition: CollisionDetectionValidity.h:191
virtual bool IsInCollision(CDInfo &_cdInfo, const Cfg &_cfg, const std::string &_caller)
Definition: CollisionDetectionValidity.cpp:241
virtual bool IsInsideObstacle(const Point3d &_p) override
Definition: CollisionDetectionValidity.cpp:66
bool m_ignoreSelfCollision
Check self collisions.
Definition: CollisionDetectionValidity.h:193
virtual CollisionDetectionMethod * GetCDMethod() const noexcept override
Definition: CollisionDetectionValidity.cpp:59
CollisionDetectionValidity()
Definition: CollisionDetectionValidity.cpp:10
virtual bool IsMultiBodyCollision(CDInfo &_cdInfo, const MultiBody *const _a, const MultiBody *const _b, const std::string &_caller) override
Definition: CollisionDetectionValidity.cpp:169
virtual bool WorkspaceVisibility(const Point3d &_a, const Point3d &_b) override
Definition: CollisionDetectionValidity.cpp:123
bool m_ignoreSiblingCollisions
Ignore sibling links in self collisions.
Definition: CollisionDetectionValidity.h:196
virtual bool IsInBoundaryCollision(CDInfo &_cdInfo, const Cfg &_cfg)
Definition: CollisionDetectionValidity.cpp:443
virtual bool IsInSelfCollision(CDInfo &_cdInfo, const MultiBody *const _multibody, const std::string &_caller)
Definition: CollisionDetectionValidity.cpp:387
GroupCfg::Formation Formation
Definition: CollisionDetectionValidity.h:60
std::vector< MultiBody * > m_obstacleSubset
Subset of obstacles to check for.
Definition: CollisionDetectionValidity.h:197
virtual bool IsInObstacleCollision(CDInfo &_cdInfo, const MultiBody *const _multibody, const std::string &_caller)
Definition: CollisionDetectionValidity.cpp:466
virtual bool setObstacleSubset(const std::vector< MultiBody * > &_obstacleSubset)
Definition: CollisionDetectionValidity.cpp:556
bool m_interRobotCollision
Check inter-robot collisions.
Definition: CollisionDetectionValidity.h:194
Definition: GroupCfg.h:39
std::vector< size_t > Formation
Definition: GroupCfg.h:58
Definition: MultiBody.h:65
Definition: Robot.h:31
Definition: XMLNode.h:27
Definition: CDInfo.h:139