| | |

Septentrio GNSS + ROS Integration: Official ROSaic Driver, Compatibility & Technical Advantages

Septentrio GNSS receivers integrated with ROS via the official ROSaic driver on UAV GNSS

For robotics engineers, autonomous driving teams, UAV developers, and researchers, the GNSS receiver is the core positioning source in any navigation fusion chain. This guide explains how Septentrio GNSS receivers — the same mosaic-X5 / mosaic-G5 / AsteRx engines used inside UAV GNSS receivers — plug into the Robot Operating System (ROS) ecosystem through the official, open-source ROSaic driver (septentrio_gnss_driver).

In This Guide

  • Why ROS compatibility should be on your GNSS shortlist criteria
  • The division of labor between flight controllers, ROS, and GNSS
  • mosaic and AsteRx receiver family capabilities at a glance
  • ROSaic technical deep dive: SBF parsing, NED→ENU conversion, RTK multi-source corrections, AIM+ status reporting
  • INS (GNSS+IMU) receiver configuration essentials in YAML
  • Side-by-side comparison: self-developed driver vs. official ROSaic driver
  • Flight controller ecosystem compatibility (Pixhawk, ArduPilot, PX4) and where to get references

1. Why GNSS Selection Should Consider ROS Compatibility

In autonomous systems such as ROS robots, self-driving platforms, and UAVs, the GNSS receiver is the primary position source in the navigation fusion chain. When evaluating receivers, most teams weigh three things: positioning capability (accuracy and reliability), environmental resilience (anti-jamming and anti-spoofing), and ecosystem compatibility (how quickly the receiver can be integrated into an existing stack).

Septentrio scores on all three with publicly verifiable evidence: centimeter-level RTK accuracy, AIM+ anti-jamming and anti-spoofing technology (battle-tested at Jammertest), and an officially maintained ROS driver with broad flight controller ecosystem support. This article focuses on the ecosystem compatibility and the technical implementation details.

2. First, Clarify the Concepts: Flight Controller, ROS, and GNSS

2.1 The Flight Controller Keeps You “Stable”; ROS Makes You “Smart”

Flight controller (PX4 / ArduPilot / Pixhawk): runs on dedicated hardware, controls motors in real time, maintains attitude stability, and executes low-level motion control.

ROS (Robot Operating System): runs on the onboard computer (Raspberry Pi, NVIDIA Jetson, NUC, etc.), and is responsible for sensor data processing, perception, path planning, and mission decisions.

How they cooperate: the two communicate over protocols such as MAVLink. ROS outputs goals and obstacle-avoidance decisions; the flight controller executes them stably.

2.2 Why You Can’t Rely on the Flight Controller Alone

GNSS integration depth: the drivers built into flight controllers support only basic protocols such as NMEA/UBX. Deep features — SBF binary format parsing, RTK status granularity, AIM+ anti-jamming status, and multiple differential correction sources — require a ROS driver to interpret.

Compute boundary: flight controller chips have limited compute. Complex obstacle avoidance and multi-sensor fusion need the onboard computer and ROS.

In one sentence: the flight controller keeps you flying, ROS makes you smart — and Septentrio receivers integrate into both layers of the ecosystem.

3. Septentrio GNSS Product Capability Overview

3.1 Receiver Families and Form Factors

Family Products & Fit Source
mosaic series (module level) mosaic-X5 (multi-frequency, multi-constellation RTK), mosaic-G5 (high cost-performance), mosaic-H (dual-antenna heading) — low power, small footprint, ideal for board-level UAV/robot integration Official product pages
AsteRx series (board / receiver level) AsteRx-m3 Pro+, AsteRx-SB Pro+, AsteRx-SBi3 Pro and more, including GNSS/INS combined navigation models with dual-antenna heading support Official product pages
Complete receivers Ruggedized enclosed receivers (e.g., AsteRx SBi3 Pro) for vehicle and industrial scenarios Official product pages

3.2 Core Technical Capabilities

  • Centimeter-level RTK positioning: full-constellation (GPS / Galileo / GLONASS / BeiDou / QZSS / NavIC) multi-frequency support.
  • AIM+ anti-jamming and anti-spoofing: built-in advanced interference mitigation and OSNMA signal authentication keep positioning usable in complex RF environments.
  • GNSS/INS combined navigation: IMU fusion outputs position, velocity, and attitude (heading / pitch / roll).
  • Field-proven resilience: at the 2025 Jammertest, centimeter-level accuracy was sustained across roughly 100 interference scenarios, and the anti-spoofing tests raised correct alarms.

4. The Official Septentrio ROS Driver (ROSaic): Technical Deep Dive

4.1 Driver Overview

