The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby improving resiliency against potential GPS signal loss.

Related tags

Miscellaneous gps pnt
Overview

PNT Integrity Library

The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby improving resiliency against potential GPS signal loss. The software is a scalable framework for GNSS-based PNT manipulation detection that offers varying levels of protection based on the available data. The library is to be provided to GNSS receiver and GNSS-based timing server OEMs for use in future development or integration into existing products and platforms. More details on the PNT Integrity Library can be found under the PNT_Integrity_Library_Guide.pdf and PNT ReadMe on system components, algorithms, and checks.

License

This library is licensed under the BSD 3-Clause License. The library contains source code developed by IS4S and third parties. Refer to the invidual source files for applicable copyright information.

Copyright (c) 2020 Integrated Solutions for Systems (IS4S), Inc
Copyright (c) 2017, ETHZ ASL (geodetic converter)
Copyright (c) 2009, Ben Hoyt (inih)

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of IS4S, Ben Hoyt, ETHZ ASL, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Build Instructions for the PNT Integrity Library

This repository contains the top level CMake project for building the IS4S PNT Integrity Library, User Interface, and their dependencies.

System Requirements

The PNT Integrity Library is written in a cross-platform manner using C++. While it is expected to work on a wide variety of platforms, it has been tested with on the following operating systems:

  • Ubuntu Linux 16.04, 18.04 & 20.04
  • MacOS 10.15
  • Windows 10

The following additional tools are needed to build the library:

  • CMake 3.5 or greater
  • C++14 compliant compiler (e.g. Clang 3.3+, GCC 4.7+, MSVC 2015+)

Dependencies

