Class TrackedGroupTargetMotionInformation

java.lang.Object
difar.trackedGroups.TrackedGroupTargetMotionInformation
All Implemented Interfaces:
TargetMotionInformation

public class TrackedGroupTargetMotionInformation extends Object implements TargetMotionInformation
  • Constructor Details

  • Method Details

    • getMeanPosition

      public double[] getMeanPosition()
      Returns:
      the mean position of all buoys in x,y coordinates.
    • getCurrentDetections

      public ArrayList<PamDataUnit> getCurrentDetections()
      Description copied from interface: TargetMotionInformation
      Returns the pamDetections which will be used for this target motion localisation.
      Specified by:
      getCurrentDetections in interface TargetMotionInformation
      Returns:
      a list fo the current detections to be localised with target motion algorithms
    • getNDetections

      public int getNDetections()
      Description copied from interface: TargetMotionInformation
      The number of detections to be used in this target motion.
      Specified by:
      getNDetections in interface TargetMotionInformation
      Returns:
      the number of detections we have in total getCurrentDetection().size();
    • getTimeDelays

      public ArrayList<ArrayList<Double>> getTimeDelays()
      Description copied from interface: TargetMotionInformation
      Returns the time delays for each detection. The number of time delays per detection is going to be based on the number of hydrophones in the array.
      Specified by:
      getTimeDelays in interface TargetMotionInformation
      Returns:
      a list of time delays. Each ArrayList corresponds to the time delays calculated from a PamDtection,. Time delays are related to channel numbers by the indexM1 and indexM2 functions in AbstractLocalisation.
    • getTimeDelayErrors

      public ArrayList<ArrayList<Double>> getTimeDelayErrors()
      Description copied from interface: TargetMotionInformation
      Returns the time delay errors for each detection. This should be based on the uncertainty in spacing between hydrophones for target motion analysis.
      Specified by:
      getTimeDelayErrors in interface TargetMotionInformation
      Returns:
      a list of time delay errors. Each ArrayList corresponds to the time delays calculated from a PamDtection,. Time delays are related to channel numbers by the indexM1 and indexM2 functions in AbstractLocalisation.
    • getOrigins

      public PamVector[] getOrigins()
      Description copied from interface: TargetMotionInformation
      Returns the origin of the hydrophone array for each detection point- this is in meters relative to 0,0,0;
      Specified by:
      getOrigins in interface TargetMotionInformation
      Returns:
      the vector of a PamDetections origin were (0,0,0) is the origin.
    • getWorldVectors

      public PamVector[][] getWorldVectors()
      Description copied from interface: TargetMotionInformation
      The real world vectors for each detection. There may be an ambiguity in the vectors in which case we would have two world vectors per detections e.g. for a stereo array there are two bearings whilst for a 3D towed array there would usually be only one three dimensional bearing.
      Specified by:
      getWorldVectors in interface TargetMotionInformation
      Returns:
      a 2D array of world vectors corresponding to each pamDetection in the currentDetectionsGroup.
    • getEulerAngles

      public PamQuaternion[] getEulerAngles()
      Description copied from interface: TargetMotionInformation
      Get the Euler angles for each detection. We are assumming that any pamDetection used for the target motion localiser will be from a group which is within a rigid array. Hence the hydrophones within that array will all have the same euler angles.

      Note on Euler Angles:

      We need to know the position and depth of the array but we also must know the rotation of the array. It would be nice to store the rotation as vector, however a unit vector cannot describe fully the rotation of the array. e.g say we have the unit vector (-0.71 0.0 0.71), this would describe a heading of 270 and pitch of 45 degrees. However this unit vector tells us nothing about the roll (tilt) of the array. This is because we had to start off with a unit vector (0,1,0) to rotate to begin with. We can transform co-ordinate systems all we want but a unit vector will only ever tell us two Euler angles. Hence we have to store euler angles as a PamQuaternion not a PamVector.

      Specified by:
      getEulerAngles in interface TargetMotionInformation
      Returns:
      PamQuaternion angles for each PamDetection.
      See Also:
    • getHydrophonePos

      public ArrayList<ArrayList<javax.vecmath.Point3f>> getHydrophonePos()
      Description copied from interface: TargetMotionInformation
      Returns the positions of the hydrophones, relative to (0,0,0) for every pamDetection
      Specified by:
      getHydrophonePos in interface TargetMotionInformation
      Returns:
      a list of hydrophone positions. Each invalid input: '<'ArrayList corresponds to the hydrophone positions for one PamDetection.
    • getGPSReference

      public LatLong getGPSReference()
      Description copied from interface: TargetMotionInformation
      The GPS point which corresponds to (0,0,0).
      Specified by:
      getGPSReference in interface TargetMotionInformation
      Returns:
      the lat long which has been used for the (0,0,0) reference.
    • latLongToMetres

      public PamVector latLongToMetres(LatLong ll)
      Specified by:
      latLongToMetres in interface TargetMotionInformation
      Parameters:
      ll - - the GPS Co-Ordinate
      Returns:
    • metresToLatLong

      public LatLong metresToLatLong(PamVector pt)
      Description copied from interface: TargetMotionInformation
      Convert a point in your cartesian co-ordinate frame
      Specified by:
      metresToLatLong in interface TargetMotionInformation
      Returns:
    • getReferenceHydrophones

      public int getReferenceHydrophones()
      Specified by:
      getReferenceHydrophones in interface TargetMotionInformation
      Returns:
    • getTimeMillis

      public Long getTimeMillis()
      Description copied from interface: TargetMotionInformation
      Get a time for the detection (usually an average of all the individual detectiopns)
      Specified by:
      getTimeMillis in interface TargetMotionInformation
      Returns:
    • getBeamLatLong

      public GpsData getBeamLatLong(LatLong localised)
      Description copied from interface: TargetMotionInformation
      Calculate the beam latitude and longitude. The beam lat long is basically the point on the GPS path which is closest to the localised position of the animal
      Specified by:
      getBeamLatLong in interface TargetMotionInformation
      Parameters:
      localised - - localisation result to find beam lat long for.
      Returns:
      lat long
    • getBeamTime

      public long getBeamTime(GpsData beamPos)
      Description copied from interface: TargetMotionInformation
      Calculate the beam time. This is not the time that the vessel was at the beam lat long but the time the streamer passed that point. Note that if there are multiple streamers passing the point the streamer lengths are averaged and used as our beam lat long. We use the model for each streamer to to work out when it passed the beam lat long point.
      Specified by:
      getBeamTime in interface TargetMotionInformation
      Parameters:
      beamPos - - the beam lat long.
      Returns:
      the time at which the hydrophone array passed the beam lat long point.