gnss-attitude is a GNSS-based single antenna attitude determination processor implementing the SNR-based algorithm first proposed by Axelrad and Behre (1999). As part of my undergraduate capstone design project, gnss-attitude is being developed for future use in VIOLET, a nanosatellite by CubeSat NB, to support its camera function. Acting as an extension of RTKLIB, this application accepts processing results from RTKLIB and outputs the determined antenna boresight vectors in local coordinates (ENU).
This program enables absolute boresight determination by a single GNSS antenna directly, without the use of an IMU. With several new techniques employed, preliminary results show that the accuracy is a few degrees RMS, in contrast to 15° RMS reported by Wang et al. (2005) and within 10° degrees using a combination of two opposite-pointing antennas reported by Eagleson et al. (2018).
For potential testers:
- This software is under development for evaluating the performance of such a system. Code is subject to change and considered unstable.
- The missing part is the calibration for the specific antenna-receiver pair you're using. For this, you have to do it yourself.
- The complete methodologies will be made publicly available in a technical report, expected April 2022.
- A calibration data set is collected. For each constellation at each signal channel, a multiparameter nonlinear regression obtains SNR adjustment parameters for each satellite and the SNR mapping function.
- The line-of-sight (LOS) vectors from satellite to receiver are calculated based on satellite and receiver locations for a given epoch.
- SNR values from the observation file are adjusted according to the adjustment terms developed in [1].
- The off-boresight angles can be found by the SNR mapping function developed in [1] and the adjusted SNR values from [3].
- Boresight can be determined by least squares using LOS vectors [2] and off-boresight angles [4].
If multipath is not a concern, the algorithm can achieve degree-level RMS accuracy. Bias exists for most ground environments.
-
Highly susceptible to multipath effects.
-
Rotation around the boresight axis is undetectable.
-
Does not work with GNSS antennas not following the ideal gain pattern.
-
Requires one-time calibration.
-
Linux machine (update package list)
sudo apt update
-
GNU Scientific Library
sudo apt-get install libgsl-dev
-
Build-essential (gcc & make)
sudo apt install build-essential
-
In RTKLIB, save AZ/EL/SNR/MP of the selected frequency as a text file such as
input.txt
-
Update
snr.c
with parameters obtained from calibration -
Edit
config.c
if necessary -
Compile and run
Option A: custom input file & multiple frequencies
make antenna ./antenna [input_1] [input_2] [input_3]
Option B: default input file path
input.txt
& single frequencymake run
2022/03/01 - initial development release
gnss-attitude is licensed under the GNU General Public License v3.0. See LICENSE.txt
for more information.