pinocchio
4.1.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Toggle main menu visibility
Loading...
Searching...
No Matches
joints-variant.hpp
1
//
2
// Copyright (c) 2015-2021 CNRS INRIA
3
//
4
5
#pragma once
6
7
#include <boost/algorithm/string/replace.hpp>
8
9
#include <boost/python.hpp>
10
11
#include "pinocchio/multibody/joint.hpp"
12
#include "pinocchio/bindings/python/multibody/joint/joints-models.hpp"
13
#include "pinocchio/bindings/python/multibody/joint/joints-datas.hpp"
14
#include "pinocchio/bindings/python/multibody/joint/joints-liegroup.hpp"
15
#include "pinocchio/bindings/python/utils/printable.hpp"
16
17
namespace
pinocchio
18
{
19
namespace
python
20
{
21
namespace
bp = boost::python;
22
23
template
<
typename
T>
24
std::string sanitizedClassname()
25
{
26
std::string className = boost::replace_all_copy(T::classname(),
"<"
,
"_"
);
27
boost::replace_all(className,
">"
,
""
);
28
return
className;
29
}
30
31
template
<
typename
VariantType>
32
struct
JointVariantVisitor
: boost::static_visitor<PyObject *>
33
{
34
static
result_type convert(VariantType
const
& jv)
35
{
36
return
apply_visitor(
JointVariantVisitor<VariantType>
(), jv);
37
}
38
39
template
<
typename
T>
40
result_type operator()(T
const
& t)
const
41
{
42
return
boost::python::incref(boost::python::object(t).ptr());
43
}
44
};
45
46
struct
JointDataExposer
47
{
48
template
<
class
T>
49
void
operator()(T)
50
{
51
expose_joint_data<T>(
52
bp::class_<T>(
53
sanitizedClassname<T>().c_str(), sanitizedClassname<T>().c_str(), bp::init<>())
54
.def(
JointDataBasePythonVisitor<T>
())
55
.def(
PrintableVisitor<T>
()));
56
bp::implicitly_convertible<T, context::JointData>();
57
}
58
};
59
60
struct
JointModelExposer
61
{
62
template
<
class
T>
63
void
operator()(T)
64
{
65
expose_joint_model<T>(
66
bp::class_<T>(
67
sanitizedClassname<T>().c_str(), sanitizedClassname<T>().c_str(), bp::no_init)
68
.def(
JointModelBasePythonVisitor<T>
())
69
.def(
JointModelLieGroupPythonVisitor<T>
())
70
.def(
PrintableVisitor<T>
()));
71
bp::implicitly_convertible<T, context::JointModel>();
72
}
73
};
74
75
}
// namespace python
76
}
// namespace pinocchio
pinocchio
Main pinocchio namespace.
Definition
treeview.dox:11
pinocchio::python::JointDataBasePythonVisitor
Definition
joint-derived.hpp:146
pinocchio::python::JointDataExposer
Definition
joints-variant.hpp:47
pinocchio::python::JointModelBasePythonVisitor
Definition
joint-derived.hpp:22
pinocchio::python::JointModelExposer
Definition
joints-variant.hpp:61
pinocchio::python::JointModelLieGroupPythonVisitor
Definition
joints-liegroup.hpp:22
pinocchio::python::JointVariantVisitor
Definition
joints-variant.hpp:33
pinocchio::python::PrintableVisitor
Set the Python method str and repr to use the overloading operator<<.
Definition
printable.hpp:21
include
pinocchio
bindings
python
multibody
joint
joints-variant.hpp
Generated by
1.17.0