tsid 1.9.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
Loading...
Searching...
No Matches
robot-wrapper.hpp
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 "tsid/deprecated.hh"
22#include "tsid/math/fwd.hpp"
23#include "tsid/robots/fwd.hpp"
24
25#include <pinocchio/multibody/model.hpp>
26#include <pinocchio/multibody/data.hpp>
27#include <pinocchio/spatial/fwd.hpp>
28
29#include <string>
30#include <vector>
31
32namespace tsid {
33namespace robots {
38 public:
39 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
40
42 typedef pinocchio::Model Model;
43 typedef pinocchio::Data Data;
44 typedef pinocchio::Motion Motion;
45 typedef pinocchio::Frame Frame;
46 typedef pinocchio::SE3 SE3;
54
55 /* Possible root joints */
60
61 RobotWrapper(const std::string& filename,
62 const std::vector<std::string>& package_dirs,
63 bool verbose = false);
64
65 RobotWrapper(const std::string& filename,
66 const std::vector<std::string>& package_dirs,
67 const pinocchio::JointModelVariant& rootJoint,
68 bool verbose = false);
69
70 TSID_DEPRECATED RobotWrapper(const Model& m, bool verbose = false);
71
72 RobotWrapper(const Model& m, RootJointType rootJoint, bool verbose = false);
73
74 virtual ~RobotWrapper() = default;
75
76 virtual int nq() const;
77 virtual int nq_actuated() const;
78 virtual int nv() const;
79 virtual int na() const;
80 virtual bool is_fixed_base() const;
81
87 const Model& model() const;
88 Model& model();
89
90 void computeAllTerms(Data& data, const Vector& q, const Vector& v) const;
91
92 const Vector& rotor_inertias() const;
93 const Vector& gear_ratios() const;
94
97
98 void com(const Data& data, RefVector com_pos, RefVector com_vel,
99 RefVector com_acc) const;
100
101 const Vector3& com(const Data& data) const;
102
103 const Vector3& com_vel(const Data& data) const;
104
105 const Vector3& com_acc(const Data& data) const;
106
107 const Matrix3x& Jcom(const Data& data) const;
108
109 const Matrix& mass(const Data& data);
110
111 const Vector& nonLinearEffects(const Data& data) const;
112
113 const SE3& position(const Data& data, const Model::JointIndex index) const;
114
115 const Motion& velocity(const Data& data, const Model::JointIndex index) const;
116
117 const Motion& acceleration(const Data& data,
118 const Model::JointIndex index) const;
119
120 void jacobianWorld(const Data& data, const Model::JointIndex index,
121 Data::Matrix6x& J) const;
122
123 void jacobianLocal(const Data& data, const Model::JointIndex index,
124 Data::Matrix6x& J) const;
125
126 SE3 framePosition(const Data& data, const Model::FrameIndex index) const;
127
128 void framePosition(const Data& data, const Model::FrameIndex index,
129 SE3& framePosition) const;
130
131 Motion frameVelocity(const Data& data, const Model::FrameIndex index) const;
132
134 const Model::FrameIndex index) const;
135
136 void frameVelocity(const Data& data, const Model::FrameIndex index,
137 Motion& frameVelocity) const;
138
139 Motion frameAcceleration(const Data& data,
140 const Model::FrameIndex index) const;
141
143 const Model::FrameIndex index) const;
144
145 void frameAcceleration(const Data& data, const Model::FrameIndex index,
147
149 const Model::FrameIndex index) const;
150
152 const Data& data, const Model::FrameIndex index) const;
153
154 void frameClassicAcceleration(const Data& data, const Model::FrameIndex index,
156
157 void frameJacobianWorld(Data& data, const Model::FrameIndex index,
158 Data::Matrix6x& J) const;
159
160 void frameJacobianLocal(Data& data, const Model::FrameIndex index,
161 Data::Matrix6x& J) const;
162
163 const Data::Matrix6x& momentumJacobian(const Data& data) const;
164
165 Vector3 angularMomentumTimeVariation(const Data& data) const;
166
167 void setGravity(const Motion& gravity);
168
169 protected:
170 void init();
171 void updateMd();
172
175 std::string m_model_filename;
177
181 int m_na;
188};
189
190} // namespace robots
191
192} // namespace tsid
193
194#endif // ifndef __invdyn_robot_wrapper_hpp__
const Matrix3x & Jcom(const Data &data) const
Definition robot-wrapper.cpp:149
void frameJacobianLocal(Data &data, const Model::FrameIndex index, Data::Matrix6x &J) const
Definition robot-wrapper.cpp:325
math::Vector Vector
Definition robot-wrapper.hpp:47
Vector m_Md
Definition robot-wrapper.hpp:186
pinocchio::SE3 SE3
Definition robot-wrapper.hpp:46
Matrix m_M
diagonal part of inertia matrix due to rotor inertias
Definition robot-wrapper.hpp:187
math::ConstRefVector ConstRefVector
Definition robot-wrapper.hpp:53
Motion frameVelocity(const Data &data, const Model::FrameIndex index) const
Definition robot-wrapper.cpp:222
RobotWrapper(const std::string &filename, const std::vector< std::string > &package_dirs, bool verbose=false)
Definition robot-wrapper.cpp:21
const Model & model() const
Accessor to model.
Definition robot-wrapper.cpp:89
bool m_is_fixed_base
Definition robot-wrapper.hpp:183
virtual int nq() const
Definition robot-wrapper.cpp:83
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::Scalar Scalar
Definition robot-wrapper.hpp:41
const Vector3 & com_acc(const Data &data) const
Definition robot-wrapper.cpp:145
const Vector & gear_ratios() const
Definition robot-wrapper.cpp:107
virtual ~RobotWrapper()=default
void jacobianLocal(const Data &data, const Model::JointIndex index, Data::Matrix6x &J) const
Definition robot-wrapper.cpp:194
virtual int nv() const
Definition robot-wrapper.cpp:84
Motion frameClassicAccelerationWorldOriented(const Data &data, const Model::FrameIndex index) const
Definition robot-wrapper.cpp:306
SE3 framePosition(const Data &data, const Model::FrameIndex index) const
Definition robot-wrapper.cpp:203
math::RefVector RefVector
Definition robot-wrapper.hpp:52
pinocchio::Frame Frame
Definition robot-wrapper.hpp:45
Motion frameAcceleration(const Data &data, const Model::FrameIndex index) const
Definition robot-wrapper.cpp:252
void frameJacobianWorld(Data &data, const Model::FrameIndex index, Data::Matrix6x &J) const
Definition robot-wrapper.cpp:317
Motion frameAccelerationWorldOriented(const Data &data, const Model::FrameIndex index) const
Definition robot-wrapper.cpp:271
const Motion & velocity(const Data &data, const Model::JointIndex index) const
Definition robot-wrapper.cpp:169
void jacobianWorld(const Data &data, const Model::JointIndex index, Data::Matrix6x &J) const
Definition robot-wrapper.cpp:185
int m_na
Definition robot-wrapper.hpp:181
pinocchio::Data Data
Definition robot-wrapper.hpp:43
pinocchio::Motion Motion
Definition robot-wrapper.hpp:44
pinocchio::Model Model
Definition robot-wrapper.hpp:42
virtual int na() const
Definition robot-wrapper.cpp:85
void setGravity(const Motion &gravity)
Definition robot-wrapper.cpp:343
Vector m_gear_ratios
Definition robot-wrapper.hpp:185
Vector m_rotor_inertias
Definition robot-wrapper.hpp:184
bool m_verbose
Definition robot-wrapper.hpp:176
int m_nq_actuated
Definition robot-wrapper.hpp:178
std::string m_model_filename
Definition robot-wrapper.hpp:175
const Motion & acceleration(const Data &data, const Model::JointIndex index) const
Definition robot-wrapper.cpp:177
virtual int nq_actuated() const
Definition robot-wrapper.cpp:86
e_RootJointType
Definition robot-wrapper.hpp:56
@ FLOATING_BASE_SYSTEM
Definition robot-wrapper.hpp:58
@ FIXED_BASE_SYSTEM
Definition robot-wrapper.hpp:57
math::Matrix3x Matrix3x
Definition robot-wrapper.hpp:51
virtual bool is_fixed_base() const
Definition robot-wrapper.cpp:87
Vector3 angularMomentumTimeVariation(const Data &data) const
Definition robot-wrapper.cpp:337
const Vector & rotor_inertias() const
Definition robot-wrapper.cpp:106
const SE3 & position(const Data &data, const Model::JointIndex index) const
Definition robot-wrapper.cpp:161
math::Matrix Matrix
Definition robot-wrapper.hpp:50
const Data::Matrix6x & momentumJacobian(const Data &data) const
Definition robot-wrapper.cpp:333
const Vector3 & com_vel(const Data &data) const
Definition robot-wrapper.cpp:141
void updateMd()
Definition robot-wrapper.cpp:127
void init()
Definition robot-wrapper.cpp:76
const Matrix & mass(const Data &data)
Definition robot-wrapper.cpp:151
math::Vector3 Vector3
Definition robot-wrapper.hpp:48
Motion frameVelocityWorldOriented(const Data &data, const Model::FrameIndex index) const
Definition robot-wrapper.cpp:241
const Vector & nonLinearEffects(const Data &data) const
Definition robot-wrapper.cpp:157
Model m_model
Robot model.
Definition robot-wrapper.hpp:174
math::Vector6 Vector6
Definition robot-wrapper.hpp:49
void com(const Data &data, RefVector com_pos, RefVector com_vel, RefVector com_acc) const
Definition robot-wrapper.cpp:132
Motion frameClassicAcceleration(const Data &data, const Model::FrameIndex index) const
Definition robot-wrapper.cpp:282
enum tsid::robots::RobotWrapper::e_RootJointType RootJointType
void computeAllTerms(Data &data, const Vector &q, const Vector &v) const
Definition robot-wrapper.cpp:92
Eigen::Matrix< Scalar, 3, Eigen::Dynamic > Matrix3x
Definition fwd.hpp:29
Eigen::Matrix< Scalar, 3, 1 > Vector3
Definition fwd.hpp:27
Eigen::Matrix< Scalar, 6, 1 > Vector6
Definition fwd.hpp:28
const Eigen::Ref< const Vector > ConstRefVector
Definition fwd.hpp:35
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Definition fwd.hpp:22
double Scalar
Definition fwd.hpp:21
Eigen::Ref< Vector > RefVector
Definition fwd.hpp:34
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition fwd.hpp:23
Definition fwd.hpp:9
Definition constraint-bound.hpp:25