Hekateros  3.4.3
RoadNarrows Robotics Robot Arm Project
hekateros::HekPid Class Reference
Inheritance diagram for hekateros::HekPid:

Public Member Functions

 HekPid (double fKp=HekTunePidKpDft, double fKi=HekTunePidKiDft, double fKd=HekTunePidKdDft, double fWi=WI_DFT)
 Default constructor. More...
 
 HekPid (const HekPid &src)
 Copy constructor.
 
virtual ~HekPid ()
 Destructor.
 
HekPidoperator= (const HekPid &rhs)
 Assignment operator.
 
void getKParams (double &fKp, double &fKi, double &fKd) const
 Get the position and velocity PID K parameters. More...
 
void setKParams (const double fKp, const double fKi, const double fKd)
 Set the position and velocity PID K parameters. More...
 
double getMaxDeltaVParam () const
 Get the maximum delta V (ramp) parameter (radians/second). More...
 
void setMaxDeltaVParam (const double fMaxDeltaV)
 Set the maximum delta V (ramp) parameter (radians/second). More...
 
virtual void specifySetPoint (double fJointGoalPos, double fJointGoalVel)
 Specify the PID set point. More...
 
virtual double control (double fJointCurPos, double fJointCurVel, double fDt)
 Apply PID control. More...
 

Static Public Attributes

static const double WI_DFT = 0.25
 integral sum of errors weight const
 

Protected Member Functions

virtual double toOutput (double fJointTgtVel)
 Convert Control Variable to application-specific output value. More...
 

Protected Attributes

double m_fMaxDeltaV
 maximum allowd delta v output
 
double m_fJointGoalPos
 goal position (primary SP)
 
double m_fJointGoalVel
 goal velocity (secondary SP)
 
double m_fJointCurVel
 current velocity (secondary PV)
 

Detailed Description

Definition at line 69 of file hekPid.h.

Constructor & Destructor Documentation

hekateros::HekPid::HekPid ( double  fKp = HekTunePidKpDft,
double  fKi = HekTunePidKiDft,
double  fKd = HekTunePidKdDft,
double  fWi = WI_DFT 
)
inline

Default constructor.

Parameters
fKpPID proportional constant.
fKiPID integral constant.
fKdPID derivative constant.
fWiPID integral sum of errors weight constant.

Definition at line 85 of file hekPid.h.

References hekateros::HekTunePidDeltaVNoMax, m_fJointCurVel, m_fJointGoalPos, m_fJointGoalVel, and m_fMaxDeltaV.

88  :
89  DynaPid(fKp, fKi, fKd, fWi)
90  {
92  m_fJointGoalPos = 0.0;
93  m_fJointGoalVel = 0.0;
94  m_fJointCurVel = 0.0;
95  }
double m_fJointGoalPos
goal position (primary SP)
Definition: hekPid.h:213
double m_fJointGoalVel
goal velocity (secondary SP)
Definition: hekPid.h:214
static const double HekTunePidDeltaVNoMax
No maximum PID delta V output special value.
Definition: hekTune.h:319
double m_fJointCurVel
current velocity (secondary PV)
Definition: hekPid.h:215
double m_fMaxDeltaV
maximum allowd delta v output
Definition: hekPid.h:212

Member Function Documentation

virtual double hekateros::HekPid::control ( double  fJointCurPos,
double  fJointCurVel,
double  fDt 
)
inlinevirtual

Apply PID control.

Parameters
fJointCurPosCurrent joint position (radians). The primary Process Variable PV.
fJointCurVelCurrent joint velocity (radians/second). The secondary PV.
dtDelta time step (seconds).
Returns
Output.

Definition at line 203 of file hekPid.h.

References m_fJointCurVel.

Referenced by hekateros::HekKinJoint::nlmove(), hekateros::HekKinJointWristRot::nlmove(), hekateros::HekKinJoint::planMotion(), and hekateros::HekKinJointWristRot::planMotion().

