tutrcos
読み取り中…
検索中…
一致する文字列を見つけられません
encoder_base.hpp
[詳解]
1#pragma once
2
3#include <algorithm>
4#include <cmath>
5#include <cstdint>
6
7namespace tutrcos {
8namespace module {
9
11public:
12 EncoderBase(int64_t cpr) : cpr_{cpr} {}
13 virtual ~EncoderBase() {}
14
15 int64_t get_cpr() { return cpr_; }
16 int64_t get_count() { return count_; }
17
18 virtual float get_rotation() { return static_cast<float>(count_) / cpr_; }
19 virtual float get_rad() { return get_rotation() * 2 * M_PI; }
20 virtual float get_degree() { return get_rotation() * 360; }
21
22 virtual float get_rps() { return delta_ / dt_ / cpr_; }
23 virtual float get_rpm() { return get_rps() * 60; }
24 virtual float get_radps() { return get_rps() * 2 * M_PI; }
25 virtual float get_radpm() { return get_rpm() * 2 * M_PI; }
26
27protected:
28 void set_count(int64_t count) {
29 delta_ = count - count_;
30 count_ = count;
31 uint32_t tick = core::Kernel::get_ticks();
32 dt_ = std::min<uint32_t>(tick - prev_tick_, 1) / 1000.0f;
33 prev_tick_ = tick;
34 }
35
36private:
37 int64_t cpr_;
38 uint32_t prev_tick_;
39 float dt_;
40 int64_t count_ = 0;
41 int64_t delta_ = 0;
42};
43
44} // namespace module
45} // namespace tutrcos
static uint32_t get_ticks()
Definition kernel.hpp:14
Definition encoder_base.hpp:10
virtual float get_rotation()
Definition encoder_base.hpp:18
EncoderBase(int64_t cpr)
Definition encoder_base.hpp:12
void set_count(int64_t count)
Definition encoder_base.hpp:28
virtual float get_rpm()
Definition encoder_base.hpp:23
int64_t get_count()
Definition encoder_base.hpp:16
virtual float get_radps()
Definition encoder_base.hpp:24
virtual ~EncoderBase()
Definition encoder_base.hpp:13
virtual float get_degree()
Definition encoder_base.hpp:20
virtual float get_radpm()
Definition encoder_base.hpp:25
virtual float get_rps()
Definition encoder_base.hpp:22
int64_t get_cpr()
Definition encoder_base.hpp:15
virtual float get_rad()
Definition encoder_base.hpp:19
Definition kernel.hpp:7