28 :
public boost::python::def_visitor<CollisionPairPythonVisitor>
32 if (!register_symbolic_link_to_registered_type<CollisionPair>())
34 bp::class_<CollisionPair>(
35 "CollisionPair",
"Pair of ordered index defining a pair of collisions", bp::no_init)
36 .def(bp::init<>(bp::args(
"self"),
"Empty constructor."))
38 bp::init<const GeomIndex &, const GeomIndex &>(
39 bp::args(
"self",
"index1",
"index2"),
"Initializer of collision pair."))
41 .def(::eigenpy::CopyableVisitor<CollisionPair>())
42 .def(bp::self == bp::self)
43 .def(bp::self != bp::self)
44 .def_readwrite(
"first", &CollisionPair::first)
45 .def_readwrite(
"second", &CollisionPair::second);
47 StdVectorPythonVisitor<std::vector<CollisionPair>>::expose(
"StdVec_CollisionPair");
48 serialize<std::vector<CollisionPair>>();
57 template<
class PyClass>
58 void visit(PyClass & cl)
const 61 bp::init<const GeometryModel &>(
62 bp::args(
"self",
"geometry_model"),
63 "Default constructor from a given GeometryModel."))
66 "oMg", &GeometryData::oMg,
67 "Vector of collision objects placement relative to the world frame.\n" 68 "note: These quantities have to be updated by calling updateGeometryPlacements.")
70 "activeCollisionPairs", &GeometryData::activeCollisionPairs,
71 "Vector of active CollisionPairs")
73#ifdef PINOCCHIO_WITH_COLLISION 75 "distanceRequests", &GeometryData::distanceRequests,
76 "Defines which information should be computed by coal for distance computations")
78 "distanceResults", &GeometryData::distanceResults,
"Vector of distance results.")
80 "collisionRequests", &GeometryData::collisionRequests,
81 "Defines which information should be computed by coal for collision computations.\n\n" 82 "Note: it is possible to define a security_margin and a break_distance for a collision " 84 "Most likely, for robotics application, these thresholds will be different for each " 86 "(e.g. the two hands can have a large security margin while the two hips cannot.)")
88 "collisionResults", &GeometryData::collisionResults,
"Vector of collision results.")
90 "contactPatchRequests", &GeometryData::contactPatchRequests,
91 "Defines which information should be computed by coal for contact patch requests.\n")
93 "contactPatchResults", &GeometryData::contactPatchResults,
94 "Vector of contact patch results.")
96 "collision_functors", &GeometryData::collision_functors,
97 "Vector of collision functors.")
99 "contact_patch_functors", &GeometryData::contact_patch_functors,
100 "Vector of contact patch functors.")
102 "distance_functors", &GeometryData::distance_functors,
"Vector of distance functors.")
104 "radius", &GeometryData::radius,
105 "Vector of radius of bodies, i.e. the distance between the further point of the " 106 "geometry object from the joint center.\n" 107 "note: This radius information might be usuful in continuous collision checking")
111 "fillInnerOuterObjectMaps", &GeometryData::fillInnerOuterObjectMaps,
112 bp::args(
"self",
"geometry_model"),
"Fill inner and outer objects maps")
114 "activateCollisionPair",
115 static_cast<void (GeometryData::*)(
const PairIndex)
>(
116 &GeometryData::activateCollisionPair),
117 bp::args(
"self",
"pair_id"),
118 "Activate the collsion pair pair_id in geomModel.collisionPairs if it exists.\n" 119 "note: Only active pairs are check for collision and distance computations.")
121 "setGeometryCollisionStatus", &GeometryData::setGeometryCollisionStatus,
122 bp::args(
"self",
"geom_model",
"geom_id",
"enable_collision"),
123 "Enable or disable collision for the given geometry given by its geometry id with all " 124 "the other geometries registered in the list of collision pairs.")
126 "setActiveCollisionPairs", &GeometryData::setActiveCollisionPairs,
127 (bp::arg(
"self"), bp::arg(
"geometry_model"), bp::arg(
"collision_map"),
128 bp::arg(
"upper") =
true),
129 "Set the collision pair association from a given input array.\n" 130 "Each entry of the input matrix defines the activation of a given collision pair.")
132 "deactivateCollisionPair", &GeometryData::deactivateCollisionPair,
133 bp::args(
"self",
"pair_id"),
134 "Deactivate the collsion pair pair_id in geomModel.collisionPairs if it exists.")
136 "deactivateAllCollisionPairs", &GeometryData::deactivateAllCollisionPairs,
137 bp::args(
"self"),
"Deactivate all collision pairs.")
138#ifdef PINOCCHIO_WITH_COLLISION 140 "setSecurityMargins", &GeometryData::setSecurityMargins,
141 (bp::arg(
"self"), bp::arg(
"geometry_model"), bp::arg(
"security_margin_map"),
142 bp::arg(
"upper") =
true, bp::arg(
"sync_distance_upper_bound") =
true),
143 "Set the security margin of all the collision request in a row, according to the " 144 "values stored in the associative map.")
147 .def(bp::self == bp::self)
148 .def(bp::self != bp::self)
152 bp::register_ptr_to_python<std::shared_ptr<GeometryData>>();
158 if (!register_symbolic_link_to_registered_type<GeometryData>())
160 bp::class_<GeometryData>(
161 "GeometryData",
"Geometry data linked to a Geometry Model and a Data struct.",
165 .def(::eigenpy::CopyableVisitor<GeometryData>())