@@ -61,15 +61,10 @@ class ControlSystem(
6161 */
6262 val reference: KineticState by interpolator::currentReference
6363
64- /* *
65- * The last raw (unfiltered) measurement
66- */
67- var lastRawMeasurement: KineticState = KineticState ();
68-
6964 /* *
7065 * The last filtered measurement
7166 */
72- var lastFilteredMeasurement : KineticState = KineticState ();
67+ var lastMeasurement : KineticState = KineticState ();
7368
7469 /* *
7570 * Calculates the output power given the current state of the system. In the case that your
@@ -84,8 +79,7 @@ class ControlSystem(
8479 fun calculate (sensorMeasurement : KineticState = KineticState ()): Double {
8580 val filteredMeasurement = filter.filter(sensorMeasurement)
8681
87- lastRawMeasurement = sensorMeasurement;
88- lastFilteredMeasurement = filteredMeasurement;
82+ lastMeasurement = filteredMeasurement;
8983
9084 val error = interpolator.currentReference - filteredMeasurement
9185
@@ -99,16 +93,16 @@ class ControlSystem(
9993 * Whether the system is within a specified tolerance of the goal
10094 *
10195 * @param tolerance how close to the goal is considered within tolerance
102- * @param useFilteredMeasurement whether to use a filtered or raw measurement
10396 *
10497 * @return whether the system is within tolerance of the goal
98+ *
99+ * @author rowan-mcalpin
105100 */
106- @JvmOverloads
107- fun isWithinTolerance (tolerance : Double , useFilteredMeasurement : Boolean = true): Boolean {
108- return abs(
109- (goal - (if (useFilteredMeasurement) lastFilteredMeasurement else
110- lastRawMeasurement)).position
111- ) <= tolerance;
101+ fun isWithinTolerance (tolerance : KineticState ): Boolean {
102+ return (
103+ abs((goal - lastMeasurement).position) <= tolerance.position &&
104+ abs((goal - lastMeasurement).velocity) <= tolerance.velocity &&
105+ abs((goal - lastMeasurement).acceleration) <= tolerance.acceleration)
112106 }
113107
114108 /* *
0 commit comments