Implementation eines Einheitensystem mit user-defined literals und in Kombination mit Festkomma-Arithmetik für das open-source C++-Microcontroller-Framework modm.
Zusammenfassung
Für alle physikalischen Berechnungen in unserer Robotersoftware wollen wir Einheiten nutzen können, dies sorgt für übersichtlicheren und besser selbst-dokumentierenden Code.
Beispiel:
using namespace modm::units;
length_t distance = 300_mm;
time_t time = 1500_ms;
velocity_t speed = distance / time;
float foo = distance + time; // compiler error: Units are not compatible.
Da es auf Microcontrollern aus verschiedenen Gründen nicht erstrebenswert mit Gleitkommazahlen zu rechnen ist, bietet es sich an gleichzeitig Festkomma-Arithmetik [1] im modm [2] zu implementieren.
Diskussion & Features
- Fehlerabschätzung Multiplikation und Division
- Unittests
- Portieren und Anpassen bestehender Klassen
Tätigkeitsfelder und Technologien
- C++
Referenzen und Links
- [1] https://de.wikipedia.org/wiki/Festkommazahl
- [2] https://modm.io
- [3] https://github.com/salkinium/upainter/tree/master/ges/math
- http://en.cppreference.com/w/cpp/language/user_literal
- https://github.com/nholthaus/units