RTK Heading
Hardware
The AutomatePro can be configured with an integrated RTK GNSS Heading sensor, providing precision heading. This is particularly useful when the onboard IMU’s magnetic bearing accuracy is insufficient or when the magnetometer is affected by the operational environment, such as around large steel structures. Depending on antenna placement, the GNSS heading sensor can also measure the robot’s roll or pitch.
The differential heading is provided by Ublox F9H series, if included, the AutomatePro will feature a blue FAKRA connector for antenna connection, with “GNSS-2” used for position and “GNSS-12VDC” for heading.
GNSS Heading Specifications
Parameter | Value |
---|---|
Receiver | Ublox F9H |
Connector | GNSS-1 (FAKRA C - Signal Blue) |
Supported Constellation | GPS, Galileo, BeiDou, GLONASS |
Heading Accuracy | 0.4° 1 (with antenna spacing >1m) |
Max Navigation Update Rate | Default 1Hz (Can be configured up to 8Hz) |
1 Depends on antennas, spacing between the two antennas - see datasheet for more information
External Antenna
The AutomatePro system is compatible with a variety of multi-band high precision GNSS antennas that have a FAKRA Type C connector (Signal Blue). To find more information on the antennas that have been used with AutomatePro, this can be found here.
Antenna Separation: Ensure a minimum separation of 1 meter (≥1m) between the two GNSS antennas. Configuration options are heading (Yaw) and pitch or heading (Yaw) and roll.
Yaw & Pitch

Yaw & Roll

ROS API
Node: automatepro_gnss_heading_node
Publishers
Topic | Type | Description |
---|---|---|
/sensor/gnss/heading/true_heading | automatepro_msgs/msg/GNSSHeading | Simplified differential heading in quaternions |
/sensor/gnss/heading/navrelposned | ublox_msgs/msg/NavRELPOSNED9 | Detailed Differential Heading with additional information for calculating either roll or pitch |
/sensor/gnss/heading/mon_hw | ublox_msgs/msg/MonHW | Hardware and Firmware status of the GNSS heading module |
/sensor/gnss/heading/nmea | nmea_msgs/msg/Sentence | Raw NMEA data |
/diagnostics | diagnostic_msgs/msg/DiagnosticArray | GNSS heading ROS driver Diagnostics |
Even though /sensor/gnss/heading/navrelposned
provides more information, it is not required for normal usecases.
It is recommended to use /sensor/gnss/heading/true_heading
for your application, which provides heading in quaternions with covariances.
Parameters
Parameter | Type | Values | Runtime | Description |
---|---|---|---|---|
device | string | read-only | Serial port (automatically configured) | |
frame_id | string | read-only | Frame id for the messages published | |
publish.all | bool | true/false | read-only | Publish all the messages |
publish.mon.hw | bool | true/false | read-only | enable GNSS module diagnostics publishing |
publish.nav.relposned | bool | true/false | read-only | enable NavRELPOSNED9 msg publishing |
publish.nav.heading | bool | true/false | read-only | enable heading publishing must be true |
publish.nmea | bool | true/false | read-only | enable NMEA msg publishing |
debug | int | 0-4 | read-only | 0 - no debug msgs, 4 - all debug msgs |
Configuration
Driver: automatepro_gnss_driver
Container: automatepro-core-driver
All the configuration related files can be found at /automatepro/config/ros
directory.
These files will be mounted to docker container and will be used by the ROS driver.
config file can be found here.
~/.automatepro/config/ros/gnss_heading_params.yaml
Default Config
automatepro_gnss_heading_node:
ros__parameters:
debug: 0
device: /dev/ttyACM1
frame_id: gnss_heading
config_on_startup: false
# Publishers
publish:
all: false
mon:
hw: true
nav:
all: false
posllh: false
posecef: false
heading: true
relposned: false
nmea: false
Restart the automatepro-core-driver
docker container after changing the configuration.
Configurations will only be applied after the container restarts.
docker restart automatepro-core-driver