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 toinsto 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) orstored(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 (defaulttrue).ins_vsm: configures velocity sensor measurement (VSM) to improve INS accuracy — velocity data can come from ROS (Odometry/Twistmessages), 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 listshows 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
- ROSaic Deep Dive: Integrating Septentrio GNSS/INS Receivers with ROS 1 & ROS 2 — systems-engineering deep dive on gnss-solutions.com (Eview GNSS)
- Septentrio GNSS 接收机如何无缝接入 ROS:官方驱动、兼容性与技术优势详解(中文版) — Chinese version on gnss-imu.com

