{"id":28266825,"url":"https://github.com/maximilian-nitsch/gnss-simulator","last_synced_at":"2026-04-16T11:02:04.980Z","repository":{"id":286080742,"uuid":"960303255","full_name":"maximilian-nitsch/GNSS-Simulator","owner":"maximilian-nitsch","description":"Simple C++ Simulator and ROS 2 Node for GNSS.","archived":false,"fork":false,"pushed_at":"2025-04-11T08:57:04.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-19T01:38:07.468Z","etag":null,"topics":["autonomous-driving","autonomous-robots","autonomous-underwater-vehicle","autonomous-vehicles","auv","auv-simulator","gnss","gps","navigation","robotics","robotics-simulation","rov","satellite-navigation","sensor","simulation","simulator"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximilian-nitsch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-04T07:47:07.000Z","updated_at":"2025-04-11T08:57:08.000Z","dependencies_parsed_at":"2025-04-11T09:55:08.562Z","dependency_job_id":null,"html_url":"https://github.com/maximilian-nitsch/GNSS-Simulator","commit_stats":null,"previous_names":["maximilian-nitsch/gnss-simulator"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/maximilian-nitsch/GNSS-Simulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilian-nitsch%2FGNSS-Simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilian-nitsch%2FGNSS-Simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilian-nitsch%2FGNSS-Simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilian-nitsch%2FGNSS-Simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximilian-nitsch","download_url":"https://codeload.github.com/maximilian-nitsch/GNSS-Simulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilian-nitsch%2FGNSS-Simulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274158328,"owners_count":25232591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autonomous-driving","autonomous-robots","autonomous-underwater-vehicle","autonomous-vehicles","auv","auv-simulator","gnss","gps","navigation","robotics","robotics-simulation","rov","satellite-navigation","sensor","simulation","simulator"],"created_at":"2025-05-20T14:14:26.001Z","updated_at":"2025-10-18T21:46:19.981Z","avatar_url":"https://github.com/maximilian-nitsch.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C++/ROS 2 Simple GNSS-Simulator\n![Build](https://github.com/maximilian-nitsch/GNSS-Simulator/actions/workflows/ci.yaml/badge.svg)\u003c!-- --\u003e\n![License](https://img.shields.io/github/license/maximilian-nitsch/GNSS-Simulator.svg)\u003c!-- --\u003e\n[![Last Commit](https://img.shields.io/github/last-commit/maximilian-nitsch/GNSS-Simulator)](https://github.com/maximilian-nitsch/GNSS-Simulator/commits/main)\u003c!-- --\u003e\n[![ROS2 Humble](https://img.shields.io/badge/ROS2-Humble-blue)](https://index.ros.org/doc/ros2/Installation/Humble/)\u003c!-- --\u003e\n[![Release](https://img.shields.io/github/v/release/maximilian-nitsch/GNSS-Simulator)](https://github.com/maximilian-nitsch/GNSS-Simulator/releases)\u003c!-- --\u003e\n[![Open Issues](https://img.shields.io/github/issues/maximilian-nitsch/GNSS-Simulator)](https://github.com/maximilian-nitsch/GNSS-Simulator/issues)\u003c!-- --\u003e\n[![Contributors](https://img.shields.io/github/contributors/maximilian-nitsch/GNSS-Simulator)](https://github.com/maximilian-nitsch/GNSS-Simulator/graphs/contributors)\n\n\u003c!--- protected region package header begins --\u003e\n**Author:**\n- Maximilian Nitsch \u003cm.nitsch@irt.rwth-aachen.de\u003e\n\n**Affiliation:** Institute of Automatic Control - RWTH Aachen University\n\n**Maintainer:**\n  - Maximilian Nitsch \u003cm.nitsch@irt.rwth-aachen.de\u003e\n\u003c!--- protected region package header ends --\u003e\n\n## Description\nThis project provides a simple GNSS simulator written in C++.\n\nThe simulator implements the following features:\n- PVT measurement generation with lever-arm effect and white noise\n- Attitude measurement (GNSS compass) with lever-arm effect generation with white noise\n- All parameters for a GNSS receiver can be configured in a YAML file\n\nAn example config for a Septentrio Mosaic-H GNSS receiver is provided.\n\n## Table of Contents\n\n- [Dependencies](#dependencies)\n- [ROS 2 Nodes](#ros-2-nodes)\n  - [Publishers](#publisher-node)\n  - [Subscribers](#subscriber-node)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Coding Guidelines](#coding-guidelines)\n- [References](#references)\n- [Reports](#reports)\n- [Contributing](#contributing)\n- [License](#license)\n\n# Dependencies\n\nThis project depends on the following literature and libraries:\n\n- **Eigen3**: Eigen is a C++ template library for linear algebra: [Eigen website](https://eigen.tuxfamily.org/).\n- **ROS 2 Humble**: ROS 2 is a set of software libraries and tools for building robot applications: [ROS 2 Installation page](https://docs.ros.org/en/humble/Installation.html).\n- **Navigation Utilities Package**: ROS 2 package with common navigation utilities for TRIPLE-GNC: [Navigation Utilities](https://gitlab.informatik.uni-bremen.de/triple/gnc/utilities/navigation-utilities)\n\n\n## ROS 2 Node Description\n\nThe GNSS simulator node implements three publishers and subscribes to one topic.\nROS 2 services or actions are not provided.\n\n### Publishers\n\nThis node publishes the following topics:\n\n| Topic Name       | Message Type        | Description                        | Link     |\n|------------------|---------------------|------------------------------------|----------|\n| `gnss_pvt`   | `nanoauv_sensor_driver_interfaces/GnssPvt.msg`   | Custom GNSS PVT (position, velocity, time) data | [GnssPvt.msg](https://gitlab.informatik.uni-bremen.de/triple/gnc/interfaces/-/blob/b95efc88d33a9e439025056c988c6459589b86e5/nanoauv_sensor_driver_interfaces/msg/GnssPvt.msg) |\n| `gnss_attitude`  | `nanoauv_sensor_driver_interfaces/GnssAttitude.msg` | Custom GNSS attitude (compass) data | [GnssAttitude.msg](https://gitlab.informatik.uni-bremen.de/triple/gnc/interfaces/-/blob/b95efc88d33a9e439025056c988c6459589b86e5/nanoauv_sensor_driver_interfaces/msg/GnssAttitude.msg) |\n| `nav_sat_fix`  | `sensor_msgs/NavSatFix.msg` | Navigation Satellite fix for any Global Navigation Satellite System | [NavSatFix.msg](http://docs.ros.org/en/noetic/api/sensor_msgs/html/msg/NavSatFix.html) |\n\n### Subscribers\n\nThis node subscribes to the following topics:\n\n| Topic Name        | Message Type        | Description                        | Link     |\n|-------------------|---------------------|------------------------------------|----------|\n| `odometry`| `nav_msgs/Odometry.msg`| Estimate of a position and velocity in free space | [Odometry.msg](http://docs.ros.org/en/noetic/api/nav_msgs/html/msg/Odometry.html) |\n\n\n# Installation\n\nTo install the `gnss_simulator_package`, you need to follow these steps:\n\n1. **Install Eigen3**: Eigen3 is a dependency for your package. You can install it using your package manager. For example, on Ubuntu, you can install it using the following command:\n\n    ```bash\n    sudo apt-get install libeigen3-dev\n    ```\n\n2. **Install ROS 2 Humble**: Ensure you have ROS 2 (Humble) installed. You can follow the official installation instructions provided by ROS 2. Visit [ROS 2 Humble Installation page](https://docs.ros.org/en/humble/Installation.html) for detailed installation instructions tailored to your platform.\n\n3. **Clone the Package**: Clone the package repository to your ROS 2 workspace. If you don't have a ROS 2 workspace yet, you can create one using the following commands:\n\n    ```bash\n    mkdir -p /path/to/ros2_workspace/src\n    cd /path/to/ros2_workspace/src\n    ```\n\n    Now, clone the package repository:\n\n    ```bash\n    git clone \u003crepository_url\u003e\n    ```\n\n    Replace `\u003crepository_url\u003e` with the URL of your package repository.\n\n4. **Build the Package**: Once the package is cloned, you must build it using colcon, the default build system for ROS 2. Navigate to your ROS 2 workspace and run the following command:\n\n    ```bash\n    cd /path/to/ros2_workspace\n    colcon build\n    ```\n\n    This command will build all the packages in your workspace, including the newly added package.\n\n5. **Source the Workspace**: After building the package, you need to source your ROS 2 workspace to make the package available in your ROS 2 environment. Run the following command:\n\n    ```bash\n    source /path/to/ros2_workspace/install/setup.bash\n    ```\n\n    Replace `/path/to/ros2_workspace` with the actual path to your ROS 2 workspace.\n\nThat's it! Your `gnss_simulator_package` should now be installed along with its dependencies and ready to use in your ROS 2 environment.\n\n## Usage\n\n1. **Configure your YAML file** for your GNSS receiver or use the default file.\n\n2. **Start the GNSS simulator** with the launch file:\n    ```bash\n    ros2 launch gnss_simulator_package gnss_simulator.launch.py\n    ```\n  The GNSS simulator prints your settings and waits for a ground truth odometry message.\n\n3. **Provide an odometry publisher** from you vehicle simulation.\n\n4. **Check ROS 2 topics** The GNSS measurements should now be published.\n\n**Important Usage Information**:\n- The odometry message must be published with at least the GNSS PVT and attitude sample times.\n- The messages `/gnss_pvt/diagnostic_array` and `/gnss_attitude/diagnostic_array` will show `WARN` if the odometry rate is lower.\n- If no odometry message is published, the messages `/gnss_pvt/diagnostic_array` and `/gnss_attitude/diagnostic_array` will show `STALE`.\n- If everything is correct `/gnss_pvt/diagnostic_array` and `/gnss_attitude/diagnostic_array` will show `OK`. \n\n## Coding Guidelines\n\nThis project follows these coding guidelines:\n- https://google.github.io/styleguide/cppguide.html\n- http://docs.ros.org/en/humble/The-ROS2-Project/Contributing/Code-Style-Language-Versions.html \n\n## Contributing\n\nYou can see the [CONTRIBUTING](CONTRIBUTING) file for details if you'd like to contribute to the project.\n\n## License\n\nThis project is licensed under the BSD-3-Clause License. Please look at the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximilian-nitsch%2Fgnss-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximilian-nitsch%2Fgnss-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximilian-nitsch%2Fgnss-simulator/lists"}