The PNT Integrity Library is designed to require as few third party dependencies as possible to support building on a wide variety of platforms. Two dependencies are required in addition to the libraries provided in the package. The Eigen (https://eigen.tuxfamily.org) C++ template library for linear algebra is required by the base PNT Integrity library. The FFTW (http://fftw.org) package is optionally required and is needed to use the acquisition check. QT (https://www.qt.io) is required to build and run the user interface

Both packages can be installed following instructions on their respective websites. Eigen is a header-only package and can be installed by downloading a release from the project web site and extracting to a local folder. FFTW binaries are available for a range of platforms from the project web site.

Alternatively, a package manager can be used to install the dependencies. For MacOS the Homebrew (https://brew.sh) package manager is recommended. The Chocolatey (https://chocolatey.org) package manager is recommended for Windows. Instructions on installing the required and optional dependencies using package managers on the supported operating systems are provided in the following sections.

Ubuntu / Debian

Install Eigen by running:

sudo apt install libeigen3-dev

Optionally install FFTW by running:

sudo apt install libfftw3-dev

Install Qt5 on Ubuntu by running:

sudo apt install qtdeclarative5-dev qtwebengine5-dev libqt5charts5-dev

MacOS

Install Eigen by running:

brew install eigen

Optionally install FFTW by running:

brew install fftw

Install Qt5 on MacOS by running:

brew install qt

If you encounter CMake build errors when finding QT this may help:

export CMAKE_PREFIX_PATH=/usr/local/Cellar/qt/[version]/

Windows

Install Eigen by running:

choco install eigen

Chocolatey does not support provide binaries for FFTW. They can be downloaded and installed directly from the project website: http://www.fftw.org/install/windows.html (http://www.fftw.org/install/windows.html) For instructions on installing Qt on Windows platform click here.

Building

Extract the release archive:

unzip release.zip

Generate build files using cmake

cd release
mkdir build
cmake ../

By default, this will generate Unix Makefiles for the package. Project files can be generated for other build systems or IDEs by selecting an alternative CMake generator (https://cmake.org/cmake/help/v3.15/manual/cmake-generators.7.html). Build the libraries by running:

make

The libraries can be optionally installed to the user's system by running:

make install
You might also like...
Itpp - IT++ library mirror/fork. C++ library of mathematical, signal processing and communication classes and functions.

Introduction ************ IT++ is a C++ library of mathematical, signal processing and communication classes and functions. Its main use is in simula

(C++) Integrity dynamic link library made in C++ that you can export to C#

C-Integrity-Library βœ” (C++) Integrity dynamic link library made in C++ that can export to C# C# Exports [DllImport("Exports.dll")] public static exter

Some sketches for the VL53L5CX ranging camera for use with the Arduino IDE
Some sketches for the VL53L5CX ranging camera for use with the Arduino IDE

VL53L5CX Some examples for the ST's VL53L5CX 8 x 8 pixel ranging camera using Simon Levy's Arduino library and Seth Bonn's multi-byte I2C read and wri

This is a repository entirely dedicated to all kind of questions ranging from basic DSA to CP. It aims to provide a solution to different questions. πŸ“š

πŸŽ‰ CP-DSA-Questions πŸŽ‰ This is a repository entirely dedicated to all kind of questions ranging from basic DSA to CP. It aims to provide a solution to

Shell program written in C to implement various system calls, with support of executing commands, output redirection and signals.

Use ./shell command to start the shell. $spacepath/executable to run the executable(please specify the path without beginning it with "/"). Eg. type

High performance C++11 signals

High performance C++11 signals See Performance of a C++11 Signal System for the original source code, as well as performance measurements compared to

πŸŽ‰ A framework for improving android 32bit app stability. (Alleviate crashes caused by insufficient virtual memory)

Patrons πŸŽ‰ A framework for improving android 32bit app stability. (Alleviate crashes caused by insufficient virtual memory) δΈ€θ‘Œδ»£η θ§£ε†³ Android 32δ½εΊ”η”¨ε› θ™šζ‹Ÿε†…ε­˜δΈ

Faster neofetch alternative, written in C. Still improving :)
Faster neofetch alternative, written in C. Still improving :)

albafetch ~by alba4k albafetch is a simple, fast system fetching program. It prints many info about the system in way less than a second. I decided to

osu!auth integrity check bypass

Note This is for research purposes only! I'm releasing this to help improve osu's anticheat solution. if you'd like to contact me, please do so on dis

Comments
  • (Linux) Compiling test_acquisition_check: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'

    (Linux) Compiling test_acquisition_check: undefined reference to symbol '[email protected]@GLIBC_2.2.5'

    πŸ› Summary

    When compiling test_acquisition_check after the workaround on #1, the compiler finds an error with the pthread library.

    To reproduce

    Steps to reproduce the behavior:

    1. Apply the workaround of #1 or have the correct files.
    2. mkdir build && cd build
    3. cmake ../ -D BUILD_PNT_INTEGRITY_EXAMPLES=ON
    4. make

    Expected behavior

    The test_acquisition_check test should be compiled.

    Any helpful log output or screenshots

    [ 94%] Linking CXX executable test_acquisition_check
    /usr/bin/ld: libpnt_integrity.a(AcquisitionCheck.cpp.o): undefined reference to symbol '[email protected]@GLIBC_2.2.5'
    /usr/bin/ld: /usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command line
    collect2: error: ld returned 1 exit status
    make[2]: *** [pnt_integrity/pnt_integrity/CMakeFiles/test_acquisition_check.dir/build.make:115: pnt_integrity/pnt_integrity/test_acquisition_check] Error 1
    make[1]: *** [CMakeFiles/Makefile2:302: pnt_integrity/pnt_integrity/CMakeFiles/test_acquisition_check.dir/all] Error 2
    make: *** [Makefile:149: all] Error 2
    

    Workaround

    In linux (what i've tested) the libraries need to be specified after the object files being compiled.

    Therefore, in pnt_integrity/pnt_integrity/CMakeLists.txt, on line 149 add:

    # Threads linux
    set(CMAKE_THREAD_LIBS_INIT "-lpthread")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
    

    Note

    After all, when the test_acquisition_check is executed it looks for the file if_data.bin that doesn't exist and for which I do not know the format.

    opened by Algafix 2
  • Can't find

    Can't find "useFftw.h" when compiling test_acquisition_check

    πŸ› Summary

    When compiling the PNT-Integrity with BUILD_PNT_INTEGRITY_EXAMPLES flag the compiler can't find "useFftw.h" on testAcquisitionCheck.cpp:43:10.

    To reproduce

    Steps to reproduce the behavior:

    1. mkdir build && cd build
    2. cmake ../ -D BUILD_PNT_INTEGRITY_EXAMPLES=ON
    3. make

    Expected behavior

    The examples (repoTestApp and testAcquisitionCheck) should be compiled.

    Any helpful log output or screenshots

    Scanning dependencies of target test_acquisition_check
    [ 91%] Building CXX object pnt_integrity/pnt_integrity/CMakeFiles/test_acquisition_check.dir/examples/testAcquisitionCheck.cpp.o
    [redacted]/PNT-Integrity/pnt_integrity/pnt_integrity/examples/testAcquisitionCheck.cpp:43:10: fatal error: useFftw.h: No such file or directory
       43 | #include "useFftw.h"
          |          ^~~~~~~~~~~
    compilation terminated.
    make[2]: *** [pnt_integrity/pnt_integrity/CMakeFiles/test_acquisition_check.dir/build.make:82: pnt_integrity/pnt_integrity/CMakeFiles/test_acquisition_check.dir/examples/testAcquisitionCheck.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:302: pnt_integrity/pnt_integrity/CMakeFiles/test_acquisition_check.dir/all] Error 2
    make: *** [Makefile:149: all] Error 2
    

    Proposed solution

    Include the "useFftw.h" header file in the github repo.

    Workaround

    On the file pnt_integrity/pnt_integrity/examples/testAcquisitionCheck.cpp.

    Replace the #include "useFftw.h" statement with #include <fftw3.h>.

    Then remove the check to use fftw between lines 59 and 65 of the same file, I'm assuming USE_FFTW was defined in useFftw.h:

    #if (USE_FFTW == 0)
        printLogToStdOut(
            "FFTW package not installed. Cannot use the AcquisitionCheck",
            LogLevel::Error);
        return 0;
    #endif
    
    opened by Algafix 2
Releases(v1.1)
Owner
Cybersecurity and Infrastructure Security Agency
Commit today, secure tomorrow.
Cybersecurity and Infrastructure Security Agency
Some hypervisor research notes. There is also a useful exploit template that you can use to verify / falsify any assumptions you may make while auditing code, and for exploit development.

Introduction Over the past few weeks, I've been doing some hypervisor research here and there, with most of my focus being on PCI device emulation cod

Faith 127 Sep 14, 2022
GPS parser which read raw GPS messages, selects only the valid ones and sends them to CAN bus

EagleTRT GPS System for Fenice GPS parser which read raw GPS messages, selects only the valid ones and sends them to CAN bus Compiling GPS Logger gps_

E-Agle Trento Racing Team 1 Nov 11, 2021
No loss LV2 sound effect plugin

B.Spacr Description: LV2 sound effect plugin B.Spacr is a unique LV2 effect plugin that enables a clear and brilliant audibility of your music product

null 14 Aug 24, 2022
Decentralized architecture for loss tolerant semi-autonomous robotics

gestalt-arch Decentralized architecture for loss tolerant semi-autonomous robotics Objective We demonstrate a decentralized robot control architecture

null 4 Dec 18, 2021
Small data exchange program using UNIX signals.

Small data exchange program using UNIX signals.

Maria Sottomayor 36 Sep 29, 2022
A small data exchange program using UNIX signals.

minitalk The purpose of this project is to code a small data exchange program using UNIX signals. Thanks to 0x00Jeff for the great help ❀️ . What is s

Jakom 10 Sep 29, 2022
Arduino library for ST Microelectronics VL53L5 multizone Time-of-Flight ranging sensor

VL53L5 Arduino library for ST Microelectronics VL53L5 multizone Time-of-Flight ranging camera (get it here!) Quickstart Connect I2C in the usual way (

Simon D. Levy 24 May 19, 2022
The home for algorithms ranging from searching to search all the way to dynamic programming, branch and bound, etc.

Algorithms The home for algorithms ranging from searching and sorting all the way to dynamic programming algorithms, divide and conquer, etc. What are

null 1 Dec 6, 2021
The movements of your RC vehicles are jerky and not smooth? This Arduino device will solve this issue by adding acceleration and deceleration ramps to the PWM signals!

This is an Arduino Pro Mini 3.3V / 8MHz based RC servo ramp / delay generator Features: 4 RC servo PWM inputs and outputs (can be enhanced) Reads the

null 4 Apr 15, 2022
OpenScan is an open-source document scanner app that enables users to scan hard copies of documents or notes and convert it into a PDF file. No ads. No data collection. We respect your privacy.

OpenScan An open source app that enables users to scan hardcopies of documents or notes and convert it to a PDF file. No ads. No data collection. We r

Ethereal Developers Inc 1.1k Sep 24, 2022