29 #ifndef HPP_CORE_OBSTACLE_USER_HH
30 #define HPP_CORE_OBSTACLE_USER_HH
32 #include <coal/collision_data.h>
86 const std::string& body_b,
106 template <
typename Derived>
117 for (std::size_t i = 0; i < validations_.size(); ++i) {
118 shared_ptr<ObstacleUserInterface> oui =
120 if (oui) oui->addObstacle(
object);
131 for (std::size_t i = 0; i < validations_.size(); ++i) {
132 shared_ptr<ObstacleUserInterface> oui =
134 if (oui) oui->removeObstacleFromJoint(joint,
object);
144 for (std::size_t i = 0; i < validations_.size(); ++i) {
145 shared_ptr<ObstacleUserInterface> oui =
147 if (oui) oui->filterCollisionPairs(relMotion);
153 for (std::size_t i = 0; i < validations_.size(); ++i) {
154 shared_ptr<ObstacleUserInterface> oui =
156 if (oui) oui->setSecurityMargins(securityMatrix);
162 const std::string& body_b,
164 for (std::size_t i = 0; i < validations_.size(); ++i) {
165 shared_ptr<ObstacleUserInterface> oui =
167 if (oui) oui->setSecurityMarginBetweenBodies(body_a, body_b, margin);
172 void clear() { validations_.clear(); }
180 : validations_(validations) {};
191 coal::CollisionResult& res, std::size_t& i,
192 pinocchio::DeviceData& data);
221 const bool includeChildren);
246 const std::string& body_b,
252 : robot_(robot), defaultRequest_(coal::NO_REQUEST, 1) {
253 defaultRequest_.enable_cached_gjk_guess =
true;
258 : robot_(other.robot_),
259 defaultRequest_(other.defaultRequest_),
260 cPairs_(other.cPairs_),
261 pPairs_(other.pPairs_),
262 dPairs_(other.dPairs_),
263 cRequests_(other.cRequests_),
264 pRequests_(other.pRequests_),
265 dRequests_(other.dRequests_) {}
Definition: obstacle-user.hh:47
virtual void removeObstacleFromJoint(const JointPtr_t &joint, const CollisionObjectConstPtr_t &object)=0
virtual void addObstacle(const CollisionObjectConstPtr_t &object)=0
virtual void filterCollisionPairs(const RelativeMotion::matrix_type &relMotion)=0
virtual ~ObstacleUserInterface()=default
virtual void setSecurityMarginBetweenBodies(const std::string &body_a, const std::string &body_b, const value_type &margin)=0
virtual void setSecurityMargins(const matrix_t &securityMatrix)=0
Definition: obstacle-user.hh:107
ObstacleUserVector(std::initializer_list< value_t > validations)
Definition: obstacle-user.hh:179
void filterCollisionPairs(const RelativeMotion::matrix_type &relMotion)
Definition: obstacle-user.hh:143
void clear()
Definition: obstacle-user.hh:172
virtual ~ObstacleUserVector()=default
values_t validations_
Definition: obstacle-user.hh:180
Derived value_t
Definition: obstacle-user.hh:175
void setSecurityMarginBetweenBodies(const std::string &body_a, const std::string &body_b, const value_type &margin)
Definition: obstacle-user.hh:161
void addObstacle(const CollisionObjectConstPtr_t &object)
Definition: obstacle-user.hh:116
ObstacleUserVector()=default
void removeObstacleFromJoint(const JointPtr_t &joint, const CollisionObjectConstPtr_t &object)
Definition: obstacle-user.hh:129
std::vector< value_t > values_t
Definition: obstacle-user.hh:176
void setSecurityMargins(const matrix_t &securityMatrix)
Definition: obstacle-user.hh:152
Stores a set of obstacles (movable or static).
Definition: obstacle-user.hh:186
virtual void setSecurityMarginBetweenBodies(const std::string &body_a, const std::string &body_b, const value_type &margin)
virtual void setSecurityMargins(const matrix_t &securityMatrix)
CollisionRequests_t cRequests_
Disabled collision pairs.
Definition: obstacle-user.hh:275
virtual ~ObstacleUser()=default
CollisionPairs_t pPairs_
Active collision pairs.
Definition: obstacle-user.hh:273
ObstacleUser(DevicePtr_t robot)
Constructor of body pair collision.
Definition: obstacle-user.hh:251
CollisionRequests_t dRequests_
Parameterized collision requests.
Definition: obstacle-user.hh:277
CollisionPairs_t dPairs_
Parameterized collision pairs.
Definition: obstacle-user.hh:274
coal::CollisionRequest defaultRequest_
Definition: obstacle-user.hh:270
static bool collide(const CollisionPairs_t &pairs, CollisionRequests_t &reqs, coal::CollisionResult &res, std::size_t &i, pinocchio::DeviceData &data)
DevicePtr_t robot_
Definition: obstacle-user.hh:269
coal::CollisionRequest & defaultRequest()
Definition: obstacle-user.hh:206
virtual void removeObstacleFromJoint(const JointPtr_t &joint, const CollisionObjectConstPtr_t &object)
const CollisionPairs_t & pairs() const
Definition: obstacle-user.hh:195
CollisionRequests_t & requests()
Definition: obstacle-user.hh:204
const CollisionRequests_t & requests() const
Definition: obstacle-user.hh:201
ObstacleUser(const ObstacleUser &other)
Copy constructor.
Definition: obstacle-user.hh:257
virtual void addObstacleToJoint(const CollisionObjectConstPtr_t &object, const JointPtr_t &joint, const bool includeChildren)
CollisionRequests_t pRequests_
Active collision requests.
Definition: obstacle-user.hh:276
void addRobotCollisionPairs()
virtual void filterCollisionPairs(const RelativeMotion::matrix_type &relMotion)
virtual void addObstacle(const CollisionObjectConstPtr_t &object)
CollisionPairs_t & pairs()
Definition: obstacle-user.hh:198
void setRequests(const coal::CollisionRequest &r)
CollisionPairs_t cPairs_
Definition: obstacle-user.hh:272
#define HPP_CORE_DLLAPI
Definition: config.hh:88
std::vector< CollisionPair_t > CollisionPairs_t
Definition: fwd.hh:239
pinocchio::value_type value_type
Definition: fwd.hh:174
std::vector< coal::CollisionRequest > CollisionRequests_t
Definition: collision-pair.hh:43
pinocchio::JointPtr_t JointPtr_t
Definition: fwd.hh:151
pinocchio::DevicePtr_t DevicePtr_t
Definition: fwd.hh:134
pinocchio::CollisionObjectConstPtr_t CollisionObjectConstPtr_t
Definition: fwd.hh:100
pinocchio::matrix_t matrix_t
Definition: fwd.hh:162
Definition: bi-rrt-planner.hh:35
Eigen::Matrix< RelativeMotionType, Eigen::Dynamic, Eigen::Dynamic > matrix_type
Definition: relative-motion.hh:62