sot-talos-balance  2.0.5
Collection of dynamic-graph entities aimed at implementing balance control on talos.
robot-wrapper.hh
Go to the documentation of this file.
1 //
2 // Copyright (c) 2017 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 __invdyn_robot_wrapper_hpp__
19 #define __invdyn_robot_wrapper_hpp__
20 
21 #include <pinocchio/multibody/data.hpp>
22 #include <pinocchio/multibody/model.hpp>
23 #include <pinocchio/spatial/fwd.hpp>
24 #include <string>
25 #include <vector>
26 
29 namespace dynamicgraph {
30 namespace sot {
31 namespace talos_balance {
32 namespace robots {
36 class RobotWrapper {
37  public:
38  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
39 
41  typedef pinocchio::Model Model;
42  typedef pinocchio::Data Data;
43  typedef pinocchio::Motion Motion;
44  typedef pinocchio::Frame Frame;
45  typedef pinocchio::SE3 SE3;
53 
54  RobotWrapper(const std::string& filename,
55  const std::vector<std::string>& package_dirs,
56  bool verbose = false);
57 
58  RobotWrapper(const std::string& filename,
59  const std::vector<std::string>& package_dirs,
60  const pinocchio::JointModelVariant& rootJoint,
61  bool verbose = false);
62 
63  virtual int nq() const;
64  virtual int nv() const;
65 
71  const Model& model() const;
72  Model& model();
73 
74  void computeAllTerms(Data& data, const Vector& q, const Vector& v) const;
75 
76  const Vector& rotor_inertias() const;
77  const Vector& gear_ratios() const;
78 
81 
82  void com(const Data& data, RefVector com_pos, RefVector com_vel,
83  RefVector com_acc) const;
84 
85  const Vector3& com(const Data& data) const;
86 
87  const Vector3& com_vel(const Data& data) const;
88 
89  const Vector3& com_acc(const Data& data) const;
90 
91  const Matrix3x& Jcom(const Data& data) const;
92 
93  const Matrix& mass(const Data& data);
94 
95  const Vector& nonLinearEffects(const Data& data) const;
96 
97  const SE3& position(const Data& data, const Model::JointIndex index) const;
98 
99  const Motion& velocity(const Data& data, const Model::JointIndex index) const;
100 
101  const Motion& acceleration(const Data& data,
102  const Model::JointIndex index) const;
103 
104  void jacobianWorld(const Data& data, const Model::JointIndex index,
105  Data::Matrix6x& J) const;
106 
107  void jacobianLocal(const Data& data, const Model::JointIndex index,
108  Data::Matrix6x& J) const;
109 
110  SE3 framePosition(const Data& data, const Model::FrameIndex index) const;
111 
112  void framePosition(const Data& data, const Model::FrameIndex index,
113  SE3& framePosition) const;
114 
115  Motion frameVelocity(const Data& data, const Model::FrameIndex index) const;
116 
117  void frameVelocity(const Data& data, const Model::FrameIndex index,
118  Motion& frameVelocity) const;
119 
120  Motion frameAcceleration(const Data& data,
121  const Model::FrameIndex index) const;
122 
123  void frameAcceleration(const Data& data, const Model::FrameIndex index,
124  Motion& frameAcceleration) const;
125 
127  const Model::FrameIndex index) const;
128 
129  void frameClassicAcceleration(const Data& data, const Model::FrameIndex index,
130  Motion& frameAcceleration) const;
131 
132  void frameJacobianWorld(Data& data, const Model::FrameIndex index,
133  Data::Matrix6x& J) const;
134 
135  void frameJacobianLocal(Data& data, const Model::FrameIndex index,
136  Data::Matrix6x& J) const;
137 
138  protected:
139  void updateMd();
140 
143  std::string m_model_filename;
144  bool m_verbose;
145 
150 };
151 
152 } // namespace robots
153 
154 } // namespace talos_balance
155 } // namespace sot
156 } // namespace dynamicgraph
157 #endif // ifndef __invdyn_robot_wrapper_hpp__
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Frame
pinocchio::Frame Frame
Definition: robot-wrapper.hh:44
sot_talos_balance.test.appli_admittance_end_effector.q
list q
Definition: appli_admittance_end_effector.py:30
dynamicgraph::sot::talos_balance::robots::RobotWrapper::acceleration
const Motion & acceleration(const Data &data, const Model::JointIndex index) const
Definition: robot-wrapper.cpp:138
dynamicgraph::sot::talos_balance::robots::RobotWrapper::jacobianWorld
void jacobianWorld(const Data &data, const Model::JointIndex index, Data::Matrix6x &J) const
Definition: robot-wrapper.cpp:143
dynamicgraph::sot::talos_balance::robots::RobotWrapper::com_acc
const Vector3 & com_acc(const Data &data) const
Definition: robot-wrapper.cpp:112
dynamicgraph::sot::talos_balance::robots::RobotWrapper::m_gear_ratios
Vector m_gear_ratios
Definition: robot-wrapper.hh:147
sot_talos_balance.test.appli_admittance_end_effector.sot
sot
Definition: appli_admittance_end_effector.py:117
dynamicgraph::sot::talos_balance::robots::RobotWrapper::framePosition
SE3 framePosition(const Data &data, const Model::FrameIndex index) const
Definition: robot-wrapper.cpp:155
dynamicgraph::sot::talos_balance::robots::RobotWrapper::m_model
Model m_model
Robot model.
Definition: robot-wrapper.hh:142
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Vector6
math::Vector6 Vector6
Definition: robot-wrapper.hh:48
dynamicgraph::sot::talos_balance::robots::RobotWrapper::frameVelocity
Motion frameVelocity(const Data &data, const Model::FrameIndex index) const
Definition: robot-wrapper.cpp:168
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Matrix3x
math::Matrix3x Matrix3x
Definition: robot-wrapper.hh:50
dynamicgraph::sot::talos_balance::robots::RobotWrapper::SE3
pinocchio::SE3 SE3
Definition: robot-wrapper.hh:45
dynamicgraph::sot::talos_balance::robots::RobotWrapper::RefVector
math::RefVector RefVector
Definition: robot-wrapper.hh:51
dynamicgraph
Definition: treeview.dox:24
dynamicgraph::sot::talos_balance::math::Vector6
Eigen::Matrix< Scalar, 6, 1 > Vector6
Definition: fwd.hh:42
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Motion
pinocchio::Motion Motion
Definition: robot-wrapper.hh:43
dynamicgraph::sot::talos_balance::robots::RobotWrapper::mass
const Matrix & mass(const Data &data)
Definition: robot-wrapper.cpp:118
dynamicgraph::sot::talos_balance::math::Scalar
double Scalar
Definition: fwd.hh:35
dynamicgraph::sot::talos_balance::robots::RobotWrapper::com
void com(const Data &data, RefVector com_pos, RefVector com_vel, RefVector com_acc) const
Definition: robot-wrapper.cpp:99
dynamicgraph::sot::talos_balance::math::Matrix3x
Eigen::Matrix< Scalar, 3, Eigen::Dynamic > Matrix3x
Definition: fwd.hh:43
dynamicgraph::sot::talos_balance::math::Matrix
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: fwd.hh:37
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Scalar
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::Scalar Scalar
Definition: robot-wrapper.hh:40
dynamicgraph::sot::talos_balance::robots::RobotWrapper::nq
virtual int nq() const
Definition: robot-wrapper.cpp:59
dynamicgraph::sot::talos_balance::robots::RobotWrapper::m_verbose
bool m_verbose
Definition: robot-wrapper.hh:144
dynamicgraph::sot::talos_balance::robots::RobotWrapper::jacobianLocal
void jacobianLocal(const Data &data, const Model::JointIndex index, Data::Matrix6x &J) const
Definition: robot-wrapper.cpp:149
dynamicgraph::sot::talos_balance::robots::RobotWrapper
Wrapper for a robot based on pinocchio.
Definition: robot-wrapper.hh:36
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Matrix
math::Matrix Matrix
Definition: robot-wrapper.hh:49
dynamicgraph::sot::talos_balance::robots::RobotWrapper::m_rotor_inertias
Vector m_rotor_inertias
Definition: robot-wrapper.hh:146
dynamicgraph::sot::talos_balance::robots::RobotWrapper::ConstRefVector
math::ConstRefVector ConstRefVector
Definition: robot-wrapper.hh:52
dynamicgraph::sot::talos_balance::math::Vector3
Eigen::Matrix< Scalar, 3, 1 > Vector3
Definition: fwd.hh:41
fwd.hh
dynamicgraph::sot::talos_balance::robots::RobotWrapper::rotor_inertias
const Vector & rotor_inertias() const
Definition: robot-wrapper.cpp:77
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Jcom
const Matrix3x & Jcom(const Data &data) const
Definition: robot-wrapper.cpp:116
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Vector
math::Vector Vector
Definition: robot-wrapper.hh:46
dynamicgraph::sot::talos_balance::robots::RobotWrapper::RobotWrapper
RobotWrapper(const std::string &filename, const std::vector< std::string > &package_dirs, bool verbose=false)
Definition: robot-wrapper.cpp:35
dynamicgraph::sot::talos_balance::math::Vector
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Definition: fwd.hh:36
dynamicgraph::sot::talos_balance::robots::RobotWrapper::com_vel
const Vector3 & com_vel(const Data &data) const
Definition: robot-wrapper.cpp:108
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Vector3
math::Vector3 Vector3
Definition: robot-wrapper.hh:47
dynamicgraph::sot::talos_balance::robots::RobotWrapper::frameClassicAcceleration
Motion frameClassicAcceleration(const Data &data, const Model::FrameIndex index) const
Definition: robot-wrapper.cpp:190
dynamicgraph::sot::talos_balance::robots::RobotWrapper::updateMd
void updateMd()
Definition: robot-wrapper.cpp:94
dynamicgraph::sot::talos_balance::robots::RobotWrapper::nv
virtual int nv() const
Definition: robot-wrapper.cpp:60
dynamicgraph::sot::talos_balance::robots::RobotWrapper::model
const Model & model() const
Accessor to model.
Definition: robot-wrapper.cpp:62
fwd.hh
dynamicgraph::sot::talos_balance::robots::RobotWrapper::m_model_filename
std::string m_model_filename
Definition: robot-wrapper.hh:143
dynamicgraph::sot::talos_balance::robots::RobotWrapper::frameAcceleration
Motion frameAcceleration(const Data &data, const Model::FrameIndex index) const
Definition: robot-wrapper.cpp:179
dynamicgraph::sot::talos_balance::robots::RobotWrapper::computeAllTerms
void computeAllTerms(Data &data, const Vector &q, const Vector &v) const
Definition: robot-wrapper.cpp:65
dynamicgraph::sot::talos_balance::robots::RobotWrapper::frameJacobianLocal
void frameJacobianLocal(Data &data, const Model::FrameIndex index, Data::Matrix6x &J) const
Definition: robot-wrapper.cpp:211
dynamicgraph::sot::talos_balance::robots::RobotWrapper::nonLinearEffects
const Vector & nonLinearEffects(const Data &data) const
Definition: robot-wrapper.cpp:124
dynamicgraph::sot::talos_balance::robots::RobotWrapper::m_M
Matrix m_M
diagonal part of inertia matrix due to rotor inertias
Definition: robot-wrapper.hh:149
dynamicgraph::sot::talos_balance::robots::RobotWrapper::velocity
const Motion & velocity(const Data &data, const Model::JointIndex index) const
Definition: robot-wrapper.cpp:133
dynamicgraph::sot::talos_balance::robots::RobotWrapper::m_Md
Vector m_Md
Definition: robot-wrapper.hh:148
dynamicgraph::sot::talos_balance::robots::RobotWrapper::gear_ratios
const Vector & gear_ratios() const
Definition: robot-wrapper.cpp:78
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Model
pinocchio::Model Model
Definition: robot-wrapper.hh:41
dynamicgraph::sot::talos_balance::robots::RobotWrapper::position
const SE3 & position(const Data &data, const Model::JointIndex index) const
Definition: robot-wrapper.cpp:128
dynamicgraph::sot::talos_balance::math::ConstRefVector
const typedef Eigen::Ref< const Vector > ConstRefVector
Definition: fwd.hh:49
dynamicgraph::sot::talos_balance::robots::RobotWrapper::frameJacobianWorld
void frameJacobianWorld(Data &data, const Model::FrameIndex index, Data::Matrix6x &J) const
Definition: robot-wrapper.cpp:206
dynamicgraph::sot::talos_balance::math::RefVector
Eigen::Ref< Vector > RefVector
Definition: fwd.hh:48
dynamicgraph::sot::talos_balance::robots::RobotWrapper::Data
pinocchio::Data Data
Definition: robot-wrapper.hh:42