# galileo-sdr-sim **Repository Path**: rssdr/galileo-sdr-sim ## Basic Information - **Project Name**: galileo-sdr-sim - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-06 - **Last Updated**: 2023-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GALILEO-SDR-SIM GALILEO-SDR-SIM generates Galileo baseband signal data streams, which can be converted to RF using software-defined radio (SDR) platforms. - Galileo E1B/C signal generation - Real time navigation message relay - Real time location update - USRP TX support - File sink ## Requirements 1. g++ 2. Cmake 3. Curses 4. UHD (usrp api and dev library) 5. Boost 6. pynput (optional, for real-time location update via keyboard) ``` sudo apt-get install -y libuhd-dev uhd-host gnss-sdr g++ libncurses-dev cmake pkg-config libboost-dev libglib2.0-dev build-essential pip3 install pynput ``` For offline evaluation, you will also need GNSS-SDR - found here -> https://gnss-sdr.org/ GNSS-SDR installation with package manager on most Linux distros ``` sudo apt install gnss-sdr ``` For more installation options please check their website. ## Installation ``` git clone https://github.com/harshadms/galileo-sdr-sim cd galileo-sdr-sim mkdir build && cd build cmake ../ make ``` ## Execution Usage, help and options ``` Usage: ./usrp_galileo [options] Options: -e RINEX navigation file for Galileo ephemerides (required) -n Dir containing navigation messages -o File to store IQ samples (default: ./galileosim.ishort) -u User motion file (dynamic mode) -l Lat,Lon,Hgt (static mode) e.g. 35.274,137.014,100 -t Scenario start time YYYY/MM/DD,hh:mm:ss -T Overwrite TOC and TOE to scenario start time -d Duration [sec] (default: 300) -a Absolute RF gain in [0 ... 60] (default: 30) -U Disable USRP (-U 1) (default: true) -b Disable Bit stream (-b 1) (default: true) -v Enable verbose output (default: false) ``` Executing the following command will generate a Galileo signal file for the location 42,71,100 starting from 2022/02/20,08:00:01. The generated samples will be stored in **galileo.ishort** as interleaved shorts (I1Q1, I2Q2, ... , InQn) @ 2.6e6 samples/sec ``` $ ./usrp_galileo -l 42,71,100 -t 2022/02/20,08:00:01 -n ../tv/20_FEB_2022_GST_08_00_01 -o /tmp/galileosim.bin -U 1 -b 1; ``` This project is still in development. For now, scenario start time is limited to the following because of navigation message availability: - 11_DEC_2020_GST_08_00_01 - 12_DEC_2020_GST_08_00_01 - 13_DEC_2020_GST_09_00_01 - 15_DEC_2020_GST_08_00_01 - 15_DEC_2020_GST_10_00_01 - 16_DEC_2020_GST_08_00_01 - 17_JAN_2021_GST_08_00_01 - 12_JAN_2021_GST_10_00_01 - 13_JAN_2021_GST_10_00_01 - 25_JAN_2021_GST_08_00_01 - 23_FEB_2021_GST_09_00_31 - 28_FEB_2021_GST_08_00_01 - 20_FEB_2022_GST_08_00_01 Please specify the correct start time with `-t` option and correct navigation message files by specifying `-n`. All navigation messages are stored in `./tv/` ## Evaluation The generated E1B/C signal has been tested with GNSS-SDR and a battery of receivers from u-Blox and Septentrio. Here are some evaluation results. Markdown Monster icon eval methodology - [add gnss-sdr instructions and USRP instructions] ## Future work Here you will find all improvement plans and pending tasks. Please feel free to add suggestions and contribute :) - [ ] I/NAV message generation (generate_frame.cpp has some PoC) - [ ] RINEX reader integration - [ ] Time & Frequency sync with GNSS-SDR monitor - [ ] Enable multi-SDR support (libhackrf, LimeSuite etc) - [ ] Fixed point arithmatic to avoid rounding errorss More ambitious plans: - [ ] Integrate GPS L1 C/A #### Acknowledgements - GPS-SDR-SIM has been an inspiration to start this project To cite: ``` @inproceedings{sathaye2023galileo, title={Galileo-SDR-SIM: An Open-Source Tool for Generating Galileo Satellite Signals}, author={Sathaye, Harshad and Motallebighomi, Maryam and Ranganathan, Aanjhan}, booktitle={Proceedings of the 36th International Technical Meeting of the Satellite Division of The Institute of Navigation (ION GNSS+ 2023)}, pages={3470--3480}, year={2023} } ```