1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#pragma once

#include <ethercatcpp/sensojoint.h>

namespace ethercatcpp {

using namespace coe::cia402;

struct SensoJoint::OpaqueStateCommands {
    // command variables
    uint16_t& control_word_;
    int8_t& control_mode_;
    int32_t& target_output_position_; // in inc
    int32_t& target_output_velocity_; // in mrpm
    int32_t& target_output_torque_;   // in mNm

    int32_t& target_position_;     // in inc
    int32_t& target_velocity_;     // in mrpm
    int16_t& target_motor_torque_; // in "per mile" rated torque

    int32_t& velocity_offset_; // in mrpm
    int16_t& torque_offset_;   // in "per mile" rated torque

    uint32_t& digital_outputs_;

    struct HapticsCoding {
        uint16_t& stiffness_;
        uint16_t& damping_;
        int32_t& neutral_position_;
        int32_t& external_load_torque_offset_;

        HapticsCoding(uint16_t& stiffness, uint16_t& damping,
                      int32_t& neutral_position,
                      int32_t& external_load_torque_offset)
            : stiffness_{stiffness},
              damping_{damping},
              neutral_position_{neutral_position},
              external_load_torque_offset_{external_load_torque_offset} {
        }
    };

    std::optional<HapticsCoding> haptics_config_;

    // state variables
    uint16_t status_word_;<--- struct member 'OpaqueStateCommands::status_word_' is never used.
    int8_t operation_mode_;<--- struct member 'OpaqueStateCommands::operation_mode_' is never used.
    uint16_t error_code_;<--- struct member 'OpaqueStateCommands::error_code_' is never used.
    std::string error_report_;<--- struct member 'OpaqueStateCommands::error_report_' is never used.
    bool sto_active_, sbc_active_;<--- struct member 'OpaqueStateCommands::sto_active_' is never used.<--- struct member 'OpaqueStateCommands::sbc_active_' is never used.

    double position_;           // in rad<--- struct member 'OpaqueStateCommands::position_' is never used.
    double velocity_;           // in rad per s<--- struct member 'OpaqueStateCommands::velocity_' is never used.
    double output_torque_;      // in Nm<--- struct member 'OpaqueStateCommands::output_torque_' is never used.
    double motor_torque_;       // in Nm<--- struct member 'OpaqueStateCommands::motor_torque_' is never used.
    double friction_torque_;    // in Nm<--- struct member 'OpaqueStateCommands::friction_torque_' is never used.
    float motor_temperature_;   // in °C<--- struct member 'OpaqueStateCommands::motor_temperature_' is never used.
    double drive_temperature_;  // in °C<--- struct member 'OpaqueStateCommands::drive_temperature_' is never used.
    double sensor_temperature_; // in °C<--- struct member 'OpaqueStateCommands::sensor_temperature_' is never used.

    mutable std::string fault_description_;<--- struct member 'OpaqueStateCommands::fault_description_' is never used.
    uint32_t digital_inputs_;<--- struct member 'OpaqueStateCommands::digital_inputs_' is never used.
    bool first_cycle_;

