YARP
Yet Another Robot Platform
IPidControl.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 #ifndef YARP_DEV_PIDCONTROL_H
7 #define YARP_DEV_PIDCONTROL_H
8 
9 #include <yarp/os/Vocab.h>
10 #include <yarp/dev/api.h>
11 #include <yarp/dev/GenericVocabs.h>
12 #include <yarp/dev/PidEnums.h>
14 
15 namespace yarp
16 {
17  namespace dev
18  {
19  class IPidControlRaw;
20  class IPidControl;
21  }
22 }
23 
24 
29 {
30 public:
34  virtual ~IPidControlRaw() {}
35 
37 
43  virtual bool setPidRaw(const PidControlTypeEnum& pidtype, int j, const Pid &pid) = 0;
44 
50  virtual bool setPidsRaw(const PidControlTypeEnum& pidtype, const Pid *pids) = 0;
51 
62  virtual bool setPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double ref) = 0;
63 
73  virtual bool setPidReferencesRaw(const PidControlTypeEnum& pidtype, const double *refs) = 0;
74 
81  virtual bool setPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double limit) = 0;
82 
88  virtual bool setPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, const double *limits) = 0;
89 
96  virtual bool getPidErrorRaw(const PidControlTypeEnum& pidtype, int j, double *err) = 0;
97 
102  virtual bool getPidErrorsRaw(const PidControlTypeEnum& pidtype, double *errs) = 0;
103 
110  virtual bool getPidOutputRaw(const PidControlTypeEnum& pidtype, int j, double *out) = 0;
111 
116  virtual bool getPidOutputsRaw(const PidControlTypeEnum& pidtype, double *outs) = 0;
117 
124  virtual bool getPidRaw(const PidControlTypeEnum& pidtype, int j, Pid *pid) = 0;
125 
131  virtual bool getPidsRaw(const PidControlTypeEnum& pidtype, Pid *pids) = 0;
132 
139  virtual bool getPidReferenceRaw(const PidControlTypeEnum& pidtype, int j, double *ref) = 0;
140 
145  virtual bool getPidReferencesRaw(const PidControlTypeEnum& pidtype, double *refs) = 0;
146 
153  virtual bool getPidErrorLimitRaw(const PidControlTypeEnum& pidtype, int j, double *limit) = 0;
154 
160  virtual bool getPidErrorLimitsRaw(const PidControlTypeEnum& pidtype, double *limits) = 0;
161 
168  virtual bool resetPidRaw(const PidControlTypeEnum& pidtype, int j) = 0;
169 
175  virtual bool disablePidRaw(const PidControlTypeEnum& pidtype, int j) = 0;
176 
182  virtual bool enablePidRaw(const PidControlTypeEnum& pidtype, int j) = 0;
183 
190  virtual bool setPidOffsetRaw(const PidControlTypeEnum& pidtype, int j, double v) = 0;
191 
198  virtual bool isPidEnabledRaw(const PidControlTypeEnum& pidtype, int j, bool* enabled) = 0;
199 };
200 
208 {
209 public:
213  virtual ~IPidControl() {}
214 
216 
222  virtual bool setPid(const PidControlTypeEnum& pidtype, int j, const Pid &pid) = 0;
223 
229  virtual bool setPids(const PidControlTypeEnum& pidtype, const Pid *pids) = 0;
230 
241  virtual bool setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) = 0;
242 
252  virtual bool setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) = 0;
253 
260  virtual bool setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) = 0;
261 
267  virtual bool setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) = 0;
268 
275  virtual bool getPidError(const PidControlTypeEnum& pidtype, int j, double *err) = 0;
276 
281  virtual bool getPidErrors(const PidControlTypeEnum& pidtype, double *errs) = 0;
282 
289  virtual bool getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) = 0;
290 
295  virtual bool getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) = 0;
296 
303  virtual bool getPid(const PidControlTypeEnum& pidtype, int j, Pid *pid) = 0;
304 
310  virtual bool getPids(const PidControlTypeEnum& pidtype, Pid *pids) = 0;
311 
318  virtual bool getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) = 0;
319 
324  virtual bool getPidReferences(const PidControlTypeEnum& pidtype, double *refs) = 0;
325 
332  virtual bool getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) = 0;
333 
339  virtual bool getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) = 0;
340 
347  virtual bool resetPid(const PidControlTypeEnum& pidtype, int j) = 0;
348 
354  virtual bool disablePid(const PidControlTypeEnum& pidtype, int j) = 0;
355 
361  virtual bool enablePid(const PidControlTypeEnum& pidtype, int j) = 0;
362 
369  virtual bool setPidOffset(const PidControlTypeEnum& pidtype, int j, double v) = 0;
370 
377  virtual bool isPidEnabled(const PidControlTypeEnum& pidtype, int j, bool* enabled) = 0;
378 };
379 
380 // interface IPositionControl gets
383 
384 
385 #endif // YARP_DEV_CONTROLBOARDINTERFACES_H
define control board standard interfaces
constexpr yarp::conf::vocab32_t VOCAB_PIDS
Definition: IPidControl.h:382
constexpr yarp::conf::vocab32_t VOCAB_PID
Definition: IPidControl.h:381
Interface for a generic control board device implementing a PID controller.
Definition: IPidControl.h:29
virtual bool enablePidRaw(const PidControlTypeEnum &pidtype, int j)=0
Enable the pid computation for a joint.
virtual bool setPidRaw(const PidControlTypeEnum &pidtype, int j, const Pid &pid)=0
Set new pid value for a joint axis.
virtual bool getPidOutputRaw(const PidControlTypeEnum &pidtype, int j, double *out)=0
Get the output of the controller (e.g.
virtual bool setPidReferenceRaw(const PidControlTypeEnum &pidtype, int j, double ref)=0
Set the controller reference for a given axis.
virtual bool setPidOffsetRaw(const PidControlTypeEnum &pidtype, int j, double v)=0
Set an offset value on the ourput of pid controller.
virtual bool disablePidRaw(const PidControlTypeEnum &pidtype, int j)=0
Disable the pid computation for a joint.
virtual bool getPidsRaw(const PidControlTypeEnum &pidtype, Pid *pids)=0
Get current pid value for a specific joint.
virtual bool getPidReferencesRaw(const PidControlTypeEnum &pidtype, double *refs)=0
Get the current reference of all pid controllers.
virtual bool getPidErrorsRaw(const PidControlTypeEnum &pidtype, double *errs)=0
Get the error of all joints.
virtual bool getPidRaw(const PidControlTypeEnum &pidtype, int j, Pid *pid)=0
Get current pid value for a specific joint.
virtual bool getPidOutputsRaw(const PidControlTypeEnum &pidtype, double *outs)=0
Get the output of the controllers (e.g.
virtual bool setPidErrorLimitsRaw(const PidControlTypeEnum &pidtype, const double *limits)=0
Get the error limit for the controller on all joints.
virtual bool getPidErrorRaw(const PidControlTypeEnum &pidtype, int j, double *err)=0
Get the current error for a joint.
virtual bool getPidErrorLimitRaw(const PidControlTypeEnum &pidtype, int j, double *limit)=0
Get the error limit for the controller on a specific joint.
virtual ~IPidControlRaw()
Destructor.
Definition: IPidControl.h:34
virtual bool isPidEnabledRaw(const PidControlTypeEnum &pidtype, int j, bool *enabled)=0
Get the current status (enabled/disabled) of the pid controller.
virtual bool getPidReferenceRaw(const PidControlTypeEnum &pidtype, int j, double *ref)=0
Get the current reference of the pid controller for a specific joint.
virtual bool getPidErrorLimitsRaw(const PidControlTypeEnum &pidtype, double *limits)=0
Get the error limit for all controllers.
virtual bool setPidErrorLimitRaw(const PidControlTypeEnum &pidtype, int j, double limit)=0
Set the error limit for the controller on a specific joint.
virtual bool setPidsRaw(const PidControlTypeEnum &pidtype, const Pid *pids)=0
Set new pid value on multiple axes.
virtual bool setPidReferencesRaw(const PidControlTypeEnum &pidtype, const double *refs)=0
Set the controller reference, multiple axes.
virtual bool resetPidRaw(const PidControlTypeEnum &pidtype, int j)=0
Reset the controller of a given joint, usually sets the current status of the joint as the reference ...
Interface for a generic control board device implementing a PID controller, with scaled arguments.
Definition: IPidControl.h:208
virtual bool setPid(const PidControlTypeEnum &pidtype, int j, const Pid &pid)=0
Set new pid value for a joint axis.
virtual bool getPidReference(const PidControlTypeEnum &pidtype, int j, double *ref)=0
Get the current reference of the pid controller for a specific joint.
virtual bool getPidOutput(const PidControlTypeEnum &pidtype, int j, double *out)=0
Get the output of the controller (e.g.
virtual bool getPidReferences(const PidControlTypeEnum &pidtype, double *refs)=0
Get the current reference of all pid controllers.
virtual bool resetPid(const PidControlTypeEnum &pidtype, int j)=0
Reset the controller of a given joint, usually sets the current status of the joint as the reference ...
virtual bool setPidOffset(const PidControlTypeEnum &pidtype, int j, double v)=0
Set offset value for a given controller.
virtual bool getPidErrorLimits(const PidControlTypeEnum &pidtype, double *limits)=0
Get the error limit for all controllers.
virtual bool getPidError(const PidControlTypeEnum &pidtype, int j, double *err)=0
Get the current error for a joint.
virtual bool getPidErrorLimit(const PidControlTypeEnum &pidtype, int j, double *limit)=0
Get the error limit for the controller on a specific joint.
virtual bool setPidErrorLimit(const PidControlTypeEnum &pidtype, int j, double limit)=0
Set the error limit for the controller on a specifi joint.
virtual bool disablePid(const PidControlTypeEnum &pidtype, int j)=0
Disable the pid computation for a joint.
virtual bool setPidErrorLimits(const PidControlTypeEnum &pidtype, const double *limits)=0
Get the error limit for the controller on all joints.
virtual bool getPidOutputs(const PidControlTypeEnum &pidtype, double *outs)=0
Get the output of the controllers (e.g.
virtual bool setPidReference(const PidControlTypeEnum &pidtype, int j, double ref)=0
Set the controller reference for a given axis.
virtual bool setPidReferences(const PidControlTypeEnum &pidtype, const double *refs)=0
Set the controller reference, multiple axes.
virtual bool getPidErrors(const PidControlTypeEnum &pidtype, double *errs)=0
Get the error of all joints.
virtual ~IPidControl()
Destructor.
Definition: IPidControl.h:213
virtual bool setPids(const PidControlTypeEnum &pidtype, const Pid *pids)=0
Set new pid value on multiple axes.
virtual bool enablePid(const PidControlTypeEnum &pidtype, int j)=0
Enable the pid computation for a joint.
virtual bool isPidEnabled(const PidControlTypeEnum &pidtype, int j, bool *enabled)=0
Get the current status (enabled/disabled) of the pid.
virtual bool getPids(const PidControlTypeEnum &pidtype, Pid *pids)=0
Get current pid value for a specific joint.
virtual bool getPid(const PidControlTypeEnum &pidtype, int j, Pid *pid)=0
Get current pid value for a specific joint.
Contains the parameters for a PID.
std::int32_t vocab32_t
Definition: numeric.h:78
PidControlTypeEnum
Definition: PidEnums.h:18
constexpr yarp::conf::vocab32_t createVocab32(char a, char b=0, char c=0, char d=0)
Create a vocab from chars.
Definition: Vocab.h:28
The main, catch-all namespace for YARP.
Definition: dirs.h:16
#define YARP_dev_API
Definition: api.h:18