18 #ifndef __tsid_python_robot_wrapper_hpp__
19 #define __tsid_python_robot_wrapper_hpp__
27 namespace bp = boost::python;
29 template <
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."))
42 .def(bp::init<std::string,
std_vec, pinocchio::JointModelVariant &,
43 bool>((bp::arg(
"filename"), bp::arg(
"package_dir"),
44 bp::arg(
"roottype"), bp::arg(
"verbose")),
45 "Default constructor with RootJoint."))
46 .def(bp::init<pinocchio::Model, bool>(
47 (bp::arg(
"Pinocchio Model"), bp::arg(
"verbose")),
48 "Default constructor from pinocchio model without RootJoint."))
51 (bp::arg(
"Pinocchio Model"), bp::arg(
"rootJoint"),
53 "Default constructor from pinocchio model with RootJoint."))
56 .add_property(
"nq", &Robot::nq)
57 .add_property(
"nv", &Robot::nv)
58 .add_property(
"na", &Robot::na)
59 .add_property(
"nq_actuated", &Robot::nq_actuated)
60 .add_property(
"is_fixed_base", &Robot::is_fixed_base)
68 bp::arg(
"inertia vector"))
70 bp::arg(
"gear ratio vector"))
73 bp::args(
"data",
"q",
"v"),
"compute all dynamics")
82 bp::args(
"data",
"index"))
84 bp::args(
"data",
"index"))
86 bp::args(
"data",
"index"))
89 bp::args(
"data",
"index"))
91 bp::args(
"data",
"index"))
93 bp::args(
"data",
"index"))
94 .def(
"frameClassicAcceleration",
96 bp::args(
"data",
"index"))
97 .def(
"frameVelocityWorldOriented",
99 bp::args(
"data",
"index"))
100 .def(
"frameAccelerationWorldOriented",
102 bp::args(
"data",
"index"))
103 .def(
"frameClassicAccelerationWorldOriented",
105 bp::args(
"data",
"index"))
106 .def(
"angularMomentumTimeVariation",
112 const std::string &filename,
const std::vector<std::string> &stdvec,
113 bp::object &bpObject,
bool verbose) {
114 pinocchio::JointModelFreeFlyer root_joint =
115 bp::extract<pinocchio::JointModelFreeFlyer>(bpObject)();
116 boost::shared_ptr<Robot> p(
121 static pinocchio::Model
model(
const Robot &
self) {
return self.model(); }
127 return self.rotor_inertias();
130 return self.gear_ratios();
141 return self.com(
data);
143 static Eigen::Vector3d
com_vel(
const Robot &
self,
145 return self.com_vel(
data);
147 static Eigen::Vector3d
com_acc(
const Robot &
self,
149 return self.com_acc(
data);
152 return self.Jcom(
data);
155 const Eigen::VectorXd &q,
156 const Eigen::VectorXd &v) {
157 self.computeAllTerms(
data, q, v);
160 return self.mass(
data);
164 return self.nonLinearEffects(
data);
167 const pinocchio::Model::JointIndex &index) {
168 return self.position(
data, index);
170 static pinocchio::Motion
velocity(
const Robot &
self,
172 const pinocchio::Model::JointIndex &index) {
173 return self.velocity(
data, index);
177 const pinocchio::Model::JointIndex &index) {
178 return self.acceleration(
data, index);
182 const pinocchio::Model::FrameIndex &index) {
183 return self.framePosition(
data, index);
187 const pinocchio::Model::FrameIndex &index) {
188 return self.frameVelocity(
data, index);
192 const pinocchio::Model::FrameIndex &index) {
193 return self.frameAcceleration(
data, index);
197 const pinocchio::Model::FrameIndex &index) {
198 return self.frameClassicAcceleration(
data, index);
202 const pinocchio::Model::FrameIndex &index) {
203 return self.frameVelocityWorldOriented(
data, index);
207 const pinocchio::Model::FrameIndex &index) {
208 return self.frameAccelerationWorldOriented(
data, index);
212 const pinocchio::Model::FrameIndex &index) {
213 return self.frameClassicAccelerationWorldOriented(
data, index);
217 return self.angularMomentumTimeVariation(
data);
219 static void setGravity(Robot &
self,
const pinocchio::Motion &gravity) {
220 return self.setGravity(gravity);
222 static void expose(
const std::string &class_name) {
223 std::string doc =
"Robot Wrapper info.";
224 bp::class_<Robot>(class_name.c_str(), doc.c_str(), bp::no_init)
227 bp::enum_<robots::RobotWrapper::RootJointType>(
"RootJointType")
229 .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
pinocchio::SE3 SE3
Definition: trajectory-base.hpp:31
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:195
static pinocchio::SE3 framePosition(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition: robot-wrapper.hpp:180
static Eigen::VectorXd nonLinearEffects(const Robot &self, const pinocchio::Data &data)
Definition: robot-wrapper.hpp:162
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:111
static pinocchio::Motion frameClassicAccelerationWorldOriented(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition: robot-wrapper.hpp:210
static pinocchio::Motion velocity(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::JointIndex &index)
Definition: robot-wrapper.hpp:170
static Eigen::Vector3d com(const Robot &self, const pinocchio::Data &data)
Definition: robot-wrapper.hpp:140
static pinocchio::Motion acceleration(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::JointIndex &index)
Definition: robot-wrapper.hpp:175
static Eigen::VectorXd rotor_inertias(const Robot &self)
Definition: robot-wrapper.hpp:126
static pinocchio::Motion frameVelocityWorldOriented(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition: robot-wrapper.hpp:200
static pinocchio::Motion frameAcceleration(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition: robot-wrapper.hpp:190
static pinocchio::Motion frameAccelerationWorldOriented(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition: robot-wrapper.hpp:205
static bool set_rotor_inertias(Robot &self, const Eigen::VectorXd &rotor_inertias)
Definition: robot-wrapper.hpp:132
static bool set_gear_ratios(Robot &self, const Eigen::VectorXd &gear_ratios)
Definition: robot-wrapper.hpp:136
static Eigen::Vector3d com_vel(const Robot &self, const pinocchio::Data &data)
Definition: robot-wrapper.hpp:143
static Matrix3x Jcom(const Robot &self, const pinocchio::Data &data)
Definition: robot-wrapper.hpp:151
static Eigen::VectorXd gear_ratios(const Robot &self)
Definition: robot-wrapper.hpp:129
static Eigen::MatrixXd mass(Robot &self, pinocchio::Data &data)
Definition: robot-wrapper.hpp:159
static pinocchio::Motion frameVelocity(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::FrameIndex &index)
Definition: robot-wrapper.hpp:185
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:215
static void computeAllTerms(const Robot &self, pinocchio::Data &data, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
Definition: robot-wrapper.hpp:154
static pinocchio::Data data(const Robot &self)
Definition: robot-wrapper.hpp:122
static Eigen::Vector3d com_acc(const Robot &self, const pinocchio::Data &data)
Definition: robot-wrapper.hpp:147
static pinocchio::Model model(const Robot &self)
Definition: robot-wrapper.hpp:121
static void expose(const std::string &class_name)
Definition: robot-wrapper.hpp:222
std::vector< std::string > std_vec
Definition: robot-wrapper.hpp:32
void visit(PyClass &cl) const
Definition: robot-wrapper.hpp:37
static void setGravity(Robot &self, const pinocchio::Motion &gravity)
Definition: robot-wrapper.hpp:219
static pinocchio::SE3 position(const Robot &self, const pinocchio::Data &data, const pinocchio::Model::JointIndex &index)
Definition: robot-wrapper.hpp:166