collision/pool/broadphase-manager.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2022 INRIA
3 //
4 
5 #ifndef __pinocchio_collision_pool_broadphase_manager_hpp__
6 #define __pinocchio_collision_pool_broadphase_manager_hpp__
7 
8 #include <omp.h>
9 
12 
13 namespace pinocchio
14 {
15 
16  template<
17  typename _BroadPhaseManagerDerived,
18  typename _Scalar,
19  int _Options,
20  template<typename, int>
21  class JointCollectionTpl>
22  class BroadPhaseManagerPoolBase : public GeometryPoolTpl<_Scalar, _Options, JointCollectionTpl>
23  {
24  public:
25  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
26 
27  typedef _BroadPhaseManagerDerived BroadPhaseManager;
29  typedef _Scalar Scalar;
30  enum
31  {
32  Options = _Options
33  };
34 
35  typedef typename Base::Model Model;
36  typedef typename Base::Data Data;
37  typedef typename Base::DataVector DataVector;
39  typedef typename Base::GeometryData GeometryData;
40 
41  // typedef std::vector<BroadPhaseManager,Eigen::aligned_allocator<BroadPhaseManager> >
42  // BroadPhaseManagerVector;
43 
44  typedef std::vector<BroadPhaseManager> BroadPhaseManagerVector;
45 
53  const Model & model,
54  const GeometryModel & geometry_model,
55  const size_t pool_size = (size_t)omp_get_max_threads())
56  : Base(model, geometry_model, pool_size)
57  {
58  init();
59  }
60 
66  : Base(other)
67  , m_managers(other.m_managers)
68  {
69  }
70 
72  const BroadPhaseManager & getBroadPhaseManager(const size_t index) const
73  {
75  index < m_managers.size(), "Index greater than the size of the manager vector.");
76  return m_managers[index];
77  }
78 
81  {
83  index < m_managers.size(), "Index greater than the size of the manager vector.");
84  return m_managers[index];
85  }
86 
89  {
90  return m_managers;
91  }
92 
95  {
96  return m_managers;
97  }
98 
99  using Base::getData;
100  using Base::getDatas;
101  using Base::getGeometryData;
105  using Base::getModel;
106  using Base::getModels;
107  using Base::size;
108  using Base::update;
109 
115  virtual void update(const GeometryData & geometry_data)
116  {
117  Base::update(geometry_data);
118 
119  for (size_t i = 0; i < size(); ++i)
120  {
121  m_managers[i].update(&getGeometryData(i));
122  }
123  }
124 
126  bool check() const
127  {
128  for (size_t i = 0; i < size(); ++i)
129  {
130  const BroadPhaseManager & manager = m_managers[i];
131  bool res = true;
132  res &= (&manager.getModel() == &getModel(i));
133  res &= (&manager.getGeometryData() == &getGeometryData(i));
134 
135  res &= (&manager.getGeometryModel() == &getGeometryModel(i));
136  res &= manager.check();
137 
138  if (!res)
139  return false;
140  }
141 
142  return true;
143  }
144 
147 
148  protected:
149  void init()
150  {
151  m_managers.reserve(size());
152  for (size_t i = 0; i < size(); ++i)
153  {
154  m_managers.push_back(
156  }
157  }
158 
161 
163  virtual void doResize(const size_t new_size)
164  {
165  m_managers.resize(new_size);
166  if (size() < new_size)
167  {
168  typename BroadPhaseManagerVector::iterator it = m_managers.begin();
169  std::advance(it, (long)(new_size - size()));
170  std::fill(it, m_managers.end(), m_managers[0]);
171  }
172  }
173  };
174 } // namespace pinocchio
175 
176 #endif // ifndef __pinocchio_collision_pool_broadphase_manager_hpp__
pinocchio::BroadPhaseManagerPoolBase::doResize
virtual void doResize(const size_t new_size)
&#160;
Definition: collision/pool/broadphase-manager.hpp:163
pinocchio::GeometryPoolTpl::getGeometryModels
const GeometryModelVector & getGeometryModels() const
Returns the vector of Geometry Model.
Definition: multibody/pool/geometry.hpp:129
pinocchio::GeometryPoolTpl::getGeometryData
const GeometryData & getGeometryData(const size_t index) const
Returns the geometry_data at given index.
Definition: multibody/pool/geometry.hpp:99
PINOCCHIO_CHECK_INPUT_ARGUMENT
#define PINOCCHIO_CHECK_INPUT_ARGUMENT(...)
Macro to check an assert-like condition and throw a std::invalid_argument exception (with a message) ...
Definition: include/pinocchio/macros.hpp:193
pinocchio::BroadPhaseManagerPoolBase::Scalar
_Scalar Scalar
Definition: collision/pool/broadphase-manager.hpp:29
pinocchio::BroadPhaseManagerPoolBase
Definition: collision/pool/broadphase-manager.hpp:22
pinocchio::BroadPhaseManagerPoolBase::Data
Base::Data Data
Definition: collision/pool/broadphase-manager.hpp:36
index
index
pinocchio::BroadPhaseManagerPoolBase::getBroadPhaseManagers
BroadPhaseManagerVector & getBroadPhaseManagers()
Access to the vector of broad phase managers.
Definition: collision/pool/broadphase-manager.hpp:94
inverse-kinematics.i
int i
Definition: inverse-kinematics.py:20
geometry.hpp
pinocchio::BroadPhaseManagerPoolBase::m_managers
BroadPhaseManagerVector m_managers
Broad phase managers associated to the pool.
Definition: collision/pool/broadphase-manager.hpp:160
pinocchio::BroadPhaseManagerPoolBase::~BroadPhaseManagerPoolBase
virtual ~BroadPhaseManagerPoolBase()
&#160;
Definition: collision/pool/broadphase-manager.hpp:146
pinocchio::GeometryPoolTpl::DataVector
Base::DataVector DataVector
Definition: multibody/pool/geometry.hpp:29
pinocchio::res
ReturnType res
Definition: spatial/classic-acceleration.hpp:57
pinocchio::GeometryData
Definition: multibody/geometry.hpp:233
pinocchio::GeometryPoolTpl::update
virtual void update(const GeometryData &geometry_data_to_copy)
Update the geometry datas with the new value.
Definition: multibody/pool/geometry.hpp:164
pinocchio::BroadPhaseManagerPoolBase::getBroadPhaseManagers
const BroadPhaseManagerVector & getBroadPhaseManagers() const
Access to the vector of broad phase managers.
Definition: collision/pool/broadphase-manager.hpp:88
pinocchio::BroadPhaseManagerPoolBase::Options
@ Options
Definition: collision/pool/broadphase-manager.hpp:32
pinocchio::GeometryPoolTpl::Model
Base::Model Model
Definition: multibody/pool/geometry.hpp:26
pinocchio::BroadPhaseManagerPoolBase::Model
Base::Model Model
Definition: collision/pool/broadphase-manager.hpp:35
pinocchio::BroadPhaseManagerPoolBase::BroadPhaseManager
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _BroadPhaseManagerDerived BroadPhaseManager
Definition: collision/pool/broadphase-manager.hpp:27
pinocchio::BroadPhaseManagerPoolBase::BroadPhaseManagerPoolBase
BroadPhaseManagerPoolBase(const Model &model, const GeometryModel &geometry_model, const size_t pool_size=(size_t) omp_get_max_threads())
Default constructor from a model and a pool size.
Definition: collision/pool/broadphase-manager.hpp:52
size
FCL_REAL size() const
pinocchio::GeometryPoolTpl::getGeometryModel
const GeometryModel & getGeometryModel(const size_t index) const
Returns the geometry_model at given index.
Definition: multibody/pool/geometry.hpp:81
pinocchio::BroadPhaseManagerPoolBase::BroadPhaseManagerPoolBase
BroadPhaseManagerPoolBase(const BroadPhaseManagerPoolBase &other)
Copy constructor from an other BroadPhaseManagerPoolTpl.
Definition: collision/pool/broadphase-manager.hpp:65
pinocchio::BroadPhaseManagerPoolBase::BroadPhaseManagerVector
std::vector< BroadPhaseManager > BroadPhaseManagerVector
Definition: collision/pool/broadphase-manager.hpp:44
pinocchio::GeometryPoolTpl::getGeometryDatas
const GeometryDataVector & getGeometryDatas() const
Returns the vector of Geometry Data.
Definition: multibody/pool/geometry.hpp:117
pinocchio::BroadPhaseManagerPoolBase::GeometryModel
Base::GeometryModel GeometryModel
Definition: collision/pool/broadphase-manager.hpp:38
pinocchio::BroadPhaseManagerPoolBase::check
bool check() const
Check the validity of the current broadphase.
Definition: collision/pool/broadphase-manager.hpp:126
pinocchio::GeometryPoolTpl::Data
Base::Data Data
Definition: multibody/pool/geometry.hpp:27
pinocchio::BroadPhaseManagerPoolBase::Base
GeometryPoolTpl< _Scalar, _Options, JointCollectionTpl > Base
Definition: collision/pool/broadphase-manager.hpp:28
pinocchio::GeometryModel
Definition: multibody/geometry.hpp:50
pinocchio::BroadPhaseManagerPoolBase::init
void init()
Definition: collision/pool/broadphase-manager.hpp:149
pinocchio::BroadPhaseManagerPoolBase::GeometryData
Base::GeometryData GeometryData
Definition: collision/pool/broadphase-manager.hpp:39
pinocchio::BroadPhaseManagerPoolBase::update
virtual void update(const GeometryData &geometry_data)
Update the geometry datas with the new value.
Definition: collision/pool/broadphase-manager.hpp:115
pinocchio::BroadPhaseManagerPoolBase::DataVector
Base::DataVector DataVector
Definition: collision/pool/broadphase-manager.hpp:37
broadphase-manager.hpp
pinocchio::BroadPhaseManagerPoolBase::getBroadPhaseManager
BroadPhaseManager & getBroadPhaseManager(const size_t index)
Returns the geometry_data at index.
Definition: collision/pool/broadphase-manager.hpp:80
pinocchio::GeometryPoolTpl
Definition: multibody/pool/fwd.hpp:24
pinocchio::model
JointCollectionTpl & model
Definition: joint-configuration.hpp:1116
pinocchio::BroadPhaseManagerPoolBase::getBroadPhaseManager
const BroadPhaseManager & getBroadPhaseManager(const size_t index) const
Returns the geometry_data at index.
Definition: collision/pool/broadphase-manager.hpp:72
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:27


pinocchio
Author(s):
autogenerated on Tue Jun 25 2024 02:42:34