206  {
207  m_fJointCurVel = fJointCurVel;
208  return Control(fJointCurPos, fDt);
209  }
double m_fJointCurVel
current velocity (secondary PV)
Definition: hekPid.h:215
void hekateros::HekPid::getKParams ( double &  fKp,
double &  fKi,
double &  fKd 
) const
inline

Get the position and velocity PID K parameters.

Parameters
[out]fKpProportional gain parameter.
[out]fKiIntegral gain parameter.
[out]fKdDerivative gain parameter.

Definition at line 137 of file hekPid.h.

138  {
139  fKp = m_fKp;
140  fKi = m_fKi;
141  fKd = m_fKd;
142  }
double hekateros::HekPid::getMaxDeltaVParam ( ) const
inline

Get the maximum delta V (ramp) parameter (radians/second).

Returns
Maximum delta velocity.

Definition at line 165 of file hekPid.h.

References m_fMaxDeltaV.

166  {
167  return m_fMaxDeltaV;
168  }
double m_fMaxDeltaV
maximum allowd delta v output
Definition: hekPid.h:212
void hekateros::HekPid::setKParams ( const double  fKp,
const double  fKi,
const double  fKd 
)
inline

Set the position and velocity PID K parameters.

Parameters
[in]fKpProportional gain parameter.
[in]fKiIntegral gain parameter.
[in]fKdDerivative gain parameter.
Returns

Definition at line 153 of file hekPid.h.

154  {
155  m_fKp = fKp;
156  m_fKi = fKi;
157  m_fKd = fKd;
158  }
void hekateros::HekPid::setMaxDeltaVParam ( const double  fMaxDeltaV)
inline

Set the maximum delta V (ramp) parameter (radians/second).

Parameters
[in]fMaxDeltaVMaximum delta velocity.

Definition at line 175 of file hekPid.h.

References m_fMaxDeltaV, and specifySetPoint().

176  {
177  m_fMaxDeltaV = fMaxDeltaV;
178  }
double m_fMaxDeltaV
maximum allowd delta v output
Definition: hekPid.h:212
void HekPid::specifySetPoint ( double  fJointGoalPos,
double  fJointGoalVel 
)
virtual

Specify the PID set point.

The PID will control the primary postion Set Point SP through the velocity Control Variable CV. The PID will strive to reach the goal velocity (secondary SP) while achieving the primary SP.

Parameters
fJointGoalPosNew goal position set point (radians).
fJointGoalVelNew goal velocity set point (radians/second).

Definition at line 71 of file hekPid.cxx.

Referenced by hekateros::HekKinJoint::nlspecifyMove(), and setMaxDeltaVParam().

72 {
73  DynaPid::SpecifySetPoint(fJointGoalPos, true);
74 
75  m_fJointGoalPos = fJointGoalPos;
76  m_fJointGoalVel = fJointGoalVel;
77 }
double m_fJointGoalPos
goal position (primary SP)
Definition: hekPid.h:213
double m_fJointGoalVel
goal velocity (secondary SP)
Definition: hekPid.h:214
double HekPid::toOutput ( double  fJointTgtVel)
protectedvirtual

Convert Control Variable to application-specific output value.

Parameters
fJointTgtVelRaw joint target velocity (radians/second). The Control Variable CV from PID.
Returns
Target velocity.

Definition at line 79 of file hekPid.cxx.

References hekateros::fcap().

80 {
81  double fMax = fabs(m_fJointGoalVel);
82 
83  // limit delta velocity
85  {
86  fCVJointTgtVel = fcap(fCVJointTgtVel, m_fJointCurVel-m_fMaxDeltaV,
88  }
89 
90  return fcap(fCVJointTgtVel, -fMax, fMax);
91 }
double m_fJointGoalVel
goal velocity (secondary SP)
Definition: hekPid.h:214
static const double HekTunePidDeltaVNoMax
No maximum PID delta V output special value.
Definition: hekTune.h:319
double fcap(double a, double min, double max)
Cap value within limits [min, max].
Definition: hekUtils.h:163
double m_fJointCurVel
current velocity (secondary PV)
Definition: hekPid.h:215
double m_fMaxDeltaV
maximum allowd delta v output
Definition: hekPid.h:212

The documentation for this class was generated from the following files: