angleMeasurement
Class AngleCalibration

java.lang.Object
  extended by angleMeasurement.AngleCalibration

public class AngleCalibration
extends java.lang.Object

Class to sort out angle calibration data.
As for the Fluxgate 3030 calibration it's set so that 0 measured will still give 0 after calibration and all other values are relative to that.
Since there may not be an actual calibration point at 0, the whole calibration table need to be offset so that the first point is at 0.

Author:
Douglas Gillespie

Field Summary
private  int fitOffset
           
private  int fitOrder
           
private  int fitPoints
           
private  double maxError
          max error estimated over all angles.
private  double[] measuredValues
          values from angle measuring device.
private  double[] preparedFitOffsets
           
private  double[][] preparedFits
          pre prepared second order fits around each group of three points for use in calibration calculations
private  Regressions regressions
           
private  double[] sortedMeasuredValues
          sorted values from angle measuring device.
private  double[] sortedTrueValues
          sorted values measured from compass rose
private  double[] trueValues
          values measured from compass rose
private  double[] zeroedSortedTrueValues
          sorted true values which will give a fit of 0 out for0 in
private  double zeroTrue
          true angle for zero measured.
 
Constructor Summary
AngleCalibration(double[] trueValues, double[] measuredValues)
           
 
Method Summary
private  void checkMaxError()
          someone is sure to want to know what the max error is !
private  double[] extractFitValues(double[] dataArray, int startIndex)
           
private  boolean findZero()
          work out which true angle zero measured refers to.
 double getCalibratedAngle(double measured)
           
 int getClosestIndex(double[] searchArray, double searchValue)
           
 double getMaxError()
           
 double[] getMeasuredValues()
           
 double[] getSortedMeasuredValues()
           
 double[] getSortedTrueValues()
           
 double[] getTrueValues()
           
 double getZeroTrue()
           
private  void makeSimilar(double[] dataArray)
           
private  void makeSimilar(double[] dataArray, double targetValue)
          makes angles similar to some target value by adding and subtracting 360.
private  double makeSimilar(double dataValue, double targetValue)
           
 void setFitOrder(int fitOrder)
           
 void setMeasuredValues(double[] measuredValues)
           
 void setTrueValues(double[] trueValues)
           
private  boolean sortCalibrations()
          calibration values probably came in as an array of true points and an array of measuments.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

trueValues

private double[] trueValues
values measured from compass rose


measuredValues

private double[] measuredValues
values from angle measuring device.


sortedTrueValues

private double[] sortedTrueValues
sorted values measured from compass rose


sortedMeasuredValues

private double[] sortedMeasuredValues
sorted values from angle measuring device.


zeroedSortedTrueValues

private double[] zeroedSortedTrueValues
sorted true values which will give a fit of 0 out for0 in


preparedFits

private double[][] preparedFits
pre prepared second order fits around each group of three points for use in calibration calculations


preparedFitOffsets

private double[] preparedFitOffsets

zeroTrue

private double zeroTrue
true angle for zero measured.


maxError

private double maxError
max error estimated over all angles.


regressions

private Regressions regressions

fitOrder

private int fitOrder

fitOffset

private int fitOffset

fitPoints

private int fitPoints
Constructor Detail

AngleCalibration

public AngleCalibration(double[] trueValues,
                        double[] measuredValues)
Method Detail

sortCalibrations

private boolean sortCalibrations()
calibration values probably came in as an array of true points and an array of measuments. We need to be able to inverse this.


getCalibratedAngle

public double getCalibratedAngle(double measured)

checkMaxError

private void checkMaxError()
someone is sure to want to know what the max error is !


getClosestIndex

public int getClosestIndex(double[] searchArray,
                           double searchValue)

findZero

private boolean findZero()
work out which true angle zero measured refers to.
uses quad fit, need to work out if zero is closest to the 0th or the last value.


extractFitValues

private double[] extractFitValues(double[] dataArray,
                                  int startIndex)

makeSimilar

private void makeSimilar(double[] dataArray,
                         double targetValue)
makes angles similar to some target value by adding and subtracting 360.
for instance if the target is 0, then angles will be between -180 and 180
if target is 180, angles will be between 0 and 360, etc.

Parameters:
dataArray -
targetValue -

makeSimilar

private double makeSimilar(double dataValue,
                           double targetValue)

makeSimilar

private void makeSimilar(double[] dataArray)

getMeasuredValues

public double[] getMeasuredValues()

setMeasuredValues

public void setMeasuredValues(double[] measuredValues)

getTrueValues

public double[] getTrueValues()

setTrueValues

public void setTrueValues(double[] trueValues)

getSortedMeasuredValues

public double[] getSortedMeasuredValues()

getSortedTrueValues

public double[] getSortedTrueValues()

getMaxError

public double getMaxError()

getZeroTrue

public double getZeroTrue()

setFitOrder

public void setFitOrder(int fitOrder)