librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
LinearPositionController.h
1
2#pragma once
3
4#include <memory>
5
6#include <units/angle.h>
7#include <units/length.h>
8#include <units/math.h>
9#include <units/velocity.h>
10
11namespace rmb {
12
13class AngularPositionController;
14
20public:
21 virtual ~LinearPositionController() = default;
22
23 //***************
24 // Motor Control
25 //***************
26
32 virtual void setPosition(units::meter_t position) = 0;
33
39 virtual units::meter_t getTargetPosition() const = 0;
40
44 virtual void setPower(double power) = 0;
45
49 virtual double getPower() const = 0;
50
56 virtual units::meter_t getMinPosition() const = 0;
57
63 virtual units::meter_t getMaxPosition() const = 0;
64
68 virtual void disable() = 0;
69
73 virtual void stop() = 0;
74
75 //**********
76 // Feedback
77 //**********
78
84 virtual units::meters_per_second_t getVelocity() const = 0;
85
91 virtual units::meter_t getPosition() const = 0;
92
98 virtual void setEncoderPosition(units::meter_t position = 0_m) = 0;
99
103 virtual units::meter_t getTolerance() const = 0;
104
111 virtual units::meter_t getError() const {
112 return getPosition() - getTargetPosition();
113 }
114
121 virtual bool atTarget() const {
122 return units::math::abs(getError()) < getTolerance();
123 }
124
125 using ConversionUnit =
126 units::compound_unit<units::meters, units::inverse<units::radians>>;
127 using ConversionUnit_t = units::unit_t<ConversionUnit>;
128};
129
140std::unique_ptr<AngularPositionController>
141asAngular(std::unique_ptr<LinearPositionController> linearController,
142 LinearPositionController::ConversionUnit_t conversion);
143
144} // namespace rmb
Definition LinearPositionController.h:19
virtual units::meters_per_second_t getVelocity() const =0
virtual void setPower(double power)=0
virtual void setEncoderPosition(units::meter_t position=0_m)=0
virtual units::meter_t getMinPosition() const =0
virtual units::meter_t getError() const
Definition LinearPositionController.h:111
virtual void setPosition(units::meter_t position)=0
virtual bool atTarget() const
Definition LinearPositionController.h:121
virtual units::meter_t getTargetPosition() const =0
virtual units::meter_t getTolerance() const =0
virtual units::meter_t getMaxPosition() const =0
virtual units::meter_t getPosition() const =0
virtual double getPower() const =0
the master namespace of librmb
Definition LogitechGamepad.h:9
std::unique_ptr< AngularPositionController > asAngular(std::unique_ptr< LinearPositionController > linearController, LinearPositionController::ConversionUnit_t conversion)