This project implements a complete pipeline for GNSS data processing. It acquires raw NMEA 0183 sentences from a GPS sensor via a serial port, parses the data to extract positioning information (GGA and RMC sentences), and maps the coordinates onto a georeferenced satellite image of the ENSTA Bretagne campus.
Connects to a GPS receiver via pySerial (configured for COM7, 4800 baud). It captures the raw bitstream, filters NMEA sentences beginning with $, and logs them into gps_data_nmea.txt.
Utilizes the pynmea2 library to decode:
- GGA Sentences: Extracted for altitude and fix quality.
- RMC Sentences: Extracted for latitude, longitude, and ground speed.
The script includes error handling for
ParseErrorto ensure robust processing of noisy serial data.
- Rasterio Integration: Loads a georeferenced satellite view of the campus.
- Coordinate Transformation: Uses the image's affine transform matrix to convert geographic coordinates (Decimal Degrees) into pixel coordinates (x, y).
- Mapping: Overlays the receiver's real-time or logged position on the map using
matplotlib.
- Communication:
pySerial - Parsing:
pynmea2 - Geospatial Analysis:
rasterio,numpy - Visualization:
matplotlib
- Hardware: Connect your GPS sensor to your computer.
- Install Dependencies:
pip install pyserial pynmea2 rasterio numpy matplotlibData Acquisition:
python acquisition.pyVisualization: Ensure ensta_2015.jpg and gps_data_nmea.txt are in the root directory, then:
python affichage.pysrc/acquisition.py: Serial communication and raw data logging.
src/traitement.py: NMEA parsing logic.
src/affichage.py: Image processing and mapping.
data/gps_data_nmea.txt: Sample raw NMEA log file.
docs/Report_GNSS.pdf: Full technical project report.
Antoine BERTRAND, Samy-William AYYADA, Julien STRUILLOU & Baptiste GUIVARCHE
Academic Context: Developed in 2023 at ENSTA Bretagne.