libfranka 0.18.0
FCI C++ API
Loading...
Searching...
No Matches
robot_model_base.h
Go to the documentation of this file.
1// Copyright (c) 2024 Franka Robotics GmbH
2// Use of this source code is governed by the Apache-2.0 license, see LICENSE
3#pragma once
4
5#include <array>
6
17 public:
18 virtual ~RobotModelBase() = default;
33 virtual void coriolis(const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
34 const std::array<double, 7>& dq, // NOLINT(readability-identifier-length)
35 const std::array<double, 9>& i_total,
36 double m_total,
37 const std::array<double, 3>& f_x_ctotal,
38 std::array<double, 7>& c_ne) = 0;
39
55 virtual void coriolis(const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
56 const std::array<double, 7>& dq, // NOLINT(readability-identifier-length)
57 const std::array<double, 9>& i_total,
58 double m_total,
59 const std::array<double, 3>& f_x_ctotal,
60 const std::array<double, 3>& g_earth,
61 std::array<double, 7>& c_ne) = 0;
62
73 virtual void gravity(const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
74 const std::array<double, 3>& g_earth,
75 double m_total,
76 const std::array<double, 3>& f_x_ctotal,
77 std::array<double, 7>& g_ne) = 0;
78
91 virtual void mass(const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
92 const std::array<double, 9>& i_total,
93 double m_total,
94 const std::array<double, 3>& f_x_ctotal,
95 std::array<double, 49>& m_ne) = 0;
96
104 virtual std::array<double, 16> pose(
105 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
106 int joint_index) = 0;
107
116 virtual std::array<double, 16> poseEe(
117 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
118 const std::array<double, 16>& f_t_ee) = 0;
119
126 virtual std::array<double, 16> poseFlange(
127 const std::array<double, 7>& q) = 0; // NOLINT(readability-identifier-length)
128
138 virtual std::array<double, 16> poseStiffness(
139 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
140 const std::array<double, 16>& f_t_ee,
141 const std::array<double, 16>& ee_t_k) = 0;
149 virtual std::array<double, 42> bodyJacobian(
150 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
151 int joint_index) = 0;
152
159 virtual std::array<double, 42> bodyJacobianFlange(
160 const std::array<double, 7>& q) = 0; // NOLINT(readability-identifier-length)
161
169 virtual std::array<double, 42> bodyJacobianEe(
170 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
171 const std::array<double, 16>& f_t_ee) = 0;
172
182 virtual std::array<double, 42> bodyJacobianStiffness(
183 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
184 const std::array<double, 16>& f_t_ee,
185 const std::array<double, 16>& ee_t_k) = 0;
186
194 virtual std::array<double, 42> zeroJacobian(
195 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
196 int joint_index) = 0;
197
204 virtual std::array<double, 42> zeroJacobianFlange(
205 const std::array<double, 7>& q) = 0; // NOLINT(readability-identifier-length)
206
214 virtual std::array<double, 42> zeroJacobianEe(
215 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
216 const std::array<double, 16>& f_t_ee) = 0;
217
227 virtual std::array<double, 42> zeroJacobianStiffness(
228 const std::array<double, 7>& q, // NOLINT(readability-identifier-length)
229 const std::array<double, 16>& f_t_ee,
230 const std::array<double, 16>& ee_t_k) = 0;
231};
Robot dynamic parameters computed from the URDF model with Pinocchio.
Definition robot_model_base.h:16
virtual std::array< double, 42 > zeroJacobianFlange(const std::array< double, 7 > &q)=0
Calculates the 6x7 zero Jacobian for the flange frame, relative to the base frame.
virtual 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)=0
Calculates the Coriolis force vector (state-space equation): , in .
virtual std::array< double, 42 > zeroJacobianEe(const std::array< double, 7 > &q, const std::array< double, 16 > &f_t_ee)=0
Calculates the 6x7 zero Jacobian for the end effector frame, relative to the base frame.
virtual std::array< double, 42 > bodyJacobian(const std::array< double, 7 > &q, int joint_index)=0
Calculates the 6x7 body Jacobian for the given joint, relative to that joint's frame.
virtual std::array< double, 42 > bodyJacobianEe(const std::array< double, 7 > &q, const std::array< double, 16 > &f_t_ee)=0
Calculates the 6x7 body Jacobian for the end effector frame, relative to that frame.
virtual std::array< double, 42 > bodyJacobianStiffness(const std::array< double, 7 > &q, const std::array< double, 16 > &f_t_ee, const std::array< double, 16 > &ee_t_k)=0
Calculates the 6x7 body Jacobian for the stiffness frame, relative to that frame.
virtual std::array< double, 42 > zeroJacobianStiffness(const std::array< double, 7 > &q, const std::array< double, 16 > &f_t_ee, const std::array< double, 16 > &ee_t_k)=0
Calculates the 6x7 zero Jacobian for the stiffness frame, relative to the base frame.
virtual std::array< double, 42 > zeroJacobian(const std::array< double, 7 > &q, int joint_index)=0
Calculates the 6x7 zero Jacobian for the given joint, relative to the base frame.
virtual std::array< double, 16 > poseFlange(const std::array< double, 7 > &q)=0
Calculates the homogeneous transformation matrix for the flange.
virtual std::array< double, 16 > poseStiffness(const std::array< double, 7 > &q, const std::array< double, 16 > &f_t_ee, const std::array< double, 16 > &ee_t_k)=0
Calculates the homogeneous transformation matrix for the stiffness frame.
virtual std::array< double, 16 > poseEe(const std::array< double, 7 > &q, const std::array< double, 16 > &f_t_ee)=0
Calculates the homogeneous transformation matrix for the end effector, applying the end effector tran...
virtual 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)=0
Calculates the gravity vector.
virtual 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, const std::array< double, 3 > &g_earth, std::array< double, 7 > &c_ne)=0
Calculates the Coriolis force vector with configurable gravity (recommended implementation).
virtual std::array< double, 16 > pose(const std::array< double, 7 > &q, int joint_index)=0
Calculates the homogeneous transformation matrix for the specified joint or link.
virtual 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)=0
Calculates the 7x7 inertia matrix.
virtual std::array< double, 42 > bodyJacobianFlange(const std::array< double, 7 > &q)=0
Calculates the 6x7 body Jacobian for the flange frame, relative to that frame.