-Client optimizations
-Implemented comprehensize logging system
git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4143 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/971CV/src/org/frc971/VisionTuner.java b/971CV/src/org/frc971/VisionTuner.java
index c664391..4d062dc 100644
--- a/971CV/src/org/frc971/VisionTuner.java
+++ b/971CV/src/org/frc971/VisionTuner.java
@@ -3,7 +3,12 @@
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
+
import java.util.Arrays;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import java.io.FileNotFoundException;
import javax.swing.JPanel;
import javax.swing.JSlider;
@@ -41,6 +46,8 @@
public class VisionTuner {
private Recognizer recognizer = new Recognizer2013();
+ private final static Logger LOG = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
+
private final CanvasFrame cameraFrame = new CanvasFrame("Camera");
private final JPanel panel = new JPanel();
private final JSlider hueMinSlider = new JSlider();
@@ -56,6 +63,18 @@
private TestImageGetter getter;
public VisionTuner() {
+ //set logger to log everything
+ LOG.setLevel(Level.ALL);
+ try {
+ LogHandler handler = new LogHandler("../src/org/frc971/ds_vision.log");
+ TimeFormatter formatter = new TimeFormatter();
+ handler.setFormatter(formatter);
+ LOG.addHandler(handler);
+ }
+ catch (FileNotFoundException e) {
+ System.err.println("Warning: Logging initialization failed.");
+ }
+
cameraFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
recognizer.showIntermediateStages(true);
@@ -66,7 +85,7 @@
ChangeListener sliderListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
- System.out.println("New HSV range ["
+ LOG.fine("New HSV range ["
+ hueMinSlider.getValue() + " .. "
+ hueMaxSlider.getValue() + "] "
+ satMinSlider.getValue() + "+ "
@@ -99,7 +118,7 @@
valMinSlider.setValue(recognizer.getValMin());
panel.add(valMinSlider);
- System.out.println("Initial HSV range ["
+ LOG.fine("Initial HSV range ["
+ hueMinSlider.getValue() + " .. "
+ hueMaxSlider.getValue() + "] "
+ satMinSlider.getValue() + "+ "
@@ -117,7 +136,7 @@
*/
private void processImage(WPIColorImage cameraImage) {
- cameraFrame.setTitle("Test Images:");
+ cameraFrame.setTitle("Input:");
long startTime = System.nanoTime();
WPIImage processedImage = recognizer.processImage(cameraImage);
@@ -130,9 +149,8 @@
totalMsec += milliseconds;
minMsec = Math.min(minMsec, milliseconds);
maxMsec = Math.max(maxMsec, milliseconds);
- System.out.format("The recognizer took %.2f ms, %.2f fps, %.2f avg%n",
- milliseconds, 1000 / milliseconds,
- 1000 * totalFrames / totalMsec);
+ LOG.fine("The recognizer took " + milliseconds + " ms, " +
+ (1000 * totalFrames / totalMsec) + " fps, %.2f avg");
}
}
@@ -159,11 +177,8 @@
nextImage();
break;
case KeyEvent.VK_Q: // Q: print time measurements then quit
- System.out.format("The recognizer took %.2f ms avg, %.2f min,"
- + " %.2f max, %.2f fps avg%n",
- totalMsec / totalFrames,
- minMsec, maxMsec,
- 1000 * totalFrames / totalMsec);
+ LOG.fine("The recognizer took " + (totalMsec / totalFrames) + "ms avg, " + minMsec +" min,"
+ + maxMsec + " max, " + (1000 * totalFrames / totalMsec) + " fps avg");
System.exit(0);
}
}
@@ -174,13 +189,14 @@
//debug mode has been requested
tuner.getter = new TestImageGetter(".");
WPIColorImage to_process = tuner.getter.GetNext();
- if (to_process != null)
+ if (to_process != null) {
tuner.processImage(to_process);
+ for (;;) {
+ tuner.processEvents();
+ }
+ }
else
- System.err.println("Cannot find test images.");
- for (;;) {
- tuner.processEvents();
- }
+ LOG.severe("Cannot find test images.");
}
else {
HTTPClient client = new HTTPClient();
@@ -188,7 +204,7 @@
ImageWithTimestamp to_process = client.GetFrame();
if (to_process.image != null) {
tuner.processImage(to_process.image);
- System.out.println("Captured time: " + Double.toString(to_process.timestamp));
+ LOG.fine("Captured time: " + Double.toString(to_process.timestamp));
}
}
}