Git Product home page Git Product logo

signalsim's Introduction

SignalSim

A multi-stage GNSS signal and data simulator

This is a GNSS signal and data simulator and generator to help the development of GNSS receiver. This program support multiple stage of simulation output:

  1. Reference trajectory of receiver (as standard reference result)
  2. Observation (help to debug and test PVT program)
  3. Baseband correlation result (combine with local channel configuration parameters help to debug baseband tracking and control program)
  4. Digital IF result (help to debug baseband process algorithm)
  5. A realtime GNSS signal simulator (with hardware signal interpolation and up convertor)

Change list as below: 7/1/2021 An optimized initial version re-published on github 7/5/2021 Add XML format trajectory output Add support to load BDS ionosphere parameter in RINEX header Add support to load GPS/BDS/Galileo UTC parameters in RINEX header Add support to load BDS/Galileo ephemeris in RINEX file Optimize XML file content interpreter 8/4/2021 Add class NavBit and LNavBit to generate GPS LNAV data stream 8/13/2021 Change format of GNSS_TIME to improve accuracy Add GetTransmitTime() method Remove obsolete file 8/30/2021 Fix bug of TOW add extra 1 when put into LNAV data stream Fix bug of not put in week number in LNAV data stream Use complete GNSS time to get LNAV data stream 9/30/2021 Add satellite signal power control support in XML Add RINEX output functions 11/25/2021 Restore CN0 field in SATELLITE_PARAM structure as stored CN0 12/8/2021 Add support for B1C and E1C 12/14/2021 Fix bug of CN0 assign incorrect value during satellite add/remove Add support for system select 1/5/2022 Add support for B-CNAV2 data stream generation 2/12/2022 Bug fix on B-CNAV1 stream generation Option to use Vel/Acc to calculated satellite position 1/23/2023 Add some variables and functions for future multi-frequency support Minor bug fix on satellite acc calculation for GEO satellite 7/28/2023 Modifications to comply with stricter syntax checking Add SignalSim.h to include all necessary header files for package users 8/9/2023 Add a new class CSatelliteSignal to get data/pilot modulation Add a new NavBit derived class D1D2NavBit to generate BDS2 data stream Call to GetFrameData() in NavBit class will be obsolete in the future 8/15/2023 Add pilot bit generation function Remove pilot bit generation in NavBit and CSatelliteSignal class GetFrameData() method in NavBit (and derived classes) no longer support pilot bit generation 8/24/2023 Add Galileo I/NAV data stream generation class Add inter-signal correction (delay between different frequencies) support in XML format 8/30/2023 Add GLONASS satellite parameter and raw measurement calculation Add GLONASS slot/freq output to RINEX file Add GLONASS GNAV data stream composition Leap second correction in CSatelliteSignal Update the PDF file for design description 9/19/2023 Add complex_number class Add E5 support Add dummy F/NAV data stream generation Satellite signal generation allows NULL pointer for data bit to generate all 0 modulation data 10/28/2023 Replace UnscaleDouble and roundi/roundu with UnscaleInt/UnscaleUint Add UnscaleLong/UnscaleULong to better support data fields longer than 32bit (C-NAV and BC-NAV) 11/13/2023 Add support to RINEX 4 format navigation file Modify Rinex.cpp to support RINEX 4 format data set Expand and modify GPS_EPHEMERIS structure to support ephemeris from different navigation data format Calculate clock/delay for different frequency with corresponding parameters 11/27/2023 Change BCNavBit to virtual class and derive three classes for B-CNAV1/2/3 data stream Combine iode2/iode3 to iode in ephemeris structure Add B-CNAV2 and B-CNAV3 support in CSatelliteSignal Modify GetTravelTime() and GetCarrierPhase() to use correct group delay 1/6/2024 Add GPS L1C CNAV2 navigation stream generation class Fix bugs in BDS D1/D2 navigation stream generation Add L1C/L5/E6 support into CSatelliteSignal class Observation support multi-frequency in structure and RINEX output 2/29/2024 Made following changes to enable almanac read and data stream generation containing almanac subframe/string Change function parameter of SetAlmanac() in NavBit and all derived classes Add functions to read almanac file in Almanac.cpp Add array to store almanacs in CNavData class Add functions to read almanac files and convert ephemeris to almanac in CNavData class Ephemeris to almanac conversion for GLONASS and BDS GEO satellites will be added in future version The time parameter of FindEphemeris() and FindGloEphemeris() definition changes to follow corresponding system Add almanac subframe/string generation for D1/D2, LNAC and GNAV data stream 6/5/2024 Add almanac word (word 710) to Galileo E1 data stream Add Reed-Solomon encoded ephemeris (word 1720) to Galileo E1 data stream Bug fixes on E1 ephemeris word and TOW composition

signalsim's People

Contributors

globsky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

signalsim's Issues

Fail to simulate double frequency observations

Thanks for your excellent work!
I met one problem and need help. I could not simulate double frequency observations successfully by simply using the modified configuration file. Here are my configurations of output part:

<Output type="observation" format="RINEX">
        <Interval unit="s">1</Interval>
        <Name>test2.o</Name>
        <ConfigParam>
            <ElevationMask>3</ElevationMask>
        </ConfigParam>
        <SystemSelect system="GPS" freq="L1" freq="L2">true</SystemSelect>
        <SystemSelect system="BDS" freq="B1C" freq="B3I">true</SystemSelect>
        <SystemSelect system="Galileo">true</SystemSelect>
</Output>

And the other configurations are the same as you provide. I have checked that the ephemeris file path is correct. Could you tell me the possible reason for my failure to simulate double frequency observations? Thanks!

Signal transmission

Many thanks to the author for such an excellent program!

I have some confusion at the moment:

Can the signals generated by this project be transmitted out with a device such as an SDR for GNSS receiver spoofing tests?

Also, is it possible to use raw binary navigation messages as input and thus perform signal forgery?

Have a nice life!

多频输出

您好,SignalSim是否暂时只支持单频观测数据输出?

ComplexNumber.h

请问缺少“ComplesNumber.h”头文件该如何处理?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.