Class Model

Class Documentation

class Model

This class is a thin wrapper around a franka::Model and delegates all calls to that

Public Functions

inline explicit Model(franka::Model *model)

Create a new Model instance wrapped around a franka::Model

virtual ~Model() = default
inline std::array<double, 16> pose(franka::Frame frame, const std::array<double, 7> &q, const std::array<double, 16> &F_T_EE, const std::array<double, 16> &EE_T_K) const

Gets the 4x4 pose matrix for the given frame in base frame.

The pose is represented as a 4x4 matrix in column-major format.

Parameters:
  • frame[in] The desired frame.

  • q[in] Joint position.

  • F_T_EE[in] End effector in flange frame.

  • EE_T_K[in] Stiffness frame K in the end effector frame.

Returns:

Vectorized 4x4 pose matrix, column-major.

inline std::array<double, 42> bodyJacobian(franka::Frame frame, const std::array<double, 7> &q, const std::array<double, 16> &F_T_EE, const std::array<double, 16> &EE_T_K) const

Gets the 6x7 Jacobian for the given frame, relative to that frame.

The Jacobian is represented as a 6x7 matrix in column-major format.

Parameters:
  • frame[in] The desired frame.

  • q[in] Joint position.

  • F_T_EE[in] End effector in flange frame.

  • EE_T_K[in] Stiffness frame K in the end effector frame.

Returns:

Vectorized 6x7 Jacobian, column-major.

inline std::array<double, 42> zeroJacobian(franka::Frame frame, const std::array<double, 7> &q, const std::array<double, 16> &F_T_EE, const std::array<double, 16> &EE_T_K) const

Gets the 6x7 Jacobian for the given joint relative to the base frame.

The Jacobian is represented as a 6x7 matrix in column-major format.

Parameters:
  • frame[in] The desired frame.

  • robot_state[in] State from which the pose should be calculated.

Returns:

Vectorized 6x7 Jacobian, column-major.

inline std::array<double, 49> 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) const noexcept

Calculates the 7x7 mass matrix. Unit: [kg×m2].

Parameters:
  • q[in] Joint position.

  • I_total[in] Inertia of the attached total load including end effector, relative to center of mass, given as vectorized 3x3 column-major matrix. Unit: [kg×m2].

  • m_total[in] Weight of the attached total load including end effector. Unit: [kg].

  • F_x_Ctotal[in] Translation from flange to center of mass of the attached total load. Unit: [m].

Returns:

Vectorized 7x7 mass matrix, column-major.

inline std::array<double, 7> 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 noexcept

Calculates the Coriolis force vector (state-space equation): c=C×dq, in [Nm].

Parameters:
  • q[in] Joint position.

  • dq[in] Joint velocity.

  • I_total[in] Inertia of the attached total load including end effector, relative to center of mass, given as vectorized 3x3 column-major matrix. Unit: [kg×m2].

  • m_total[in] Weight of the attached total load including end effector. Unit: [kg].

  • F_x_Ctotal[in] Translation from flange to center of mass of the attached total load. Unit: [m].

Returns:

Coriolis force vector.

inline std::array<double, 7> gravity(const std::array<double, 7> &q, double m_total, const std::array<double, 3> &F_x_Ctotal, const std::array<double, 3> &gravity_earth) const noexcept

Calculates the gravity vector. Unit: [Nm].

Parameters:
  • q[in] Joint position.

  • m_total[in] Weight of the attached total load including end effector. Unit: [kg].

  • F_x_Ctotal[in] Translation from flange to center of mass of the attached total load. Unit: [m].

  • gravity_earth[in] Earth’s gravity vector. Unit: ms2.

Returns:

Gravity vector.

inline virtual std::array<double, 16> pose(franka::Frame frame, const franka::RobotState &robot_state) const

Gets the 4x4 pose matrix for the given frame in base frame.

The pose is represented as a 4x4 matrix in column-major format.

Parameters:
  • frame[in] The desired frame.

  • robot_state[in] State from which the pose should be calculated.

Returns:

Vectorized 4x4 pose matrix, column-major.

inline virtual std::array<double, 42> bodyJacobian(franka::Frame frame, const franka::RobotState &robot_state) const

Gets the 6x7 Jacobian for the given frame, relative to that frame.

The Jacobian is represented as a 6x7 matrix in column-major format.

Parameters:
  • frame[in] The desired frame.

  • robot_state[in] State from which the pose should be calculated.

Returns:

Vectorized 6x7 Jacobian, column-major.

inline virtual std::array<double, 42> zeroJacobian(franka::Frame frame, const franka::RobotState &robot_state) const

Gets the 6x7 Jacobian for the given joint relative to the base frame.

The Jacobian is represented as a 6x7 matrix in column-major format.

Parameters:
  • frame[in] The desired frame.

  • robot_state[in] State from which the pose should be calculated.

Returns:

Vectorized 6x7 Jacobian, column-major.

inline virtual std::array<double, 49> mass(const franka::RobotState &robot_state) const

Calculates the 7x7 mass matrix. Unit: [kg×m2].

Parameters:

robot_state[in] State from which the pose should be calculated.

Returns:

Vectorized 7x7 mass matrix, column-major.

inline virtual std::array<double, 7> coriolis(const franka::RobotState &robot_state) const

Calculates the Coriolis force vector (state-space equation): c=C×dq, in [Nm].

Parameters:

robot_state[in] State from which the Coriolis force vector should be calculated.

Returns:

Coriolis force vector.

inline std::array<double, 7> gravity(const std::array<double, 7> &q, double m_total, const std::array<double, 3> &F_x_Ctotal) const

Calculates the gravity vector. Unit: [Nm]. Assumes default gravity vector of -9.81 m/s^2

Parameters:
  • q[in] Joint position.

  • m_total[in] Weight of the attached total load including end effector. Unit: [kg].

  • F_x_Ctotal[in] Translation from flange to center of mass of the attached total load. Unit: [m].

Returns:

Gravity vector.

inline virtual std::array<double, 7> gravity(const franka::RobotState &robot_state, const std::array<double, 3> &gravity_earth) const

Calculates the gravity vector. Unit: [Nm].

Parameters:
  • robot_state[in] State from which the gravity vector should be calculated.

  • gravity_earth[in] Earth’s gravity vector. Unit: ms2.

Returns:

Gravity vector.

inline virtual std::array<double, 7> gravity(const franka::RobotState &robot_state) const

Calculates the gravity vector. Unit: [Nm]. Assumes default gravity vector of -9.81 m/s^2

Parameters:

robot_state[in] State from which the gravity vector should be calculated.

Returns:

Gravity vector.

Protected Functions

Model() = default