ROS 2 Node
RTK on ROS 2 in minutes
A production-grade ROS 2 Jazzy Lifecycle Node for all three GNSS HAT variants. Publish full navigation telemetry, reconfigure at runtime, and achieve centimeter-level RTK accuracy - all via standard ROS topics.
RTK Base → Rover
Base
NEO-F9P
RTCM3 / DDS
Rover
± 2 cm
- 3-command quickstart — clone, build, launch. Auto-detects your HAT variant, no config required.
-
RTK Base & Rover — corrections flow over DDS (
/gnss/rtk/corrections), zero manual discovery. -
nav2 & robot_localization ready — standard
/gps/fixand/gps/veltopics out of the box. -
Hot-reconfiguration — call
/gnss/set_configto change rate, model, or RTK mode live, with automatic rollback on failure. -
Lifecycle node (REP-2002) — managed states with clean
configure → activate → deactivatetransitions. -
Single YAML config for all three HATs — set
measurement_rate_hz,dynamic_model, RTK base/rover mode, geofencing zones, timepulse, and more.
# Clone into your ROS 2 workspace
$ git clone https://github.com/jimmypaputto/jp_gnss_hat.git
# Build the package
$ colcon build --packages-select jp_gnss_hat
$ source install/setup.bash
# gnss_config.yaml — example RTK rover config
measurement_rate_hz5
dynamic_model4 # Automotive
publish_standard_topicstrue
rtk
moderover
geofencing
confidence_level3 # 99.7%
geofences
lat51.122
lon17.122
radius500
# Launch — HAT auto-detected via /proc/device-tree
$ ros2 launch jp_gnss_hat gnss.launch.py \
config_file:=/path/to/gnss_config.yaml
[INFO] HAT detected: L1/L5 GNSS RTK HAT (NEO-F9P)
[INFO] Lifecycle: configure → activate — OK
# Echo full navigation data
$ ros2 topic echo /gnss/navigation
/gnss/navigation
/gnss/rtk/corrections
/gps/fix
/gps/vel
/gps/time_reference