Toggle main menu visibility
Loading...
Searching...
No Matches
contact-model.hpp
Go to the documentation of this file.
1
// Copyright (c) 2015-2018, CNRS
2
// Authors: Justin Carpentier <jcarpent@laas.fr>
3
4
#ifndef __multicontact_api_python_scenario_contact_model_planar_hpp__
5
#define __multicontact_api_python_scenario_contact_model_planar_hpp__
6
7
#include <eigenpy/eigenpy.hpp>
8
#include <string>
9
10
#include "
multicontact-api/bindings/python/serialization/archive.hpp
"
11
#include "
multicontact-api/bindings/python/utils/printable.hpp
"
12
#include "
multicontact-api/scenario/contact-model.hpp
"
13
#include "
multicontact-api/scenario/fwd.hpp
"
14
15
namespace
multicontact_api
{
16
namespace
python
{
17
18
namespace
bp = boost::python;
19
20
template
<
typename
ContactModel>
21
struct
ContactModelPythonVisitor
22
:
public
boost::python::def_visitor<
23
ContactModelPythonVisitor<ContactModel> > {
24
typedef
typename
ContactModel::Scalar
Scalar
;
25
typedef
scenario::ContactType
ContactType
;
26
typedef
typename
ContactModel::Matrix3X
Matrix3X
;
27
typedef
typename
ContactModel::Matrix6X
Matrix6X
;
28
29
template
<
class
PyClass>
30
void
visit
(PyClass& cl)
const
{
31
cl.def(bp::init<>())
32
.def(bp::init<Scalar>(bp::args(
"mu"
)))
33
.def(bp::init<Scalar, ContactType>(bp::args(
"mu"
,
"contact_type"
)))
34
.def(bp::init<ContactModel>(bp::args(
"other"
),
"Copy contructor."
))
35
.def_readwrite(
"mu"
, &ContactModel::m_mu,
"Friction coefficient."
)
36
.def_readwrite(
"contact_type"
, &ContactModel::m_contact_type,
37
"Enum that define the type of contact."
)
38
.add_property(
39
"num_contact_points"
, &getNumContact, &setNumContact,
40
"The number of contact points used to model this contact. \n"
41
"Changing this value will clear the contact_points_positions "
42
"matrix"
)
43
.add_property(
"contact_points_positions"
, &getContactPositions,
44
&setContactPositions,
45
"3xnum_contact_points matrix defining the contact points "
46
"positions in the frame of the contact "
47
"placement. \n"
48
"num_contact_points is automatically updated to the "
49
"number of columns of this matrix."
)
50
.def(
"generatorMatrix"
, &ContactModel::generatorMatrix,
51
"generatorMatrix Return a 6x(num_contact_points*3) matrix"
52
"containing the generator used to compute contact forces."
)
53
.def(bp::self == bp::self)
54
.def(bp::self != bp::self)
55
.def(
"copy"
, ©,
"Returns a copy of *this."
);
56
}
57
58
static
void
expose
(
const
std::string& class_name) {
59
std::string doc =
"Contact Model"
;
60
bp::class_<ContactModel>(class_name.c_str(), doc.c_str(), bp::no_init)
61
.def(
ContactModelPythonVisitor<ContactModel>
())
62
.def(
SerializableVisitor<ContactModel>
())
63
.def(
PrintableVisitor<ContactModel>
());
64
65
ENABLE_SPECIFIC_MATRIX_TYPE(
Matrix3X
);
66
ENABLE_SPECIFIC_MATRIX_TYPE(
Matrix6X
);
67
}
68
69
private
:
70
static
ContactModel copy(
const
ContactModel& self) {
71
return
ContactModel(self);
72
}
73
// define setter and getter
74
static
size_t
getNumContact(ContactModel& self) {
75
return
self.num_contact_points();
76
}
77
static
void
setNumContact(ContactModel& self,
const
size_t
num) {
78
self.num_contact_points(num);
79
}
80
static
Matrix3X
getContactPositions(ContactModel& self) {
81
return
self.contact_points_positions();
82
}
83
static
void
setContactPositions(ContactModel& self,
const
Matrix3X
& pos) {
84
self.contact_points_positions(pos);
85
}
86
};
87
}
// namespace python
88
}
// namespace multicontact_api
89
90
#endif
// ifndef __multicontact_api_python_scenario_contact_model_planar_hpp__
archive.hpp
multicontact_api::python
Definition
ellipsoid.hpp:13
multicontact_api::scenario::ContactType
ContactType
Definition
fwd.hpp:33
multicontact_api
Definition
ellipsoid.hpp:12
printable.hpp
contact-model.hpp
fwd.hpp
multicontact_api::python::ContactModelPythonVisitor
Definition
contact-model.hpp:23
multicontact_api::python::ContactModelPythonVisitor::visit
void visit(PyClass &cl) const
Definition
contact-model.hpp:30
multicontact_api::python::ContactModelPythonVisitor::Scalar
ContactModel::Scalar Scalar
Definition
contact-model.hpp:24
multicontact_api::python::ContactModelPythonVisitor::ContactType
scenario::ContactType ContactType
Definition
contact-model.hpp:25
multicontact_api::python::ContactModelPythonVisitor::Matrix6X
ContactModel::Matrix6X Matrix6X
Definition
contact-model.hpp:27
multicontact_api::python::ContactModelPythonVisitor::expose
static void expose(const std::string &class_name)
Definition
contact-model.hpp:58
multicontact_api::python::ContactModelPythonVisitor::Matrix3X
ContactModel::Matrix3X Matrix3X
Definition
contact-model.hpp:26
multicontact_api::python::PrintableVisitor
Set the Python method str and repr to use the overloading operator<<.
Definition
printable.hpp:19
multicontact_api::python::SerializableVisitor
Definition
archive.hpp:37
include
multicontact-api
bindings
python
scenario
contact-model.hpp
Generated by
1.17.0