librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
AngularVelocityController.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 LinearVelocityController;
14
20public:
21 virtual ~AngularVelocityController() = default;
22
23 //***************
24 // Motor Control
25 //***************
26
32 virtual void setVelocity(units::radians_per_second_t velocity) = 0;
33
39 virtual units::radians_per_second_t getTargetVelocity() const = 0;
40
44 virtual void setPower(double power) = 0;
45
49 virtual double getPower() const = 0;
50
54 virtual void disable() = 0;
55
59 virtual void stop() = 0;
60
61 //**********
62 // Feedback
63 //**********
64
70 virtual units::radians_per_second_t getVelocity() const = 0;
71
77 virtual units::radian_t getPosition() const = 0;
78
84 virtual void setEncoderPosition(units::radian_t position = 0_rad) = 0;
85
89 virtual units::radians_per_second_t getTolerance() const = 0;
90
97 virtual units::radians_per_second_t getError() const {
98 return getVelocity() - getTargetVelocity();
99 }
100
107 virtual bool atTarget() const {
108 return units::math::abs(getError()) < getTolerance();
109 }
110
111 //*************
112 // Conversions
113 //*************
114
115 using ConversionUnit =
116 units::compound_unit<units::meters, units::inverse<units::radians>>;
117 using ConversionUnit_t = units::unit_t<ConversionUnit>;
118};
119
130std::unique_ptr<LinearVelocityController>
131asLinear(std::unique_ptr<AngularVelocityController> angularController,
132 AngularVelocityController::ConversionUnit_t conversion);
133} // namespace rmb
Definition AngularVelocityController.h:19
virtual units::radians_per_second_t getTargetVelocity() const =0
virtual void setVelocity(units::radians_per_second_t velocity)=0
virtual void setPower(double power)=0
virtual units::radian_t getPosition() const =0
virtual units::radians_per_second_t getTolerance() const =0
virtual bool atTarget() const
Definition AngularVelocityController.h:107
virtual double getPower() const =0
virtual units::radians_per_second_t getError() const
Definition AngularVelocityController.h:97
virtual units::radians_per_second_t getVelocity() const =0
virtual void setEncoderPosition(units::radian_t position=0_rad)=0
the master namespace of librmb
Definition LogitechGamepad.h:9
std::unique_ptr< LinearPositionController > asLinear(std::unique_ptr< AngularPositionController > angularController, AngularPositionController::ConversionUnit_t conversion)