FancySafeBot 0.0.1
A safe robotics library
Loading...
Searching...
No Matches
fsb_encoder.h
1
2#ifndef FSB_ENCODER_H
3#define FSB_ENCODER_H
4
5#include <cstdint>
6#include "fsb_types.h"
7
8namespace fsb
9{
10
22enum class EncoderStatus: uint8_t
23{
27 SUCCESS = 0,
45};
46
52{
53public:
54 IncrementalEncoder() = default;
55
65 set_parameters(uint8_t counter_resolution_bits, uint32_t counts_per_rev, real_t value_per_rev);
66
73 void reset(int32_t count, real_t value);
74
80 void reset_value(real_t value);
81
88 real_t decode(int32_t count);
89
96 int32_t encode(real_t value);
97
98private:
99 // encoder count
100 int32_t m_count = 0;
101 // value offset at count == 0
102 real_t m_value_offset = 0.0;
103 // scaled units per revolution
104 real_t m_value_per_rev = 0.0;
105 // Encoder counts per revolution
106 uint32_t m_counts_per_rev = 0U;
107 // incremental encoder limit based on counter bit depth
108 int32_t m_counter_lower_limit = 0;
109};
110
115} // namespace fsb
116
117#endif
Incremental encoder.
Definition fsb_encoder.h:52
int32_t encode(real_t value)
encode value to number of counts
Definition fsb_encoder.cpp:99
void reset(int32_t count, real_t value)
Reset encoder to counts and associated value.
Definition fsb_encoder.cpp:62
EncoderStatus set_parameters(uint8_t counter_resolution_bits, uint32_t counts_per_rev, real_t value_per_rev)
Set encoder parameters.
Definition fsb_encoder.cpp:9
void reset_value(real_t value)
Reset value at current count.
Definition fsb_encoder.cpp:68
real_t decode(int32_t count)
Get value in scaled units from counter update.
Definition fsb_encoder.cpp:74
EncoderStatus
Status from setting encoder parameters.
Definition fsb_encoder.h:23
@ COUNTS_PER_REV_ZERO
Counts per revolution must be non-zero.
@ RESOLUTION_IS_ZERO
Resolution of encoder (in number of bits) must be non-zero.
@ VALUE_PER_REV_ZERO
Value per revolution is below tolerance.
@ RESOLUTION_EXCEEDS_MAX
Encoder resolution exceeds maximum of 32 bits.