Skip to content

JuliaGNSS/Tracking.jl

Repository files navigation

DOI codecov [Semantic Release]

Tracking.jl

This package implements the tracking functionality of GNSS satellites that's part of the larger GNSS receiver. Tracking.jl primarily consists of two main blocks:

  1. Signal down-conversion and correlation
  2. Code and carrier estimation to generate replicas and close the loop

Tracking.jl provides defaults for both blocks, but it provides mechanisms to hook in your own implementation (by using multiple dispatch). For signal down-conversion and correlation Tracking.jl provides a highly optimized CPU implementation using SIMD vectorization via LoopVectorization.jl. With respect to the second block Tracking.jl provides conventional DLLs and PLLs with FLL-assisted carrier tracking as the default. Down-conversion and correlation is done in full code blocks meaning from code start to code end or multiples of that (e.g. in GPS L1 from 0 to N*1023). The factor N can be specified, but will be 1 as long as the bit start is unknown in order to find the bit start. Once that is done for every tracked satellite the result will be handed over to the code and carrier estimation block. Moreover, Tracking.jl allows tracking of signals from phased antenna arrays meaning that they are down-converted and correlated by the very same replica to conserve phase relationships.

Features

  • Supports GPS L1 / L5 and Galileo E1B
  • CN0 estimation
  • Secondary code detection
  • Bit detection
  • Phased array tracking
  • Multi-satellite and multi-system tracking
  • GPU acceleration (requires using CUDA)

Installation

julia> ]
pkg> add Tracking

Documentation

For usage examples and detailed documentation, see the stable docs or dev docs.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Modular tracking algorithm for various GNSS Systems

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 11

Languages