librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
AngularPositionController.h
1
2#pragma once
3
4#include <memory>
5
6#include <units/angle.h>
7#include <units/angular_velocity.h>
8#include <units/length.h>
9#include <units/math.h>
10
11namespace rmb {
12
13class LinearPositionController;
14
20public:
21 virtual ~AngularPositionController() = default;
22
29 virtual void setPosition(units::radian_t position) = 0;
30
36 virtual units::radian_t getTargetPosition() const = 0;
37
41 virtual void setPower(double power) = 0;
42
46 virtual double getPower() const = 0;
47
53 virtual units::radian_t getMinPosition() const = 0;
54
60 virtual units::radian_t getMaxPosition() const = 0;
61
65 virtual void disable() = 0;
66
70 virtual void stop() = 0;
71
77 virtual units::radians_per_second_t getVelocity() const = 0;
78
84 virtual units::radian_t getPosition() const = 0;
85
91 virtual void setEncoderPosition(units::radian_t position = 0_rad) = 0;
92
96 virtual units::radian_t getTolerance() const = 0;
97
104 virtual units::radian_t getError() const {
105 return getPosition() - getTargetPosition();
106 }
107
114 virtual bool atTarget() const {
115 return units::math::abs(getError()) < getTolerance();
116 }
117
118 using ConversionUnit =
119 units::compound_unit<units::meters, units::inverse<units::radians>>;
120 using ConversionUnit_t = units::unit_t<ConversionUnit>;
121};
122
133std::unique_ptr<LinearPositionController>
134asLinear(std::unique_ptr<AngularPositionController> angularController,
135 AngularPositionController::ConversionUnit_t conversion);
136
137} // namespace rmb
Definition AngularPositionController.h:19
virtual units::radian_t getTolerance() const =0
virtual units::radian_t getPosition() const =0
virtual units::radian_t getMaxPosition() const =0
virtual bool atTarget() const
Definition AngularPositionController.h:114
virtual void setEncoderPosition(units::radian_t position=0_rad)=0
virtual units::radians_per_second_t getVelocity() const =0
virtual units::radian_t getTargetPosition() const =0
virtual void setPosition(units::radian_t position)=0
virtual double getPower() const =0
virtual units::radian_t getError() const
Definition AngularPositionController.h:104
virtual units::radian_t getMinPosition() const =0
virtual void setPower(double power)=0
the master namespace of librmb
Definition LogitechGamepad.h:9
std::unique_ptr< LinearPositionController > asLinear(std::unique_ptr< AngularPositionController > angularController, AngularPositionController::ConversionUnit_t conversion)