Skip to main content
Version: 1.0.2

RTK Heading

Hardware

AutomatePro can be configured with an integrated RTK GNSS heading sensor, providing precise 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 the u-blox F9H series. If included, AutomatePro will feature a blue FAKRA connector for antenna connection, with “GNSS-2” used for position and “GNSS-1” for heading.

AutomatePro GNSS connector location

GNSS Heading Specifications

ParameterValue
Receiveru-blox F9H
ConnectorGNSS-1 (FAKRA C - Signal Blue)
Supported ConstellationGPS, Galileo, BeiDou, GLONASS
Heading Accuracy0.4° 1 (with antenna spacing >1m)
Max Navigation Update RateDefault 1Hz (Can be configured up to 8Hz)
Info

1 Depends on antennas and spacing between the two antennas. See the 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). More information on antennas used with AutomatePro is available 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

TopicTypeDescription
/sensor/gnss/heading/fixsensor_msgs/msg/NavSatFixGNSS fix from the heading receiver.
/sensor/gnss/heading/fix_velocitygeometry_msgs/msg/
TwistWithCovarianceStamped
Velocity from the heading receiver.
/sensor/gnss/heading/true_headingsensor_msgs/msg/ImuDifferential heading as an orientation quaternion with covariance.
/sensor/gnss/heading/navrelposnedublox_msgs/msg/NavRELPOSNED9Detailed differential heading with additional information for calculating either roll or pitch.
/sensor/gnss/heading/monhwublox_msgs/msg/MonHWHardware status of the GNSS heading module.
/sensor/gnss/heading/monsysublox_msgs/msg/MonSYSSystem monitor status of the GNSS heading module.
/diagnosticsdiagnostic_msgs/msg/DiagnosticArrayGNSS heading ROS driver diagnostics.
Topic for heading data

Even though /sensor/gnss/heading/navrelposned provides more information, it is not required for normal use cases. It is recommended to use /sensor/gnss/heading/true_heading for your application, which provides heading as a quaternion with covariance.

Parameters

ParameterTypePackaged defaultRuntime R/WDescription
devicestring/dev/serial/by-id/usb-u-blox_AG_-_www.u-blox.com_u-blox_GNSS_receiver-if00read-onlySerial port for the F9H receiver.
frame_idstringgnss_headingread-onlyFrame ID for published messages.
config_on_startupboolfalseread-onlyLeaves receiver flash configuration unchanged at startup.
gpio.chipnamestringgpiochip0read-onlyGPIO chip used for receiver reset recovery.
gpio.line_numint134read-onlyGPIO line used for receiver reset recovery.
gpio.reset_timeint1read-onlyReset pulse duration in seconds.
recovery.cycle_timeint1read-onlyDelay between recovery attempts in seconds.
watchdog.timeoutint3000read-onlyWatchdog timeout in milliseconds.
watchdog.cycle_timeint500read-onlyWatchdog check interval in milliseconds.
publish.allboolfalseread-onlyEnables all publisher groups when true.
publish.aid.huiboolfalseread-onlyEnables AID-HUI message publishing.
publish.nav.relposnedbooltrueread-onlyEnables NavRELPOSNED9 publishing.
publish.nav.headingbooltrueread-onlyEnables heading publishing on /sensor/gnss/heading/true_heading.
publish.nmeaboolfalseread-onlyKeeps NMEA sentence publishing disabled for the heading receiver.
publish.mon.allbooltrueread-onlyEnables monitor-message publishers, including hardware status.
debugint0read-onlyDebug verbosity; range 0-4.

Configuration

Driver: automatepro_gnss_driver Container: automatepro-core-driver

info

Runtime configuration files are in the /opt/automatepro/config/ros directory. Packaged defaults are installed in /opt/automatepro/defconfig/ros. The runtime files are mounted into the Docker container and used by the ROS driver. Environment variables can be set in the /opt/automatepro/.env file.

The runtime configuration file is:

/opt/automatepro/config/ros/gnss_heading_params.yaml

The packaged default source is:

/opt/automatepro/defconfig/ros/gnss_heading_params.yaml

Default Config

# Configuration Settings for F9H device in Rover Mode
automatepro_gnss_heading_node:
ros__parameters:
debug: 0 # Range 0-4 (0 means no debug statements will print)

device: /dev/serial/by-id/usb-u-blox_AG_-_www.u-blox.com_u-blox_GNSS_receiver-if00 #/dev/ttyACM0
frame_id: gnss_heading

config_on_startup: false # If false, the node will not override configurations of the device on startup
# Device should be configured with u-center and configurations should be saved in flash
# Please use the configuration file provided by Lemvos

# GPIO configuration
gpio:
chipname: "gpiochip0"
line_num: 134
reset_time: 1

# Recovery configuration
recovery:
cycle_time: 1

# Watchdog configuration
watchdog:
timeout: 3000
cycle_time: 500

# Enable u-blox gnss message publishers
publish:
all: false
aid:
hui: false
nav:
relposned: true
heading: true
nmea: false
mon:
all: true
Important

Restart the automatepro-core-driver Docker container after changing the configuration. Configuration changes are applied only after the container restarts.

docker restart automatepro-core-driver