pinocchio  3.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
 
Loading...
Searching...
No Matches
broadphase.hpp
1//
2// Copyright (c) 2022 INRIA
3//
4
5#ifndef __pinocchio_collision_broadphase_hpp__
6#define __pinocchio_collision_broadphase_hpp__
7
8#include <hpp/fcl/broadphase/broadphase_collision_manager.h>
9
10#include "pinocchio/multibody/fcl.hpp"
11
12#include "pinocchio/algorithm/geometry.hpp"
13
14#include "pinocchio/collision/broadphase-manager.hpp"
15#include "pinocchio/collision/broadphase-callbacks.hpp"
16
17namespace pinocchio
18{
19
33 template<typename BroadPhaseManagerDerived>
36 CollisionCallBackBase * callback)
37 {
38 PINOCCHIO_CHECK_INPUT_ARGUMENT(broadphase_manager.check(callback));
39 broadphase_manager.collide(callback);
40 callback->done();
41 return callback->collision;
42 }
43
56 template<typename BroadPhaseManagerDerived>
59 const bool stopAtFirstCollision = false)
60 {
62 broadphase_manager.getGeometryModel(), broadphase_manager.getGeometryData(),
63 stopAtFirstCollision);
64
65 return computeCollisions(broadphase_manager, &callback);
66 }
67
88 template<
89 typename Scalar,
90 int Options,
91 template<typename, int> class JointCollectionTpl,
92 typename BroadPhaseManagerDerived,
93 typename ConfigVectorType>
94 inline bool computeCollisions(
98 CollisionCallBackBase * callback,
99 const Eigen::MatrixBase<ConfigVectorType> & q)
100 {
102 model, data, broadphase_manager.getGeometryModel(), broadphase_manager.getGeometryData(), q);
103
104 broadphase_manager.update(false);
105 return computeCollisions(broadphase_manager, &callback);
106 }
107
127 template<
128 typename Scalar,
129 int Options,
130 template<typename, int> class JointCollectionTpl,
131 typename BroadPhaseManagerDerived,
132 typename ConfigVectorType>
133 inline bool computeCollisions(
137 const Eigen::MatrixBase<ConfigVectorType> & q,
138 const bool stopAtFirstCollision = false)
139 {
141 model, data, broadphase_manager.getGeometryModel(), broadphase_manager.getGeometryData(), q);
142
143 broadphase_manager.update(false);
144
146 broadphase_manager.getGeometryModel(), broadphase_manager.getGeometryData(),
147 stopAtFirstCollision);
148 return computeCollisions(broadphase_manager, &callback);
149 }
150
151} // namespace pinocchio
152
153/* --- Details -------------------------------------------------------------------- */
154#include "pinocchio/collision/broadphase.hxx"
155
156#endif // ifndef __pinocchio_collision_broadphase_hpp__
Main pinocchio namespace.
Definition treeview.dox:11
bool computeCollisions(BroadPhaseManagerBase< BroadPhaseManagerDerived > &broadphase_manager, CollisionCallBackBase *callback)
Calls computeCollision for every active pairs of GeometryData. This function assumes that updateGeome...
void updateGeometryPlacements(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const GeometryModel &geom_model, GeometryData &geom_data, const Eigen::MatrixBase< ConfigVectorType > &q)
Apply a forward kinematics and update the placement of the geometry objects.
Interface for Pinocchio collision callback functors.