Parasol Planning Library (PPL)
Actuator.h
Go to the documentation of this file.
1 #ifndef PMPL_ACTUATOR_H_
2 #define PMPL_ACTUATOR_H_
3 
4 #include <iostream>
5 #include <vector>
6 
7 #include "Control.h"
9 
10 class Robot;
11 class XMLNode;
12 
13 
35 class Actuator final {
36 
37  public:
38 
41 
44  enum class DynamicsType {Force, Velocity};
45 
49 
54  Actuator(Robot* const _r, const std::string& _label,
56 
60  Actuator(Robot* const _r, XMLNode& _node);
61 
65  Actuator(Robot* const _r, const Actuator& _a);
66 
70 
72  Robot* GetRobot() const;
73 
75  std::string GetLabel() const;
76 
79 
84  void SetLimits(const std::vector<double>& _min,
85  const std::vector<double>& _max);
86 
89  void SetMaxForce(const double _total);
90 
94 
99  std::vector<bool> ControlMask() const;
100 
106  std::vector<double> ComputeOutput(const Control::Signal& _s) const;
107 
113  Control::Signal ComputeNearestSignal(const std::vector<double>& _force) const;
114 
116  Control GetRandomControl() const noexcept;
117 
119 
120  private:
121 
124 
126  void ComputeControlSpace();
127 
131 
133  friend std::ostream& operator<<(std::ostream&, const Actuator&);
134 
138 
139  Robot* const m_robot;
140 
141  std::string m_label;
142 
143  std::vector<bool> m_mask;
144  std::vector<Range<double>> m_limits;
145  double m_maxForce;
146 
148 
149  ControlSpace m_controlSpace;
150 
152 
153 };
154 
155 #endif
Definition: Actuator.h:35
DynamicsType
Definition: Actuator.h:44
DynamicsType GetDynamicsType() const
Get the type of output this actuator produces.
Definition: Actuator.cpp:123
Robot * GetRobot() const
Get the robot that the actuator is on.
Definition: Actuator.cpp:109
Control GetRandomControl() const noexcept
Get a random control in this actuator's control space.
Definition: Actuator.cpp:228
void SetLimits(const std::vector< double > &_min, const std::vector< double > &_max)
Definition: Actuator.cpp:130
void SetMaxForce(const double _total)
Definition: Actuator.cpp:150
Actuator(Robot *const _r, const std::string &_label, const DynamicsType _t=DynamicsType::Force)
Definition: Actuator.cpp:19
std::vector< double > ComputeOutput(const Control::Signal &_s) const
Definition: Actuator.cpp:165
std::string GetLabel() const
Get the label for this actuator.
Definition: Actuator.cpp:116
std::vector< bool > ControlMask() const
Definition: Actuator.cpp:158
Control::Signal ComputeNearestSignal(const std::vector< double > &_force) const
Definition: Actuator.cpp:194
An axis-aligned rectangular prism in n dimensions.
Definition: NBox.h:14
Definition: Robot.h:31
Definition: XMLNode.h:27
Definition: Control.h:23
std::vector< double > Signal
Definition: Control.h:28
A range of numeric values.
Definition: Range.h:17