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);