ethercatcpp
sensojoint.h
Go to the documentation of this file.
1 
9 #pragma once
10 #include <ethercatcpp/core.h>
11 
12 #include <cmath>
13 #include <string>
14 #include <optional>
15 #include <memory>
16 
21 namespace ethercatcpp {
30 public:
31  struct EndStop {
32  double stiffness{0.}; // Nm/rad
33  double damping{0.}; // Nm x s /rad
34  double position{0.}; // rad
35  double offset{0.}; // rad
36  };
37  struct Options {
38  double control_period_{0.}; // is s
39  double initial_adjusted_position{0.}; // in rad
40  double min_target_position{0.}, max_target_position{0.}; // in rad
41  double zero_pos_offset{0.}; // in rad
42  double zero_torque_offset{0.}; // in Nm
43  double max_motor_torque{0.}; // in Nm
44  double max_motor_velocity{0.}; // in rad / s
45  double output_inertia{0.}; // in kg.m^2
46  double profile_velocity{0.}; // in rad / s
47  double profile_acceleration{0.}; // in rad / s^2
48  double profile_deceleration{0.}; // in rad / s^2
49  double position_window{0.}; // in positive rad
50  double position_window_time{0.}; // in s
51  double velocity_threshold{0.}; // in rad / s
52  double velocity_threshold_time{0.}; // in s
53  double velocity_window{0.}; // in rad / s
54  double velocity_window_time{0.}; // in s
55  double torque_slope{0.}; // in Nm / s
57  bool enable_haptics{false};
58 
62  uint8_t read_digital_inputs{0};
63 
64  Options& offsets(double pos_offset, double torque_offset);
66  Options& inertia(double output);
67  Options& endstops(double stiffness, double damping);
68  Options& max(double motor_torque, double motor_vel);
69  Options& profile(double velocity, double accel = 0., double decel = 0.);
70  Options& torque_profile(double slope);
71  Options& position_reached(double window, double time);
72  Options& velocity_reached(double window, double time);
73  Options& standstill(double threshold = 0.001, double time = 0.001);
74  Options& controlled_outputs(uint8_t outputs, uint8_t init_value = 0,
75  uint8_t end_value = 0);
76  Options& read_inputs(uint8_t inputs);
77  };
78  static SensoJoint::Options gen_options(double control_period,
79  double min_target_pos,
80  double max_target_pos);
81 
83  enum class control_mode_t {
84  monitor,
96  };
97 
98  virtual bool profile_mode() const override;
99  virtual bool cyclic_mode() const override;
100  virtual bool position_mode() const override;
101  virtual bool velocity_mode() const override;
102  virtual bool torque_mode() const override;
103  virtual bool profile_mode_queried() const override;
104  virtual bool cyclic_mode_queried() const override;
105  virtual bool position_mode_queried() const override;
106  virtual bool velocity_mode_queried() const override;
107  virtual bool torque_mode_queried() const override;
108 
109  static bool is_advanced_mode(control_mode_t);
110  static bool is_profile_mode(control_mode_t);
111  static bool is_cyclic_mode(control_mode_t);
112  static bool is_position_mode(control_mode_t);
113  static bool is_velocity_mode(control_mode_t);
114  static bool is_torque_mode(control_mode_t);
115 
116  using operation_state_t = CIA402Device::state_t;
117 
122  SensoJoint(const Model& model);
123  SensoJoint(const Model& model, const Options& options);
124  SensoJoint(const SensoJoint&) = delete;
125  SensoJoint(SensoJoint&&) = delete;
126  SensoJoint& operator=(const SensoJoint&) = delete;
127  SensoJoint& operator=(SensoJoint&&) = delete;
128  virtual ~SensoJoint();
129 
137  void set_target_position(double target_position);
138 
146  void set_target_velocity(double target_velocity);
147 
149 
156  void set_target_output_torque(double target_torque);
157 
165  void set_target_motor_torque(double target_torque);
166 
178  void set_motor_torque_feedforward(double torque_offset);
179 
189  void set_output_torque_feedforward(double torque_offset);
190 
196  void set_external_load_torque_offset(double offset);
197 
208  void set_velocity_feedforward(double velocity_offset);
209 
215  [[nodiscard]] bool set_control_mode(control_mode_t control_mode);
216 
222 
227  std::string_view control_mode_str() const;
228 
234  static std::string_view control_mode_to_str(control_mode_t);
235 
240  double position() const;
241 
246  double velocity() const;
247 
252  double motor_torque() const;
253 
258  double motor_current() const;
259 
265  double output_torque() const;
266 
272  double friction_torque() const;
273 
278  double motor_temperature() const;
279 
284  double drive_temperature() const;
285 
291  double sensor_temperature() const;
292 
293  // Profile Position Mode (PPM) specific config
294 
299  bool following_error() const;
300 
305  bool standstill() const;
306 
312  bool sto_active() const;
313 
320  bool sbc_active() const;
321 
327  bool brake_applied() const;
328 
334  const Options& options() const;
335 
342  const std::string& fault() const;
343 
349  uint16_t error_code() const;
350 
356  bool warning() const;
357 
366  void set_spring(double neutral_position, double stiffness, double damping);
367 
373  enum IOFlag {
374  gpio_3_io_fpp_pin = 1 << 0, // Fast push-pull
375  gpio_4_out_pin = 1 << 1, // Slow push-pull
376  gpio_5_io_sbo_pin = 1 << 2, // Slow bi directionnal
377  gpio_6_io_sbo_pin = 1 << 3, // Slow bi directionnal
378  };
379 
387  void set_digital_outputs(uint8_t outputs);
388 
396  uint8_t digital_inputs() const;
397 
403  double initial_position() const;
404 
405 protected:
406  static bool advanced_mode(int8_t);
407  static bool profile_mode(int8_t);
408  static bool cyclic_mode(int8_t);
409  static bool position_mode(int8_t);
410  static bool velocity_mode(int8_t);
411  static bool torque_mode(int8_t);
412 
413 private:
414  void initialize(const std::optional<Options>& options);
415  void pdo_maps_configuration();
416 
417  void unpack_status_buffer();
418  void update_internal_state();
419 
420  // Used to change device state in async mode (only on init)
421  void read_base_units_values();
422  void find_initial_position();
423  void manage_ctrl_params(const std::optional<Options>& options);
424 
425  //----------------------------------------------------------------------------//
426  // INTERNAL STATE //
427  //----------------------------------------------------------------------------//
430  // Status/Command datas
431  struct OpaqueStateCommands;
432  std::unique_ptr<OpaqueStateCommands> sta_cmd_;
433  void bind_buffers();
434  static const std::map<int8_t, std::string_view> control_mode_decode_;
435  struct InternalParameters;
436  std::unique_ptr<InternalParameters> internal_parameters_;
437  struct ConversionRatios;
438  std::unique_ptr<ConversionRatios> conversion_;
439 
440  void manage_control_period(const std::optional<Options>& options);
441  void manage_torque_slope(const std::optional<Options>& options);
442  void manage_torque_offset(const std::optional<Options>& options);
443  void manage_position_offset(const std::optional<Options>& options);
449  void manage_user_max_motor_torque(const std::optional<Options>& options);
450  void manage_user_max_motor_velocity(const std::optional<Options>& options);
451  void manage_user_position_limits(const std::optional<Options>& options);
452  void manage_quickstop_config(const std::optional<Options>& options);
453  void manage_profile_config(const std::optional<Options>& options);
454  void manage_endstop_config(const std::optional<Options>& options);
455  void manage_digital_ios(const std::optional<Options>& options);
456  void manage_digital_ios_end();
457 
459  void force_target_output_torque(double target_torque);
460  void force_target_motor_torque(double target_torque);
461 
462  static int8_t control_mode_to_code(control_mode_t);
463  static control_mode_t control_code_to_mode(int8_t);
464 
465  static bool can_swap_mode(control_mode_t current, control_mode_t next);
466 };
467 
468 } // namespace ethercatcpp
ethercatcpp::SensoJoint::velocity_mode_queried
virtual bool velocity_mode_queried() const override
ethercatcpp::SensoJoint::profile_mode
virtual bool profile_mode() const override
ethercatcpp::SensoJoint::manage_control_period
void manage_control_period(const std::optional< Options > &options)
ethercatcpp::SensoJoint::control_mode_t::profile_output_position_vibration_damping
@ profile_output_position_vibration_damping
ethercatcpp::SensoJoint::following_error
bool following_error() const
In profile modes tell whether there is a following error.
ethercatcpp::SensoJoint::set_target_output_torque
void set_target_output_torque(double target_torque)
Function used to set the target torque on output shaft when device is command in output or basic torq...
ethercatcpp::SensoJoint::Options::inertia
Options & inertia(double output)
ethercatcpp::SensoJoint::motor_temperature
double motor_temperature() const
Get actual motor temperature in degrees celsius (°C).
ethercatcpp::SensoJoint::Options::position_reached
Options & position_reached(double window, double time)
ethercatcpp::SensoJoint::Options::velocity_window_time
double velocity_window_time
Definition: sensojoint.h:54
ethercatcpp::SensoJoint::sto_active
bool sto_active() const
Check whether STO(Safe torque off) security has been triggerred.
ethercatcpp::SensoJoint::Options::profile
Options & profile(double velocity, double accel=0., double decel=0.)
ethercatcpp::SensoJoint::control_code_to_mode
static control_mode_t control_code_to_mode(int8_t)
ethercatcpp::SensoJoint::control_mode_t::monitor
@ monitor
ethercatcpp::SensoJoint::Options::velocity_window
double velocity_window
Definition: sensojoint.h:53
ethercatcpp::SensoJoint::EndStop
Definition: sensojoint.h:31
ethercatcpp::SensoJoint::manage_digital_ios
void manage_digital_ios(const std::optional< Options > &options)
ethercatcpp::SensoJoint::Options::use_haptics
Options & use_haptics()
ethercatcpp::SensoJoint::EndStop::position
double position
Definition: sensojoint.h:34
ethercatcpp::SensoJoint::set_digital_outputs
void set_digital_outputs(uint8_t outputs)
Set value of digital outputs.
ethercatcpp::SensoJoint::operation_state_t
CIA402Device::state_t operation_state_t
Definition: sensojoint.h:116
ethercatcpp::SensoJoint::can_swap_mode
static bool can_swap_mode(control_mode_t current, control_mode_t next)
ethercatcpp::SensoJoint::unpack_status_buffer
void unpack_status_buffer()
ethercatcpp::SensoJoint::Options::max_motor_velocity
double max_motor_velocity
Definition: sensojoint.h:44
ethercatcpp::SensoJoint::cyclic_mode_queried
virtual bool cyclic_mode_queried() const override
ethercatcpp::SensoJoint::operator=
SensoJoint & operator=(const SensoJoint &)=delete
ethercatcpp::SensoJoint::initialize
void initialize(const std::optional< Options > &options)
ethercatcpp::SensoJoint::set_motor_torque_feedforward
void set_motor_torque_feedforward(double torque_offset)
Function used to set the motor torque offset.
ethercatcpp::SensoJoint::Options::torque_profile
Options & torque_profile(double slope)
ethercatcpp::SensoJoint::gen_options
static SensoJoint::Options gen_options(double control_period, double min_target_pos, double max_target_pos)
ethercatcpp::SensoJoint::brake_applied
bool brake_applied() const
Tell whether Sensojoint brake is applied.
ethercatcpp::SensoJoint::options
const Options & options() const
Get options used in the Sensojoint.
ethercatcpp::SensoJoint::manage_max_output_velocity
void manage_max_output_velocity()
ethercatcpp::SensoJoint::control_mode_t::cyclic_output_velocity
@ cyclic_output_velocity
ethercatcpp::SensoJoint::manage_torque_offset
void manage_torque_offset(const std::optional< Options > &options)
ethercatcpp::SensoJoint::position_mode_queried
virtual bool position_mode_queried() const override
ethercatcpp::SensoJoint::Options::torque_slope
double torque_slope
Definition: sensojoint.h:55
ethercatcpp::SensoJoint::MODEL_3010
@ MODEL_3010
Definition: sensojoint.h:118
ethercatcpp::SensoJoint::force_target_output_torque
void force_target_output_torque(double target_torque)
ethercatcpp::SensoJoint::Options
Definition: sensojoint.h:37
ethercatcpp::SensoJoint::Options::controlled_digital_outputs
uint8_t controlled_digital_outputs
Definition: sensojoint.h:59
ethercatcpp::SensoJoint::is_advanced_mode
static bool is_advanced_mode(control_mode_t)
ethercatcpp::SensoJoint::advanced_mode
static bool advanced_mode(int8_t)
ethercatcpp::SensoJoint::gpio_3_io_fpp_pin
@ gpio_3_io_fpp_pin
Definition: sensojoint.h:374
ethercatcpp::SensoJoint::Options::zero_pos_offset
double zero_pos_offset
Definition: sensojoint.h:41
ethercatcpp::SensoJoint::is_torque_mode
static bool is_torque_mode(control_mode_t)
ethercatcpp::SensoJoint::Options::zero_torque_offset
double zero_torque_offset
Definition: sensojoint.h:42
ethercatcpp::SensoJoint::torque_mode
virtual bool torque_mode() const override
ethercatcpp::SensoJoint::manage_user_max_motor_velocity
void manage_user_max_motor_velocity(const std::optional< Options > &options)
ethercatcpp::SensoJoint::velocity_mode
virtual bool velocity_mode() const override
ethercatcpp::SensoJoint::digital_inputs
uint8_t digital_inputs() const
Get value of digital inputs.
ethercatcpp::SensoJoint::is_profile_mode
static bool is_profile_mode(control_mode_t)
ethercatcpp::SensoJoint::Options::initial_adjusted_position
double initial_adjusted_position
Definition: sensojoint.h:39
ethercatcpp::SensoJoint::EndStop::stiffness
double stiffness
Definition: sensojoint.h:32
ethercatcpp::SensoJoint::manage_digital_ios_end
void manage_digital_ios_end()
ethercatcpp::SensoJoint::set_spring
void set_spring(double neutral_position, double stiffness, double damping)
Set value of spring haptics effect parameters in advanced torque controller.
ethercatcpp::coe::cia402::CIA402Device
A container of static functions and types used to ease implementation of CiA 402 devices.
Definition: cia402_device.h:55
ethercatcpp::SensoJoint::position_mode
virtual bool position_mode() const override
ethercatcpp::SensoJoint::force_target_motor_torque
void force_target_motor_torque(double target_torque)
ethercatcpp::SensoJoint::control_mode_t::cyclic_torque
@ cyclic_torque
ethercatcpp::SensoJoint::Options::position_window
double position_window
Definition: sensojoint.h:49
ethercatcpp::SensoJoint::Options::min_target_position
double min_target_position
Definition: sensojoint.h:40
ethercatcpp::SensoJoint::is_position_mode
static bool is_position_mode(control_mode_t)
ethercatcpp::SensoJoint::Options::controlled_outputs
Options & controlled_outputs(uint8_t outputs, uint8_t init_value=0, uint8_t end_value=0)
ethercatcpp::SensoJoint::Options::standstill
Options & standstill(double threshold=0.001, double time=0.001)
ethercatcpp::SensoJoint::Options::profile_deceleration
double profile_deceleration
Definition: sensojoint.h:48
ethercatcpp::SensoJoint::Options::control_period_
double control_period_
Definition: sensojoint.h:38
ethercatcpp::SensoJoint::Options::velocity_reached
Options & velocity_reached(double window, double time)
ethercatcpp::SensoJoint::manage_profile_config
void manage_profile_config(const std::optional< Options > &options)
ethercatcpp::SensoJoint::manage_user_max_motor_torque
void manage_user_max_motor_torque(const std::optional< Options > &options)
ethercatcpp::SensoJoint::manage_ctrl_params
void manage_ctrl_params(const std::optional< Options > &options)
ethercatcpp::SensoJoint::friction_torque
double friction_torque() const
Get actual friction torque in newton meter (Nm).
ethercatcpp::SensoJoint::pdo_maps_configuration
void pdo_maps_configuration()
ethercatcpp::SensoJoint::model_
Model model_
Definition: sensojoint.h:429
ethercatcpp::SensoJoint::Options::profile_acceleration
double profile_acceleration
Definition: sensojoint.h:47
ethercatcpp::SensoJoint::update_internal_state
void update_internal_state()
ethercatcpp::SensoJoint::control_mode_t::cyclic_position
@ cyclic_position
ethercatcpp::SensoJoint::control_mode_t::profile_position
@ profile_position
ethercatcpp::SensoJoint::is_cyclic_mode
static bool is_cyclic_mode(control_mode_t)
ethercatcpp::SensoJoint::set_target_position
void set_target_position(double target_position)
Function used to set the target position when device is command in position mode.
ethercatcpp::SensoJoint::control_mode_t::cyclic_velocity
@ cyclic_velocity
ethercatcpp::SensoJoint::control_mode_t::profile_output_velocity
@ profile_output_velocity
ethercatcpp::SensoJoint::Options::digital_outputs_end_value
uint8_t digital_outputs_end_value
Definition: sensojoint.h:61
ethercatcpp::SensoJoint::SensoJoint
SensoJoint(const Model &model)
Constructor of SensoJoint class.
ethercatcpp::SensoJoint::Options::position_window_time
double position_window_time
Definition: sensojoint.h:50
ethercatcpp::SensoJoint::manage_position_offset
void manage_position_offset(const std::optional< Options > &options)
ethercatcpp::SensoJoint::IOFlag
IOFlag
Flag to ease setting the controlled/read GPIOS.
Definition: sensojoint.h:373
ethercatcpp::SensoJoint::control_mode_t::profile_torque
@ profile_torque
ethercatcpp::SensoJoint::Options::profile_velocity
double profile_velocity
Definition: sensojoint.h:46
ethercatcpp::SensoJoint::MODEL_7016
@ MODEL_7016
Definition: sensojoint.h:118
ethercatcpp::SensoJoint::Options::velocity_threshold
double velocity_threshold
Definition: sensojoint.h:51
ethercatcpp::SensoJoint::set_velocity_feedforward
void set_velocity_feedforward(double velocity_offset)
Function used to set the velocity offset.
ethercatcpp::SensoJoint::velocity
double velocity() const
Get actual motor velocity in radians per second.
ethercatcpp::SensoJoint
This class describe the EtherCAT driver for Sensodrive sensojoint actuator. It allows to communicate ...
Definition: sensojoint.h:29
ethercatcpp::SensoJoint::manage_user_position_limits
void manage_user_position_limits(const std::optional< Options > &options)
ethercatcpp::SensoJoint::~SensoJoint
virtual ~SensoJoint()
ethercatcpp::SensoJoint::set_control_mode
bool set_control_mode(control_mode_t control_mode)
Select the desired control mode.
ethercatcpp::SensoJoint::set_target_motor_torque
void set_target_motor_torque(double target_torque)
Function used to set the target motor torque when device is command in basic torque mode.
ethercatcpp::SensoJoint::MODEL_4010
@ MODEL_4010
Definition: sensojoint.h:118
ethercatcpp::SensoJoint::Options::read_inputs
Options & read_inputs(uint8_t inputs)
ethercatcpp::SensoJoint::control_mode_str
std::string_view control_mode_str() const
Get current control mode used inside device as a string.
ethercatcpp::SensoJoint::options_
Options options_
Definition: sensojoint.h:428
ethercatcpp::SensoJoint::conversion_
std::unique_ptr< ConversionRatios > conversion_
Definition: sensojoint.h:437
ethercatcpp::SensoJoint::control_mode_to_code
static int8_t control_mode_to_code(control_mode_t)
ethercatcpp::SensoJoint::EndStop::offset
double offset
Definition: sensojoint.h:35
ethercatcpp::SensoJoint::torque_mode_queried
virtual bool torque_mode_queried() const override
ethercatcpp::SensoJoint::initial_position
double initial_position() const
Get the theoric initial position from drive configuration.
ethercatcpp::SensoJoint::internal_parameters_
std::unique_ptr< InternalParameters > internal_parameters_
Definition: sensojoint.h:435
ethercatcpp::SensoJoint::warning
bool warning() const
check if a warning is currently emitted.
ethercatcpp::SensoJoint::control_mode_t::cyclic_output_position_vibration_damping
@ cyclic_output_position_vibration_damping
ethercatcpp::SensoJoint::motor_current
double motor_current() const
Get actual motor current in A.
ethercatcpp::SensoJoint::set_external_load_torque_offset
void set_external_load_torque_offset(double offset)
Set value of external load torque offset (gravity)
ethercatcpp::SensoJoint::manage_torque_slope
void manage_torque_slope(const std::optional< Options > &options)
ethercatcpp::SensoJoint::fault
const std::string & fault() const
Get last fault description.
ethercatcpp::SensoJoint::set_target_velocity
void set_target_velocity(double target_velocity)
Function used to set the target velocity when device is command in velocity mode.
ethercatcpp::SensoJoint::Options::enable_haptics
bool enable_haptics
Definition: sensojoint.h:57
ethercatcpp::SensoJoint::manage_max_motor_current
void manage_max_motor_current()
ethercatcpp::SensoJoint::set_output_torque_feedforward
void set_output_torque_feedforward(double torque_offset)
Function used to set the output torque offset.
ethercatcpp::SensoJoint::sta_cmd_
std::unique_ptr< OpaqueStateCommands > sta_cmd_
Definition: sensojoint.h:431
ethercatcpp::SensoJoint::control_mode_t::profile_velocity
@ profile_velocity
ethercatcpp::SensoJoint::output_torque
double output_torque() const
Get actual output torque in newton meter (Nm).
ethercatcpp::SensoJoint::manage_max_motor_torque
void manage_max_motor_torque()
ethercatcpp::SensoJoint::Options::max_motor_torque
double max_motor_torque
Definition: sensojoint.h:43
ethercatcpp::SensoJoint::control_mode_decode_
static const std::map< int8_t, std::string_view > control_mode_decode_
Definition: sensojoint.h:434
ethercatcpp::SensoJoint::control_mode
control_mode_t control_mode() const
Get current control mode used inside device.
core.h
Main header file for ethercatcpp-core.
ethercatcpp::SensoJoint::gpio_4_out_pin
@ gpio_4_out_pin
Definition: sensojoint.h:375
ethercatcpp::SensoJoint::Options::read_digital_inputs
uint8_t read_digital_inputs
Definition: sensojoint.h:62
ethercatcpp::SensoJoint::read_base_units_values
void read_base_units_values()
ethercatcpp::SensoJoint::control_mode_t::cyclic_output_torque
@ cyclic_output_torque
ethercatcpp::SensoJoint::position
double position() const
Get actual motor position in radians.
ethercatcpp::SensoJoint::control_mode_t
control_mode_t
This enum define the possible "control modes" of the actuator.
Definition: sensojoint.h:83
ethercatcpp::SensoJoint::manage_max_motor_velocity
void manage_max_motor_velocity()
ethercatcpp::SensoJoint::error_code
uint16_t error_code() const
Get last error code.
ethercatcpp::SensoJoint::manage_endstop_config
void manage_endstop_config(const std::optional< Options > &options)
ethercatcpp
ethercatcpp::SensoJoint::Options::endstops
Options & endstops(double stiffness, double damping)
ethercatcpp::SensoJoint::bind_buffers
void bind_buffers()
ethercatcpp::SensoJoint::EndStop::damping
double damping
Definition: sensojoint.h:33
ethercatcpp::SensoJoint::find_initial_position
void find_initial_position()
ethercatcpp::SensoJoint::Options::max_target_position
double max_target_position
Definition: sensojoint.h:40
ethercatcpp::SensoJoint::is_velocity_mode
static bool is_velocity_mode(control_mode_t)
ethercatcpp::SensoJoint::sbc_active
bool sbc_active() const
Check whether SBC(Safe braque control) security has been triggerred.
ethercatcpp::SensoJoint::gpio_5_io_sbo_pin
@ gpio_5_io_sbo_pin
Definition: sensojoint.h:376
ethercatcpp::SensoJoint::Options::velocity_threshold_time
double velocity_threshold_time
Definition: sensojoint.h:52
ethercatcpp::SensoJoint::drive_temperature
double drive_temperature() const
Get actual drive temperature in degrees celsius (°C).
ethercatcpp::SensoJoint::cyclic_mode
virtual bool cyclic_mode() const override
ethercatcpp::SensoJoint::Options::output_inertia
double output_inertia
Definition: sensojoint.h:45
ethercatcpp::SensoJoint::Options::endstop_specs
EndStop endstop_specs
Definition: sensojoint.h:56
ethercatcpp::SensoJoint::motor_torque
double motor_torque() const
Get actual motor torque in newton meter.
ethercatcpp::SensoJoint::Options::digital_outputs_init_value
uint8_t digital_outputs_init_value
Definition: sensojoint.h:60
ethercatcpp::SensoJoint::Options::max
Options & max(double motor_torque, double motor_vel)
ethercatcpp::SensoJoint::sensor_temperature
double sensor_temperature() const
Get actual torque sensor temperature in degrees celsius (°C).
ethercatcpp::SensoJoint::MODEL_5016
@ MODEL_5016
Definition: sensojoint.h:118
ethercatcpp::SensoJoint::manage_max_output_torque
void manage_max_output_torque()
ethercatcpp::SensoJoint::Model
Model
Definition: sensojoint.h:118
ethercatcpp::SensoJoint::gpio_6_io_sbo_pin
@ gpio_6_io_sbo_pin
Definition: sensojoint.h:377
ethercatcpp::SensoJoint::standstill
bool standstill() const
In profile velocity modes tell whether the motor is standstill.
ethercatcpp::SensoJoint::manage_quickstop_config
void manage_quickstop_config(const std::optional< Options > &options)
ethercatcpp::SensoJoint::Options::offsets
Options & offsets(double pos_offset, double torque_offset)
ethercatcpp::SensoJoint::control_mode_to_str
static std::string_view control_mode_to_str(control_mode_t)
convert the operation state into a human readable information
ethercatcpp::SensoJoint::profile_mode_queried
virtual bool profile_mode_queried() const override
ethercatcpp::SensoJoint::manage_torque_based_quick_stop
void manage_torque_based_quick_stop()