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