Skip to main content
  • Telemetry case report
  • Open access
  • Published:

High precision 3-D coordinates for JSATS tagged fish in an acoustically noisy environment



Acoustic tagging methods have been used to track fish for some time. Multiple systems have been developed, including those that give researchers the ability to position fish in three dimensions and time. However, proprietary positioning methods have suffered from a lack of transparency. The U.S. Department of Energy and the U.S. Army Corps of Engineers developed the Juvenile Salmon Acoustic Telemetry System (JSATS) to monitor the survivability of juvenile salmonids as they migrate downstream. With much smaller tags and high ping rates, JSATS positioning studies should be more prevalent, but implementation is difficult and often out of reach for small budget-minded studies. This study implemented a small scale JSATS positioning study using relatively inexpensive, autonomous, independent receivers. We will show that proper synchronization of the transmissions and elimination of multipath allows the positions of a smolt to be determined in three spatial dimensions over time with high precision.


Tracking of 172 tagged smolts produced a total of nearly 2,00,000 positions. We compared the performance of four different supervised machine learning classifiers (Support Vector Classifier (SVC), Gaussian Naïve Bayes (NB), Classification Tree (CART), and K-Nearest Neighbor (KNN). All algorithms performed well with high accuracy and precision, but recall rates decreased with distance from the source. The SVC and KNN were least restrictive in practice. Overall, the SVC had the longest time to solve.


Positions determined from fish outside of the convex hull of the hydrophones were effectively being extrapolated, while positions determined from within the convex hull nearly always met or exceeded 1-m precision. Having stationary submerged hydrophones was necessary to produce three-dimensional positions. The main technical advances presented are the hydrophone-clock synchronization scheme and the multipath rejection scheme, which found the best multipath classifier to be the K-Nearest Neighbor. Neither algorithm was capable of alleviating close proximity detection interference (CPDI), suggesting the need to reposition receivers from reflective surfaces or install baffling.


Acoustic tagging technologies and positioning algorithms have made it possible to track aquatic animals at fine temporal and spatial scales, meaning, in theory, it could be possible to infer behavioral responses to stimuli. The system is comprised of a “tag” that is attached to, or embedded into, the animal; hydrophones that are affixed to immobile objects in the study area; and data-logging equipment to record the data from the hydrophones. A tag emits a sonic transmission that the hydrophones can detect. The transmission includes a unique digital signature (tag ID) to ensure correct determination of which tag was detected. To obtain 3-D positions, four or more hydrophones must detect the same transmission from a tag. The positioning problem is then resolved by determining the distances from the hydrophones to the tag at the moment of transmission by inference from the speed of sound and the elapsed time for the transmission to propagate from the tag to the hydrophones. Given the 3-D positions of the hydrophones, the time of transmission, and the times of detections, the position is determined using multilateration, similar to positioning with a Global Positioning System (GPS) receiver.

The mathematics of multilateration require that the clocks in the hydrophones be synchronized, so there must either be additional infrastructure to synchronize the clocks in situ or resolution of the clock time biases in software ex post facto. Hardware synchronization either requires communication among the receivers and a time standard, or the ability to do time transfer from, for example, the GPS to synchronize to GPS time, which is nominally equivalent to Coordinated Universal Time (UTC) (in French, temps universel coordonné).

For fish passage studies, these requirements dictate deploying an array of receivers in a complex and highly reflective environment. Here, by reflective we mean that the acoustic transmissions can reflect off objects in the surroundings and, thus, take a non-direct route to the hydrophones. When reflections occur, a hydrophone can detect one or more transmissions in the same epoch from a single tag, resulting in the multipath problem: a single transmission took multiple paths to reach a hydrophone [27]. Confusing a multipath transmission for the direct-route transmission introduces error into the position estimate, often egregious error.

Open-source positioning algorithms have been proposed to assist researchers who possess the appropriate data (UTC synched), but most acoustic positioning solutions utilize proprietary software and value-added vendor services. For cost-conscious studies that cannot afford expensive systems or vendor services with recurring fees, this often means falling back onto more simple presence/absence receiver arrays, because researchers lack a method of synchronizing independent receiver clocks and reliably removing multipath.

The VEMCO VPS system is a proprietary turn-key acoustic positioning solution [4] that uses multiple independent receivers each with a single independent hydrophone. The VPS system uses hyperbolic exact positioning algorithms to locate fish, where the horizontal position error is a weight averaged position among all combinations of receivers that detected a transmission [23]. The VPS system has enjoyed extensive use. Binder et al. [4] deployed 140 recivers to track lake trout within Lake Huron, North America, but found extensive multipath error after filtering. Roberts et al. [20] used the VPS system to describe space-use with a kernel distribution. With VPS, depth is measured by pressure sensors in the tag and encoded in the transmission message [4], which makes the message longer than other technologies, leading to collisions with other tag messages and potentially themselves. The manufacturer HTI has another comparable proprietary system, which also sees extensive use. Perry et al. [18] used an HTI array with unsynchronized clocks to understand the effects of strobe lights on migrating resident salmonids. Bergé et al. [3] tested a UTC synchronized HTI array to optimize receiver geometry among other variables and found the best configuration resulted in a 44 percent detection efficiency with an error of 3.6 m. In 2019, VEMCO and HTI were acquired by Innovasea [12].

The open source Yet another positioning solution (YAPS) algorithm [2] is an improvement over proprietary solutions, and it works with UTC-synchronized data. YAPS couples a maximum likelihood analysis of time-of-arrival data with a state-space movement model [2]. Using tags with a stable transmission rate, YAPS can anticipate the time of transmission allowing researchers to model time-of-arrival on a random-walk basis, making it easier to filter out multipath detections and improve accuracy. Vergeynst et al. [26] used YAPS on a VPS data set in a highly reflective environment and found significant accuracy improvement. However, YAPS does not synchronize independent clocks.

The Juvenile Salmon Acoustic Telemetry System (JSATS) is a non-proprietary acoustic sensing technology developed for the U.S. Army Corps of Engineers to evaluate the behavior and survival of juvenile salmonids migrating through the Columbia River system [27]. The JSATS tags’ transmissions are detected and decoded by self-contained autonomous hydrophone receivers (HRs) placed at strategic locations throughout the project area [27]. Determining a 3-D position of the fish in time requires transmission detection by four or more receivers [6]. Li et al. [14] improved upon the 2-d closed-form approximate maximum likelihood (AML) developed by Chan et al. [5] by extending to a third dimension and using a linear least squares solution as an initial guess. The AML is a non-exact solver that alleviates influence from first-return multipath with a weighting matrix and processing step on time of arrivals. Rauchenstein et al. [19] further improved upon the AML using machine learning methods to identify and remove multipath biased position estimates. In 2019, Fu et al. [10] developed a hierarchical localized regression technique using a series of two-way messages to synchronize independent JSATS receivers. The localized linear regression technique assumes a constant clock drift. Multipath error present in beacon tag transmissions could bias the regression parameters and impart error into the clocks, which could prove problematic for studies in highly reflective environments.

The approach employed in this study synchronizes clocks, removes multipath error, and produces 3-D positions of fish in time with nonlinear least squares estimation using relatively inexpensive autonomous JSATS hydrophone receivers. If the receivers have sufficient temporal resolution (microsecond) and the speed-of-sound is accurately measured, it is possible to set up small-scale arrays that produce precise 3-D positions in highly reflective, acoustically noisy environments.


These methods were implemented on a juvenile smolt downstream passage study on the Cowlitz River, Washington, US (Fig. 1) at the Cowlitz Falls Dam. The study tagged 179 fish with Advanced Telemetry Systems Model SS400 JSATS acoustic tags and tracked them with nine autonomous Teknologic (Model 11,497) autonomous cabled hydrophone receivers (HR) fixed in position and encircling the area of interest for 3-D positions (Fig. 2). The HRs collected large amounts of data, which were managed by SQLite, an in-process library that implements a self-contained, server-less, zero-configuration, transactional SQL database engine [24].

Fig. 1
figure 1

Location of the Cowlitz River, a tributary to the Columbia River

Fig. 2
figure 2

Positions of the 9 Technologic receivers and their convex hull. Units are in meters. Note, R05 is not on the convex hull, including it would create a depression, which is concave. Receiver R04 is located adjacent to the fish passage entrance, while R07, R08 and R09 are affixed to the trashrack. The Receivers R07, R04 and R01 are essentially on the face of the dam

For ease of computation, all time stamps were converted to decimal microseconds in Unix time (decimal microseconds since January 1, 1970 stored as a 32-bit floating point decimal). Following the initial data management, the study team enumerated beacon tag transmissions (epochs), synchronized clocks, removed multipath errors, and finally produced 3-D coordinates with a corrected time stamp for the fish.

Mathematical model for positioning

A fish tag periodically emits an acoustic pulse that uniquely identifies the tag’s transmission content, which consists entirely of the tag ID. The pulse is detected by the hydrophone receivers, which have internal clocks that record the moment they detect the pulse in a manner similar to how a GPS receiver records the moment it detects the radio transmission from satellites. However, unlike GPS, the acoustic pulse does not encode a time stamp of when it was emitted. The tag-positioning problem is, therefore, different from the GPS positioning problem in that there is an additional unknown, the moment when the pulse was emitted. Nonetheless, the conceptual basis of the two systems is quite similar, so similar solution methods pertain.

The mathematics for three-dimensional positioning using JSATS can be found in Ehrenberg and Steig [7, 8]. Our positioning equation is formed from the difference of the equations for two receivers, a and b, positioning the smolt independently, which eliminates the time-of-transmission as an unknown, producing

$$ t_{a} - t_{b} + c^{( - 1)} (\sqrt {(x_{b} - X)^{2} + (y_{b} - Y)^{2} + (z_{b} - Z)^{2} } - \sqrt {((x_{a} - X)^{2} + (y_{a} - Y)^{2} + (z_{a} - Z)^{2} ))} = 0, $$

where \({t}_{a}\) and \({t}_{b}\) are the (synchronized) times-of-detections at the receivers; c is the instantaneous speed-of-sound in fresh water; \({x}_{a},{y}_{a},\) and \({z}_{a}\) are receiver a’s spatial coordinates (similar for receiver b); and \(X,Y,Z\) are the desired coordinates of the smolt. This equation is nonlinear in \(X,Y,Z\), so it is solved iteratively using a nonlinear least squares estimator. This equation reveals some subtle requirements.

Unlike the GPS equations in which receiver time-bias terms can be determined mathematically, here we have the situation in which including the time biases always results in more unknowns than equations. Therefore, the receivers’ clocks must be synchronized prior to the position estimation; for GPS, the receiver’s time bias is solved for as a fourth unknown. The speed-of-sound must be known a priori epoch-by-epoch. Water temperature was continuously monitored at three stations within the impoundment with a string of HOBO Water Temperature Pro v2 probes at 0.5, 1, 3, 4.5, 6, 7.5, 9, 12, and 14.5 m depth. The positions of the receivers must be known epoch-by-epoch, receivers mounted on infrastructure at the surface were located with a Trimble Geox7 GPS with 10 cm of accuracy after post processing with Trimble Pathfinder. Six receivers were mounted near the water surface; with three on immobile supports (R04, R05, R06), and the other three were affixed to the trash rack which tracked with the water surface (R07, R08, R09) and three were placed at the bottom of the forebay (R01, R02, R03) (Fig. 2). The positions of the submerged receivers could not readily be observed, so they were positioned using their attached beacons as if they were fish. This required an epoch-by-epoch vertical-coordinate determination. Thus, it is possible to validate the receivers’ positions by inferring their separation using the beacon transmissions given the speed-of-sound.

Speed of sound

The mathematical model requires a priori knowledge of the per-epoch speed-of-sound. The study team deployed three temperature sensor vertical profile strings within the project area, which collected water temperature readings throughout the study at 5-min intervals with high precision. To estimate a water column temperature, we fit a piecewise linear spline to temperature data at each depth interval. The linear spline allowed us to “sample” water temperature at depth at any time throughout the study. Because we do not know, where a fish is when a tag fires, a good estimate of water column temperature is the mean of all interpolated temperature-at-depths. After determining water temperature (average temperature at time), the speed-of-sound on an epoch-by-epoch basis was calculated with a cubic spline fit to data provided by Seafloor Systems [24].

Clock synchronization

The mathematical model requires a priori synchronization of receiver clocks. This was accomplished using the concept of a metronome; receiver R05 was the time standard and we synchronized the other clocks to it. Knowing the receivers’ spatial coordinates allows the positioning problem to be inverted and solved for time-of-transmission, so the clocks were synchronized using the beacon attached to receiver R05.

The goal was to determine the “true” times of transmission and reception, as the exact moments in time (i.e., the time of a perfect clock) when the transmitting receiver emitted its beacon signal and when that signal was detected by the other hydrophone receivers (HRs).

Explicit moments-in-time require an explicit time reference, such as UTC or GPS time; however, the positioning equations depend only on the differences of the times-of-transmission and the times-of-reception, so their collective bias from time external standards vanishes in the difference. It is essential, however, that the HRs’ clocks are not biased relative to each other.

For HRs i and j located at \(\left({x}_{i},{y}_{i},{z}_{i}\right)\) and \(\left({x}_{j},{y}_{j},{z}_{j}\right)\), respectively, the fundamental geometric relationship for the distance separating them is

$$ d_{i,j} = \sqrt {\left( {x_{j} - x_{i} } \right)^{2} + \left( {y_{j} - y_{i} } \right)^{2} + \left( {z_{j} - z_{i} } \right)^{2} } . $$

It was assumed that the HRs’ epoch-by-epoch positions are known correctly, so \({d}_{i,j}\) was taken as correct. Some of the HRs moved with the water surface elevation of the forebay, so, more specifically, \({d}_{i,j}\) was taken as being correct epoch-by-epoch and the notation implies distance at some particular epoch or moment in time.

It takes some time for a signal from, say, HR i to be detected by some other HR j, namely, the true time of reception \({\tau }_{j}^{r}\) minus the true time of transmission \({\tau }_{i}^{x}\). Multiplying this difference by the speed of sound for this epoch, \(c\), again gives the distance separating the receivers:

$$ d_{i,j} = c\left( {\tau_{j}^{r} - \tau_{i}^{x} } \right). $$

The per-epoch speed-of-sound as determined with the average forebay water temperature reading was taken as correct, as well. The clock in hydrophone R05, which was chosen to be the standard, will not generally run synchronized with the clocks in the other HRs—their clocks will not read the same value at the same moment in true time, and their clocks will generally run at different rates. The absolute offset of a clock’s reading from the true time can be expressed as the reading of the clock, t, minus its bias from the true time, ε:

$$ \tau = t - \varepsilon . $$

By subtracting \(\varepsilon \) (as opposed to adding it), the study team was consistent with the intuition that the clock is running fast when \(\varepsilon \) is positive, or the clock is running slow when \(\varepsilon \) is negative. The clock drift rate is given by the time derivative of Eq. (3):

$$ \dot{\tau } = \dot{t} - \dot{\varepsilon }, $$

where the dot notation denotes the time derivative of the dotted quantity. However, \(\dot{\tau }\equiv 1\), because \(\tau \) is true time, so

$$ \dot{t} = {1} + \dot{\varepsilon }. $$

Substituting Eq. (3) into Eq. (2) gives

$$ d_{i,j} = c\left( {\left( {t_{j}^{r} - \varepsilon_{j} } \right) - \left( {t_{i}^{x} - \varepsilon_{i} } \right)} \right) = c\left( {\left( {t_{j}^{r} - t_{i}^{x} } \right) - \left( {\varepsilon_{j} - \varepsilon_{i} } \right)} \right) $$

so, in general,

$$ d_{i,j} = c\left( {t_{j}^{r} - t_{i}^{x} } \right) - c\left( {\varepsilon_{j} - \varepsilon_{i} } \right). $$

By convention, the true clock rate is the rate of R05’s clock, so \(\dot{\varepsilon }\equiv 0\) and \(\varepsilon \equiv 0\) for R05. Suppose R05 is the transmitting receiver, so \({\varepsilon }_{i}=0\). Then, Eq. (5) becomes

$$ d_{i,j} = c\left( {t_{j}^{r} - \tau_{i}^{x} } \right) - c \varepsilon_{j} , $$

whose only unknown is \({\varepsilon }_{j}\). Solving Eq. (6) for \({\varepsilon }_{j}\) gives

$$ \varepsilon_{j} = \left( {t_{j}^{r} - \tau_{i}^{x} } \right) - d_{i,j} /c, $$

which is the time bias of the detecting receiver. All values on the right side of Eq. (7) are known. Therefore, all other HRs can have their time bias determined at any epoch in which they detect the transmission from R05. Now suppose R05 is not the transmitting receiver but it is a detecting receiver, so \({\varepsilon }_{j}=0\). Then, Eq. (5) becomes

$$ d_{i,j} = c\left( {t_{j}^{r} - \tau_{i}^{x} } \right) + c \varepsilon_{i} , $$

whose only unknown is \({\varepsilon }_{i}\). Solving for \({\varepsilon }_{i}\) gives

$$ \varepsilon_{i} = d_{i,j} /c - \left( {t_{j}^{r} - \tau_{i}^{x} } \right), $$

which is the time bias of the transmitting receiver, whichever one it happens to be. Knowing \({\varepsilon }_{i}\) makes it possible to determine \({\tau }_{i}={t}_{i}-{\varepsilon }_{i},\) which, in turns, makes it possible to determine the time biases of all the other receivers in that epoch using Eq. (7):

For two epochs \({\tau }_{e}<{\tau }_{g}\), the clock-drift rate for a receiver is given by

$$ \dot{\varepsilon }_{eg} = \mathop {\lim }\limits_{\Delta \tau \to 0} \frac{{\varepsilon_{g} - \varepsilon_{e} }}{\Delta \tau }, $$

where \(\Delta \tau ={\tau }_{g}-{\tau }_{e},\) so the clock drift from epoch e to epoch g is approximately

$$ \dot{\varepsilon }_{eg} \approx \frac{{\varepsilon_{g} - \varepsilon_{e} }}{{\tau_{g} - \tau_{e} }}. $$

The reception time of any signal—such as from a fish’s tag—can be estimated with the help of Eq. (9) as follows. Suppose a signal is detected at time \({\tau }_{f}\), and \({\tau }_{e}<{\tau }_{f}<{\tau }_{g}.\) Then

$$ \tau_{f} \approx \tau_{e} + \dot{\varepsilon }_{eg} \left( {\tau_{f} - \tau_{e} } \right). $$

After computing \({\varepsilon }_{j}\) for every transmission interval, the study team fit a piecewise linear interpolator to all epochs (\({\tau }_{1},{\tau }_{e},{\tau }_{g},\dots ,{\tau }_{n})\), then applied Eq. (10) to all recaptures at receiver \(j\). Of interest is the effect of water temperature and other variables on \({\dot{\varepsilon }}_{eg}\).

Multipath removal

Tag transmissions can reflect off the water surface, substrate, and infrastructure, which can cause a receiver to record several nearly simultaneous transmissions from a single tag in any epoch, the aforementioned multipath condition. The data revealed that mistaking a multipath signal for the primary signal can introduce tens of meters of error into the fish coordinates, so its mitigation was essential.

Multipath removal was a phased approach; the first of which identified the first transmission among all the transmissions detected from a single source in any epoch. In this phase the correct transmission was assumed to be the first (earliest) transmission, as all others must be multipath. This assumption stemmed from the fact that a multipath signal travels a further distance to the receiver than the direct signal, so it seemed unlikely that a signal that traveled further would arrive prior to one that traveled a shorter distance.

The first step enumerated metronome transmission epochs and grouped primary and multipath transmissions into a series of detections per epoch. The first detection in series for every epoch was retained, as all others must be multipath. However, sometimes the true signal (the signal without multipath) was not detected at all, and the first detection in series was the result of multipath. In these cases, the primary filter failed and required a second filter to scrutinize the first return further.

The second phase of multipath filtering removed erroneous transmissions with unsupervised and supervised machine learning algorithms. Training data was produced in the first phase with information on the primary detection and the multipath that followed. However, this convention posed a dilemma, because the training data were known to be biased. We assume that there were instances, where the primary detection was missed and multipath was mislabeled as true. To overcome this potential bias, we fit a k-means (k = 2) unsupervised classifier to normalized observations of the signal’s amplitude, noise bandwidth (NBW), and signal-to-noise ratio (SNR) for all assumed primary detections with Scikit-Learn [17]. Then, we compared the distance from each cluster mean to the mean of the known multipath detections. If the distance between the known multipath detections and the closer cluster’s center is smaller than half the distance between cluster centers, we classified the closer cluster as multipath.

After enumerating epochs and removing biased training data, the study team had confirmation on the first transmission and the multipath detections that followed. Data was normalized or scaled (dependent upon algorithm) prior to classifying. We tested a suite of supervised classifiers: Support Vector Classifier (SVC), Gaussian Naïve Bayes (NB), Classification Tree (CART), and K-Nearest Neighbor (KNN) with Scikit-Learn [17], and compared their accuracy, precision, recall rates, and time to solve during the clock synchronization phase.

There were some codes that did not produce any known multipath detections at a receiver, meaning they had no training data. In these cases, we applied a Gaussian Mixture Model (GMM) to scaled observations of amplitude, NBW and SNR with SciKit-Learn [17]. The GMM assumed that the data are comprised of a mixture of Gaussian distributions (i.e., more than one class of detection; multipath or not), and it determines, where the split occurs and then classifies each point. Following multipath removal, the study team proceeded with coordinating fish or receivers at depth, depending upon the stage of analysis.

Coordinating fish

Determining fish positions proceeded epoch-by-epoch in Mathematica™. Epochs with too few observations, less than four, were insolvable and skipped. A nonlinear least-squares estimation was attempted on the others, and not all attempts were successful, meaning the normal matrix was either singular or ill-conditioned, or the iteration failed to converge. All successful positions were retained despite many having impossible coordinates, such as vertical coordinates above the water surface or horizontal coordinates on dry land. These data can serve as presence data, if nothing else, and retaining them costs nothing.

Accuracy and precision

Li X et al. [15] describes methods to assess the accuracy and precision of the positioning algorithm. We assessed accuracy by comparing an epoch-by-epoch metronome receiver (R05) position determination to its surveyed position, and calculating the root-mean-square-error (RMSE). We also compared the solutions produced by the algorithm to a tag drag test. We described the fish location’s precision with the standard deviation, because they were solved with least squres. We then compared the mean of the precision estimates for fish tags within the convex hull to those outside.

Analysis workflow

Unsynchronized clocks, highly reflective acoustic environments, and not knowing the positions of the receivers at depth makes implementing JSATS studies with autonomous receivers difficult. To overcome this and assist other researchers, the study team developed [16]. The open source software, written in Python, assists with data management, clock synchronization, and multipath removal, while fish coordinates were solved with Mathematica. The data cleaning workflow starts with reception of study data from Teknologic Receivers, HOBO water temperature sensors, and operations data (SCADA). Data were filtered so all timeseries have congruent ranges, then the data was imported into a project database.

The workflow (Fig. 3) proceeds with enumerating metronome epochs and identifying metronome multipath. It then proceeds to clock synchronization for those receivers with known positions, followed by beacon tag multipath removal associated with receivers at depth. After which, positions receivers at depth with the solution provided in Deng et al. [6]. With the positions of all receivers known, we synchronized the receivers at depth with R05’s clock, and then applied the multipath filter to fish tags. At this point, the final, filtered recaptures data was exported from the jsats3d project database for positioning in Mathematica. At all steps, intermediate data is written to the jsats3d project database for further inspection.

Fig. 3
figure 3

jsats3d workflow from raw study data to fish positioning


Forebay water temperature

The water-temperature data exhibited significant diurnal variability with fluctuations of up to 3 °C by the end of the season and evidence of thermal stratification. The study team fit a piecewise linear spline to the average of all sensors in time (Fig. 4).

Fig. 4
figure 4

Water temperature at depth (m) over time at the Cowlitz Falls project. Note, the red line is the interpolated temperature used to calculate speed of sound, with stronger hue blues denoting temperature at depth. By the end of the study season, there is significant thermal stratification

Multipath removal

The multipath filter was applied at three different stages in the data management process: beacon tag enumeration, clock synchronization, and when analyzing fish tags. Figure 5 shows raw beacon transmissions from receiver R05 at receiver R03 during the clock synchronization phase, where there were many primary detections with low amplitude and signal to noise ratio, suggesting a need for an unsupervised classifier. The k-means found two distinct groups (Fig. 6) and classified the cluster closer to known multipath as such.

Fig. 5
figure 5

Known multipath detections and assumed primary detections. Note, there appears to be signals with low amplitude and low signal to noise ratio

Fig. 6
figure 6

Results of the unsupervised k-means classifier on primary detections. Note, k-means multipath appears different from known multipath, but was closer than assumed primary detections

With reduced biased training data, we compared the performance of four different ML classifiers during the clock synchronization phase: KNN, NB, SVC, and CART. The accuracy and precision of all 4 classifiers at each receiver were very high (Tables 1, 2 respectively). In general, the closer receivers were to R05 the better their accuracy and precision rates. Recall, which was the ability of the classifier to find all multipath detections, suffered the greatest the further receivers were from R05 (Table 3). Perhaps, the greatest difference between classification algorithms was the time to solve. The KNN, NB, and CART were similar at 97.98, 88.13, and 90.09 s, respectively. However, it took 8668.93 s to fit SVC classifiers to each receiver.

Table 1 Comparison of accuracies for the multipath removal algorithm during the clock synchronization phase at all study receivers. Note, R05 is not in the table, because we were synchronizing the other clocks to it
Table 2 Comparison of precision rates for the multipath removal algorithm during the clock synchronization phase at all study receivers. Note, R05 is not in the table, because we were synchronizing the other clocks to it
Table 3 Comparison of recall rates for the multipath removal algorithm during the clock synchronization phase at all study receivers. Note, R05 is not in the table, because we were synchronizing the other clocks to it

While the algorithms were accurate and precise, in practice some were more restrictive than others suggesting higher rates of false positives. Figures. 7, 8 depict multipath filtering with a KNN and NB respectively. The KNN removed 8431 detections as multipath, while the NB removed nearly an order of magnitude more as multipath (83,864 detections). Removal of that many beacon transmissions from R05 would impact our ability to accurately synchronize clocks.

Fig. 7
figure 7

Multipath filtering with a KNN. In general, low amplitude, low signal to noise ratio and high noise in bandwidth are associated with multipath detections. Note, values were scaled with SciKit Learn

Fig. 8
figure 8

Multipath filtering with a NB. Note this algorithm removes many more detections as multipath than the KNN (Fig. 7)

Clock synchronization and validation

As discussed above, inter-receiver separation can be deduced from differencing the receivers’ clocks. Therefore, if we suppose the clocks to not be drifting and compute their apparent corresponding separation, we can illustrate clock drift in terms of (apparent) changing spatial separation. If left unsynchronized, the effect of clock drift would be severe with some receivers apparently drifting by as much as 10 km or more apart from each other (Fig. 9). Receiver R04 exhibited severe clock drift (Fig. 9, panel D) to the point, where epoch enumeration failed at or around August 25. Consequently, recapture data after this date at R04 was not useable. Figure 10 shows the drift rate (\({\dot{\varepsilon }}_{eg})\) expressed in units of \(\left(\mu s/s\right)\).

Fig. 9
figure 9

Apparent distance (m) from R05 as measured in seconds given current water temperature. Note different y-scales

Fig. 10
figure 10

Clock drift rate (ε ̇_eg) of each receiver measured in μs/s. Note different y-scales

Fish coordinates

Figure 11 provides one data set for an example. The fish was moving from lower right (upstream) to upper left (downstream bypass). The disorganized positions in the lower right are outside the convex hull of the receivers and are not very reliable. The trajectory suddenly becomes sharp and clear as the fish slowly swims towards the upper left. Three slow circles are visible. Perhaps the fish lost the direction of the flow in the slack water near the dam and began swimming in circles to redirect itself. The circular motion ends abruptly; the fish moves downstream into the downstream bypass and vanishes.

Fig. 11
figure 11

Three-dimensional Positions of a Smolt in the Forebay. Surface HRs encircled in red, and submerged HRs encircled in green. Units are in meters

The two tags in Fig. 12 (01C6 and 0A88) suffered from close proximity detection interference (CPDI), a type of multipath error, where the reflected transmission interferes with the primary transmission sequence [13]. The CPDI error occurred when the fish were adjacent to the metal trash rack (R07, R08, R09). These receivers also suffered from multipath bias in the clock synchronization routine (Fig. 11, panel G and H). In both instances when the fish swam away from the reflective surface, trajectories became well defined.

Fig. 12
figure 12

Positions developed with the Deng et al. [6] solution for tags 01C6 (left) and 0A88 (right). Both solutions suffer from CPDI and show considerable multipath error with elevations well above the surface of the water (262 m) in regions adjacent to the infrastructure (R07, R08, and R09)

Accuracy and precision of positions

Least squares positioning provides an estimate of precision, the standard deviation (\(\sigma \)). Table 4 lists the mean standard deviation for fish positions within the convex hull vs outside of the convex hull. In total, there were 1,23,247 least squares position determinations. When fish are within the convex hull, it is possible to position within 6 cm horizontally and 12 cm vertically. When fish are outside of the convex hull, precisions worsen.

Table 4 Standard deviation about the X, Y and Z coordinates for fish within vs outside of the convex hull

To assess the accuracy of the clock synchronization and multipath removal approach, we used the beacon attached to receiver R05 and Deng et al.’s [6] positioning algorithm to compute an epoch-by-epoch position. Our position determination for R05 was the median of all solutions, which located the receiver at 14.13 m, 19.88 m, and 261.62 m. The receiver was surveyed at 14.13 m, 19.87 m, 261.62 m. We then calculated error between the algorithm’s position and the survey at every epoch and computed the RMSE, in meters, over the X-, Y-, and Z- axes at 0.02 m, 0.05 m, and 0.004 m, respectively.

While the RMSE was very low for the stationary receiver that acted as the study’s metronome (R05), accuracy suffered with a known moving target. Overall, the algorithm approximated the X and Y position of the tag during the tag-drag experiment well (Fig. 13); however, we overestimated the elevation and our solution was above surface of the water for the duration of the tag-drag experiment. The tag drag experiment used uncorrected code-only positions, which suffered from the expected inaccuracies of the GPS system that state a minimum user range error of 7.8 m 95% of the time. The RMSE in meters over the X-, Y- and Z-axes was 9.2, 15.6, and 29.6 m, respectively.

Fig. 13
figure 13

Tag drag (dotted) superimposed onto our solution (solid). Note the tag drag data appears to suffer from error, exacerbating RMSE. There are regions, where we can see tag drag data bundle up into knots

Conclusions and discussion

The methods discussed herein managed a data set of more than 50-million detections, synchronized clocks via temperature calibration using the concept of a metronome, identified and removed multipath detections with supervised and unsupervised machine learning algorithms, and developed timestamped positions of fish as they approach the downstream bypass with autonomous JSATS receivers. The data management process was complex and required the development of software (, which was released under the MIT license [16].

The study team’s approach reduced errors introduced by clock biases and multipath detections; however, it could not eliminate them all. Clock synchronization assumed that two clocks were drifting linearly across an epoch. When epochs from the master clock were not missed, the lag between detections occurred at the nominal pulse rate (37.5 s), and clock drift was well approximated by a linear function. However, unsynchronized clocks far from R05 will not detect its beacon every epoch, meaning the lag between received master clock signals can be much longer than the nominal pulse rate. The longer the lag, the less likely drift over that duration remains linear, and the more error is introduced into coordinates.

Aside from clock-synchronization interpolation error, some multipath detections remained after two rounds of filtering. Figure 4 panel G provides the computed distances between R08 and R05 at every epoch before synchronizing clocks. The sharp spike in distance at or around August 10, 2018, was the result of multipath, with this single epoch producing errors of 100 m or more at R08. Given that the study team relied upon statistical filters to remove metronome multipath detections, we must accept that misclassifications will occur, albeit with a low likelihood of occurrence. Out of the four supervised classifiers tested, the KNN performed the best, with high accuracy, precision and recall rates, quick time to solve, and low numbers of false positives. The SVC performed similarly as the KNN in terms of accuracy and precision; however, the SVC was much slower (8,668.93 s vs 97.98 s).

When positioning the study’s metronome (R05), our approach was highly accurate (< 10 cm); however, it suffered when we compared it with a known moving target. Overall, the X and Y error for the tag drag experiment was 9.2 and 15.5 m and the Z elevation was overestimated and above the surface of the water. While the RMSE for a known moving target was poor, we believe this may be due to the method of data collection. A tag drag experiment using uncorrected code-only positions will have an expected user range error (URE) of 7.8 m 95% of the time. User accuracy depends on a combination of satellite geometry at time of data collection, URE, and other local factors (i.e., signal blockage, atmospheric conditions, and receiver quality) [25]. While the RMSE was high, the errors are well within the ordinary, expected performance of the GPS receiver, especially one operating on a body of water without a ground plane. In future efforts the position of the vessel performing the tag drag should be tracked with a robotic total station or phase-observing, differentially corrected GNSS receiver.

Some fish tags suffered from CPDI multipath [13] error (Fig. 12) when they were adjacent to metal infrastructure. When the fish are in the middle of the forebay this error does not exist. This suggests that the receivers were placed too close to a highly reflective surface. Either the receivers need to be moved further out into the forebay to increase the time delay between primary transmission and multipath arrival, or some type of baffling should be used. Bubble curtains have been used for some time to reduce underwater noise of percussive piling [28]. Future efforts could experiment with them to absorb multipath transmissions before they arrive at a receiver.

If the study site allows, the receiver-array geometry should completely encircle the region-of-interest, because positions outside the convex hull tend to be unreliable. There should be receivers at depth, at the surface, and around the entire fish passage zone. The mathematics require known positions at every timestamp. Therefore, it is helpful for the receivers to remain stationary. Tethered receivers at depth are not useful for positioning, because including their coordinates into the system of equations as unknowns introduces more unknowns than equations. The temperature of the region of interest (thus speed of sound) must be measured with high accuracy and precision at every time step, and there should be enough sensors to statistically describe the temperature of the study area. Because the study team was unsure of the temperature between a transponder and receiver, best practices suggest the best measure of speed of sound is the mean at a given time.

Developing an efficient and cost-effective method to coordinating that can be implemented on autonomous unsynchronized receivers is a major challenge to 3-D positioning with JSATS technology. This approach produced a useful 3-D data set, which allowed for the recreation of trajectories within the Cowlitz Falls forebay. It is the study team’s desire that this advancement provide the foundation for future research into inferential statistics that analyze movement in continuous time and space. Recent advances have developed methods to extract behavioral mechanisms from continuous space–time data sets [11]. Point clouds and/or fish aggregation areas can be described with Kernel Density Estimates (KDE) [22]. A KDE is a non-parametric, robust density estimate that can be used to describe areas of aggregation and potential travel. Certain operations, environmental conditions, or time of day may lead to fish preferring one location in the forebay over another. These differences in areas of use can be assessed with a Kernel Discriminant Analysis (KDA) [1]. With a robust data cleaning and coordinating method, data sets worthy of further analysis will surely follow.

Availability of data and materials

The data sets used and/or analyzed during the current study are available from the corresponding author on reasonable request.


  1. Aspillaga E, Safi K, Hereu B, Bartumeus F. Modeling the three-dimensional space use of aquatic animals combining topography and Eulerian telemetry data. Methods Ecol Evol. 2019.

    Article  Google Scholar 

  2. Baktoft H, Gjelland KØ, Økland F, Thygesen UH. Positioning of aquatic animals based on time-of-arrival and random walk models using YAPS (Yet Another Positioning Solver). Sci Rep. 2017;7:1–10.

    Article  CAS  Google Scholar 

  3. Bergé J, Capra H, Pella H, Steig T, Ovidio M, Bultel E, Lamouroux N. Probability of detection and positioning error of a hydro acoustic telemetry system in a fast-flowing river: intrinsic and environmental determinants. Fish Res. 2012;125:1–13.

    Article  Google Scholar 

  4. Binder TR, Holbrook CM, Hayden TA, Krueger CC. Spatial and temporal variation in positioning probability of acoustic telemetry arrays: fine-scale variability and complex interactions. Anim Biotelemetry. 2016;4:4.

    Article  Google Scholar 

  5. Chan Y-T, Hang HY, Ching P-C. Exact and approximate maximum likelihood localization algorithms. IEEE Trans Veh Technol. 2006;55:10–6.

    Article  Google Scholar 

  6. Deng ZD, Weiland MA, Fu T, Seim TA, LaMarche BL, Choi EY, Eppard MB. A cabled acoustic telemetry system for detecting and tracking juvenile salmon: Part 2 Three-dimensional tracking and passage outcomes. Sensors. 2011;11:5661–76.

    Article  Google Scholar 

  7. Ehrenberg JE, Steig TW. A method for estimating the “position accuracy” of acoustic fish tags. ICES J Mar Sci. 2002;59:140–9.

    Article  Google Scholar 

  8. Ehrenberg JE, Steig TW. Improved techniques for studying the temporal and spatial behavior of fish in a fixed location. ICES J Mar Sci. 2003;60:700–6.

    Article  Google Scholar 

  9. Ehrenberg JE, Steig TW. A study of the relationship between tag-signal characteristics and achievable performances in acoustic fish-tag studies. ICES J Mar Sci. 2009;66:1278–83.

    Article  Google Scholar 

  10. Fu T, Lin X, Hou Z, Deng Z. Integrating Hybrid-Clustering and Localized Regression for Time Synchronization of a Hierarchical Underwater Acoustic Sensor Array. OCEANS 2019 MTS/IEEE. 2019.pp. 27–31 Seattle, IEEE

  11. Gurarie E, Andrews RD, Laidre KL. A novel method for identifying behavioural changes in animal movement data. Ecol Lett. 2009;12:395–408.

    Article  Google Scholar 

  12. Innovasea. Innovative Tracking Technology. (2020) Retrieved 7 Nov 2020 from:

  13. Kessel ST, Hussey NE, Webber DM, Gruber SH, Young JM, Smale MJ, Fisk AT. Close proximity detection interference with acoustic telemetry: the importance of considering tag power output in low ambient noise environments. Anim Biotelemetry. 2015;3:1–14.

    Article  Google Scholar 

  14. Li X, Deng ZD, Sun Y, Martinez JJ, Fu T, McMichael GA, Carlson TJ. A 3D approximate maximum likelihood solver for localization of fish implanted with acoustic transmitters. Sci Rep. 2014.

    Article  PubMed  PubMed Central  Google Scholar 

  15. Li X, Deng Z, Martinez JJ, Fu T, Titzler PS, Hughes JS, Weiland MA. Three-Dimensional Tracking of Juvenile Salmon at Mid-Reach Location between Dams. Fish Res. 2015.

    Article  Google Scholar 

  16. Nebiolo K. jsats3d. (2021) Retrieved 28 Mar 2021 from:

  17. Pedregosa F, Varoquaux G, Gramfort A, Michel V, Thirion B, Grisel O, Duchesnay E. Scikit-learn: Machine Learning in Python. J Mach Learn Res. 2011;12:2825–30.

    Google Scholar 

  18. Perry RW, Farley J, Darland TJ, Hansen GS, Feil DH, Rondorf DW, LeClaire R (2003) Feasibility of Using 3D Acoustic Telemetry to Assess the Response of Resident Salmonids to Strobe Lights in Lake Roosevelt, Washington. Bonneville Power Administration. Portland, OR: U.S. Department of Energy

  19. Rauchenstein LT, Vishnu A, Li X, Deng ZD. Improving underwater localization accuracy with machine learning. Rev Sci Instrum. 2018;89:074902.

    Article  Google Scholar 

  20. Roberts DT, Udyawer V, Franklin C, Dwyer RG, Campbell HA. Using an acoustic telemetry array to assess fish volumetric space use: a case study on impoundments, hypoxia and an air-breathing species (Neoceratodus forsteri). Mar Freshw Res. 2017;68:1532–43.

    Article  Google Scholar 

  21. Seafloor Systems Inc. (2015, 10 6). Speed of Sound in Freshwater. Retrieved 18 Oct 2018 from Seafloor Systems Support:

  22. Simpfendorfer CA, Olsen EM, Heupel MR, Moland E. Three-dimensional kernel utilization distributions improve estimates of space use in aquatic animals. Can J Fish Aquat Sci. 2012;69:565–72.

    Article  Google Scholar 

  23. Smith F. Understanding HPE in the VEMCO positioning system (VPS). (2013)

  24. SQLite (2016). About SQLite. Retrieved 1 Oct 2018 from SQLite:

  25. USSF. (2021). GPS Accuracy. (National coordination office for space-based positioning, navigation and timing) from Accessed 18 May 2021

  26. Vergeynst J, Vanwyck T, Baeyens R, De Mulder T, Nopens I, Mouton A, Pauwels I. Acoustic positioning in a reflective environment: going beyond point-by-point algorithms. Anim Biotelemetry. 2020;8:1–17.

    Article  Google Scholar 

  27. Weiland MA, Deng ZD, Seim TA, LaMarche BL, Choi EY, Fu T, Eppard MB. A cabled acoustic telemetry system for detecting and tracking juvenile salmon: part 1 engineering design and instrumentation. Sensors. 2011;11:5645–60.

    Article  Google Scholar 

  28. Würsig B, Greene CR Jr, Jefferson TA. Development of an air bubble curtain to reduce underwater noise of percussive piling. Mar Environ Res. 2000;49:79–93.

    Article  Google Scholar 

Download references


Not applicable.


The authors analyzed data under contract to a private business, AnchorQEA. The authors did not receive funding to produce this manuscript.

Author information

Authors and Affiliations



The lead author, KPN wrote the clock synchronization, multipath removal, and data management routines in Python and wrote much of the manuscript. THM developed positions using least squares in Mathematica, provided the mathematical basis for positioning and clock synchronization, and co-authored the manuscript. All authors have read and approved the final manuscript.

Corresponding author

Correspondence to Kevin P. Nebiolo.

Ethics declarations

Ethics approval and consent to participate

Not applicable.

Consent for publication

Not applicable.

Competing interests

The authors have no competing interests.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article's Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article's Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit The Creative Commons Public Domain Dedication waiver ( applies to the data made available in this article, unless otherwise stated in a credit line to the data.

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Nebiolo, K.P., Meyer, T.H. High precision 3-D coordinates for JSATS tagged fish in an acoustically noisy environment. Anim Biotelemetry 9, 20 (2021).

Download citation

  • Received:

  • Accepted:

  • Published:

  • DOI: