53 #include "rnr/rnrconfig.h" 80 m_nOdPosStart = nOdPosStart;
81 m_nOdPosGoal = nOdPosGoal;
82 m_nSpeedLim = nSpeedLim;
83 m_nOdDir = bIsReversed? -1: 1;
85 m_nOdPosCur = nOdPosStart;
87 m_fSpeedAbsMax = m_nSpeedLim >= 0? (double)m_nSpeedLim: -(
double)m_nSpeedLim;
88 m_fPrevSpeed = (double)nCurSpeed;
93 m_nOdPosCur = (int)fPVOdPosCur;
95 return (
double)(m_nOdPosGoal - m_nOdPosCur);
102 fSpeed = fCVSpeed * (double)m_nOdDir;
107 if( fSpeed > m_fSpeedAbsMax )
109 fSpeed = m_fSpeedAbsMax;
111 else if( fSpeed < -m_fSpeedAbsMax )
113 fSpeed = -m_fSpeedAbsMax;
119 if( TuneAbsMinSpeed > 0.0 )
121 if( (fSpeed > 0.0) && (fSpeed < TuneAbsMinSpeed) )
123 fSpeed = TuneAbsMinSpeed;
125 else if( (fSpeed < 0.0) && (fSpeed > -TuneAbsMinSpeed) )
127 fSpeed = -TuneAbsMinSpeed;
134 if( fabs(fSpeed-m_fPrevSpeed) > TuneMaxSpeedDelta )
136 if( m_fPrevSpeed > fSpeed )
138 fSpeed = m_fPrevSpeed - TuneMaxSpeedDelta;
142 fSpeed = m_fPrevSpeed + TuneMaxSpeedDelta;
146 m_fPrevSpeed = fSpeed;
virtual double toOutput(double fCVSpeed)
Convert control variable to application-specific output value.
virtual void SpecifySetPoint(int nOdPosStart, int nOdPosGoal, int nSpeedLim, int nCurSpeed, bool bIsReversed, bool bUnwind=false)
Specify position setpoint.
virtual void SpecifySetPoint(double fSP, bool bUnwind=false)
Specify the setpoint.
static const double TuneMaxSpeedDelta
max speed change deltas
Miscellaneous collection of useful utilities.
The Dynamixel Position PID Class.
The Dynamixel PID Base Class.
RoadNarrows Dynamixel Top-Level Package Header File.
static const double TuneAbsMinSpeed
absolute minimum speed
virtual double error(double fPVodPosCur)
Calculate error from goal postion setpoint and current position variable value.