Class Feedback::HighResAngleField

Nested Relationships

This class is a nested type of Class Feedback.

Class Documentation

class HighResAngleField

A message field for an angle measurement which does not lose precision at very high angles.

This field is represented as an int64_t for the number of revolutions and a float for the radian offset from that number of revolutions.

Public Functions

HighResAngleField(const HebiFeedbackRef &internal, HebiFeedbackHighResAngleField field)
inline explicit operator bool() const

Allows casting to a bool to check if the field has a value without directly calling has().

This can be used as in the following (assuming ‘parent’ is a parent message, and this field is called ‘myField’)

Feedback::HighResAngleField& f = parent.myField();
if (f)
  std::cout << "Field has value: " << f.get() << std::endl;
else
  std::cout << "Field has no value!" << std::endl;

bool has() const

True if (and only if) the field has a value.

double get() const

If the field has a value, returns that value as a double; otherwise, returns a default.

Note that some precision might be lost converting to a double at very high number of revolutions.

void get(int64_t *revolutions, float *radian_offset) const

If the field has a value, returns that value in the int64 and float parameters passed in; otherwise, returns a default.

Note that this maintains the full precision of the underlying angle measurement, even for very large numbers of revolutions.

Parameters:
  • revolutions – The number of full revolutions

  • radian_offset – The offset from the given number of full revolutions. Note that this is usually between 0 and 2*M_PI, but callers should not assume this.