Program Listing for File robot_model.h
↰ Return to documentation for file (include/franka/robot_model.h
)
// Copyright (c) 2024 Franka Robotics GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
#pragma once
#include <pinocchio/algorithm/centroidal.hpp>
#include <pinocchio/algorithm/crba.hpp>
#include <pinocchio/algorithm/rnea.hpp>
#include <pinocchio/multibody/model.hpp>
#include <pinocchio/parsers/urdf.hpp>
#include <string>
#include "franka/robot_model_base.h"
namespace franka {
class RobotModel : public RobotModelBase {
public:
RobotModel(const std::string& urdf);
void coriolis(const std::array<double, 7>& q,
const std::array<double, 7>& dq,
const std::array<double, 9>& i_total,
double m_total,
const std::array<double, 3>& f_x_ctotal,
std::array<double, 7>& c_ne) override;
void gravity(const std::array<double, 7>& q,
const std::array<double, 3>& g_earth,
double m_total,
const std::array<double, 3>& f_x_ctotal,
std::array<double, 7>& g_ne) override;
void mass(const std::array<double, 7>& q,
const std::array<double, 9>& i_total,
double m_total,
const std::array<double, 3>& f_x_ctotal,
std::array<double, 49>& m_ne) override;
private:
void addInertiaToLastLink(const std::array<double, 9>& i_total,
double m_total,
const std::array<double, 3>& f_x_ctotal);
void computeDynamics(
const std::array<double, 9>& i_total,
double m_total,
const std::array<double, 3>& f_x_ctotal,
pinocchio::Data& data,
const std::function<void(pinocchio::Model&, pinocchio::Data&)>& compute_func);
pinocchio::Model pinocchio_model_;
pinocchio::Inertia initial_last_link_inertia_;
pinocchio::FrameIndex last_link_frame_index_;
pinocchio::JointIndex last_joint_index_;
};
} // namespace franka