Program Listing for File robot_state.h

Return to documentation for file (include/franka/robot_state.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 <array>
#include <ostream>

#include <franka/duration.h>
#include <franka/errors.h>

namespace franka {

enum class RobotMode {
  kOther,
  kIdle,
  kMove,
  kGuiding,
  kReflex,
  kUserStopped,
  kAutomaticErrorRecovery
};

struct RobotState {
  std::array<double, 16> O_T_EE{};  // NOLINT(readability-identifier-naming)

  std::array<double, 16> O_T_EE_d{};  // NOLINT(readability-identifier-naming)

  std::array<double, 16> F_T_EE{};  // NOLINT(readability-identifier-naming)

  std::array<double, 16> F_T_NE{};  // NOLINT(readability-identifier-naming)

  std::array<double, 16> NE_T_EE{};  // NOLINT(readability-identifier-naming)

  std::array<double, 16> EE_T_K{};  // NOLINT(readability-identifier-naming)

  double m_ee{};

  std::array<double, 9> I_ee{};  // NOLINT(readability-identifier-naming)

  std::array<double, 3> F_x_Cee{};  // NOLINT(readability-identifier-naming)

  double m_load{};

  std::array<double, 9> I_load{};  // NOLINT(readability-identifier-naming)

  std::array<double, 3> F_x_Cload{};  // NOLINT(readability-identifier-naming)

  double m_total{};

  std::array<double, 9> I_total{};  // NOLINT(readability-identifier-naming)

  std::array<double, 3> F_x_Ctotal{};  // NOLINT(readability-identifier-naming)

  std::array<double, 2> elbow{};

  std::array<double, 2> elbow_d{};

  std::array<double, 2> elbow_c{};

  std::array<double, 2> delbow_c{};

  std::array<double, 2> ddelbow_c{};

  std::array<double, 7> tau_J{};  // NOLINT(readability-identifier-naming)

  std::array<double, 7> tau_J_d{};  // NOLINT(readability-identifier-naming)

  std::array<double, 7> dtau_J{};  // NOLINT(readability-identifier-naming)

  std::array<double, 7> q{};

  std::array<double, 7> q_d{};

  std::array<double, 7> dq{};

  std::array<double, 7> dq_d{};

  std::array<double, 7> ddq_d{};

  std::array<double, 7> joint_contact{};

  std::array<double, 6> cartesian_contact{};

  std::array<double, 7> joint_collision{};

  std::array<double, 6> cartesian_collision{};

  std::array<double, 7> tau_ext_hat_filtered{};

  std::array<double, 6> O_F_ext_hat_K{};  // NOLINT(readability-identifier-naming)

  std::array<double, 6> K_F_ext_hat_K{};  // NOLINT(readability-identifier-naming)

  std::array<double, 6> O_dP_EE_d{};  // NOLINT(readability-identifier-naming)

  std::array<double, 3> O_ddP_O{};  // NOLINT(readability-identifier-naming)

  std::array<double, 16> O_T_EE_c{};  // NOLINT(readability-identifier-naming)

  std::array<double, 6> O_dP_EE_c{};  // NOLINT(readability-identifier-naming)

  std::array<double, 6> O_ddP_EE_c{};  // NOLINT(readability-identifier-naming)

  std::array<double, 7> theta{};

  std::array<double, 7> dtheta{};

  Errors current_errors{};

  Errors last_motion_errors{};

  double control_command_success_rate{};

  RobotMode robot_mode = RobotMode::kUserStopped;

  Duration time{};
};

std::ostream& operator<<(std::ostream& ostream, const franka::RobotState& robot_state);

std::ostream& operator<<(std::ostream& ostream, RobotMode robot_mode);

}  // namespace franka