3.6 Kalman Filter: EK-TOA

Kalman filters can also be applied directly to the TOAMatrix object. Here, we have to use an extended Kalman filter as described in Campbell et al. (in review).

Kalman filters are only applicable to linear (or linear approximations to) models with multivariate Gaussian error structures. Hence we have to use a Gaussian KaltoaObservationModel here.

# Initalize observation model
obsv_model_gaus <- KaltoaObservation(type = "gaus", sigma = 0.002)

# Fit extended Kalman filter
track_toa <- KaltoaTrackPositioning(
  x = subset(toa_ppm, detections >= 3), process_model = proc_ctcrw,
  observation_model = obsv_model_gaus) |> smooth()
plot(track_toa)
points(positions(toa_ppm), pch = 17, col = 'red')

In this particular study area, there is a high prevalence of reflected transmissions. These reflections may result in poor tracks when a Gaussian KaltoaProcessModel is used. To deal with the likely presence of reflections, we’ve specified a less precise KaltoaObservationModel (sigma = 0.002) and we’ve only used PPM detections. The PPM tag protocol, in our experience at this study site, tended to have less reflections than HR protocol tags.

For reflective environments, we suggest using KaltoaPointPositions specified with a "mixed" KaltoaObservationModel, then post processing those tracks with KaltoaTrackPositioning.

  • Campbell, J. A., Ellings, J., Lundberg, P., Mawer, R., Pauwels, I., Hoelker, F. 2025. An extended Kalman filter for large-volume path positioning of aquatic animals within acoustic telemetry arrays. In review.