133 #ifndef DOXYGEN_OMIT_INTERNAL 134 FloatField(HebiFeedbackPtr
internal, HebiFeedbackFloatField field);
135 #endif // DOXYGEN_OMIT_INTERNAL 136 explicit operator bool()
const {
return has(); }
157 HebiFeedbackPtr
const internal_;
158 HebiFeedbackFloatField
const field_;
168 #ifndef DOXYGEN_OMIT_INTERNAL 169 HighResAngleField(HebiFeedbackPtr
internal, HebiFeedbackHighResAngleField field);
170 #endif // DOXYGEN_OMIT_INTERNAL 171 explicit operator bool()
const {
return has(); }
203 void get(int64_t* revolutions,
float* radian_offset)
const;
207 HebiFeedbackPtr
const internal_;
208 HebiFeedbackHighResAngleField
const field_;
215 #ifndef DOXYGEN_OMIT_INTERNAL 217 #endif // DOXYGEN_OMIT_INTERNAL 218 bool has(
size_t fieldNumber)
const;
229 float get(
size_t fieldNumber)
const;
233 HebiFeedbackPtr
const internal_;
234 HebiFeedbackNumberedFloatField
const field_;
240 #ifndef DOXYGEN_OMIT_INTERNAL 241 UInt64Field(HebiFeedbackPtr
internal, HebiFeedbackUInt64Field field);
242 #endif // DOXYGEN_OMIT_INTERNAL 243 explicit operator bool()
const {
return has(); }
260 uint64_t
get()
const;
264 HebiFeedbackPtr
const internal_;
265 HebiFeedbackUInt64Field
const field_;
272 #ifndef DOXYGEN_OMIT_INTERNAL 273 Vector3fField(HebiFeedbackPtr
internal, HebiFeedbackVector3fField field);
274 #endif // DOXYGEN_OMIT_INTERNAL 275 explicit operator bool()
const {
return has(); }
296 HebiFeedbackPtr
const internal_;
297 HebiFeedbackVector3fField
const field_;
304 #ifndef DOXYGEN_OMIT_INTERNAL 305 QuaternionfField(HebiFeedbackPtr
internal, HebiFeedbackQuaternionfField field);
306 #endif // DOXYGEN_OMIT_INTERNAL 307 explicit operator bool()
const {
return has(); }
328 HebiFeedbackPtr
const internal_;
329 HebiFeedbackQuaternionfField
const field_;
336 #ifndef DOXYGEN_OMIT_INTERNAL 337 EnumField(HebiFeedbackPtr
internal, HebiFeedbackEnumField field) : internal_(
internal), field_(field) {}
338 #endif // DOXYGEN_OMIT_INTERNAL 339 explicit operator bool()
const {
return has(); }
353 bool has()
const {
return (hebiFeedbackGetEnum(internal_, field_,
nullptr) == HebiStatusSuccess); }
358 hebiFeedbackGetEnum(internal_, field_, &ret);
359 return static_cast<T>(ret);
364 HebiFeedbackPtr
const internal_;
365 HebiFeedbackEnumField
const field_;
371 #ifndef DOXYGEN_OMIT_INTERNAL 372 IoBank(HebiFeedbackPtr
internal, HebiFeedbackIoPinBank bank);
373 #endif // DOXYGEN_OMIT_INTERNAL 374 bool hasInt(
size_t pinNumber)
const;
385 bool hasFloat(
size_t pinNumber)
const;
391 int64_t
getInt(
size_t pinNumber)
const;
398 float getFloat(
size_t pinNumber)
const;
402 HebiFeedbackPtr
const internal_;
403 HebiFeedbackIoPinBank
const bank_;
409 #ifndef DOXYGEN_OMIT_INTERNAL 410 LedField(HebiFeedbackPtr
internal, HebiFeedbackLedField field);
411 #endif // DOXYGEN_OMIT_INTERNAL 412 explicit operator bool()
const {
return hasColor(); }
432 HebiFeedbackPtr
const internal_;
433 HebiFeedbackLedField
const field_;
439 #ifndef DOXYGEN_OMIT_INTERNAL 440 Io(HebiFeedbackPtr
internal)
441 : internal_(
internal),
442 a_(
internal, HebiFeedbackIoBankA),
443 b_(
internal, HebiFeedbackIoBankB),
444 c_(
internal, HebiFeedbackIoBankC),
445 d_(
internal, HebiFeedbackIoBankD),
446 e_(
internal, HebiFeedbackIoBankE),
447 f_(
internal, HebiFeedbackIoBankF) {}
448 #endif // DOXYGEN_OMIT_INTERNAL 470 HebiFeedbackPtr
const internal_;
483 #ifndef DOXYGEN_OMIT_INTERNAL 485 : internal_(
internal),
486 velocity_(
internal, HebiFeedbackFloatVelocity),
487 effort_(
internal, HebiFeedbackFloatEffort),
488 velocity_command_(
internal, HebiFeedbackFloatVelocityCommand),
489 effort_command_(
internal, HebiFeedbackFloatEffortCommand),
490 deflection_(
internal, HebiFeedbackFloatDeflection),
491 deflection_velocity_(
internal, HebiFeedbackFloatDeflectionVelocity),
492 motor_velocity_(
internal, HebiFeedbackFloatMotorVelocity),
493 motor_current_(
internal, HebiFeedbackFloatMotorCurrent),
494 motor_sensor_temperature_(
internal, HebiFeedbackFloatMotorSensorTemperature),
495 motor_winding_current_(
internal, HebiFeedbackFloatMotorWindingCurrent),
496 motor_winding_temperature_(
internal, HebiFeedbackFloatMotorWindingTemperature),
497 motor_housing_temperature_(
internal, HebiFeedbackFloatMotorHousingTemperature),
498 pwm_command_(
internal, HebiFeedbackFloatPwmCommand),
499 position_(
internal, HebiFeedbackHighResAnglePosition),
500 position_command_(
internal, HebiFeedbackHighResAnglePositionCommand),
501 motor_position_(
internal, HebiFeedbackHighResAngleMotorPosition),
502 sequence_number_(
internal, HebiFeedbackUInt64SequenceNumber),
503 temperature_state_(
internal, HebiFeedbackEnumTemperatureState),
504 mstop_state_(
internal, HebiFeedbackEnumMstopState),
505 position_limit_state_(
internal, HebiFeedbackEnumPositionLimitState),
506 velocity_limit_state_(
internal, HebiFeedbackEnumVelocityLimitState),
507 effort_limit_state_(
internal, HebiFeedbackEnumEffortLimitState),
508 command_lifetime_state_(
internal, HebiFeedbackEnumCommandLifetimeState) {}
509 #endif // DOXYGEN_OMIT_INTERNAL 565 HebiFeedbackPtr
const internal_;
595 #ifndef DOXYGEN_OMIT_INTERNAL 596 Mobile(HebiFeedbackPtr
internal)
597 : internal_(
internal),
598 battery_level_(
internal, HebiFeedbackFloatBatteryLevel),
599 ar_position_(
internal, HebiFeedbackVector3fArPosition),
600 ar_orientation_(
internal, HebiFeedbackQuaternionfArOrientation),
601 ar_quality_(
internal, HebiFeedbackEnumArQuality) {}
602 #endif // DOXYGEN_OMIT_INTERNAL 620 HebiFeedbackPtr
const internal_;
631 #ifndef DOXYGEN_OMIT_INTERNAL 632 Imu(HebiFeedbackPtr
internal)
633 : internal_(
internal),
634 accelerometer_(
internal, HebiFeedbackVector3fAccelerometer),
635 gyro_(
internal, HebiFeedbackVector3fGyro),
636 orientation_(
internal, HebiFeedbackQuaternionfOrientation) {}
637 #endif // DOXYGEN_OMIT_INTERNAL 653 HebiFeedbackPtr
const internal_;
665 HebiFeedbackPtr internal_;
668 #ifndef DOXYGEN_OMIT_INTERNAL 674 #endif // DOXYGEN_OMIT_INTERNAL 686 const Io&
io()
const {
return io_; }
702 #ifndef DOXYGEN_OMIT_INTERNAL 703 const NumberedFloatField& debug()
const {
return debug_; }
705 #endif // DOXYGEN_OMIT_INTERNAL 706 const UInt64Field&
receiveTimeUs()
const {
return receive_time_us_; }
733 FloatField board_temperature_;
734 FloatField processor_temperature_;
736 NumberedFloatField debug_;
737 UInt64Field receive_time_us_;
738 UInt64Field transmit_time_us_;
739 UInt64Field hardware_receive_time_us_;
740 UInt64Field hardware_transmit_time_us_;
741 UInt64Field sender_id_;
bool has() const
True if (and only if) the field has a value.
Definition: feedback.cpp:14
The AR session is attempting to resume after an interruption.
The module has not been inside the safety limits since it was booted or the safety limits were set.
VelocityLimitState
Definition: feedback.hpp:68
const FloatField & voltage() const
Bus voltage that the module is running at (in Volts).
Definition: feedback.hpp:701
bool has(size_t fieldNumber) const
True if (and only if) the particular numbered subvalue of this field has a value.
Definition: feedback.cpp:52
const FloatField & deflection() const
Difference (in radians) between the pre-spring and post-spring output position.
Definition: feedback.hpp:525
bool has() const
True if (and only if) the field has a value.
Definition: feedback.hpp:353
const FloatField & motorVelocity() const
The velocity (in radians/second) of the motor shaft.
Definition: feedback.hpp:529
Camera position tracking is not available.
const IoBank & e() const
I/O pin bank e (pins 1-8 available)
Definition: feedback.hpp:464
Structure to hold a 3-D floating point vector (i.e., x/y/z components)
Definition: vector_3_f.hpp:8
#define HEBI_DISABLE_COPY(Class)
Definition: util.hpp:16
bool has() const
True if (and only if) the field has a value.
Definition: feedback.cpp:29
PositionLimitState
Definition: feedback.hpp:51
Commands are locked out due to control from other users.
Tracking is available albeit suboptimal for an unknown reason.
The device is moving too fast for accurate image-based position tracking.
const UInt64Field & hardwareTransmitTimeUs() const
Timestamp of when message was transmitted from module (remote; microseconds)
Definition: feedback.hpp:713
int64_t getInt(size_t pinNumber) const
If this numbered pin in this bank has an integer (e.g., digital) value, returns that value; otherwise...
Definition: feedback.cpp:124
float getFloat(size_t pinNumber) const
If this numbered pin in this bank has an floating point (e.g., analog or PWM) value,...
Definition: feedback.cpp:130
Structure to hold a floating point quaternion (i.e., w/x/y/z components)
Definition: quaternion_f.hpp:8
double get() const
If the field has a value, returns that value as a double; otherwise, returns a default.
Definition: feedback.cpp:33
const Mobile & mobile() const
Feedback generally from a mobile device such as a phone or tablet.
Definition: feedback.hpp:690
const EnumField< MstopState > & mstopState() const
Current status of the MStop.
Definition: feedback.hpp:553
const HighResAngleField & positionCommand() const
Commanded position of the module output (post-spring), in radians.
Definition: feedback.hpp:545
const FloatField & effort() const
Effort at the module output; units vary (e.g., N * m for rotational joints and N for linear stages).
Definition: feedback.hpp:519
CommandLifetimeState
Definition: feedback.hpp:102
The MStop is not pressed.
const EnumField< EffortLimitState > & effortLimitState() const
Software-controlled bounds on the allowable effort of the module.
Definition: feedback.hpp:559
#define HEBI_DISABLE_COPY_MOVE(Class)
Definition: util.hpp:6
const Vector3fField & arPosition() const
A device's position in the world as calculated from an augmented reality framework,...
Definition: feedback.hpp:612
A message field representable by a single-precision floating point value.
Definition: feedback.hpp:131
Inertial measurement unit feedback (accelerometers and gyros).
Definition: feedback.hpp:629
Feedback objects have various fields representing feedback from modules; which fields are populated d...
Definition: feedback.hpp:31
A message field for interfacing with a bank of I/O pins.
Definition: feedback.hpp:369
bool hasInt(size_t pinNumber) const
True if (and only if) the particular numbered pin in this bank has an integer (e.g....
Definition: feedback.cpp:116
The effort of the module was near the upper safety limit, and the motor output is being limited or re...
const IoBank & d() const
I/O pin bank d (pins 1-8 available)
Definition: feedback.hpp:462
The AR session has not yet gathered enough camera or motion data to provide tracking information.
A message field representable by a 3-D vector of single-precision floating point values.
Definition: feedback.hpp:302
bool hasColor() const
Returns true if the LED color is set, and false otherwise.
Definition: feedback.cpp:139
The velocity of the module was near the upper safety limit, and the motor output is being limited or ...
const FloatField & velocity() const
Velocity of the module output (post-spring), in radians/second.
Definition: feedback.hpp:517
bool has() const
True if (and only if) the field has a value.
Definition: feedback.cpp:82
The effort of the module was within the safety limits.
const EnumField< VelocityLimitState > & velocityLimitState() const
Software-controlled bounds on the allowable velocity of the module.
Definition: feedback.hpp:557
const UInt64Field & senderId() const
Unique ID of the module transmitting this feedback.
Definition: feedback.hpp:715
A message field for an angle measurement which does not lose precision at very high angles.
Definition: feedback.hpp:166
const FloatField & effortCommand() const
Commanded effort at the module output; units vary (e.g., N * m for rotational joints and N for linear...
Definition: feedback.hpp:523
const IoBank & f() const
I/O pin bank f (pins 1-8 available)
Definition: feedback.hpp:466
The module has not been inside the safety limits since it was booted or the safety limits were set.
const EnumField< ArQuality > & arQuality() const
The status of the augmented reality tracking, if using an AR enabled device.
Definition: feedback.hpp:616
TemperatureState
Definition: feedback.hpp:33
const HighResAngleField & position() const
Position of the module output (post-spring), in radians.
Definition: feedback.hpp:543
The position of the module was near the upper safety limit, and the motor output is being limited or ...
A message field representable by an enum of a given type.
Definition: feedback.hpp:334
const FloatField & motorWindingTemperature() const
The estimated temperature of the motor windings.
Definition: feedback.hpp:537
const FloatField & boardTemperature() const
Ambient temperature inside the module (measured at the IMU chip), in degrees Celsius.
Definition: feedback.hpp:697
T get() const
If the field has a value, returns that value; otherwise, returns a default.
Definition: feedback.hpp:356
Commands from others are locked out due to control from this group.
Temperature within normal range.
const Vector3fField & gyro() const
Gyro data, in radians/second.
Definition: feedback.hpp:647
const EnumField< TemperatureState > & temperatureState() const
Describes how the temperature inside the module is limiting the output of the motor.
Definition: feedback.hpp:551
const FloatField & processorTemperature() const
Temperature of the processor chip, in degrees Celsius.
Definition: feedback.hpp:699
const LedField & led() const
The module's LED.
Definition: feedback.hpp:717
A message field for interfacing with an LED.
Definition: feedback.hpp:407
const Imu & imu() const
Inertial measurement unit feedback (accelerometers and gyros).
Definition: feedback.hpp:692
const FloatField & motorWindingCurrent() const
The estimated current in the motor windings.
Definition: feedback.hpp:535
const FloatField & batteryLevel() const
Charge level of the device’s battery (in percent).
Definition: feedback.hpp:610
const FloatField & velocityCommand() const
Commanded velocity of the module output (post-spring), in radians/second.
Definition: feedback.hpp:521
const QuaternionfField & orientation() const
A filtered estimate of the orientation of the module.
Definition: feedback.hpp:649
const EnumField< CommandLifetimeState > & commandLifetimeState() const
The state of the command lifetime safety controller, with respect to the current group.
Definition: feedback.hpp:561
Feedback generally from a mobile device such as a phone or tablet.
Definition: feedback.hpp:593
const FloatField & motorHousingTemperature() const
The estimated temperature of the motor housing.
Definition: feedback.hpp:539
float get(size_t fieldNumber) const
If the particular numbered subvalue of this field has a value, returns that value; otherwise returns ...
Definition: feedback.cpp:56
float get() const
If the field has a value, returns that value; otherwise, returns a default.
Definition: feedback.cpp:18
Motor output beginning to be limited due to high temperature.
Feedback from any available I/O pins on the device.
Definition: feedback.hpp:437
There is not command lifetime active on this module.
const FloatField & deflectionVelocity() const
Velocity (in radians/second) of the difference between the pre-spring and post-spring output position...
Definition: feedback.hpp:527
A message field representable by an unsigned 64 bit integer value.
Definition: feedback.hpp:238
Feedback & operator=(Feedback &&other)=delete
Vector3f get() const
If the field has a value, returns that value; otherwise, returns a default.
Definition: feedback.cpp:86
Temperature exceeds max allowable for electronics; motor output disabled.
The effort of the module was near the lower safety limit, and the motor output is being limited or re...
ArQuality
Definition: feedback.hpp:111
The velocity of the module was near the lower safety limit, and the motor output is being limited or ...
const IoBank & a() const
I/O pin bank a (pins 1-8 available)
Definition: feedback.hpp:456
Temperature exceeds max allowable for motor; motor output disabled.
const UInt64Field & receiveTimeUs() const
Timestamp of when message was received from module (local; microseconds)
Definition: feedback.hpp:707
const FloatField & motorSensorTemperature() const
The temperature from a sensor near the motor housing.
Definition: feedback.hpp:533
The position of the module was within the safety limits.
const UInt64Field & transmitTimeUs() const
Timestamp of when message was transmitted to module (local; microseconds)
Definition: feedback.hpp:709
uint64_t get() const
If the field has a value, returns that value; otherwise, returns a default.
Definition: feedback.cpp:71
const EnumField< PositionLimitState > & positionLimitState() const
Software-controlled bounds on the allowable position of the module; user settable.
Definition: feedback.hpp:555
Actuator-specific feedback.
Definition: feedback.hpp:481
bool has() const
True if (and only if) the field has a value.
Definition: feedback.cpp:99
MstopState
Definition: feedback.hpp:44
const Vector3fField & accelerometer() const
Accelerometer data, in m/s^2.
Definition: feedback.hpp:645
const FloatField & pwmCommand() const
Commanded PWM signal sent to the motor; final output of PID controllers.
Definition: feedback.hpp:541
bool has() const
True if (and only if) the field has a value.
Definition: feedback.cpp:67
const UInt64Field & hardwareReceiveTimeUs() const
Timestamp of when message was received by module (remote; microseconds)
Definition: feedback.hpp:711
Feedback(Feedback &&other)
Move constructor (necessary for containment in STL template classes)
Definition: feedback.cpp:153
The module has not been inside the safety limits since it was booted or the safety limits were set.
EffortLimitState
Definition: feedback.hpp:85
Camera position tracking is providing optimal results.
const Actuator & actuator() const
Actuator-specific feedback.
Definition: feedback.hpp:688
const Io & io() const
Feedback from any available I/O pins on the device.
Definition: feedback.hpp:686
const QuaternionfField & arOrientation() const
A device's orientation in the world as calculated from an augmented reality framework.
Definition: feedback.hpp:614
const UInt64Field & sequenceNumber() const
Sequence number going to module (local)
Definition: feedback.hpp:549
Structure to describe an RGB color.
Definition: color.hpp:8
The velocity of the module was within the safety limits.
const HighResAngleField & motorPosition() const
The position of an actuator’s internal motor before the gear reduction, in radians.
Definition: feedback.hpp:547
A message field containing a numbered set of single-precision floating point values.
Definition: feedback.hpp:213
bool hasFloat(size_t pinNumber) const
True if (and only if) the particular numbered pin in this bank has an floating point (e....
Definition: feedback.cpp:120
Quaternionf get() const
If the field has a value, returns that value; otherwise, returns a default.
Definition: feedback.cpp:103
A message field representable by a 3-D vector of single-precision floating point values.
Definition: feedback.hpp:270
const IoBank & b() const
I/O pin bank b (pins 1-8 available)
Definition: feedback.hpp:458
Color getColor() const
Returns the led color.
Definition: feedback.cpp:143
The position of the module was near the lower safety limit, and the motor output is being limited or ...
const IoBank & c() const
I/O pin bank c (pins 1-8 available)
Definition: feedback.hpp:460
const FloatField & motorCurrent() const
Current supplied to the motor.
Definition: feedback.hpp:531