command.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "hebi.h"
4 
5 #include <string>
6 
7 #include "color.hpp"
8 #include "gains.hpp"
9 #include "message_helpers.hpp"
10 #include "util.hpp"
11 
12 namespace hebi {
13 
33 class Command final {
34 public:
35  enum class ControlStrategy {
37  Off,
39  DirectPWM,
42  Strategy2,
45  Strategy3,
48  Strategy4,
49  };
50 
51  enum class MstopStrategy {
53  Disabled,
55  MotorOff,
57  HoldPosition,
58  };
59 
60  enum class PositionLimitStrategy {
62  HoldPosition,
64  DampedSpring,
66  MotorOff,
68  Disabled,
69  };
70 
71 protected:
73  class FloatField final {
74  public:
75 #ifndef DOXYGEN_OMIT_INTERNAL
77 #endif // DOXYGEN_OMIT_INTERNAL
78  explicit operator bool() const { return has(); }
92  bool has() const;
95  float get() const;
97  void set(float value);
99  void clear();
100 
102  private:
105  };
106 
112  class HighResAngleField final {
113  public:
114 #ifndef DOXYGEN_OMIT_INTERNAL
116 #endif // DOXYGEN_OMIT_INTERNAL
117  explicit operator bool() const { return has(); }
131  bool has() const;
137  double get() const;
149  void get(int64_t* revolutions, float* radian_offset) const;
154  void set(double radians);
161  void set(int64_t revolutions, float radian_offset);
163  void clear();
164 
166  private:
169  };
170 
173  class NumberedFloatField final {
174  public:
175 #ifndef DOXYGEN_OMIT_INTERNAL
177 #endif // DOXYGEN_OMIT_INTERNAL
178  bool has(size_t fieldNumber) const;
189  float get(size_t fieldNumber) const;
195  void set(size_t fieldNumber, float value);
201  void clear(size_t fieldNumber);
202 
204  private:
207  };
208 
210  class BoolField final {
211  public:
212 #ifndef DOXYGEN_OMIT_INTERNAL
214 #endif // DOXYGEN_OMIT_INTERNAL
215  bool has() const;
219  bool get() const;
221  void set(bool value);
223  void clear();
224 
226  private:
229  };
230 
232  class StringField final {
233  public:
234 #ifndef DOXYGEN_OMIT_INTERNAL
236 #endif // DOXYGEN_OMIT_INTERNAL
237  explicit operator bool() const { return has(); }
251  bool has() const;
254  std::string get() const;
256  void set(const std::string& value);
258  void clear();
259 
261  private:
264  };
265 
267  class FlagField final {
268  public:
269 #ifndef DOXYGEN_OMIT_INTERNAL
271 #endif // DOXYGEN_OMIT_INTERNAL
272  explicit operator bool() const { return has(); }
286  bool has() const;
288  void set();
290  void clear();
291 
293  private:
296  };
297 
299  template<typename T>
300  class EnumField final {
301  public:
302 #ifndef DOXYGEN_OMIT_INTERNAL
303  EnumField(HebiCommandRef& internal, HebiCommandEnumField field) : internal_(internal), field_(field) {}
304 #endif // DOXYGEN_OMIT_INTERNAL
305  explicit operator bool() const { return has(); }
319  bool has() const {
320  return enumGetter(internal_, field_, nullptr) == HebiStatusSuccess;
321  }
324  T get() const {
325  int32_t ret{};
326  enumGetter(internal_, field_, &ret);
327  return static_cast<T>(ret);
328  }
330  void set(T _value) {
331  int32_t value = static_cast<int32_t>(_value);
332  hebiCommandSetEnum(internal_, field_, &value);
333  }
335  void clear() {
336  hebiCommandSetEnum(internal_, field_, nullptr);
337  }
338 
340  private:
343  };
344 
346  class IoBank final {
347  public:
348 #ifndef DOXYGEN_OMIT_INTERNAL
349  IoBank(HebiCommandRef& internal, HebiCommandIoPinBank bank);
350 #endif // DOXYGEN_OMIT_INTERNAL
351  bool hasInt(size_t pinNumber) const;
362  bool hasFloat(size_t pinNumber) const;
368  int64_t getInt(size_t pinNumber) const;
375  float getFloat(size_t pinNumber) const;
381  void setInt(size_t pinNumber, int64_t value);
387  void setFloat(size_t pinNumber, float value);
392  void clear(size_t pinNumber);
393 
395  private:
398  };
400  class LedField final {
401  public:
402 #ifndef DOXYGEN_OMIT_INTERNAL
403  LedField(HebiCommandRef& internal, HebiCommandLedField field);
404 #endif // DOXYGEN_OMIT_INTERNAL
405  bool has() const;
420  Color get() const;
426  void set(const Color& color);
431  void clear();
432 
434  private:
437  };
438 
440  class Io final {
441  public:
442 #ifndef DOXYGEN_OMIT_INTERNAL
443  Io(HebiCommandRef& internal)
444  : internal_(internal),
445  a_(internal, HebiCommandIoBankA),
446  b_(internal, HebiCommandIoBankB),
447  c_(internal, HebiCommandIoBankC),
448  d_(internal, HebiCommandIoBankD),
449  e_(internal, HebiCommandIoBankE),
450  f_(internal, HebiCommandIoBankF) {}
451 #endif // DOXYGEN_OMIT_INTERNAL
452 
453  // With all submessage and field getters: Note that the returned reference
454  // should not be used after the lifetime of this parent.
455 
456  // Subfields ----------------
457 
459  IoBank& a() { return a_; }
461  const IoBank& a() const { return a_; }
463  IoBank& b() { return b_; }
465  const IoBank& b() const { return b_; }
467  IoBank& c() { return c_; }
469  const IoBank& c() const { return c_; }
471  IoBank& d() { return d_; }
473  const IoBank& d() const { return d_; }
475  IoBank& e() { return e_; }
477  const IoBank& e() const { return e_; }
479  IoBank& f() { return f_; }
481  const IoBank& f() const { return f_; }
482 
484  private:
486 
493  };
494 
496 
498  class Settings final {
499  protected:
501  class Actuator final {
502  public:
503 #ifndef DOXYGEN_OMIT_INTERNAL
505  : position_gains_(internal, HebiCommandFloatPositionKp, HebiCommandBoolPositionDOnError),
508  spring_constant_(internal, HebiCommandFloatSpringConstant),
509  reference_position_(internal, HebiCommandFloatReferencePosition),
510  reference_effort_(internal, HebiCommandFloatReferenceEffort),
511  velocity_limit_min_(internal, HebiCommandFloatVelocityLimitMin),
512  velocity_limit_max_(internal, HebiCommandFloatVelocityLimitMax),
513  effort_limit_min_(internal, HebiCommandFloatEffortLimitMin),
514  effort_limit_max_(internal, HebiCommandFloatEffortLimitMax),
515  position_limit_min_(internal, HebiCommandHighResAnglePositionLimitMin),
516  position_limit_max_(internal, HebiCommandHighResAnglePositionLimitMax),
517  control_strategy_(internal, HebiCommandEnumControlStrategy),
518  mstop_strategy_(internal, HebiCommandEnumMstopStrategy),
519  min_position_limit_strategy_(internal, HebiCommandEnumMinPositionLimitStrategy),
520  max_position_limit_strategy_(internal, HebiCommandEnumMaxPositionLimitStrategy) {}
521 #endif // DOXYGEN_OMIT_INTERNAL
522 
523  // With all submessage and field getters: Note that the returned reference
524  // should not be used after the lifetime of this parent.
525 
526  // Submessages ----------------
527 
529  CommandGains& positionGains() { return position_gains_; }
531  const CommandGains& positionGains() const { return position_gains_; }
533  CommandGains& velocityGains() { return velocity_gains_; }
535  const CommandGains& velocityGains() const { return velocity_gains_; }
537  CommandGains& effortGains() { return effort_gains_; }
539  const CommandGains& effortGains() const { return effort_gains_; }
540 
541  // Subfields ----------------
542 
544  FloatField& springConstant() { return spring_constant_; }
546  const FloatField& springConstant() const { return spring_constant_; }
549  FloatField& referencePosition() { return reference_position_; }
552  const FloatField& referencePosition() const { return reference_position_; }
554  FloatField& referenceEffort() { return reference_effort_; }
556  const FloatField& referenceEffort() const { return reference_effort_; }
558  FloatField& velocityLimitMin() { return velocity_limit_min_; }
560  const FloatField& velocityLimitMin() const { return velocity_limit_min_; }
562  FloatField& velocityLimitMax() { return velocity_limit_max_; }
564  const FloatField& velocityLimitMax() const { return velocity_limit_max_; }
566  FloatField& effortLimitMin() { return effort_limit_min_; }
568  const FloatField& effortLimitMin() const { return effort_limit_min_; }
570  FloatField& effortLimitMax() { return effort_limit_max_; }
572  const FloatField& effortLimitMax() const { return effort_limit_max_; }
574  HighResAngleField& positionLimitMin() { return position_limit_min_; }
576  const HighResAngleField& positionLimitMin() const { return position_limit_min_; }
578  HighResAngleField& positionLimitMax() { return position_limit_max_; }
580  const HighResAngleField& positionLimitMax() const { return position_limit_max_; }
582  EnumField<ControlStrategy>& controlStrategy() { return control_strategy_; }
584  const EnumField<ControlStrategy>& controlStrategy() const { return control_strategy_; }
586  EnumField<MstopStrategy>& mstopStrategy() { return mstop_strategy_; }
588  const EnumField<MstopStrategy>& mstopStrategy() const { return mstop_strategy_; }
590  EnumField<PositionLimitStrategy>& minPositionLimitStrategy() { return min_position_limit_strategy_; }
592  const EnumField<PositionLimitStrategy>& minPositionLimitStrategy() const { return min_position_limit_strategy_; }
594  EnumField<PositionLimitStrategy>& maxPositionLimitStrategy() { return max_position_limit_strategy_; }
596  const EnumField<PositionLimitStrategy>& maxPositionLimitStrategy() const { return max_position_limit_strategy_; }
597 
599  private:
603 
617  };
618 
620  class Imu final {
621  public:
622 #ifndef DOXYGEN_OMIT_INTERNAL
623  Imu(HebiCommandRef& internal)
624  : internal_(internal), accel_includes_gravity_(internal, HebiCommandBoolAccelIncludesGravity) {}
625 #endif // DOXYGEN_OMIT_INTERNAL
626 
627  // With all submessage and field getters: Note that the returned reference
628  // should not be used after the lifetime of this parent.
629 
630  // Subfields ----------------
631 
633  BoolField& accelIncludesGravity() { return accel_includes_gravity_; }
635  const BoolField& accelIncludesGravity() const { return accel_includes_gravity_; }
636 
638  private:
640 
642  };
643 
644  public:
645 #ifndef DOXYGEN_OMIT_INTERNAL
646  Settings(HebiCommandPtr internal_ptr, HebiCommandRef& internal)
647  : internal_(internal),
648  actuator_(internal),
649  imu_(internal),
650  name_(internal_ptr, HebiCommandStringName),
651  family_(internal_ptr, HebiCommandStringFamily),
652  save_current_settings_(internal, HebiCommandFlagSaveCurrentSettings) {}
653 #endif // DOXYGEN_OMIT_INTERNAL
654 
655  // With all submessage and field getters: Note that the returned reference
656  // should not be used after the lifetime of this parent.
657 
658  // Submessages ----------------
659 
661  Actuator& actuator() { return actuator_; }
663  const Actuator& actuator() const { return actuator_; }
665  Imu& imu() { return imu_; }
667  const Imu& imu() const { return imu_; }
668 
669  // Subfields ----------------
670 
673  StringField& name() { return name_; }
676  const StringField& name() const { return name_; }
679  StringField& family() { return family_; }
682  const StringField& family() const { return family_; }
684  FlagField& saveCurrentSettings() { return save_current_settings_; }
686  const FlagField& saveCurrentSettings() const { return save_current_settings_; }
687 
689 
690  private:
692 
695 
699  };
700 
702  class Actuator final {
703  public:
704 #ifndef DOXYGEN_OMIT_INTERNAL
706  : internal_(internal),
707  velocity_(internal, HebiCommandFloatVelocity),
708  effort_(internal, HebiCommandFloatEffort),
709  position_(internal, HebiCommandHighResAnglePosition) {}
710 #endif // DOXYGEN_OMIT_INTERNAL
711 
712  // With all submessage and field getters: Note that the returned reference
713  // should not be used after the lifetime of this parent.
714 
715  // Subfields ----------------
716 
718  FloatField& velocity() { return velocity_; }
720  const FloatField& velocity() const { return velocity_; }
722  FloatField& effort() { return effort_; }
724  const FloatField& effort() const { return effort_; }
726  HighResAngleField& position() { return position_; }
728  const HighResAngleField& position() const { return position_; }
729 
731  private:
733 
737  };
738 
739 private:
746 
747 public:
748 #ifndef DOXYGEN_OMIT_INTERNAL
749 
754 #endif // DOXYGEN_OMIT_INTERNAL
755 
758  Command(Command&& other);
759 
760  // With all submessage and field getters: Note that the returned reference
761  // should not be used after the lifetime of this parent.
762 
763  // Submessages -------------------------------------------------------------
764 
766  Io& io() { return io_; }
768  const Io& io() const { return io_; }
770  Settings& settings() { return settings_; }
772  const Settings& settings() const { return settings_; }
774  Actuator& actuator() { return actuator_; }
776  const Actuator& actuator() const { return actuator_; }
777 
778  // Subfields -------------------------------------------------------------
779 
780 #ifndef DOXYGEN_OMIT_INTERNAL
781  NumberedFloatField& debug() { return debug_; }
784  const NumberedFloatField& debug() const { return debug_; }
785 #endif // DOXYGEN_OMIT_INTERNAL
786  StringField& appendLog() { return append_log_; }
789  const StringField& appendLog() const { return append_log_; }
791  FlagField& reset() { return reset_; }
793  const FlagField& reset() const { return reset_; }
795  FlagField& boot() { return boot_; }
797  const FlagField& boot() const { return boot_; }
801  const FlagField& stopBoot() const { return stop_boot_; }
805  const FlagField& clearLog() const { return clear_log_; }
807  LedField& led() { return led_; }
809  const LedField& led() const { return led_; }
810 
815 
816  /* Disable move assigment operator. */
817  Command& operator=(Command&& other) = delete;
818 
819 private:
823 
831 };
832 
833 } // namespace hebi
The name for this module. The string must be null-terminated and less than 21 characters.
Definition: hebi.h:125
const EnumField< PositionLimitStrategy > & maxPositionLimitStrategy() const
The position limit strategy (at the maximum position) for the actuator.
Definition: command.hpp:596
const FloatField & velocityLimitMin() const
The firmware safety limit for the minimum allowed velocity.
Definition: command.hpp:560
IoBank & f()
I/O pin bank f (pins 1-8 available)
Definition: command.hpp:479
FlagField & reset()
Restart the module.
Definition: command.hpp:791
const CommandGains & velocityGains() const
Controller gains for the velocity PID loop.
Definition: command.hpp:535
FlagField & saveCurrentSettings()
Indicates if the module should save the current values of all of its settings.
Definition: command.hpp:684
HebiCommandBoolField const field_
Definition: command.hpp:228
The spring constant of the module.
Definition: hebi.h:98
IoBank & d()
I/O pin bank d (pins 1-8 available)
Definition: command.hpp:471
const FloatField & velocity() const
Velocity of the module output (post-spring), in radians/second.
Definition: command.hpp:720
HebiCommandHighResAngleField
Definition: hebi.h:106
const FloatField & effort() const
Effort at the module output; units vary (e.g., N * m for rotational joints and N for linear stages)...
Definition: command.hpp:724
HighResAngleField & positionLimitMax()
The firmware safety limit for the maximum allowed position.
Definition: command.hpp:578
#define HEBI_DISABLE_COPY(Class)
Definition: util.hpp:16
const FloatField & springConstant() const
The spring constant of the module.
Definition: command.hpp:546
HebiCommandIoPinBank const bank_
Definition: command.hpp:397
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
Definition: hebi.h:84
A message field representable by a bool value.
Definition: command.hpp:210
HebiCommandRef & internal_
Definition: command.hpp:435
Actuator & actuator()
Actuator-specific commands.
Definition: command.hpp:774
Actuator-specific commands.
Definition: command.hpp:702
void hebiCommandSetEnum(HebiCommandRef &command, HebiCommandEnumField field, const int32_t *value)
Io & io()
Any available digital or analog output pins on the device.
Definition: command.hpp:766
Settings & settings()
Module settings that are typically changed at a slower rate.
Definition: command.hpp:770
const StringField & name() const
Definition: command.hpp:676
The firmware safety limit for the minimum allowed position.
Definition: hebi.h:109
const FlagField & boot() const
Boot the module from bootloader into application.
Definition: command.hpp:797
FloatField & springConstant()
The spring constant of the module.
Definition: command.hpp:544
FloatField & effortLimitMin()
The firmware safety limit for the minimum allowed effort.
Definition: command.hpp:566
FlagField save_current_settings_
Definition: command.hpp:698
struct HebiCommand_ * HebiCommandPtr
Typedefs.
Definition: hebi.h:444
A message field for interfacing with a bank of I/O pins.
Definition: command.hpp:346
const Actuator & actuator() const
Actuator-specific commands.
Definition: command.hpp:776
FlagField & boot()
Boot the module from bootloader into application.
Definition: command.hpp:795
Actuator & actuator()
Actuator-specific settings, such as controller gains.
Definition: command.hpp:661
StringField & family()
Definition: command.hpp:679
Command objects have various fields that can be set; when sent to the module, these fields control in...
Definition: command.hpp:33
EnumField< PositionLimitStrategy > max_position_limit_strategy_
Definition: command.hpp:616
IoBank & a()
I/O pin bank a (pins 1-8 available)
Definition: command.hpp:459
A message field representable by a std::string.
Definition: command.hpp:232
Command(HebiCommandPtr)
Wraps an existing C-style object that is managed by its parent. NOTE: this should not be used except ...
Definition: command.cpp:208
BoolField & accelIncludesGravity()
Whether to include acceleration due to gravity in acceleration feedback.
Definition: command.hpp:633
Definition: arm.cpp:5
The firmware safety limit for the minimum allowed velocity.
Definition: hebi.h:101
HebiCommandRef & internal_
Definition: command.hpp:691
I/O pin bank b (pins 1-8 available)
Definition: hebi.h:147
const HighResAngleField & positionLimitMin() const
The firmware safety limit for the minimum allowed position.
Definition: command.hpp:576
A message field for interfacing with an LED.
Definition: command.hpp:400
HebiCommandRef internal_ref_
Definition: command.hpp:745
HebiCommandNumberedFloatField const field_
Definition: command.hpp:206
HebiCommandRef & internal_
Definition: command.hpp:396
const FlagField & clearLog() const
Clears the log message on the module.
Definition: command.hpp:805
The firmware safety limit for the maximum allowed velocity.
Definition: hebi.h:102
The motor is not given power (equivalent to a 0 PWM value)
HebiCommandHighResAngleField const field_
Definition: command.hpp:168
bool has() const
True if (and only if) the field has a value.
Definition: command.hpp:319
const LedField & led() const
The module&#39;s LED.
Definition: command.hpp:809
CommandGains & effortGains()
Controller gains for the effort PID loop.
Definition: command.hpp:537
HebiCommandIoPinBank
Definition: hebi.h:144
#define HEBI_DISABLE_COPY_MOVE(Class)
Definition: util.hpp:6
The position limit strategy (at the minimum position) for the actuator.
Definition: hebi.h:141
const FloatField & effortLimitMin() const
The firmware safety limit for the minimum allowed effort.
Definition: command.hpp:568
const EnumField< MstopStrategy > & mstopStrategy() const
The motion stop strategy for the actuator.
Definition: command.hpp:588
IoBank & c()
I/O pin bank c (pins 1-8 available)
Definition: command.hpp:467
HebiCommandFloatField const field_
Definition: command.hpp:104
HighResAngleField & position()
Position of the module output (post-spring), in radians.
Definition: command.hpp:726
CommandGains & velocityGains()
Controller gains for the velocity PID loop.
Definition: command.hpp:533
EnumField< MstopStrategy > mstop_strategy_
Definition: command.hpp:614
Velocity of the module output (post-spring).
Definition: hebi.h:57
Actuator-specific settings, such as controller gains.
Definition: command.hpp:501
const Io & io() const
Any available digital or analog output pins on the device.
Definition: command.hpp:768
EnumField< PositionLimitStrategy > min_position_limit_strategy_
Definition: command.hpp:615
Module settings that are typically changed at a slower rate.
Definition: command.hpp:498
EnumField(HebiCommandRef &internal, HebiCommandEnumField field)
Definition: command.hpp:303
const FlagField & reset() const
Restart the module.
Definition: command.hpp:793
A two-state message field (either set/true or cleared/false).
Definition: command.hpp:267
FlagField reset_
Definition: command.hpp:826
const FloatField & referenceEffort() const
The internal effort reference offset (setting this matches the current effort to the given reference ...
Definition: command.hpp:556
const IoBank & e() const
I/O pin bank e (pins 1-8 available)
Definition: command.hpp:477
StringField & appendLog()
Appends to the current log message on the module.
Definition: command.hpp:787
IoBank & b()
I/O pin bank b (pins 1-8 available)
Definition: command.hpp:463
Imu(HebiCommandRef &internal)
Definition: command.hpp:623
A message field containing a numbered set of single-precision floating point values.
Definition: command.hpp:173
HebiCommandFlagField const field_
Definition: command.hpp:295
const Settings & settings() const
Module settings that are typically changed at a slower rate.
Definition: command.hpp:772
const IoBank & c() const
I/O pin bank c (pins 1-8 available)
Definition: command.hpp:469
HebiCommandPtr const internal_
Definition: command.hpp:262
HebiStatusCode enumGetter(const RefT &ref, MetadataT &metadata, int field, int32_t *value)
const IoBank & b() const
I/O pin bank b (pins 1-8 available)
Definition: command.hpp:465
HebiCommandFloatField
Command Enums.
Definition: hebi.h:55
HebiCommandStringField
Definition: hebi.h:123
Io(HebiCommandRef &internal)
Definition: command.hpp:443
const EnumField< PositionLimitStrategy > & minPositionLimitStrategy() const
The position limit strategy (at the minimum position) for the actuator.
Definition: command.hpp:592
FloatField & effortLimitMax()
The firmware safety limit for the maximum allowed effort.
Definition: command.hpp:570
HebiCommandNumberedFloatField
Definition: hebi.h:112
Set the internal encoder reference offset so that the current position matches the given reference co...
Definition: hebi.h:99
HighResAngleField position_limit_max_
Definition: command.hpp:612
EnumField< ControlStrategy > & controlStrategy()
How the position, velocity, and effort PID loops are connected in order to control motor PWM...
Definition: command.hpp:582
How the position, velocity, and effort PID loops are connected in order to control motor PWM...
Definition: hebi.h:139
FlagField clear_log_
Definition: command.hpp:829
const Imu & imu() const
IMU-specific settings.
Definition: command.hpp:667
HighResAngleField & positionLimitMin()
The firmware safety limit for the minimum allowed position.
Definition: command.hpp:574
HebiCommandLedField const field_
Definition: command.hpp:436
FloatField & velocity()
Velocity of the module output (post-spring), in radians/second.
Definition: command.hpp:718
NumberedFloatField & debug()
Values for internal debug functions (channel 1-9 available).
Definition: command.hpp:782
Any available digital or analog output pins on the device.
Definition: command.hpp:440
const StringField & appendLog() const
Appends to the current log message on the module.
Definition: command.hpp:789
HebiCommandFlagField
Definition: hebi.h:129
StringField append_log_
Definition: command.hpp:825
EnumField< ControlStrategy > control_strategy_
Definition: command.hpp:613
const IoBank & d() const
I/O pin bank d (pins 1-8 available)
Definition: command.hpp:473
FloatField & referenceEffort()
The internal effort reference offset (setting this matches the current effort to the given reference ...
Definition: command.hpp:554
LedField led_
Definition: command.hpp:830
HebiCommandRef & internal_
Definition: command.hpp:294
const FloatField & referencePosition() const
Definition: command.hpp:552
void clear()
Removes any currently set value for this field.
Definition: command.hpp:335
IoBank & e()
I/O pin bank e (pins 1-8 available)
Definition: command.hpp:475
Actuator actuator_
Definition: command.hpp:822
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
Definition: hebi.h:71
FlagField & clearLog()
Clears the log message on the module.
Definition: command.hpp:803
EnumField< PositionLimitStrategy > & maxPositionLimitStrategy()
The position limit strategy (at the maximum position) for the actuator.
Definition: command.hpp:594
HighResAngleField position_
Definition: command.hpp:736
const FlagField & stopBoot() const
Stop the module from automatically booting into application.
Definition: command.hpp:801
FlagField stop_boot_
Definition: command.hpp:828
HighResAngleField position_limit_min_
Definition: command.hpp:611
Actuator(HebiCommandRef &internal)
Definition: command.hpp:705
A message field for an angle measurement which does not lose precision at very high angles...
Definition: command.hpp:112
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
Definition: hebi.h:119
Imu & imu()
IMU-specific settings.
Definition: command.hpp:665
FlagField boot_
Definition: command.hpp:827
The firmware safety limit for the minimum allowed effort.
Definition: hebi.h:103
const CommandGains & positionGains() const
Controller gains for the position PID loop.
Definition: command.hpp:531
EnumField< MstopStrategy > & mstopStrategy()
The motion stop strategy for the actuator.
Definition: command.hpp:586
const HebiCommandRef & internal_
Definition: command.hpp:732
Settings settings_
Definition: command.hpp:821
HebiCommandRef & internal_
Definition: command.hpp:103
HebiCommandEnumField const field_
Definition: command.hpp:342
Position of the module output (post-spring).
Definition: hebi.h:108
const HebiCommandRef & internal_
Definition: command.hpp:639
FloatField & velocityLimitMax()
The firmware safety limit for the maximum allowed velocity.
Definition: command.hpp:562
NumberedFloatField debug_
Definition: command.hpp:824
HebiCommandRef & internal_
Definition: command.hpp:341
I/O pin bank d (pins 1-8 available)
Definition: hebi.h:149
Set the internal effort reference offset so that the current effort matches the given reference comma...
Definition: hebi.h:100
Effort at the module output; units vary (e.g., N * m for rotational joints and N for linear stages)...
Definition: hebi.h:58
IMU-specific settings.
Definition: command.hpp:620
HebiCommandEnumField
Definition: hebi.h:137
StringField & name()
Definition: command.hpp:673
LedField & led()
The module&#39;s LED.
Definition: command.hpp:807
const FloatField & effortLimitMax() const
The firmware safety limit for the maximum allowed effort.
Definition: command.hpp:572
HebiCommandStringField const field_
Definition: command.hpp:263
HebiCommandRef & internal_
Definition: command.hpp:227
Actuator(HebiCommandRef &internal)
Definition: command.hpp:504
const IoBank & f() const
I/O pin bank f (pins 1-8 available)
Definition: command.hpp:481
const BoolField & accelIncludesGravity() const
Whether to include acceleration due to gravity in acceleration feedback.
Definition: command.hpp:635
const FlagField & saveCurrentSettings() const
Indicates if the module should save the current values of all of its settings.
Definition: command.hpp:686
HebiCommandLedField
Definition: hebi.h:153
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
Definition: hebi.h:118
const IoBank & a() const
I/O pin bank a (pins 1-8 available)
Definition: command.hpp:461
const HighResAngleField & positionLimitMax() const
The firmware safety limit for the maximum allowed position.
Definition: command.hpp:580
const EnumField< ControlStrategy > & controlStrategy() const
How the position, velocity, and effort PID loops are connected in order to control motor PWM...
Definition: command.hpp:584
HebiCommandBoolField
Definition: hebi.h:116
const Actuator & actuator() const
Actuator-specific settings, such as controller gains.
Definition: command.hpp:663
Settings(HebiCommandPtr internal_ptr, HebiCommandRef &internal)
Definition: command.hpp:646
A direct PWM value (-1 to 1) can be sent to the motor (subject to onboard safety limiting).
const CommandGains & effortGains() const
Controller gains for the effort PID loop.
Definition: command.hpp:539
Structure to describe an RGB color.
Definition: color.hpp:8
CommandGains & positionGains()
Controller gains for the position PID loop.
Definition: command.hpp:529
const StringField & family() const
Definition: command.hpp:682
A message field representable by a single-precision floating point value.
Definition: command.hpp:73
Command & operator=(Command &&other)=delete
const HighResAngleField & position() const
Position of the module output (post-spring), in radians.
Definition: command.hpp:728
FloatField & velocityLimitMin()
The firmware safety limit for the minimum allowed velocity.
Definition: command.hpp:558
const NumberedFloatField & debug() const
Values for internal debug functions (channel 1-9 available).
Definition: command.hpp:784
The motion stop strategy for the actuator.
Definition: hebi.h:140
HebiCommandRef & internal_
Definition: command.hpp:485
I/O pin bank c (pins 1-8 available)
Definition: hebi.h:148
I/O pin bank a (pins 1-8 available)
Definition: hebi.h:146
HebiCommandPtr internal_
Definition: command.hpp:744
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
Definition: hebi.h:97
const FloatField & velocityLimitMax() const
The firmware safety limit for the maximum allowed velocity.
Definition: command.hpp:564
EnumField< PositionLimitStrategy > & minPositionLimitStrategy()
The position limit strategy (at the minimum position) for the actuator.
Definition: command.hpp:590
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
Definition: hebi.h:120
I/O pin bank e (pins 1-8 available)
Definition: hebi.h:150
FlagField & stopBoot()
Stop the module from automatically booting into application.
Definition: command.hpp:799
A message field representable by an enum of a given type.
Definition: command.hpp:300
FloatField & effort()
Effort at the module output; units vary (e.g., N * m for rotational joints and N for linear stages)...
Definition: command.hpp:722


hebi_cpp_api_ros
Author(s): Chris Bollinger , Matthew Tesch
autogenerated on Thu May 28 2020 03:14:44