51 #ifndef _DYNA_PID_SPEED_H 52 #define _DYNA_PID_SPEED_H 60 #include "rnr/rnrconfig.h" 92 double fKi=SpeedPidKiDft,
93 double fKd=SpeedPidKdDft,
106 DynaPid(src.m_fKp, src.m_fKi, src.m_fKd, src.m_fWi)
110 SetStartingPos(src.
m_nPos[0]);
132 m_nSpeedMin = nSpeedMin;
133 m_nSpeedMax = nSpeedMax;
134 m_nOdModulo = nOdModulo;
144 m_nPos[0] = (int)uStartPos;
145 m_nPos[1] = (int)uStartPos;
162 virtual double CalcDpDt(uint_t uCurPos, uint_t uPrevPos,
double dt)
164 return CalcDpDt((
int)uCurPos, (
int)uPrevPos, dt);
182 virtual double CalcDpDt(
int nCurPos,
int nPrevPos,
double dt);
195 virtual void SpecifySetPoint(
double fDpDt,
bool bUnwind =
false);
205 virtual double Control(uint_t uCurPos,
double dt)
223 SetStartingPos(rhs.
m_nPos[0]);
242 virtual double toPV(uint_t uCurPos,
double dt)
245 m_nPos[1] = m_nPos[0];
246 m_nPos[0] = (int)uCurPos;
248 return CalcDpDt(m_nPos[0], m_nPos[1], dt);
256 virtual double toOutput();
260 #endif // _DYNA_PID_SPEED_H double m_fKd
derivative constant
virtual double Control(double fPV, double dt)
Apply PID control.
#define DYNA_SPEED_MIN_CTL
mininum raw speed with control
static const double WiSumErrDft
default sum error weight
#define DYNA_MODE_SERVO
servo mode with limited rotation
static const double SpeedPidKdDft
default Kd constant
int m_nSpeedMin
servo minimum raw value
virtual double toPV(uint_t uCurPos, double dt)
Save current position and convert to dp/dt process variable.
virtual void SetServoParams(int nMode, int nSpeedMin, int nSpeedMax, int nOdModulo)
Set servo paramaters required for speed PID.
static const double SpeedPidKpDft
default Kp constant
DynaPidSpeed(const DynaPidSpeed &src)
Copy constructor.
static const double SpeedPidKiDft
default Ki constant
#define DYNA_SPEED_MAX_CTL
maxinum raw speed with control
int m_nOdModulo
servo odometer rollover modulo
#define DYNA_POS_MODULO
servo position modulo [0-max]
virtual double Control(uint_t uCurPos, double dt)
Apply PID control.
double m_fKp
proportional constant
The Dynamixel PID Base Class.
virtual void SetStartingPos(uint_t uStartPos)
Set speed PID starting positions.
virtual ~DynaPidSpeed()
Default destructor.
virtual double CalcDpDt(uint_t uCurPos, uint_t uPrevPos, double dt)
Convert the current and previous positions measured over delta time to dp/dt.
RoadNarrows Dynamixel Top-Level Package Header File.
Proportional–Integral–Derivative Controller for Dynamixel servos.
double m_fWi
weighted sum of errors moving average constant
DynaPidSpeed & operator=(const DynaPidSpeed &rhs)
Assignment operator.
int m_nPos[2]
servo current (0) and previous (1) positions
int m_nSpeedMax
servo maximum raw value
double m_fKi
integral constant
DynaPidSpeed(double fKp=SpeedPidKpDft, double fKi=SpeedPidKiDft, double fKd=SpeedPidKdDft, double fWi=DynaPid::WiSumErrDft)
Default constructor.