86 #ifndef DOXYGEN_OMIT_INTERNAL 87 FloatField(
const HebiInfoRef&
internal, HebiInfoFloatField field);
88 #endif // DOXYGEN_OMIT_INTERNAL 89 explicit operator bool()
const {
return has(); }
110 const HebiInfoRef& internal_;
111 HebiInfoFloatField
const field_;
121 #ifndef DOXYGEN_OMIT_INTERNAL 123 #endif // DOXYGEN_OMIT_INTERNAL 124 explicit operator bool()
const {
return has(); }
156 void get(int64_t* revolutions,
float* radian_offset)
const;
160 const HebiInfoRef& internal_;
161 HebiInfoHighResAngleField
const field_;
167 #ifndef DOXYGEN_OMIT_INTERNAL 168 BoolField(
const HebiInfoRef&
internal, HebiInfoBoolField field);
169 #endif // DOXYGEN_OMIT_INTERNAL 178 const HebiInfoRef& internal_;
179 HebiInfoBoolField
const field_;
185 #ifndef DOXYGEN_OMIT_INTERNAL 186 StringField(HebiInfoPtr
internal, HebiInfoStringField field);
187 #endif // DOXYGEN_OMIT_INTERNAL 188 explicit operator bool()
const {
return has(); }
205 std::string
get()
const;
209 HebiInfoPtr
const internal_;
210 HebiInfoStringField
const field_;
216 #ifndef DOXYGEN_OMIT_INTERNAL 217 FlagField(
const HebiInfoRef&
internal, HebiInfoFlagField field);
218 #endif // DOXYGEN_OMIT_INTERNAL 219 explicit operator bool()
const {
return has(); }
237 const HebiInfoRef& internal_;
238 HebiInfoFlagField
const field_;
245 #ifndef DOXYGEN_OMIT_INTERNAL 246 EnumField(
const HebiInfoRef&
internal, HebiInfoEnumField field) : internal_(
internal), field_(field) {}
247 #endif // DOXYGEN_OMIT_INTERNAL 248 explicit operator bool()
const {
return has(); }
263 return (
enumGetter(internal_, field_,
nullptr) == HebiStatusSuccess);
270 return static_cast<T>(ret);
275 const HebiInfoRef& internal_;
276 HebiInfoEnumField
const field_;
282 #ifndef DOXYGEN_OMIT_INTERNAL 283 IoBank(HebiInfoPtr
internal, HebiInfoRef& internal_ref, HebiInfoIoPinBank bank);
284 #endif // DOXYGEN_OMIT_INTERNAL 285 bool hasLabel(
size_t pinNumber)
const;
296 std::string
getLabel(
size_t pinNumber)
const;
300 HebiInfoPtr internal_;
301 HebiInfoRef& internal_ref_;
302 HebiInfoIoPinBank
const bank_;
307 #ifndef DOXYGEN_OMIT_INTERNAL 308 LedField(
const HebiInfoRef&
internal, HebiInfoLedField field);
309 #endif // DOXYGEN_OMIT_INTERNAL 310 explicit operator bool()
const {
return hasColor(); }
330 const HebiInfoRef& internal_;
331 HebiInfoLedField
const field_;
337 #ifndef DOXYGEN_OMIT_INTERNAL 338 Io(HebiInfoPtr
internal, HebiInfoRef& internal_ref)
339 : a_(
internal, internal_ref, HebiInfoIoBankA),
340 b_(
internal, internal_ref, HebiInfoIoBankB),
341 c_(
internal, internal_ref, HebiInfoIoBankC),
342 d_(
internal, internal_ref, HebiInfoIoBankD),
343 e_(
internal, internal_ref, HebiInfoIoBankE),
344 f_(
internal, internal_ref, HebiInfoIoBankF) {}
345 #endif // DOXYGEN_OMIT_INTERNAL 395 #ifndef DOXYGEN_OMIT_INTERNAL 396 Actuator(
const HebiInfoRef&
internal)
397 : position_gains_(
internal, HebiInfoFloatPositionKp, HebiInfoBoolPositionDOnError),
398 velocity_gains_(
internal, HebiInfoFloatVelocityKp, HebiInfoBoolVelocityDOnError),
399 effort_gains_(
internal, HebiInfoFloatEffortKp, HebiInfoBoolEffortDOnError),
400 spring_constant_(
internal, HebiInfoFloatSpringConstant),
401 velocity_limit_min_(
internal, HebiInfoFloatVelocityLimitMin),
402 velocity_limit_max_(
internal, HebiInfoFloatVelocityLimitMax),
403 effort_limit_min_(
internal, HebiInfoFloatEffortLimitMin),
404 effort_limit_max_(
internal, HebiInfoFloatEffortLimitMax),
405 position_limit_min_(
internal, HebiInfoHighResAnglePositionLimitMin),
406 position_limit_max_(
internal, HebiInfoHighResAnglePositionLimitMax),
407 control_strategy_(
internal, HebiInfoEnumControlStrategy),
408 mstop_strategy_(
internal, HebiInfoEnumMstopStrategy),
409 min_position_limit_strategy_(
internal, HebiInfoEnumMinPositionLimitStrategy),
410 max_position_limit_strategy_(
internal, HebiInfoEnumMaxPositionLimitStrategy) {}
411 #endif // DOXYGEN_OMIT_INTERNAL 472 #ifndef DOXYGEN_OMIT_INTERNAL 473 Imu(
const HebiInfoRef&
internal)
474 : accel_includes_gravity_(
internal, HebiInfoBoolAccelIncludesGravity) {}
475 #endif // DOXYGEN_OMIT_INTERNAL 491 #ifndef DOXYGEN_OMIT_INTERNAL 492 Settings(HebiInfoPtr internal_ptr,
const HebiInfoRef&
internal)
493 : actuator_(internal),
495 name_(internal_ptr, HebiInfoStringName),
496 family_(internal_ptr, HebiInfoStringFamily),
497 save_current_settings_(internal, HebiInfoFlagSaveCurrentSettings) {}
498 #endif // DOXYGEN_OMIT_INTERNAL 532 #ifndef DOXYGEN_OMIT_INTERNAL 533 Actuator(
const HebiInfoRef&
internal) : calibration_state_(
internal, HebiInfoEnumCalibrationState) {}
534 #endif // DOXYGEN_OMIT_INTERNAL 554 HebiInfoPtr internal_;
555 HebiInfoRef internal_ref_;
558 #ifndef DOXYGEN_OMIT_INTERNAL 564 #endif // DOXYGEN_OMIT_INTERNAL 578 const Io&
io()
const {
return io_; }
const FlagField & saveCurrentSettings() const
Indicates if the module should save the current values of all of its settings.
Definition: info.hpp:517
std::string get() const
If the field has a value, returns a copy of that value; otherwise, returns a default.
Definition: info.cpp:58
const HighResAngleField & positionLimitMin() const
The firmware safety limit for the minimum allowed position.
Definition: info.hpp:438
Module settings that are typically changed at a slower rate.
Definition: info.hpp:390
IoBank & f()
I/O pin bank f (pins 1-8 available)
Definition: info.hpp:373
bool has() const
True if (and only if) the field has a value.
Definition: info.cpp:54
A message field for an angle measurement which does not lose precision at very high angles.
Definition: info.hpp:119
#define HEBI_DISABLE_COPY(Class)
Definition: util.hpp:16
const IoBank & c() const
I/O pin bank c (pins 1-8 available)
Definition: info.hpp:363
Actuator-specific settings, such as controller gains.
Definition: info.hpp:393
const FloatField & effortLimitMin() const
The firmware safety limit for the minimum allowed effort.
Definition: info.hpp:434
bool has() const
True if (and only if) the field has a value.
Definition: info.cpp:44
const LedField & led() const
The module's LED.
Definition: info.hpp:589
const FloatField & springConstant() const
The spring constant of the module.
Definition: info.hpp:428
T get() const
If the field has a value, returns that value; otherwise, returns a default.
Definition: info.hpp:267
const FloatField & effortLimitMax() const
The firmware safety limit for the maximum allowed effort.
Definition: info.hpp:436
const IoBank & b() const
I/O pin bank b (pins 1-8 available)
Definition: info.hpp:359
const EnumField< ControlStrategy > & controlStrategy() const
How the position, velocity, and effort PID loops are connected in order to control motor PWM.
Definition: info.hpp:442
PositionLimitStrategy
Definition: info.hpp:71
A message field representable by a bool value.
Definition: info.hpp:165
IoBank & b()
I/O pin bank b (pins 1-8 available)
Definition: info.hpp:357
const HighResAngleField & positionLimitMax() const
The firmware safety limit for the maximum allowed position.
Definition: info.hpp:440
A message field for interfacing with a bank of I/O pins.
Definition: info.hpp:280
Actuator-specific information.
Definition: info.hpp:530
const EnumField< CalibrationState > & calibrationState() const
The calibration state of the module.
Definition: info.hpp:542
const Actuator & actuator() const
Actuator-specific settings, such as controller gains.
Definition: info.hpp:506
const InfoGains & effortGains() const
Controller gains for the effort PID loop.
Definition: info.hpp:423
Info objects have various fields representing the module state; which fields are populated depends on...
Definition: info.hpp:33
const StringField & serial() const
Gets the serial number for this module (e.g., X5-0001).
Definition: info.hpp:587
MstopStrategy
Definition: info.hpp:62
IoBank & a()
I/O pin bank a (pins 1-8 available)
Definition: info.hpp:353
CalibrationState
Definition: info.hpp:51
#define HEBI_DISABLE_COPY_MOVE(Class)
Definition: util.hpp:6
const Imu & imu() const
IMU-specific settings.
Definition: info.hpp:508
const IoBank & e() const
I/O pin bank e (pins 1-8 available)
Definition: info.hpp:371
const InfoGains & positionGains() const
Controller gains for the position PID loop.
Definition: info.hpp:419
const Actuator & actuator() const
Actuator-specific information.
Definition: info.hpp:582
A two-state message field (either set/true or cleared/false).
Definition: info.hpp:214
const BoolField & accelIncludesGravity() const
Whether to include acceleration due to gravity in acceleration feedback.
Definition: info.hpp:483
A message field for interfacing with an LED.
Definition: info.hpp:305
const FloatField & velocityLimitMin() const
The firmware safety limit for the minimum allowed velocity.
Definition: info.hpp:430
bool hasLabel(size_t pinNumber) const
True if (and only if) the particular numbered pin in this bank has a string label set in this message...
Definition: info.cpp:76
const InfoGains & velocityGains() const
Controller gains for the velocity PID loop.
Definition: info.hpp:421
std::string getLabel(size_t pinNumber) const
If this numbered pin in this bank has a string label value, returns that value; otherwise returns an ...
Definition: info.cpp:80
Triggering the M-Stop results in the control strategy being set to 'off'. Remains 'off' until changed...
const Settings & settings() const
Module settings that are typically changed at a slower rate.
Definition: info.hpp:580
A direct PWM value (-1 to 1) can be sent to the motor (subject to onboard safety limiting).
HebiStatusCode enumGetter(const RefT &ref, MetadataT &metadata, int field, int32_t *value)
Definition: message_helpers.cpp:298
The effort (e.g., spring nonlinearity) has not been calibrated.
Any available digital or analog output pins on the device.
Definition: info.hpp:335
Io & io()
Any available digital or analog output pins on the device.
Definition: info.hpp:576
The motor is not given power (equivalent to a 0 PWM value)
The current has not been calibrated.
Info & operator=(Info &&other)=delete
ControlStrategy
Definition: info.hpp:35
Info(Info &&other)
Move constructor (necessary for containment in STL template classes)
Definition: info.cpp:109
double get() const
If the field has a value, returns that value as a double; otherwise, returns a default.
Definition: info.cpp:26
A message field representable by a std::string.
Definition: info.hpp:183
const IoBank & a() const
I/O pin bank a (pins 1-8 available)
Definition: info.hpp:355
bool has() const
True if (and only if) the field has a value.
Definition: info.cpp:9
const StringField & family() const
Gets the family for this module.
Definition: info.hpp:515
IoBank & e()
I/O pin bank e (pins 1-8 available)
Definition: info.hpp:369
const IoBank & d() const
I/O pin bank d (pins 1-8 available)
Definition: info.hpp:367
Color getColor() const
Returns the led color.
Definition: info.cpp:98
Exceeding the position limit results in the control strategy being set to 'off'. Remains 'off' until ...
const Io & io() const
Any available digital or analog output pins on the device.
Definition: info.hpp:578
float get() const
If the field has a value, returns that value; otherwise, returns a default.
Definition: info.cpp:11
const FloatField & velocityLimitMax() const
The firmware safety limit for the maximum allowed velocity.
Definition: info.hpp:432
const StringField & name() const
Gets the name for this module.
Definition: info.hpp:513
The module has been calibrated; this is the normal state.
bool hasColor() const
Returns true if the LED color is set, and false otherwise.
Definition: info.cpp:94
const IoBank & f() const
I/O pin bank f (pins 1-8 available)
Definition: info.hpp:375
Triggering the M-Stop has no effect.
IoBank & d()
I/O pin bank d (pins 1-8 available)
Definition: info.hpp:365
const EnumField< PositionLimitStrategy > & minPositionLimitStrategy() const
The position limit strategy (at the minimum position) for the actuator.
Definition: info.hpp:446
bool get() const
If the field has a value, returns that value; otherwise, returns false.
Definition: info.cpp:46
const EnumField< PositionLimitStrategy > & maxPositionLimitStrategy() const
The position limit strategy (at the maximum position) for the actuator.
Definition: info.hpp:448
Exceeding the position limit has no effect.
A message field representable by an enum of a given type.
Definition: info.hpp:243
Structure to describe an RGB color.
Definition: color.hpp:8
IMU-specific settings.
Definition: info.hpp:470
Exceeding the position limit results in the actuator holding the position. Needs to be manually set t...
Exceeding the position limit results in a virtual spring that pushes the actuator back to within the ...
bool has() const
True if (and only if) the field has a value.
Definition: info.cpp:22
const EnumField< MstopStrategy > & mstopStrategy() const
The motion stop strategy for the actuator.
Definition: info.hpp:444
bool has() const
Returns true if the flag is set, false if it is cleared.
Definition: info.cpp:72
IoBank & c()
I/O pin bank c (pins 1-8 available)
Definition: info.hpp:361
Triggering the M-Stop results in the motor holding the motor position. Operations resume to normal on...
A message field representable by a single-precision floating point value.
Definition: info.hpp:84
The factory zero position has not been set.
bool has() const
True if (and only if) the field has a value.
Definition: info.hpp:262