    OpaqueStateCommands(uint16_t& control_word, int8_t& control_mode,<--- Member variable 'OpaqueStateCommands::status_word_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::operation_mode_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::error_code_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::sto_active_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::sbc_active_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::position_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::velocity_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::output_torque_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::motor_torque_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::friction_torque_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::motor_temperature_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::drive_temperature_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::sensor_temperature_' is not initialized in the constructor.<--- Member variable 'OpaqueStateCommands::digital_inputs_' is not initialized in the constructor.
                        int32_t& target_output_position,
                        int32_t& target_output_velocity,
                        int32_t& target_output_torque, int32_t& target_position,
                        int32_t& target_velocity, int16_t& target_motor_torque,
                        int32_t& velocity_offset, int16_t& torque_offset,
                        uint32_t& digital_outputs)
        : control_word_{control_word},
          control_mode_{control_mode},
          target_output_position_{target_output_position},
          target_output_velocity_{target_output_velocity},
          target_output_torque_{target_output_torque},
          target_position_{target_position},
          target_velocity_{target_velocity},
          target_motor_torque_{target_motor_torque},
          velocity_offset_{velocity_offset},
          torque_offset_{torque_offset},
          digital_outputs_{digital_outputs},
          haptics_config_{},
          first_cycle_{true} {
    }
};

struct SensoJoint::InternalParameters {
    double absolute_max_output_torque{0.};   // in Nm<--- struct member 'InternalParameters::absolute_max_output_torque' is never used.
    double absolute_max_output_velocity{0.}; // in rad per s<--- struct member 'InternalParameters::absolute_max_output_velocity' is never used.
    double absolute_max_motor_current{0.};   // in A<--- struct member 'InternalParameters::absolute_max_motor_current' is never used.
    double absolute_max_motor_torque{0.};    // in Nm<--- struct member 'InternalParameters::absolute_max_motor_torque' is never used.
    double absolute_max_motor_velocity{0.};  // in rad per s<--- struct member 'InternalParameters::absolute_max_motor_velocity' is never used.
    double quick_stop_deceleration{0.};      // in rad per s^2<--- struct member 'InternalParameters::quick_stop_deceleration' is never used.
    double torque_constant{0.};              // in Nm/A<--- struct member 'InternalParameters::torque_constant' is never used.
    double input_inertia{0.};                // in kg.m^2<--- struct member 'InternalParameters::input_inertia' is never used.
    double gear_ratio{0.};<--- struct member 'InternalParameters::gear_ratio' is never used.
};

struct SensoJoint::ConversionRatios {
    double to_rated_torque_unit_{0.};<--- struct member 'ConversionRatios::to_rated_torque_unit_' is never used.
    double from_rated_torque_unit_{0.};<--- struct member 'ConversionRatios::from_rated_torque_unit_' is never used.
    double to_output_torque_unit_{0.};<--- struct member 'ConversionRatios::to_output_torque_unit_' is never used.
    double from_output_torque_unit_{0.};<--- struct member 'ConversionRatios::from_output_torque_unit_' is never used.
    double from_rated_current_unit_{0.};<--- struct member 'ConversionRatios::from_rated_current_unit_' is never used.
    double to_velocity_unit_{0.};<--- struct member 'ConversionRatios::to_velocity_unit_' is never used.
    double from_velocity_unit_{0.};<--- struct member 'ConversionRatios::from_velocity_unit_' is never used.
    double to_acceleration_unit_{0.};<--- struct member 'ConversionRatios::to_acceleration_unit_' is never used.
    double from_acceleration_unit_{0.};<--- struct member 'ConversionRatios::from_acceleration_unit_' is never used.
    double to_position_unit_{0.};<--- struct member 'ConversionRatios::to_position_unit_' is never used.
    double from_position_unit_{0.};<--- struct member 'ConversionRatios::from_position_unit_' is never used.
    double to_damping_unit_{0.};<--- struct member 'ConversionRatios::to_damping_unit_' is never used.
    double to_spring_stiffness_unit_{0.};<--- struct member 'ConversionRatios::to_spring_stiffness_unit_' is never used.
    double to_endstop_stiffness_unit_{0.};<--- struct member 'ConversionRatios::to_endstop_stiffness_unit_' is never used.
    double from_torque_sensor_temperature_unit_{0.};<--- struct member 'ConversionRatios::from_torque_sensor_temperature_unit_' is never used.
    double from_drive_temperatue_unit_{0.};<--- struct member 'ConversionRatios::from_drive_temperatue_unit_' is never used.
    double to_time_unit_{0.};<--- struct member 'ConversionRatios::to_time_unit_' is never used.
    double from_time_unit_{0.};<--- struct member 'ConversionRatios::from_time_unit_' is never used.
};

} // namespace ethercatcpp