task-am-equality.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2018 CNRS
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_am_hpp__
19 #define __tsid_python_task_am_hpp__
20 
22 
28 namespace tsid
29 {
30  namespace python
31  {
32  namespace bp = boost::python;
33 
34  template<typename TaskAM>
36  : public boost::python::def_visitor< TaskAMEqualityPythonVisitor<TaskAM> >
37  {
38 
39  template<class PyClass>
40 
41 
42  void visit(PyClass& cl) const
43  {
44  cl
45  .def(bp::init<std::string, robots::RobotWrapper &> ((bp::arg("name"), bp::arg("robot")), "Default Constructor"))
46  .add_property("dim", &TaskAM::dim, "return dimension size")
47  .def("setReference", &TaskAMEqualityPythonVisitor::setReference, bp::arg("ref"))
48  .add_property("getDesiredMomentumDerivative", bp::make_function(&TaskAMEqualityPythonVisitor::getDesiredMomentumDerivative, bp::return_value_policy<bp::copy_const_reference>()), "Return dL_desired")
49  .def("getdMomentum", &TaskAMEqualityPythonVisitor::getdMomentum, bp::arg("dv"))
50  .add_property("momentum_error", bp::make_function(&TaskAMEqualityPythonVisitor::momentum_error, bp::return_value_policy<bp::copy_const_reference>()))
51  .add_property("momentum", bp::make_function(&TaskAMEqualityPythonVisitor::momentum, bp::return_value_policy<bp::copy_const_reference>()))
52  .add_property("momentum_ref", bp::make_function(&TaskAMEqualityPythonVisitor::momentum_ref, bp::return_value_policy<bp::copy_const_reference>()))
53  .add_property("dmomentum_ref", bp::make_function(&TaskAMEqualityPythonVisitor::dmomentum_ref, bp::return_value_policy<bp::copy_const_reference>()))
54  .add_property("Kp", bp::make_function(&TaskAMEqualityPythonVisitor::Kp, bp::return_value_policy<bp::copy_const_reference>()))
55  .add_property("Kd", bp::make_function(&TaskAMEqualityPythonVisitor::Kd, bp::return_value_policy<bp::copy_const_reference>()))
56  .def("setKp", &TaskAMEqualityPythonVisitor::setKp, bp::arg("Kp"))
57  .def("setKd", &TaskAMEqualityPythonVisitor::setKd, bp::arg("Kd"))
58  .def("compute", &TaskAMEqualityPythonVisitor::compute, bp::args("t", "q", "v", "data"))
59  .def("getConstraint", &TaskAMEqualityPythonVisitor::getConstraint)
60  .add_property("name", &TaskAMEqualityPythonVisitor::name)
61  ;
62  }
63  static std::string name(TaskAM & self){
64  std::string name = self.name();
65  return name;
66  }
67  static math::ConstraintEquality compute(TaskAM & self, const double t, const Eigen::VectorXd & q, const Eigen::VectorXd & v, pinocchio::Data & data){
68  self.compute(t, q, v, data);
69  math::ConstraintEquality cons(self.getConstraint().name(), self.getConstraint().matrix(), self.getConstraint().vector());
70  return cons;
71  }
72  static math::ConstraintEquality getConstraint(const TaskAM & self){
73  math::ConstraintEquality cons(self.getConstraint().name(), self.getConstraint().matrix(), self.getConstraint().vector());
74  return cons;
75  }
76  static void setReference(TaskAM & self, const trajectories::TrajectorySample & ref){
77  self.setReference(ref);
78  }
79  static const Eigen::Vector3d & getDesiredMomentumDerivative(const TaskAM & self){
80  return self.getDesiredMomentumDerivative();
81  }
82  static Eigen::Vector3d getdMomentum (TaskAM & self, const Eigen::VectorXd dv){
83  return self.getdMomentum(dv);
84  }
85  static const Eigen::Vector3d & momentum_error(const TaskAM & self){
86  return self.momentum_error();
87  }
88  static const Eigen::Vector3d & momentum (const TaskAM & self){
89  return self.momentum();
90  }
91  static const Eigen::VectorXd & momentum_ref (const TaskAM & self){
92  return self.momentum_ref();
93  }
94  static const Eigen::VectorXd & dmomentum_ref (const TaskAM & self){
95  return self.dmomentum_ref();
96  }
97  static const Eigen::Vector3d & Kp (TaskAM & self){
98  return self.Kp();
99  }
100  static const Eigen::Vector3d & Kd (TaskAM & self){
101  return self.Kd();
102  }
103  static void setKp (TaskAM & self, const::Eigen::VectorXd Kp){
104  return self.Kp(Kp);
105  }
106  static void setKd (TaskAM & self, const::Eigen::VectorXd Kv){
107  return self.Kd(Kv);
108  }
109  static void expose(const std::string & class_name)
110  {
111  std::string doc = "TaskAMEqualityPythonVisitor info.";
112  bp::class_<TaskAM>(class_name.c_str(),
113  doc.c_str(),
114  bp::no_init)
116  }
117  };
118  }
119 }
120 
121 
122 #endif // ifndef __tsid_python_task_am_hpp__
tsid::python::TaskAMEqualityPythonVisitor::compute
static math::ConstraintEquality compute(TaskAM &self, const double t, const Eigen::VectorXd &q, const Eigen::VectorXd &v, pinocchio::Data &data)
Definition: task-am-equality.hpp:67
tsid::trajectories::TrajectorySample
Definition: trajectory-base.hpp:35
tsid::python::TaskAMEqualityPythonVisitor::setKd
static void setKd(TaskAM &self, const ::Eigen::VectorXd Kv)
Definition: task-am-equality.hpp:106
tsid::math::ConstraintEquality
Definition: constraint-equality.hpp:28
Data
pinocchio::Data Data
Definition: inverse-dynamics-formulation-acc-force.cpp:29
tsid::python::TaskAMEqualityPythonVisitor::setKp
static void setKp(TaskAM &self, const ::Eigen::VectorXd Kp)
Definition: task-am-equality.hpp:103
tsid::python::TaskAMEqualityPythonVisitor::expose
static void expose(const std::string &class_name)
Definition: task-am-equality.hpp:109
tsid::python::TaskAMEqualityPythonVisitor::getDesiredMomentumDerivative
static const Eigen::Vector3d & getDesiredMomentumDerivative(const TaskAM &self)
Definition: task-am-equality.hpp:79
tsid::python::TaskAMEqualityPythonVisitor::name
static std::string name(TaskAM &self)
Definition: task-am-equality.hpp:63
constraint-equality.hpp
tsid::python::TaskAMEqualityPythonVisitor::Kp
static const Eigen::Vector3d & Kp(TaskAM &self)
Definition: task-am-equality.hpp:97
trajectory-base.hpp
robot-wrapper.hpp
tsid::python::TaskAMEqualityPythonVisitor::Kd
static const Eigen::Vector3d & Kd(TaskAM &self)
Definition: task-am-equality.hpp:100
tsid::python::TaskAMEqualityPythonVisitor::momentum_ref
static const Eigen::VectorXd & momentum_ref(const TaskAM &self)
Definition: task-am-equality.hpp:91
tsid::python::TaskAMEqualityPythonVisitor::setReference
static void setReference(TaskAM &self, const trajectories::TrajectorySample &ref)
Definition: task-am-equality.hpp:76
tsid::python::TaskAMEqualityPythonVisitor
Definition: task-am-equality.hpp:35
constraint-base.hpp
tsid::python::TaskAMEqualityPythonVisitor::getdMomentum
static Eigen::Vector3d getdMomentum(TaskAM &self, const Eigen::VectorXd dv)
Definition: task-am-equality.hpp:82
tsid::python::TaskAMEqualityPythonVisitor::getConstraint
static math::ConstraintEquality getConstraint(const TaskAM &self)
Definition: task-am-equality.hpp:72
tsid::python::TaskAMEqualityPythonVisitor::dmomentum_ref
static const Eigen::VectorXd & dmomentum_ref(const TaskAM &self)
Definition: task-am-equality.hpp:94
task-angular-momentum-equality.hpp
tsid
Definition: constraint-bound.hpp:26
tsid::python::TaskAMEqualityPythonVisitor::visit
void visit(PyClass &cl) const
Definition: task-am-equality.hpp:42
tsid::python::TaskAMEqualityPythonVisitor::momentum
static const Eigen::Vector3d & momentum(const TaskAM &self)
Definition: task-am-equality.hpp:88
fwd.hpp
tsid::python::TaskAMEqualityPythonVisitor::momentum_error
static const Eigen::Vector3d & momentum_error(const TaskAM &self)
Definition: task-am-equality.hpp:85