Average out the FPS of vision process

Still need to do somethign with it
This commit is contained in:
Matt
2019-11-23 08:22:20 -08:00
parent 9b3e611eaa
commit 2e6f7dbae4

View File

@@ -14,6 +14,7 @@ import edu.wpi.first.networktables.EntryListenerFlags;
import edu.wpi.first.networktables.EntryNotification; import edu.wpi.first.networktables.EntryNotification;
import edu.wpi.first.networktables.NetworkTable; import edu.wpi.first.networktables.NetworkTable;
import edu.wpi.first.networktables.NetworkTableEntry; import edu.wpi.first.networktables.NetworkTableEntry;
import edu.wpi.first.wpiutil.CircularBuffer;
import org.opencv.core.Mat; import org.opencv.core.Mat;
import java.util.ArrayList; import java.util.ArrayList;
@@ -325,11 +326,13 @@ public class VisionProcess {
private class VisionProcessRunnable implements Runnable { private class VisionProcessRunnable implements Runnable {
public Double fps = 0.0; // TODO: (HIGH) update or average or something public Double fps = 0.0; // TODO: (HIGH) update or average or something
private CircularBuffer fpsAveragingBuffer = new CircularBuffer(7);
private CVPipelineResult result; private CVPipelineResult result;
private Mat streamBuffer = new Mat(); private Mat streamBuffer = new Mat();
@Override @Override
public void run() { public void run() {
var lastUpdateTimeNanos = System.nanoTime();
while(!Thread.interrupted()) { while(!Thread.interrupted()) {
System.out.println("running vision process"); System.out.println("running vision process");
@@ -354,9 +357,25 @@ public class VisionProcess {
} else { } else {
// System.err.println("Bad streambuffer mat"); // System.err.println("Bad streambuffer mat");
} }
var deltaTimeNanos = lastUpdateTimeNanos - System.nanoTime();
fpsAveragingBuffer.addFirst(1.0 / (deltaTimeNanos * 1E-09));
lastUpdateTimeNanos = System.nanoTime();
fps = getAverageFPS();
// TODO: (HIGH) do something with the result // TODO: (HIGH) do something with the result
} }
} }
public double getAverageFPS() {
var temp = 0.0;
for(int i = 0; i < 7; i++) {
temp += fpsAveragingBuffer.get(i);
}
temp /= 7.0;
return temp;
}
} }
private class CameraStreamerRunnable extends LoopingRunnable { private class CameraStreamerRunnable extends LoopingRunnable {