https://github.com/levichen1126/gnss-dualrtk-heading
ROS package for dual RTK-GPS based heading estimation (with GNSS-Localizer integration), enabling accurate orientation for autonomous vehicle navigation.
https://github.com/levichen1126/gnss-dualrtk-heading
autonomous-driving gnss heading localization ros rtk-gps
Last synced: 19 days ago
JSON representation
ROS package for dual RTK-GPS based heading estimation (with GNSS-Localizer integration), enabling accurate orientation for autonomous vehicle navigation.
- Host: GitHub
- URL: https://github.com/levichen1126/gnss-dualrtk-heading
- Owner: LeviChen1126
- License: other
- Created: 2025-08-31T18:59:56.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-09-01T09:48:00.000Z (9 months ago)
- Last Synced: 2025-09-01T11:50:54.692Z (9 months ago)
- Topics: autonomous-driving, gnss, heading, localization, ros, rtk-gps
- Language: C++
- Homepage:
- Size: 84 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GNSS-DualRTK-Heading
[中文版本](./README_zh-TW.md)
This package uses **dual RTK-GPS antennas** to calculate heading, solving the problem where autonomous vehicles cannot automatically determine the facing direction at startup.
---
## Features
- Publishes `/heading`, `gnss_pose`, and related results for use with GNSS-Localizer, NDT-Matching, and other modules.
- Works together with GNSS-Localizer to form a complete localization system: *precise local coordinates + heading*.
---
## RQT Graph

---
## Development Environment
- Ubuntu 18.04
- ROS (Melodic)
- C++17
- CMake 3.10+
- ROS packages: `roscpp`, `sensor_msgs`, `geometry_msgs`, `std_msgs`, `tf`
- Runtime dependency: `nmea_navsat_driver`
---
## Installation / Usage Example
```bash
cd ~/catkin_ws/src
git clone https://github.com/LeviChen1126/GNSS-DualRTK-Heading.git
cd ..
catkin_make
source devel/setup.bash
```
---
## Run
### 1. Start GPS drivers
```bash
roslaunch gnss_dualrtk_heading dual_gps_serial.launch port1:=/dev/ttyACM0 port2:=/dev/ttyACM1 baud:=19200
```
Or use rosbag / test mode:
```bash
roslaunch gnss_dualrtk_heading dual_gps_topic_test.launch
```
### 2. Start the Heading Node
```bash
roslaunch gnss_dualrtk_heading dualrtk_heading.launch
```
---
## Launch Files
- **dual_gps_serial.launch**: Starts two serial RTK-GPS devices simultaneously → `/fix`, `/fix_2`
- **dual_gps_topic_test.launch**: Test mode without serial, runs only topic drivers
- **dualrtk_heading.launch**: Starts the heading node and loads `gnss_dualrtk.yaml`
---
## Project Structure
```
GNSS-DualRTK-Heading/
├── launch/
│ ├── dualrtk_heading.launch
│ ├── dual_gps_serial.launch
│ └── dual_gps_topic_test.launch
├── config/
│ └── gnss_dualrtk.yaml
├── src/
│ └── dualrtk_heading_node.cpp
├── images/
│ └── rqt_graph.jpg
├── .gitattributes
├── .gitignore
├── CMakeLists.txt
├── package.xml
├── README.md
└── LICENSE
```
---
## License & Acknowledgment
- [MIT License](./LICENSE)
- [Autoware](https://www.autoware.org/)