Author:
- Maximilian Nitsch m.nitsch@irt.rwth-aachen.de
Affiliation: Institute of Automatic Control - RWTH Aachen University
Maintainer:
- Maximilian Nitsch m.nitsch@irt.rwth-aachen.de
This project provides a simple GNSS simulator written in C++.
The simulator implements the following features:
- PVT measurement generation with lever-arm effect and white noise
- Attitude measurement (GNSS compass) with lever-arm effect generation with white noise
- All parameters for a GNSS receiver can be configured in a YAML file
An example config for a Septentrio Mosaic-H GNSS receiver is provided.
- Dependencies
- ROS 2 Nodes
- Installation
- Usage
- Coding Guidelines
- References
- Reports
- Contributing
- License
This project depends on the following literature and libraries:
- Eigen3: Eigen is a C++ template library for linear algebra: Eigen website.
- ROS 2 Humble: ROS 2 is a set of software libraries and tools for building robot applications: ROS 2 Installation page.
- Navigation Utilities Package: ROS 2 package with common navigation utilities for TRIPLE-GNC: Navigation Utilities
The GNSS simulator node implements three publishers and subscribes to one topic. ROS 2 services or actions are not provided.
This node publishes the following topics:
Topic Name | Message Type | Description | Link |
---|---|---|---|
gnss_pvt |
nanoauv_sensor_driver_interfaces/GnssPvt.msg |
Custom GNSS PVT (position, velocity, time) data | GnssPvt.msg |
gnss_attitude |
nanoauv_sensor_driver_interfaces/GnssAttitude.msg |
Custom GNSS attitude (compass) data | GnssAttitude.msg |
nav_sat_fix |
sensor_msgs/NavSatFix.msg |
Navigation Satellite fix for any Global Navigation Satellite System | NavSatFix.msg |
This node subscribes to the following topics:
Topic Name | Message Type | Description | Link |
---|---|---|---|
odometry |
nav_msgs/Odometry.msg |
Estimate of a position and velocity in free space | Odometry.msg |
To install the gnss_simulator_package
, you need to follow these steps:
-
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:
sudo apt-get install libeigen3-dev
-
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 for detailed installation instructions tailored to your platform.
-
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:
mkdir -p /path/to/ros2_workspace/src cd /path/to/ros2_workspace/src
Now, clone the package repository:
git clone <repository_url>
Replace
<repository_url>
with the URL of your package repository. -
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:
cd /path/to/ros2_workspace colcon build
This command will build all the packages in your workspace, including the newly added package.
-
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:
source /path/to/ros2_workspace/install/setup.bash
Replace
/path/to/ros2_workspace
with the actual path to your ROS 2 workspace.
That's it! Your gnss_simulator_package
should now be installed along with its dependencies and ready to use in your ROS 2 environment.
-
Configure your YAML file for your GNSS receiver or use the default file.
-
Start the GNSS simulator with the launch file:
ros2 launch gnss_simulator_package gnss_simulator.launch.py
The GNSS simulator prints your settings and waits for a ground truth odometry message.
-
Provide an odometry publisher from you vehicle simulation.
-
Check ROS 2 topics The GNSS measurements should now be published.
Important Usage Information:
- The odometry message must be published with at least the GNSS PVT and attitude sample times.
- The messages
/gnss_pvt/diagnostic_array
and/gnss_attitude/diagnostic_array
will showWARN
if the odometry rate is lower. - If no odometry message is published, the messages
/gnss_pvt/diagnostic_array
and/gnss_attitude/diagnostic_array
will showSTALE
. - If everything is correct
/gnss_pvt/diagnostic_array
and/gnss_attitude/diagnostic_array
will showOK
.
This project follows these coding guidelines:
- https://google.github.io/styleguide/cppguide.html
- http://docs.ros.org/en/humble/The-ROS2-Project/Contributing/Code-Style-Language-Versions.html
You can see the CONTRIBUTING file for details if you'd like to contribute to the project.
This project is licensed under the BSD-3-Clause License. Please look at the LICENSE file for details.