After scratching my head for a while dealing with peculiar behavior, I stumbled upon what I believe to be a bug in WPILib. The PIDGet for the AnalogChannel says it returns the average voltage of the channel in its documentation. However, it returns the average value, which is quite different.
/**
* Get the Average **voltage **for the PID Source base object.
*
* @return The average **voltage**.
*/
double AnalogChannel::PIDGet()
{
if (StatusIsFatal()) return 0.0;
return GetAverage**Value**();
}
I confirmed this in code by noting the disparity between GetAverageVoltage and PIDGet when output to the console.
Has anyone else seen this problem? Is the average value the standard behavior? My workaround was to subclass AnalogChannel for the time being.
I have installed all the lates updates, I am using the latest version of the reference and WPILib source, and have re-imaged the the cRIO with this year’s image.