expose-collision.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2024 INRIA
3 //
4 
5 #include "pinocchio/fwd.hpp"
9 
12 
13 #include <Eigen/Core>
14 
15 namespace pinocchio
16 {
17  namespace python
18  {
19 
20  template<
21  typename Scalar,
22  int Options,
23  template<typename, int>
24  class JointCollectionTpl,
25  typename ConfigVectorType>
26  static std::size_t computeDistances_proxy(
29  const GeometryModel & geom_model,
31  const Eigen::MatrixBase<ConfigVectorType> & q)
32  {
34  }
35 
37  {
38  using namespace Eigen;
39 
40  bp::register_ptr_to_python<std::shared_ptr<hpp::fcl::CollisionGeometry const>>();
41 
42  bp::class_<ComputeCollision>(
43  "ComputeCollision", "Collision function between two geometry objects.\n\n", bp::no_init)
46 
47  bp::class_<ComputeDistance>(
48  "ComputeDistance", "Distance function between two geometry objects.\n\n", bp::no_init)
51 
52  bp::def(
53  "computeCollision",
54  static_cast<bool (*)(
55  const GeometryModel &, GeometryData &, const PairIndex, fcl::CollisionRequest &)>(
57  bp::args("geometry_model", "geometry_data", "pair_index", "collision_request"),
58  "Check if the collision objects of a collision pair for a given Geometry Model and "
59  "Data are in collision.\n"
60  "The collision pair is given by the two index of the collision objects.");
61 
62  bp::def(
63  "computeCollision",
64  static_cast<bool (*)(const GeometryModel &, GeometryData &, const PairIndex)>(
66  bp::args("geometry_model", "geometry_data", "pair_index"),
67  "Check if the collision objects of a collision pair for a given Geometry Model and "
68  "Data are in collision.\n"
69  "The collision pair is given by the two index of the collision objects.");
70 
71  bp::def(
72  "computeCollisions",
73  (bool (*)(const GeometryModel &, GeometryData &, const bool)) & computeCollisions,
74  (bp::arg("geometry_model"), bp::arg("geometry_data"),
75  bp::arg("stop_at_first_collision") = false),
76  "Determine if all collision pairs are effectively in collision or not.");
77 
78  bp::def(
79  "computeCollisions", &computeCollisions<double, 0, JointCollectionDefaultTpl, VectorXd>,
80  (bp::arg("model"), bp::arg("data"), bp::arg("geometry_model"), bp::arg("geometry_data"),
81  bp::arg("q"), bp::arg("stop_at_first_collision") = false),
82  "Update the geometry for a given configuration and "
83  "determine if all collision pairs are effectively in collision or not.");
84 
85  bp::def(
86  "computeDistance", &computeDistance,
87  bp::args("geometry_model", "geometry_data", "pair_index"),
88  "Compute the distance between the two geometry objects of a given collision pair for "
89  "a GeometryModel and associated GeometryData.",
90  bp::with_custodian_and_ward_postcall<
91  0, 2, bp::return_value_policy<bp::reference_existing_object>>());
92 
93  bp::def(
94  "computeDistances",
95  (std::size_t(*)(const GeometryModel &, GeometryData &)) & computeDistances,
96  bp::args("geometry_model", "geometry_data"),
97  "Compute the distance between each collision pair for a given GeometryModel and "
98  "associated GeometryData.");
99 
100  bp::def(
101  "computeDistances", &computeDistances_proxy<double, 0, JointCollectionDefaultTpl, VectorXd>,
102  bp::args("model", "data", "geometry_model", "geometry_data", "q"),
103  "Update the geometry for a given configuration and "
104  "compute the distance between each collision pair");
105 
106  bp::def(
107  "computeBodyRadius", &computeBodyRadius<double, 0, JointCollectionDefaultTpl>,
108  bp::args("model", "geometry_model", "geometry_data"),
109  "Compute the radius of the geometry volumes attached to every joints.");
110 
112  }
113 
114  } // namespace python
115 } // namespace pinocchio
Eigen
pinocchio::DataTpl
Definition: context/generic.hpp:25
pinocchio::computeCollisions
bool computeCollisions(BroadPhaseManagerBase< BroadPhaseManagerDerived > &broadphase_manager, CollisionCallBackBase *callback)
Calls computeCollision for every active pairs of GeometryData. This function assumes that updateGeome...
Definition: broadphase.hpp:34
fwd.hpp
setup.data
data
Definition: cmake/cython/setup.in.py:48
pinocchio::computeDistance
fcl::DistanceResult & computeDistance(const GeometryModel &geom_model, GeometryData &geom_data, const PairIndex pair_id)
Compute the minimal distance between collision objects of a SINGLE collison pair.
pinocchio::python::Scalar
context::Scalar Scalar
Definition: admm-solver.cpp:29
pinocchio::GeometryData
Definition: multibody/geometry.hpp:233
collision.hpp
pinocchio::python::Options
@ Options
Definition: expose-contact-inverse-dynamics.cpp:22
distance.hpp
python
pinocchio::PairIndex
Index PairIndex
Definition: multibody/fwd.hpp:29
pinocchio::computeCollision
bool computeCollision(const GeometryModel &geom_model, GeometryData &geom_data, const PairIndex pair_id, fcl::CollisionRequest &collision_request)
Compute the collision status between a SINGLE collision pair. The result is store in the collisionRes...
pinocchio::python::computeDistances_proxy
static std::size_t computeDistances_proxy(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const GeometryModel &geom_model, GeometryData &geom_data, const Eigen::MatrixBase< ConfigVectorType > &q)
Definition: expose-collision.cpp:26
pinocchio::computeDistances
std::size_t computeDistances(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const GeometryModel &geom_model, GeometryData &geom_data)
geometry-functors.hpp
pinocchio::python::StdAlignedVectorPythonVisitor::expose
static void expose(const std::string &class_name, const std::string &doc_string="")
Definition: std-aligned-vector.hpp:43
append-urdf-model-with-another-model.geom_model
geom_model
Definition: append-urdf-model-with-another-model.py:26
pinocchio::q
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
Definition: joint-configuration.hpp:1117
collisions.geom_data
geom_data
Definition: collisions.py:45
std-aligned-vector.hpp
pinocchio::GeometryModel
Definition: multibody/geometry.hpp:50
pinocchio::python::GeometryFunctorPythonVisitor
Definition: geometry-functors.hpp:19
pinocchio::ModelTpl
Definition: context/generic.hpp:20
collision.hpp
pinocchio::python::exposeCollision
void exposeCollision()
Definition: expose-collision.cpp:36
pinocchio::model
JointCollectionTpl & model
Definition: joint-configuration.hpp:1116
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:27
pinocchio::python::exposeBroadphase
void exposeBroadphase()
Definition: expose-broadphase.cpp:80


pinocchio
Author(s):
autogenerated on Wed Jun 19 2024 02:41:13