GCC Code Coverage Report | |||||||||||||||||||||
|
|||||||||||||||||||||
Line | Branch | Exec | Source |
1 |
// |
||
2 |
// Copyright (c) 2023 MIPT |
||
3 |
// |
||
4 |
// This file is part of tsid |
||
5 |
// tsid is free software: you can redistribute it |
||
6 |
// and/or modify it under the terms of the GNU Lesser General Public |
||
7 |
// License as published by the Free Software Foundation, either version |
||
8 |
// 3 of the License, or (at your option) any later version. |
||
9 |
// tsid is distributed in the hope that it will be |
||
10 |
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty |
||
11 |
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||
12 |
// General Lesser Public License for more details. You should have |
||
13 |
// received a copy of the GNU Lesser General Public License along with |
||
14 |
// tsid If not, see |
||
15 |
// <http://www.gnu.org/licenses/>. |
||
16 |
// |
||
17 |
|||
18 |
#ifndef __tsid_python_task_frames_hpp__ |
||
19 |
#define __tsid_python_task_frames_hpp__ |
||
20 |
|||
21 |
#include "tsid/bindings/python/fwd.hpp" |
||
22 |
|||
23 |
#include "tsid/tasks/task-two-frames-equality.hpp" |
||
24 |
#include "tsid/robots/robot-wrapper.hpp" |
||
25 |
#include "tsid/trajectories/trajectory-base.hpp" |
||
26 |
#include "tsid/math/constraint-equality.hpp" |
||
27 |
#include "tsid/math/constraint-base.hpp" |
||
28 |
namespace tsid { |
||
29 |
namespace python { |
||
30 |
namespace bp = boost::python; |
||
31 |
|||
32 |
template <typename TaskFrames> |
||
33 |
struct TaskTwoFramesEqualityPythonVisitor |
||
34 |
: public boost::python::def_visitor< |
||
35 |
TaskTwoFramesEqualityPythonVisitor<TaskFrames> > { |
||
36 |
template <class PyClass> |
||
37 |
|||
38 |
7 |
void visit(PyClass& cl) const { |
|
39 |
14 |
cl.def(bp::init<std::string, robots::RobotWrapper&, std::string, |
|
40 |
std::string>((bp::arg("name"), bp::arg("robot"), |
||
41 |
bp::arg("framename1"), bp::arg("framename2")), |
||
42 |
"Default Constructor")) |
||
43 |
✓✗✓✗ ✓✗✓✗ ✓✗✓✗ ✓✗✓✗ |
14 |
.add_property("dim", &TaskFrames::dim, "return dimension size") |
44 |
14 |
.add_property( |
|
45 |
"getDesiredAcceleration", |
||
46 |
bp::make_function( |
||
47 |
&TaskTwoFramesEqualityPythonVisitor::getDesiredAcceleration, |
||
48 |
bp::return_value_policy<bp::copy_const_reference>()), |
||
49 |
"Return Acc_desired") |
||
50 |
✓✗✓✗ ✓✗ |
14 |
.def("getAcceleration", |
51 |
&TaskTwoFramesEqualityPythonVisitor::getAcceleration, |
||
52 |
bp::arg("dv")) |
||
53 |
✓✗✓✗ |
14 |
.add_property("position_error", |
54 |
bp::make_function( |
||
55 |
&TaskTwoFramesEqualityPythonVisitor::position_error, |
||
56 |
bp::return_value_policy<bp::copy_const_reference>())) |
||
57 |
✓✗✓✗ |
14 |
.add_property("velocity_error", |
58 |
bp::make_function( |
||
59 |
&TaskTwoFramesEqualityPythonVisitor::velocity_error, |
||
60 |
bp::return_value_policy<bp::copy_const_reference>())) |
||
61 |
✓✗✓✗ |
14 |
.add_property("Kp", |
62 |
bp::make_function( |
||
63 |
&TaskTwoFramesEqualityPythonVisitor::Kp, |
||
64 |
bp::return_value_policy<bp::copy_const_reference>())) |
||
65 |
✓✗✓✗ |
14 |
.add_property("Kd", |
66 |
bp::make_function( |
||
67 |
&TaskTwoFramesEqualityPythonVisitor::Kd, |
||
68 |
bp::return_value_policy<bp::copy_const_reference>())) |
||
69 |
✓✗✓✗ |
14 |
.def("setKp", &TaskTwoFramesEqualityPythonVisitor::setKp, bp::arg("Kp")) |
70 |
✓✗✓✗ |
14 |
.def("setKd", &TaskTwoFramesEqualityPythonVisitor::setKd, bp::arg("Kd")) |
71 |
✓✗✓✗ |
14 |
.add_property("mask", |
72 |
bp::make_function( |
||
73 |
&TaskTwoFramesEqualityPythonVisitor::getMask, |
||
74 |
bp::return_value_policy<bp::copy_const_reference>()), |
||
75 |
"Return mask") |
||
76 |
✓✗✓✗ |
14 |
.def("setMask", &TaskTwoFramesEqualityPythonVisitor::setMask, |
77 |
bp::arg("mask")) |
||
78 |
✓✗✓✗ |
14 |
.def("compute", &TaskTwoFramesEqualityPythonVisitor::compute, |
79 |
bp::args("t", "q", "v", "data")) |
||
80 |
✓✗✓✗ |
14 |
.def("getConstraint", |
81 |
&TaskTwoFramesEqualityPythonVisitor::getConstraint) |
||
82 |
✓✗ | 7 |
.add_property("frame_id1", &TaskFrames::frame_id1, "frame id 1 return") |
83 |
14 |
.add_property("frame_id2", &TaskFrames::frame_id2, "frame id 2 return") |
|
84 |
✓✗✓✗ ✓✗ |
7 |
.add_property("name", &TaskTwoFramesEqualityPythonVisitor::name); |
85 |
7 |
} |
|
86 |
static std::string name(TaskFrames& self) { |
||
87 |
std::string name = self.name(); |
||
88 |
return name; |
||
89 |
} |
||
90 |
static math::ConstraintEquality compute(TaskFrames& self, const double t, |
||
91 |
const Eigen::VectorXd& q, |
||
92 |
const Eigen::VectorXd& v, |
||
93 |
pinocchio::Data& data) { |
||
94 |
self.compute(t, q, v, data); |
||
95 |
math::ConstraintEquality cons(self.getConstraint().name(), |
||
96 |
self.getConstraint().matrix(), |
||
97 |
self.getConstraint().vector()); |
||
98 |
return cons; |
||
99 |
} |
||
100 |
static math::ConstraintEquality getConstraint(const TaskFrames& self) { |
||
101 |
math::ConstraintEquality cons(self.getConstraint().name(), |
||
102 |
self.getConstraint().matrix(), |
||
103 |
self.getConstraint().vector()); |
||
104 |
return cons; |
||
105 |
} |
||
106 |
static const Eigen::VectorXd& getDesiredAcceleration(const TaskFrames& self) { |
||
107 |
return self.getDesiredAcceleration(); |
||
108 |
} |
||
109 |
static Eigen::VectorXd getAcceleration(TaskFrames& self, |
||
110 |
const Eigen::VectorXd dv) { |
||
111 |
return self.getAcceleration(dv); |
||
112 |
} |
||
113 |
static const Eigen::VectorXd& position_error(const TaskFrames& self) { |
||
114 |
return self.position_error(); |
||
115 |
} |
||
116 |
static const Eigen::VectorXd& velocity_error(const TaskFrames& self) { |
||
117 |
return self.velocity_error(); |
||
118 |
} |
||
119 |
static const Eigen::VectorXd& Kp(TaskFrames& self) { return self.Kp(); } |
||
120 |
static const Eigen::VectorXd& Kd(TaskFrames& self) { return self.Kd(); } |
||
121 |
static void setKp(TaskFrames& self, const ::Eigen::VectorXd Kp) { |
||
122 |
return self.Kp(Kp); |
||
123 |
} |
||
124 |
static void setKd(TaskFrames& self, const ::Eigen::VectorXd Kv) { |
||
125 |
return self.Kd(Kv); |
||
126 |
} |
||
127 |
static void getMask(TaskFrames& self) { self.getMask(); } |
||
128 |
static void setMask(TaskFrames& self, const ::Eigen::VectorXd mask) { |
||
129 |
self.setMask(mask); |
||
130 |
} |
||
131 |
static Eigen::VectorXd frame_id1(TaskFrames& self) { |
||
132 |
return self.frame_id1(); |
||
133 |
} |
||
134 |
static Eigen::VectorXd frame_id2(TaskFrames& self) { |
||
135 |
return self.frame_id2(); |
||
136 |
} |
||
137 |
|||
138 |
7 |
static void expose(const std::string& class_name) { |
|
139 |
✓✗ | 7 |
std::string doc = "TaskFrames info."; |
140 |
✓✗✓✗ |
7 |
bp::class_<TaskFrames>(class_name.c_str(), doc.c_str(), bp::no_init) |
141 |
.def(TaskTwoFramesEqualityPythonVisitor<TaskFrames>()); |
||
142 |
|||
143 |
// bp::register_ptr_to_python< boost::shared_ptr<math::ConstraintBase> >(); |
||
144 |
7 |
} |
|
145 |
}; |
||
146 |
} // namespace python |
||
147 |
} // namespace tsid |
||
148 |
|||
149 |
#endif // ifndef __tsid_python_task_frames_hpp__ |
Generated by: GCOVR (Version 4.2) |