Septentrio maintains an open-source ROS driver on GitHub — septentrio_gnss_driver, branded ROSaic (ROS + mosaic) — written in C++, with a single repository supporting both ROS 1 and ROS 2.

“This repository hosts drivers for ROS 1 (Melodic and Noetic) and ROS 2 (Foxy, Galactic, Humble, Iron, Jazzy, Kilted, Lyrical, Rolling, and beyond) — written in C++ — that work with mosaic and AsteRx — two of Septentrio’s cutting-edge GNSS and GNSS/INS receiver families — and beyond.” — GitHub README

4.2 Compatibility Quick-Reference Table

Item Details Source
Receiver models mosaic-X5, mosaic-H, mosaic-G5 series, AsteRx m3 Pro+, AsteRx i3 D Pro+, AsteRx SBi3 Pro(+), AsteRx RBi3 Pro(+) and more — officially supported, including GNSS+INS solutions Official open-source repo / knowledge base
ROS versions ROS 1: Melodic, Noetic; ROS 2: Foxy through Rolling and beyond Official open-source repo
Connection methods Serial, TCP, UDP, USB (RNDIS and TCP/IP) Official open-source repo
Data protocols SBF binary format + a variety of ASCII messages (including key NMEA) Official open-source repo
Output messages sensor_msgs/NavSatFix, gps_common/GPSFix, nav_msgs/Odometry (INS models) Official open-source repo
Coordinate conversion Built-in NED→ENU axis convention conversion Official open-source repo
RTK corrections Multiple differential sources configured simultaneously: NTRIP, TCP/IP streams, serial Official open-source repo
Anti-jamming status Reports AIM+ (including OSNMA) anti-jamming / anti-spoofing status Official open-source repo

4.3 Technical Highlights

  • SBF block parsing: supports PVTGeodetic, PosCovGeodetic, ChannelStatus, MeasEpoch, AttEuler, AttCovEuler, VelCovGeodetic, DOP, and more.
  • NED→ENU conversion: Septentrio follows the NED convention while ROS uses ENU; the driver’s built-in conversion resolves the axis-orientation mismatch.
  • Standard message output: plugs directly into mainstream fusion frameworks such as robot_localization (EKF/UKF).
  • Development and debugging: ships launch files and parameter configuration directories, and supports PCAP replay for offline testing.
  • Installation: binary install (fast, reliable, compatible with mainstream ROS distros) and source build (advanced customization) — see the official GitHub repository.

4.4 INS Receiver Integration: Key YAML Configuration Points

When GNSS+INS models (e.g., AsteRx-i3 D Pro(+), AsteRx SBi3 Pro(+), AsteRx RBi3 Pro(+)) are connected through ROSaic, the following key settings are made via the YAML configuration file (per Septentrio’s official integration guide):

  • receiver_type: set to ins to enable INS receiver mode.
  • use_ros_axis_orientation: choose the coordinate convention — NED (North-East-Down) or ENU (East-North-Up) — to match your ROS frame convention.
  • ins_spatial_config (INS spatial configuration): imu_orientation (IMU orientation angles theta X/Y/Z) and lever-arm compensation — including POI lever arm (poi_lever_arm), the distance between the GNSS antenna reference point and the IMU reference point (ant_lever_arm), and the velocity sensor-to-IMU distance (vsm_lever_arm).
  • ins_initial_heading: how the initial heading is determined — auto (determined automatically from GNSS measurements, default) or stored (reuse the last saved heading).
  • ins_std_dev_mask: sets the maximum acceptable attitude and position uncertainty limits — the quality gate for the INS solution.
  • ins_use_poi: selects the position reported by the INS navigation solution (the configured POI or the primary GNSS antenna); must be enabled when publishing TF (default true).
  • ins_vsm: configures velocity sensor measurement (VSM) to improve INS accuracy — velocity data can come from ROS (Odometry/Twist messages), TCP/IP external devices, or serial.

These parameters directly affect sensor fusion accuracy and GNSS/IMU reference-frame alignment — they are the critical configuration points for any INS integration.

4.5 INS-Specific ROS Topics and Validation

  • INS topics: correspond to the SBF blocks INSNavGeod, INSNavCart, ExtSensorMeas, IMUSetup, and VelSensorSetup.
  • Validate: ros2 topic list shows published topics; ros2 topic echo <topic_name> inspects the data.
  • Visualize: the bundled tool PlotJuggler can display INS/GNSS data in real time (acceleration, trajectory, and more).

5. Practical Comparison: Integration Advantages of the Official ROSaic Driver

5.1 Typical Scenario

A customer is building an outdoor inspection robot on ROS 2 (Humble) with robot_localization for GNSS/IMU fusion, requiring centimeter-level positioning with strong anti-jamming capability.

5.2 Solution Comparison

