20 #include <pinocchio/algorithm/center-of-mass.hpp>
21 #include <pinocchio/algorithm/compute-all-terms.hpp>
22 #include <pinocchio/algorithm/frames.hpp>
23 #include <pinocchio/algorithm/jacobian.hpp>
24 #include <pinocchio/multibody/model.hpp>
25 #include <pinocchio/parsers/urdf.hpp>
27 using namespace pinocchio;
32 namespace talos_balance {
35 RobotWrapper::RobotWrapper(
const std::string& filename,
36 const std::vector<std::string>&,
bool verbose)
37 : m_verbose(verbose) {
47 const std::vector<std::string>&,
48 const pinocchio::JointModelVariant& rootJoint,
50 : m_verbose(verbose) {
67 pinocchio::computeAllTerms(
m_model, data,
q, v);
68 data.M.triangularView<Eigen::StrictlyLower>() =
69 data.M.transpose().triangularView<Eigen::StrictlyLower>();
72 pinocchio::centerOfMass(
m_model, data, 2,
false);
73 pinocchio::framesForwardKinematics(
m_model, data);
74 pinocchio::centerOfMass(
m_model, data,
q, v, Eigen::VectorXd::Zero(
nv()));
101 com_pos = data.com[0];
129 const Model::JointIndex index)
const {
130 return data.oMi[index];
134 const Model::JointIndex index)
const {
135 return data.v[index];
139 const Model::JointIndex index)
const {
140 return data.a[index];
144 const Model::JointIndex index,
145 Data::Matrix6x& J)
const {
146 return pinocchio::getJointJacobian(
m_model, data, index, pinocchio::WORLD, J);
150 const Model::JointIndex index,
151 Data::Matrix6x& J)
const {
152 return pinocchio::getJointJacobian(
m_model, data, index, pinocchio::LOCAL, J);
156 const Model::FrameIndex index)
const {
158 return data.oMi[f.parent].act(f.placement);
162 const Model::FrameIndex index,
163 SE3& framePosition)
const {
169 const Model::FrameIndex index)
const {
170 return pinocchio::getFrameVelocity(
m_model, data, index);
174 const Model::FrameIndex index,
175 Motion& frameVelocity)
const {
180 const Model::FrameIndex index)
const {
181 return pinocchio::getFrameAcceleration(
m_model, data, index);
185 const Model::FrameIndex index,
186 Motion& frameAcceleration)
const {
191 const Data& data,
const Model::FrameIndex index)
const {
192 Motion a = pinocchio::getFrameAcceleration(
m_model, data, index);
193 Motion v = pinocchio::getFrameVelocity(
m_model, data, index);
194 a.linear() += v.angular().cross(v.linear());
199 const Model::FrameIndex index,
200 Motion& frameAcceleration)
const {
202 Motion v = pinocchio::getFrameVelocity(
m_model, data, index);
207 Data::Matrix6x& J)
const {
208 return pinocchio::getFrameJacobian(
m_model, data, index, pinocchio::WORLD, J);
212 Data::Matrix6x& J)
const {
213 return pinocchio::getFrameJacobian(
m_model, data, index, pinocchio::LOCAL, J);
const Model & model() const
Accessor to model.
Motion frameAcceleration(const Data &data, const Model::FrameIndex index) const
void frameJacobianWorld(Data &data, const Model::FrameIndex index, Data::Matrix6x &J) const
const Vector3 & com_vel(const Data &data) const
const Vector & rotor_inertias() const
void computeAllTerms(Data &data, const Vector &q, const Vector &v) const
const Vector & nonLinearEffects(const Data &data) const
void jacobianLocal(const Data &data, const Model::JointIndex index, Data::Matrix6x &J) const
const Vector3 & com_acc(const Data &data) const
const Motion & acceleration(const Data &data, const Model::JointIndex index) const
const Motion & velocity(const Data &data, const Model::JointIndex index) const
const SE3 & position(const Data &data, const Model::JointIndex index) const
SE3 framePosition(const Data &data, const Model::FrameIndex index) const
const Matrix3x & Jcom(const Data &data) const
const Matrix & mass(const Data &data)
Model m_model
Robot model.
math::RefVector RefVector
Motion frameClassicAcceleration(const Data &data, const Model::FrameIndex index) const
std::string m_model_filename
void jacobianWorld(const Data &data, const Model::JointIndex index, Data::Matrix6x &J) const
void frameJacobianLocal(Data &data, const Model::FrameIndex index, Data::Matrix6x &J) const
RobotWrapper(const std::string &filename, const std::vector< std::string > &package_dirs, bool verbose=false)
Motion frameVelocity(const Data &data, const Model::FrameIndex index) const
void com(const Data &data, RefVector com_pos, RefVector com_vel, RefVector com_acc) const
Matrix m_M
diagonal part of inertia matrix due to rotor inertias
const Vector & gear_ratios() const
math::ConstRefVector ConstRefVector