Errors with motor angle (insufficient precision of float)

I suggested, in my latest MR, that we use this abtract base class

The idea is to keep counts in integers until the very last moment. this should both improve performance and solve your issue. Using doubles will just push the issue further in time, while slowing down the code.

I think it would make most sense to replace all usages of float angle with a class such as:

struct FocAngle {
  int rotations;
  float angle;
}

With the appropriate overloads (i.e. adding conversions from/to float, operator+/operator-) we may be able to prevent breaking user code. This should fix all classes of precision errors, including rotating from position 999999 to 999999.01, which current code can’t do since 999999 == 999999.01. This solution seems cleaner than adding a whole array of new functions to the sensor base class.