librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
Feedforward.h
1#pragma once
2
3#include <algorithm>
4
5#include <units/base.h>
6#include <units/time.h>
7#include <units/voltage.h>
8
9namespace rmb {
10
15template <typename DistanceUnit> class Feedforward {
16public:
17 using Distance_t =
18 units::unit_t<DistanceUnit>;
20 units::compound_unit<DistanceUnit,
21 units::inverse<units::seconds>>;
23 using Velocity_t =
24 units::unit_t<VelocityUnit>;
27 units::compound_unit<VelocityUnit,
28 units::inverse<units::seconds>>;
30 using Acceleration_t = units::unit_t<
34 using KsUnit = units::volts;
35 using Ks_t = units::unit_t<KsUnit>;
37 using KvUnit = units::compound_unit<
38 units::volts, units::inverse<VelocityUnit>>;
40 using Kv_t = units::unit_t<KvUnit>;
42 using KaUnit = units::compound_unit<
43 units::volts,
44 units::inverse<AccelerationUnit>>;
46 using Ka_t = units::unit_t<KaUnit>;
57 virtual units::volt_t
58 calculate(Velocity_t velocity, Distance_t distance = Distance_t(0.0),
59 Acceleration_t acceleration = Acceleration_t(0.0)) const = 0;
60
70 virtual Velocity_t maxAchievableVelocity(units::volt_t maxVoltage,
71 Acceleration_t acceleration,
72 Distance_t position) const = 0;
73
83 virtual Velocity_t minAchievableVelocity(units::volt_t maxVoltage,
84 Acceleration_t acceleration,
85 Distance_t position) const = 0;
95 virtual Acceleration_t
96 maxAchievableAcceleration(units::volt_t maxVoltage, Velocity_t velocity,
97 Distance_t position) const = 0;
98
108 virtual Acceleration_t
109 minAchievableAcceleration(units::volt_t maxVoltage, Velocity_t velocity,
110 Distance_t position) const = 0;
111
119 virtual Kv_t getVelocityGain() const = 0;
120
128 virtual Ka_t getAcclerationGain() const = 0;
129
143 virtual units::volt_t
145 Distance_t position = Distance_t(0)) const = 0;
146};
147} // namespace rmb
Definition Feedforward.h:15
virtual Velocity_t minAchievableVelocity(units::volt_t maxVoltage, Acceleration_t acceleration, Distance_t position) const =0
units::unit_t< KvUnit > Kv_t
Definition Feedforward.h:40
units::volts KsUnit
Definition Feedforward.h:34
units::compound_unit< units::volts, units::inverse< AccelerationUnit > > KaUnit
Definition Feedforward.h:42
virtual Velocity_t maxAchievableVelocity(units::volt_t maxVoltage, Acceleration_t acceleration, Distance_t position) const =0
virtual Ka_t getAcclerationGain() const =0
units::unit_t< AccelerationUnit > Acceleration_t
Definition Feedforward.h:30
virtual units::volt_t calculate(Velocity_t velocity, Distance_t distance=Distance_t(0.0), Acceleration_t acceleration=Acceleration_t(0.0)) const =0
virtual Acceleration_t maxAchievableAcceleration(units::volt_t maxVoltage, Velocity_t velocity, Distance_t position) const =0
units::compound_unit< DistanceUnit, units::inverse< units::seconds > > VelocityUnit
Definition Feedforward.h:19
units::unit_t< KsUnit > Ks_t
Definition Feedforward.h:35
virtual Kv_t getVelocityGain() const =0
units::unit_t< KaUnit > Ka_t
Definition Feedforward.h:46
units::unit_t< VelocityUnit > Velocity_t
Definition Feedforward.h:23
units::compound_unit< VelocityUnit, units::inverse< units::seconds > > AccelerationUnit
Definition Feedforward.h:26
virtual Acceleration_t minAchievableAcceleration(units::volt_t maxVoltage, Velocity_t velocity, Distance_t position) const =0
units::compound_unit< units::volts, units::inverse< VelocityUnit > > KvUnit
Definition Feedforward.h:37
units::unit_t< DistanceUnit > Distance_t
Definition Feedforward.h:17
virtual units::volt_t calculateStatic(Velocity_t velocity, Distance_t position=Distance_t(0)) const =0
the master namespace of librmb
Definition LogitechGamepad.h:9