18#ifndef __tsid_python_robot_wrapper_hpp__ 19#define __tsid_python_robot_wrapper_hpp__ 27namespace bp = boost::python;
29template <
typename Robot>
31 :
public boost::python::def_visitor<RobotPythonVisitor<Robot> > {
33 typedef Eigen::Matrix<double, 3, Eigen::Dynamic>
Matrix3x;
35 template <
class PyClass>
39 .def(bp::init<std::string, std_vec, bool>(
40 (bp::arg(
"filename"), bp::arg(
"package_dir"), bp::arg(
"verbose")),
41 "Default constructor without RootJoint."))
43 bp::init<std::string, std_vec, pinocchio::JointModelVariant&, bool>(
44 (bp::arg(
"filename"), bp::arg(
"package_dir"),
45 bp::arg(
"roottype"), bp::arg(
"verbose")),
46 "Default constructor with RootJoint."))
47 .def(bp::init<pinocchio::Model, bool>(
48 (bp::arg(
"Pinocchio Model"), bp::arg(
"verbose")),
49 "Default constructor from pinocchio model without RootJoint."))
52 (bp::arg(
"Pinocchio Model"), bp::arg(
"rootJoint"),
54 "Default constructor from pinocchio model with RootJoint."))
57 .add_property(
"nq", &Robot::nq)
58 .add_property(
"nv", &Robot::nv)
59 .add_property(
"na", &Robot::na)
60 .add_property(
"nq_actuated", &Robot::nq_actuated)
61 .add_property(
"is_fixed_base", &Robot::is_fixed_base)
69 bp::arg(
"inertia vector"))
71 bp::arg(
"gear ratio vector"))
74 bp::args(
"data",
"q",
"v"),
"compute all dynamics")
83 bp::args(
"data",
"index"))
85 bp::args(
"data",
"index"))
87 bp::args(
"data",
"index"))
90 bp::args(
"data",
"index"))
92 bp::args(
"data",
"index"))
94 bp::args(
"data",
"index"))
95 .def(
"frameClassicAcceleration",
97 bp::args(
"data",
"index"))
98 .def(
"frameVelocityWorldOriented",
100 bp::args(
"data",
"index"))
101 .def(
"frameAccelerationWorldOriented",
103 bp::args(
"data",
"index"))
104 .def(
"frameClassicAccelerationWorldOriented",
106 bp::args(
"data",
"index"))
107 .def(
"angularMomentumTimeVariation",
113 const std::string& filename,
const std::vector<std::string>& stdvec,
114 bp::object& bpObject,
bool verbose) {
115 pinocchio::JointModelFreeFlyer root_joint =
116 bp::extract<pinocchio::JointModelFreeFlyer>(bpObject)();
117 boost::shared_ptr<Robot> p(
122 static pinocchio::Model
model(
const Robot& self) {
return self.model(); }
123 static pinocchio::Data
data(
const Robot& self) {
124 pinocchio::Data
data(self.model());
128 return self.rotor_inertias();
131 return self.gear_ratios();
141 static Eigen::Vector3d
com(
const Robot& self,
const pinocchio::Data&
data) {
142 return self.com(
data);
144 static Eigen::Vector3d
com_vel(
const Robot& self,
145 const pinocchio::Data&
data) {
146 return self.com_vel(
data);
148 static Eigen::Vector3d
com_acc(
const Robot& self,
149 const pinocchio::Data&
data) {
150 return self.com_acc(
data);
153 return self.Jcom(
data);
156 const Eigen::VectorXd& q,
157 const Eigen::VectorXd& v) {
158 self.computeAllTerms(
data, q, v);
160 static Eigen::MatrixXd
mass(Robot& self, pinocchio::Data&
data) {
161 return self.mass(
data);
164 const pinocchio::Data&
data) {
165 return self.nonLinearEffects(
data);
167 static pinocchio::SE3
position(
const Robot& self,
const pinocchio::Data&
data,
168 const pinocchio::Model::JointIndex& index) {
169 return self.position(
data, index);
171 static pinocchio::Motion
velocity(
const Robot& self,
172 const pinocchio::Data&
data,
173 const pinocchio::Model::JointIndex& index) {
174 return self.velocity(
data, index);
177 const Robot& self,
const pinocchio::Data&
data,
178 const pinocchio::Model::JointIndex& index) {
179 return self.acceleration(
data, index);
182 const Robot& self,
const pinocchio::Data&
data,
183 const pinocchio::Model::FrameIndex& index) {
184 return self.framePosition(
data, index);
187 const Robot& self,
const pinocchio::Data&
data,
188 const pinocchio::Model::FrameIndex& index) {
189 return self.frameVelocity(
data, index);
192 const Robot& self,
const pinocchio::Data&
data,
193 const pinocchio::Model::FrameIndex& index) {
194 return self.frameAcceleration(
data, index);
197 const Robot& self,
const pinocchio::Data&
data,
198 const pinocchio::Model::FrameIndex& index) {
199 return self.frameClassicAcceleration(
data, index);
202 const Robot& self,
const pinocchio::Data&
data,
203 const pinocchio::Model::FrameIndex& index) {
204 return self.frameVelocityWorldOriented(
data, index);
207 const Robot& self,
const pinocchio::Data&
data,
208 const pinocchio::Model::FrameIndex& index) {
209 return self.frameAccelerationWorldOriented(
data, index);
212 const Robot& self,
const pinocchio::Data&
data,
213 const pinocchio::Model::FrameIndex& index) {
214 return self.frameClassicAccelerationWorldOriented(
data, index);
217 const Robot& self,
const pinocchio::Data&
data) {
218 return self.angularMomentumTimeVariation(
data);
220 static void setGravity(Robot& self,
const pinocchio::Motion& gravity) {
221 return self.setGravity(gravity);
223 static void expose(
const std::string& class_name) {
224 std::string doc =
"Robot Wrapper info.";
225 bp::class_<Robot>(class_name.c_str(), doc.c_str(), bp::no_init)
228 bp::enum_<robots::RobotWrapper::RootJointType>(
"RootJointType")
230 .value(
"FLOATING_BASE_SYSTEM",
Wrapper for a robot based on pinocchio.
Definition robot-wrapper.hpp:37
@ FLOATING_BASE_SYSTEM
Definition robot-wrapper.hpp:58
@ FIXED_BASE_SYSTEM
Definition robot-wrapper.hpp:57
enum tsid::robots::RobotWrapper::e_RootJointType RootJointType
Definition constraint-bound.hpp:26
Definition constraint-bound.hpp:25
Definition robot-wrapper.hpp:31
static pinocchio::Motion frameClassicAcceleration(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition robot-wrapper.hpp:196
static pinocchio::SE3 framePosition(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition robot-wrapper.hpp:181
static Eigen::VectorXd nonLinearEffects(const Robot &self, const pinocchio::Data &data)
Definition robot-wrapper.hpp:163
static pinocchio::Motion frameClassicAccelerationWorldOriented(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition robot-wrapper.hpp:211
static pinocchio::Motion velocity(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::JointIndex &index)
Definition robot-wrapper.hpp:171
static Eigen::Vector3d com(const Robot &self, const pinocchio::Data &data)
Definition robot-wrapper.hpp:141
static pinocchio::Motion acceleration(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::JointIndex &index)
Definition robot-wrapper.hpp:176
static Eigen::VectorXd rotor_inertias(const Robot &self)
Definition robot-wrapper.hpp:127
static pinocchio::Motion frameVelocityWorldOriented(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition robot-wrapper.hpp:201
static pinocchio::Motion frameAcceleration(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition robot-wrapper.hpp:191
static pinocchio::Motion frameAccelerationWorldOriented(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition robot-wrapper.hpp:206
static bool set_rotor_inertias(Robot &self, const Eigen::VectorXd &rotor_inertias)
Definition robot-wrapper.hpp:133
static bool set_gear_ratios(Robot &self, const Eigen::VectorXd &gear_ratios)
Definition robot-wrapper.hpp:137
static Eigen::Vector3d com_vel(const Robot &self, const pinocchio::Data &data)
Definition robot-wrapper.hpp:144
static Matrix3x Jcom(const Robot &self, const pinocchio::Data &data)
Definition robot-wrapper.hpp:152
static Eigen::VectorXd gear_ratios(const Robot &self)
Definition robot-wrapper.hpp:130
static Eigen::MatrixXd mass(Robot &self, pinocchio::Data &data)
Definition robot-wrapper.hpp:160
static pinocchio::Motion frameVelocity(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition robot-wrapper.hpp:186
Eigen::Matrix< double, 3, Eigen::Dynamic > Matrix3x
Definition robot-wrapper.hpp:33
static Eigen::Vector3d angularMomentumTimeVariation(const Robot &self, const pinocchio::Data &data)
Definition robot-wrapper.hpp:216
static void computeAllTerms(const Robot &self, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
Definition robot-wrapper.hpp:155
static pinocchio::Data data(const Robot &self)
Definition robot-wrapper.hpp:123
static Eigen::Vector3d com_acc(const Robot &self, const pinocchio::Data &data)
Definition robot-wrapper.hpp:148
static pinocchio::Model model(const Robot &self)
Definition robot-wrapper.hpp:122
static void expose(const std::string &class_name)
Definition robot-wrapper.hpp:223
std::vector< std::string > std_vec
Definition robot-wrapper.hpp:32
static boost::shared_ptr< Robot > makeClass(const std::string &filename, const std::vector< std::string > &stdvec, bp::object &bpObject, bool verbose)
Definition robot-wrapper.hpp:112
void visit(PyClass &cl) const
Definition robot-wrapper.hpp:37
static void setGravity(Robot &self, const pinocchio::Motion &gravity)
Definition robot-wrapper.hpp:220
static pinocchio::SE3 position(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::JointIndex &index)
Definition robot-wrapper.hpp:167