pinocchio 4.1.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Loading...
Searching...
No Matches
geometry.hpp
1//
2// Copyright (c) 2021-2025 INRIA
3//
4
5#pragma once
6
7#include <boost/python/overloads.hpp>
8#include <eigenpy/copyable.hpp>
9
10#include <eigenpy/eigen-to-python.hpp>
11#include <eigenpy/memory.hpp>
12#include <eigenpy/exception.hpp>
13
14#include "pinocchio/bindings/python/utils/std-vector.hpp"
15
16#include "pinocchio/algorithm/check.hpp"
17#include "pinocchio/multibody/pool.hpp"
18
19namespace pinocchio
20{
21 namespace python
22 {
23 namespace bp = boost::python;
24
25 template<typename GeometryPool>
27 : public bp::def_visitor<GeometryPoolPythonVisitor<GeometryPool>>
28 {
29
30 typedef typename GeometryPool::Base Base;
31 typedef typename GeometryPool::Model Model;
32 typedef typename GeometryPool::GeometryModel GeometryModel;
33 typedef typename GeometryPool::GeometryData GeometryData;
34 typedef typename GeometryPool::GeometryModelVector GeometryModelVector;
35 typedef typename GeometryPool::GeometryDataVector GeometryDataVector;
36
37 /* --- Exposing C++ API to python through the handler ----------------- */
38 template<class PyClass>
39 void visit(PyClass & cl) const
40 {
41 cl.def(
42 bp::init<const Model &, const GeometryModel &, bp::optional<size_t>>(
43 bp::args("self", "model", "geometry_model", "size"), "Default constructor."))
44 .def(bp::init<const GeometryPool &>(bp::args("self", "other"), "Copy constructor."))
45
46 .def(
47 "getGeometryModel",
48 (GeometryModel & (GeometryPool::*)(const size_t)) & GeometryPool::getGeometryModel,
49 bp::args("self", "index"), "Return a specific geometry model.",
50 bp::return_internal_reference<>())
51 .def(
52 "getGeometryModels",
53 (GeometryModelVector & (GeometryPool::*)()) & GeometryPool::getGeometryModels,
54 bp::arg("self"), "Returns the geometry model vector.",
55 bp::return_internal_reference<>())
56
57 .def(
58 "getGeometryData",
59 (GeometryData & (GeometryPool::*)(const size_t)) & GeometryPool::getGeometryData,
60 bp::args("self", "index"), "Return a specific geometry data.",
61 bp::return_internal_reference<>())
62 .def(
63 "getGeometryDatas",
64 (GeometryDataVector & (GeometryPool::*)()) & GeometryPool::getGeometryDatas,
65 bp::arg("self"), "Returns the geometry data vector.", bp::return_internal_reference<>())
66
67 .def(
68 "sync", &GeometryPool::sync, bp::args("geometry_model", "geometry_indexes"),
69 "Synchronize the internal geometry models with the input geometry for all given "
70 "geometry indexes.")
71
72 .def(
73 "update", (void (GeometryPool::*)(const GeometryData &))&GeometryPool::update,
74 bp::args("self", "geometry_data"),
75 "Update all the geometry datas with the input geometry data value.");
76 }
77
78 static void expose()
79 {
80
81 bp::class_<GeometryPool, bp::bases<Base>>(
82 "GeometryPool",
83 "Pool containing a model + a geometry_model and several datas for parallel computations",
84 bp::no_init)
86 .def(::eigenpy::CopyableVisitor<GeometryPool>());
87
88 StdVectorPythonVisitor<GeometryModelVector>::expose("StdVec_GeometryModel");
89 StdVectorPythonVisitor<GeometryDataVector>::expose("StdVec_GeometryData");
90 }
91 };
92 } // namespace python
93} // namespace pinocchio
Main pinocchio namespace.
Definition treeview.dox:11