Comparison Item Generic Approach (Self-Developed / Third-Party Driver) Septentrio + ROSaic Official Driver
Driver source Self-developed or third-party — you adapt and maintain it yourself Officially maintained by Septentrio, open source on GitHub, continuously updated
Integration effort Must write protocol parsing, coordinate conversion, and differential configuration yourself Install the official driver package and configure launch parameters
Output messages Must wrap standard ROS messages yourself Directly outputs NavSatFix / GPSFix / Odometry
Coordinate conversion Must implement NED→ENU yourself Built-in selectable axis-convention conversion
RTK corrections Must implement your own NTRIP client Multiple differential sources configured simultaneously (NTRIP / TCP / serial)
Anti-jamming observability Hard to access receiver status AIM+ status reported directly to ROS — monitor and alert
Integration timeline Weeks to months Integration verified in days, typically

Note: integration timelines are engineering estimates; actual results depend on team experience and project complexity.

5.3 Customer Value

  • Save time: the official driver works out of the box — the job changes from “writing a driver” to “configuring parameters.”
  • Save risk: continuous official maintenance means version compatibility is assured.
  • Full capability: multi-source RTK corrections, AIM+ status reporting, and NED→ENU conversion are all available.
  • Ecosystem fit: standard messages integrate seamlessly with fusion frameworks such as robot_localization.

6. Flight Controller Ecosystem Compatibility: Beyond ROS

Septentrio compatibility extends beyond ROS: the mosaic series works with mainstream flight controllers including Pixhawk, ArduPilot, and PX4 Autopilot. Supporting hardware — the mosaicHAT (mosaic-X5 + Raspberry Pi) open-source reference design and the Robotics Interface Board (RIB) — lowers the integration barrier further. Both the ROS route and the flight controller route are covered, forming a complete compatibility loop. And because UAV GNSS receivers are built on the same Septentrio mosaic/AsteRx engines, they inherit this full ecosystem out of the box — for example, our EV322 (mosaic-G5 powered) receiver drops straight into both Pixhawk-based builds and ROS 2 stacks.

7. Frequently Asked Questions

Which ROS versions does the official Septentrio driver support?

ROSaic (septentrio_gnss_driver) supports ROS 1 Melodic and Noetic, plus ROS 2 Foxy, Galactic, Humble, Iron, Jazzy, Kilted, Lyrical, Rolling, and newer releases — all from a single C++ repository.

Do I need a GNSS/INS receiver to use ROSaic with ROS 2?

No. Standard GNSS-only models (mosaic-X5, mosaic-G5, AsteRx m3 Pro+) work with the driver and publish sensor_msgs/NavSatFix and gps_common/GPSFix. GNSS+INS models additionally publish nav_msgs/Odometry with full attitude.

Does the driver handle the NED vs ENU coordinate mismatch?

Yes. Septentrio receivers follow the NED convention while ROS uses ENU. The driver includes built-in NED→ENU axis conversion, and INS models can select the convention via use_ros_axis_orientation in the YAML config.

Can I use AIM+ anti-jamming status in my ROS application?

Yes — AIM+ (including OSNMA) anti-jamming and anti-spoofing status is reported by the driver to ROS topics, so you can monitor it and trigger alerts in your own application.

Which UAV GNSS receivers work with ROSaic?

Any receiver built on the Septentrio mosaic-X5, mosaic-G5, or AsteRx engines — including the UAV GNSS lineup (EV322 / HB6 / HB10 series) — inherits full ROSaic support with no custom driver work.

8. References

Item Source Type
Septentrio official ROS driver repository (README) https://github.com/septentrio-gnss/septentrio_gnss_driver Official open-source repo
Septentrio mosaic / AsteRx product pages https://web.septentrio.com/GH-SSN-modules; https://web.septentrio.com/INS-SSN-Rx Official product pages
Septentrio Jammertest 2025 results article Jammertest 2025: withstanding GPS jamming and spoofing Official article
Septentrio ROS introduction video (with Chinese subtitles) https://www.youtube.com/watch?v=XtTZT_n4b4k Official video
Septentrio product page application cases (AsteRx-i3 S Pro, etc.) AsteRx-i3 S Pro+ Official product page
Official knowledge base: ROSaic driver introduction ROSaic: a ROS driver to integrate Septentrio receivers in robotics applications Official knowledge base
Official knowledge base: GNSS/INS receiver + ROSaic integration guide How to integrate a Septentrio GNSS-INS receiver with ROSaic Official knowledge base
ROS official documentation http://wiki.ros.org/cn; https://www.ros.org/ Official documentation
robot_localization fusion framework https://github.com/cra-ros-pkg/robot_localization Official open-source repo

9. Related Reading

10. More on AIM+ Anti-Jamming

Similar Posts