librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
LinearVelocityController.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 AngularVelocityController;
14
20public:
21 virtual ~LinearVelocityController() = default;
22
23 //***************
24 // Motor Control
25 //***************
26
32 virtual void setVelocity(units::meters_per_second_t velocity) = 0;
33
39 virtual units::meters_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
66 virtual units::meters_per_second_t getVelocity() const = 0;
67
73 virtual units::meter_t getPosition() const = 0;
74
79 virtual void setEncoderPosition(units::meter_t position = 0_m) = 0;
80
84 virtual units::meters_per_second_t getTolerance() const = 0;
85
92 virtual units::meters_per_second_t getError() const {
93 return getVelocity() - getTargetVelocity();
94 }
95
102 virtual bool atTarget() const {
103 return units::math::abs(getError()) < getTolerance();
104 }
105
106 //*************
107 // Conversions
108 //*************
109
110 using ConversionUnit =
111 units::compound_unit<units::meters, units::inverse<units::radians>>;
112 using ConversionUnit_t = units::unit_t<ConversionUnit>;
113};
114
125std::unique_ptr<AngularVelocityController>
126asAngular(std::unique_ptr<LinearVelocityController> linearController,
127 LinearVelocityController::ConversionUnit_t conversion);
128
129} // namespace rmb
Definition LinearVelocityController.h:19
virtual units::meters_per_second_t getVelocity() const =0
virtual units::meters_per_second_t getTolerance() const =0
virtual void setPower(double power)=0
virtual void setVelocity(units::meters_per_second_t velocity)=0
virtual double getPower() const =0
virtual units::meters_per_second_t getTargetVelocity() const =0
virtual bool atTarget() const
Definition LinearVelocityController.h:102
virtual units::meter_t getPosition() const =0
virtual units::meters_per_second_t getError() const
Definition LinearVelocityController.h:92
virtual void setEncoderPosition(units::meter_t position=0_m)=0
the master namespace of librmb
Definition LogitechGamepad.h:9
std::unique_ptr< AngularPositionController > asAngular(std::unique_ptr< LinearPositionController > linearController, LinearPositionController::ConversionUnit_t conversion)