Class HyperbolicLocaliser
java.lang.Object
group3dlocaliser.algorithm.LocaliserAlgorithm3D
group3dlocaliser.algorithm.toadbase.TOADBaseAlgorithm
group3dlocaliser.algorithm.hyperbolic.HyperbolicLocaliser
- All Implemented Interfaces:
LocaliserModel<PamDataUnit>
Hyperbolic localisation using methods described in Gillette, M. D., and
Silverman, H. F. (2008). �A linear closed-form algorithm for source
localization from time-differences of arrival,� IEEE Signal Processing
Letters, 15, 1�4.
Also worth reading Spiesberger, J. L. (2001). �Hyperbolic location errors due to insufficient numbers of receivers,� The Journal of the Acoustical Society of America, 109, 3076�3079. which gives a clearer explanation of why at least 4 recievers are needed for 2D localisation and 5 for 3D localisation.
Worth noting that the equations derived in Gillette 2008 are functionally
identical to those in Spiesberger 2001 and an earlier work by Speisberger and
Fristrup:
Spiesberger, J. L., and Fristrup, K. M. (1990). �Passive localization of
calling animals and sensing of their acoustic environment using acoustic
tomography,� The american naturalist, 135, 107�153.
- Author:
- Doug Gillespie
-
Nested Class Summary
Nested classes/interfaces inherited from class group3dlocaliser.algorithm.toadbase.TOADBaseAlgorithm
TOADBaseAlgorithm.MultiVariateType
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptioncalcErrors
(GroupLocResult loclaisation, PamDataUnit groupDataUnit, SnapshotGeometry geometry, TOADInformation toadInformation, HyperbolicParams params) Calculate and add the errors in source position.double[]
calcErrors
(PamDataUnit groupDataUnit, SnapshotGeometry geometry, TOADInformation toadInformation, HyperbolicParams params) Calculate the errors in source position.Get an algorithm specific settings pane.double[]
The type of localisation information the localiser can accept.getName()
Get the name which describes the localiser.getSQLLoggingAddon
(int arrayType) Get SQL Logging Addon data to append to the basic database tableboolean
True if the model has parameters to set.void
notifyModelProgress
(double progress) This should be called whenever the localiser has finished processing and, if the localisation process is long, then updates progress.processTOADs
(PamDataUnit groupDataUnit, SnapshotGeometry geometry, TOADInformation toadInformation) Process the list of delays, which are in secondsMethods inherited from class group3dlocaliser.algorithm.toadbase.TOADBaseAlgorithm
calcChi2, calcLogLikelihood, canLocalise, checkTOADInformation, countUsableTOADS, countUsableTOADS, estimateCartesianError, estimateEllipticalError, getSourceSettingsPane, getToadBaseParams, prepare, runModel
Methods inherited from class group3dlocaliser.algorithm.LocaliserAlgorithm3D
canArrayShape, getGroupChannelMap, preFilterLoc, setLocaliserParams
-
Constructor Details
-
HyperbolicLocaliser
-
-
Method Details
-
processTOADs
public AbstractLocalisation processTOADs(PamDataUnit groupDataUnit, SnapshotGeometry geometry, TOADInformation toadInformation) Description copied from class:TOADBaseAlgorithm
Process the list of delays, which are in seconds- Specified by:
processTOADs
in classTOADBaseAlgorithm
- Parameters:
groupDataUnit
- group data unit.toadInformation
- all information on delays, errors, channels, etc.- Returns:
-
calcErrors
public GroupLocResult calcErrors(GroupLocResult loclaisation, PamDataUnit groupDataUnit, SnapshotGeometry geometry, TOADInformation toadInformation, HyperbolicParams params) Calculate and add the errors in source position. This is achieved by sampling a random number from the time delay error distributions, localising and looking at the distribution in position of localisation results.- Parameters:
loclaisation
- - the localisation result.params
- - hyperbolic params object with settings for error calculations.timeDelays
- - object containing time delay data.hydrophonePos
- - the hydrophone positions.- Returns:
- the loclaisation object iwth errors added.
-
calcErrors
public double[] calcErrors(PamDataUnit groupDataUnit, SnapshotGeometry geometry, TOADInformation toadInformation, HyperbolicParams params) Calculate the errors in source position. This is achieved by sampling a random number from the time delay error distributions, localising and looking at the distribution in position of localisation results.- Parameters:
params
- - hyperbolic params object with settings for error calculations.timeDelays
- - object containing time delay data.hydrophonePos
- - the hydrophone positions.- Returns:
- the errors in meters
-
getName
Description copied from interface:LocaliserModel
Get the name which describes the localiser.- Returns:
- the name of the localiser.
-
getSQLLoggingAddon
Description copied from class:LocaliserAlgorithm3D
Get SQL Logging Addon data to append to the basic database table- Specified by:
getSQLLoggingAddon
in classLocaliserAlgorithm3D
- Parameters:
arrayType
- type of array - which may affect how logging is organised.- Returns:
- SQL Logging information.
-
getLastPosVector
public double[] getLastPosVector()- Returns:
- the lastPosVector
-
getToolTipText
-
getLocContents
Description copied from interface:LocaliserModel
The type of localisation information the localiser can accept. e.g. bearings, time delays etc. The types are defined in the AbstractLocalisation class.- Returns:
- integer bitmap of the type of localisation information the localiser can use.
-
getAlgorithmSettingsPane
Description copied from class:LocaliserAlgorithm3D
Get an algorithm specific settings pane. This holds settings which are specific to the localisation algorithm.- Specified by:
getAlgorithmSettingsPane
in interfaceLocaliserModel<PamDataUnit>
- Overrides:
getAlgorithmSettingsPane
in classLocaliserAlgorithm3D
- Returns:
- the settings pane for the localiser.
-
hasParams
public boolean hasParams()Description copied from interface:LocaliserModel
True if the model has parameters to set. If has the localiser has a settings pane it will have parameters. This generally puts an extra button onto a display panel. -
notifyModelProgress
public void notifyModelProgress(double progress) Description copied from interface:LocaliserModel
This should be called whenever the localiser has finished processing and, if the localisation process is long, then updates progress.
-