Interface TargetMotionInformation

All Known Implementing Classes:
AbstractTargetMotionInformation, DIFARTargetMotionInformation, EventRotator, TrackedGroupTargetMotionInformation

public interface TargetMotionInformation
The control panel will return a list of pamDetections. From these pamDetections we need bearings, GPS Co-Ordinates and other bits and pieces to convert between lat long and some world co-ordinate system. Any control panel will return this interface, which will supply the correct information to the localisers, map and other panels which need this info.
Author:
Jamie Macaulay
  • Method Details

    • getCurrentDetections

      ArrayList<PamDataUnit> getCurrentDetections()
      Returns the pamDetections which will be used for this target motion localisation.
      Returns:
      a list fo the current detections to be localised with target motion algorithms
    • getNDetections

      int getNDetections()
      The number of detections to be used in this target motion.
      Returns:
      the number of detections we have in total getCurrentDetection().size();
    • getTimeDelays

      ArrayList<ArrayList<Double>> getTimeDelays()
      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.
      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

      ArrayList<ArrayList<Double>> getTimeDelayErrors()
      Returns the time delay errors for each detection. This should be based on the uncertainty in spacing between hydrophones for target motion analysis.
      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

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

      PamVector[][] getWorldVectors()
      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.
      Returns:
      a 2D array of world vectors corresponding to each pamDetection in the currentDetectionsGroup.
    • getEulerAngles

      PamQuaternion[] getEulerAngles()
      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.

      Returns:
      PamQuaternion angles for each PamDetection.
      See Also:
    • getHydrophonePos

      ArrayList<ArrayList<javax.vecmath.Point3f>> getHydrophonePos()
      Returns the positions of the hydrophones, relative to (0,0,0) for every pamDetection
      Returns:
      a list of hydrophone positions. Each invalid input: '<'ArrayList corresponds to the hydrophone positions for one PamDetection.
    • getGPSReference

      LatLong getGPSReference()
      The GPS point which corresponds to (0,0,0).
      Returns:
      the lat long which has been used for the (0,0,0) reference.
    • latLongToMetres

      PamVector latLongToMetres(LatLong ll)
      Parameters:
      ll - - the GPS Co-Ordinate
      rotate -
      Returns:
    • metresToLatLong

      LatLong metresToLatLong(PamVector pt)
      Convert a point in your cartesian co-ordinate frame
      Parameters:
      pt -
      isRotated -
      Returns:
    • getReferenceHydrophones

      int getReferenceHydrophones()
      Returns:
    • getTimeMillis

      Long getTimeMillis()
      Get a time for the detection (usually an average of all the individual detectiopns)
      Returns:
    • getBeamLatLong

      GpsData getBeamLatLong(LatLong localised)
      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
      Parameters:
      localised - - localisation result to find beam lat long for.
      Returns:
      lat long
    • getBeamTime

      long getBeamTime(GpsData beamPos)
      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.
      Parameters:
      beamPos - - the beam lat long.
      Returns:
      the time at which the hydrophone array passed the beam lat long point.