主页 > Septentrio ROS 驱动(ROSaic)技术报告

技术论文

Septentrio ROS 驱动(ROSaic)技术报告

Septentrio ROS 驱动(ROSaic)官方 ROS 驱动

图1:Septentrio ROS 驱动(ROSaic)技术报告封面

Septentrio ROS 驱动(ROSaic)技术报告

—— 从安装、话题、坐标系到 INS 集成的全解析

版本 v3.0 | 2026-09-01 | 数据来源:Septentrio 官方驱动文档(GitHub README 全文)

1. 报告范围与数据来源

本报告聚焦"Septentrio 与 ROS 的集成能力",全部内容取自 ROS 相关的官方材料,不展开与 ROS 无关的产品营销内容:

Septentrio 官方 ROS 驱动仓库 README 全文(含参数体系、话题体系、INS 集成步骤、固件兼容矩阵)——本次已完整抓取 66 KB 原文。【官方来源】

ROS 发行版发布记录(rosdistro bloom 发布,Iron 版 1.4.0-3)。【官方来源】

Septentrio 官方新闻稿(ROSaic + mosaicHAT 开源发布)。【官方来源(转载)】

说明:Septentrio 支持站两篇 ROSaic 文章(customersupport.septentrio.com)因站点访问限制无法抓取(多次尝试失败),本报告以其驱动的官方文档 README 为主依据,两篇文章建议人工核对。

2. ROSaic 是什么

ROSaic = ROS + mosaic,是 Septentrio 官方维护的开源 ROS 驱动(septentrio_gnss_driver),C++ 编写,单个仓库同时支持 ROS 1 与 ROS 2,面向 mosaic 与 AsteRx 两大接收机家族。【官方来源:README】

维度官方表述(README 原文要点)
ROS 1 支持Melodic、Noetic
ROS 2 支持Foxy、Galactic、Humble、Iron、Jazzy、Kilted、Lyrical、Rolling 及以后
接收机类型单天线 GNSS、双天线 GNSS、GNSS/INS 全支持
实测机型mosaic G5、mosaic-X5、mosaic-H、AsteRx-m3 Pro+、AsteRx-SB Pro+、AsteRx-SBi3 Pro
语言/标准C++(需 C++17 以上编译)
许可证BSD-3-Clause(开源)
发布方式官方 bloom 发布进 ROS 发行版,apt 安装;源码可构建

驱动能力主线(README Main Features):SBF 块级解析并混合输出标准消息;AIM+(含 OSNMA)状态上报;INS 输出 Odometry;NED→ENU 轴约定转换;多路 RTK 差分并行;PCAP 回放测试;易扩展新消息类型。【官方来源】

3. 安装与快速开始(ROS 集成第一步)

3.1 二进制安装(apt)

官方二进制包覆盖 ROS 1(Melodic、Noetic)与 ROS 2(Foxy 至 Rolling)。Melodic、Foxy、Galactic 已 EOL,持续更新的发行版为 Noetic、Humble、Iron、Jazzy、Rolling。安装命令:【官方来源:README】

sudo apt-get install ros-$ROS_DISTRO-septentrio-gnss-driver

3.2 启动(launch)

ROS 1:roslaunch septentrio_gnss_driver rover.launch param_file_name:=rover

ROS 2(组合节点):ros2 launch septentrio_gnss_driver rover.launch.py file_name:=rover.yaml

ROS 2(独立节点):ros2 launch septentrio_gnss_driver rover_node.launch.py file_name:=rover.yaml

配置体系:rover.yaml 全量参数;gnss.yaml / ins.yaml 分别为 GNSS、INS 专用精简配置。

3.3 源码构建

依赖:nmea-msgs、gps-common(ROS 1)/ gps-msgs(ROS 2)、Boost、GeographicLib(LLA↔UTM)、libpcap(PCAP 回放)。

ROS 1:catkin_tools 工作流(catkin init → catkin build)。

ROS 2:colcon 工作流(git checkout ros2 → colcon build --packages-up-to septentrio_gnss_driver),支持 --symlink-install。

测试:colcon test --packages-select septentrio_gnss_driver。【官方来源:README】

4. 连接方式与数据通道

连接方式device 参数格式要点(README)
串口serial:/dev/ttyS0串口 USB 建议按设备 ID 指定(/dev/serial/by-id/...),避免重连后 tty 变化;默认波特率 921600;MeasEpoch 等块可能需近 400 kBit/s
TCP/IPtcp://host:port默认命令端口 28784;换端口需先在 Web 界面重新配置接收机
USB 虚拟网卡tcp://192.168.3.1:28784RNDIS 提供 192.168.3.1 地址;外网 NTRIP 需启用 USB 外网访问并配置 Linux 网络共享
UDPstream_device.udp低时延接收;可设 unicast_ip 或组播
文件回放file_name:xxx.sbf / xxx.pcapSBF 日志与 PCAP 抓包均可回放,用于测试复现;回放时自动启用 use_gnss_time

数据接收机制:SBF 块与 NMEA 语句经主连接(device)或静态 TCP/UDP 服务器(stream_device)接收;configure_rx=true 时驱动按配置自动配置接收机(注意会覆盖接收机原参数)。【官方来源】

5. 话题与消息体系(ROS 集成核心)

驱动把 SBF 块 / NMEA 语句翻译为 30+ 个可选发布的 ROS 话题,全部消息带标准 Header(接收机时间戳 + frame_id)。以下为核心话题与 ROS 生态衔接方式。【官方来源:README "ROS Topic Publications" 章节】

5.1 可直接接入 ROS 导航栈的话题

话题消息类型数据来源(SBF 块)ROS 生态衔接(README 明确说明)
/navsatfixsensor_msgs/NavSatFixPVTGeodetic + PosCovGeodetic(GNSS)/ INSNavGeod(INS)可直接送入 robot_localization 的 navsat_transform_node
/imusensor_msgs/ImuExtSensorMeas + INSNavGeod角速度/加速度为原始 IMU 测量、姿态来自 INS 解;可直接送入 robot_localization(建议 use_ros_axis_orientation=true)
/localizationnav_msgs/OdometryINSNavGeod → UTM 转换可直接送入 robot_localization;可发布 tf(ins_use_poi 需为 true)
/localization_ecefnav_msgs/OdometryINSNavCart + INSNavGeodECEF 坐标系版本,同样可直连 robot_localization
/gpsfixgps_msgs/GPSFix8 块融合:PVTGeodetic、PosCovGeodetic、ChannelStatus、MeasEpoch、AttEuler、AttCovEuler、VelCovGeodetic、DOP比 NavSatFix 信息更全;航向填入 dip 字段(err_dip 为不确定度)
/posePoseWithCovarianceStampedPVTGeodetic + PosCovGeodetic + AttEuler + AttCovEuler(GNSS)/ INSNavGeod(INS)绝对位置(经纬高)+ 姿态;注意姿态系为 NED/ENU,位置为地理系,互协方差为 0
/twist_gnss / /twist_insTwistWithCovarianceStampedPVTGeodetic + VelCovGeodetic / INSNavGeod速度 + 速度协方差

5.2 状态与诊断话题

话题消息类型说明
/aimplusstatus、/rfstatusAIMPlusStatus / RFStatusAIM+ 抗干扰/防欺骗状态;部分信息需 OSNMA 激活
/galauthstatusGALAuthStatusGalileo OSNMA 认证状态
/diagnosticsdiagnostic_msgs/DiagnosticArray由 QualityInd、ReceiverStatus、ReceiverSetup 块生成,标准 ROS 诊断接口
/gpstsensor_msgs/TimeReferenceGPS 时间参考

5.3 原始级自定义消息(对应 SBF 块)

PVTGeodetic、PVTCartesian、PosCovGeodetic/Cartesian、VelCovGeodetic/Cartesian、AttEuler、AttCovEuler、BaseVectorGeod/Cart、MeasEpoch、INSNavGeod/Cart、ExtSensorMeas、IMUSetup、VelSensorSetup、ExtEventINSNavGeod/Cart 等均有同名自定义消息(septentrio_gnss_driver/*.msg),可按需开启;另有标准 NMEA 话题 /gpgga、/gprmc、/gpgsa、/gpgsv。全部话题按 publish.* 开关控制(publish_only_valid 可只发布时间戳有效的块)。【官方来源】

6. 坐标系、frame_id 与 tf(REP 103/105 合规)

驱动按 ROS 标准(REP 103 轴方向、REP 105 帧关系)设计,关键点:【官方来源】

use_ros_axis_orientation=true(默认):驱动在 NED(Septentrio:yaw=0 北、顺时针正)与 ENU(ROS:yaw=0 东、逆时针正)间自动转换;false 时角度与 Web 界面一致。

frame_id 体系:frame_id(主天线,默认 gnss)、imu_frame_id(imu)、poi_frame_id(base_link)、vsm_frame_id(vsm)、aux1_frame_id(aux1)、vehicle_frame_id(base_link)、local_frame_id(odom)。

insert_local_frame:按 REP 105 插入局部坐标系(odom),发布 local↔global 变换,适配机器人"odom 系 + 全局系"的标准结构。

get_spatial_config_from_tf:杠杆臂/安装角等空间参数可直接从 tf 树读取(多天线时需提供全部帧;poi_frame_id 为 tf 树根)。

tf / tf_ecef:INS 定位可发布 tf(UTM 或 ECEF,二选一),ins_use_poi 必须为 true。

UTM:lock_utm_zone 锁定初始 UTM 带;/localization 输出即为 UTM 坐标。

7. GNSS/INS 集成(9D 融合)

INS 原理(README 原文要点):INS 将 IMU 的旋转/加速度测量与 GNSS 的位置/速度信息融合,经 Kalman 滤波得到 9D 状态(3 位置 + 3 速度 + 3 姿态)。相比 7D/8D(双天线)GNSS 方案,9D 解更准、更稳、更能抵抗 GNSS 中断。

7.1 官方推荐的 INS 集成步骤(README 原文)

指定 receiver_type: ins(GNSS 机型用 gnss)。

设置 IMU 安装方向:ins_spatial_config.imu_orientation(theta_x/y/z)——接收机顶部印有 IMU 参考方向。

设置 IMU-天线杠杆臂:ins_spatial_config.ant_lever_arm(x/y/z,车体系)——不补偿则 INS 位置算不准(AsteRx SBi3 顶部标记 IMU 参考点)。

有速度传感器时设置 vsm_lever_arm;或用 tf 方式:get_spatial_config_from_tf=true。

关注点既非 IMU 也非天线时,用 poi_lever_arm 指定 IMU 到关注点的矢量(ins_use_poi=true)。

7.2 VSM(车辆速度传感器)与 ROS 话题联动

ins_vsm.ros.source 可选 odometry 或 twist,驱动将订阅 /odometry_vsm 或 /twist_vsm 话题(nav_msgs/Odometry 或 TwistWithCovarianceStamped),把线速度经 TCP 发给接收机参与 INS 解算;config 可定义各轴是否转发,并可为阿克曼等车型引入非完整约束(侧向/垂向零速),即使只有 x 向测速也能用。【官方来源】

7.3 初始航向与输出约束

ins_initial_heading:auto(GNSS 测定,默认)/ stored(沿用停车前航向,适合停车断电场景)。

ins_std_dev_mask:姿态标准差上限 5°、位置标准差上限 10 m,超限即判无效。

/imu 原始 IMU 最高 200 Hz;INS 解算 100 Hz(/imu 输出按 INS 速率)。

8. RTK 差分、OSNMA 与时间同步

8.1 多路差分并行(接收机自动选最近源)

NTRIP:最多 3 路(ntrip_1~3),支持 RTCMv2/v3、CMRv2、TLS、自签名证书指纹校验、GGA 上报策略(auto/sec1/sec5/sec10/sec60/off)。

TCP/IP:最多 5 路(ip_server_1~5),可配合 RxTools Data Link 转发差分。

串口:最多 5 路(serial_1~5),接本地基准站电台。

多路可同时配置,接收机自动选择最近差分源;keep_open=true 时驱动退出后差分链路保持。【官方来源】

8.2 OSNMA 认证(防欺骗)

osnma.mode 三档:off / loose(认证成功或状态未知的卫星参与解算)/ strict(仅认证成功卫星参与,必须 NTP 同步);ntp_server 可选 default 或指定服务器。【官方来源】

8.3 时间系统

use_gnss_time=true:消息时间戳用 GNSS 时间(TOW/WNC)构造,需 ROS 主机与 NTP/PTP 同步——Septentrio 接收机本身可作 Stratum 1 NTP 时间服务器(不依赖外网)。

latency_compensation:补偿接收机处理时延(GNSS/INS 场景均适用)。

polling_period:pvt 与 rest 轮询周期(默认 500 ms),可调高刷新率;设为 0 则按块自然更新率(OnChange)。

9. 固件版本兼容矩阵(官方 README)

接收机类型固件版本要求功能限制(低于要求时)
GNSS≥ 4.10.0(开发测试基准)<4.10.0 不支持 IP over USB;<4.12.1 不支持 OSNMA;<4.14 不支持 PTP server clock;UDP over USB 双发问题 ≤4.12.1(4.14 于 2023-06-15 修复)
INS≥ 1.3.2(开发测试基准)≤1.2.0 不支持速度辅助(velocity aiding)与初始航向设置;<1.3.2 不支持 NTP;<1.4 不支持 OSNMA;<1.4.1 不支持改进 VSM(未知方差);UDP over USB 双发 ≤1.4(1.4.1 于 2023-11 修复);暂不支持 PTP server clock
mosaic G5≥ 1.0.1<1.0.1 不受支持

10. 调试、测试与二次开发

回放调试:SBF 日志 / PCAP 抓包文件直接作为 device 输入回放,离线复现现场问题(回放时自动启用 GNSS 时间,需正确设置 leap_seconds)。

诊断:/diagnostics 标准诊断输出;activate_debug_log 开启驱动调试日志。

质量过滤:publish_only_valid 只发布时间戳有效的块。

扩展新消息:README 给出 7 步流程(新增 .msg → typedefs.hpp → sbf_blocks.hpp 解析器 → message_handler 注册 → publish.* 参数 → 数据流配置),二次开发门槛低。

已知问题:configure_rx=true 会覆盖接收机参数;hw_flow_control 等字符串参数需引号;串口需 dialout 组权限。【官方来源】

11. 匿名竞品对比(ROS 生态维度,不出现品牌名)

依据:2026-09-01 公开资料检索(GitHub 仓库、社区教程、厂商发布信息),未逐一实测核实;仅呈现生态现状。【公开检索】

技术维度Septentrio(ROSaic 官方驱动)竞品 A(欧美高精度品牌)竞品 B(瑞士大众市场模块品牌)竞品 C(美系测绘大厂)
官方维护的 ROS 驱动官方开源仓库有,但主要面向 ROS 1以社区驱动为主未检索到官方驱动
ROS 2 全版本跟进Foxy → Rolling 及以后覆盖有限依赖社区适配
原生 SBF 深度解析块级解析 + 30+ 话题自有格式,社区适配以 NMEA/UBX 为主部分格式
与 robot_localization 直连NavSatFix/IMU/Odometry 官方明确说明可直连部分支持有限
REP 103/105 合规(NED→ENU、tf)内置转换 + insert_local_frame需自行处理需自行处理需自行处理
双天线航向 + INS 输出Odometry/姿态/IMU/协方差部分产品线消费级为主测量产品线为主
抗干扰/防欺骗状态上报AIM+(含 OSNMA)topic有限
多路 RTK 差分并行3 NTRIP + 5 TCP + 5 串口同时配置支持但配置复杂单路为主依赖第三方
apt 官方二进制发布bloom 发布部分包有二进制社区打包

结论:在"官方维护 + ROS 1/2 全版本 + 原生协议深度解析 + 导航栈直连 + REP 合规 + 抗欺骗可观测 + 多路差分并行"的组合维度上,Septentrio 是少数全项齐备的厂商。

12. 参考来源与可信度

内容链接/位置类别
官方驱动仓库 README 全文(66 KB,本次完整抓取)https://github.com/septentrio-gnss/septentrio_gnss_driver官方来源
ROS 发行版发布记录(bloom PR,Iron 1.4.0-3)https://github.com/ros/rosdistro/pull/41339官方来源
ROS 包索引(septentrio_gnss_driver)https://index.ros.org/p/septentrio_gnss_driver/官方来源
2020 官方新闻稿(ROSaic + mosaicHAT 开源发布)https://c168669.hi1718.com/news/20201022201114370.html官方来源(转载)
Septentrio 支持站:ROSaic 集成指南 / 介绍customersupport.septentrio.com(访问受限,本次未能抓取,建议人工核对)官方来源(待核实)
竞品公开资料(2026-09-01 检索)GitHub 社区仓库与厂商发布信息公开检索

v3.0 | 2026-09-01 | Septentrio ROS 驱动(ROSaic)技术报告

出处与说明

作者:南京宏成智能科技(Septentrio 中国区合作伙伴)

发布日期:2026-09-02

内容来源:《Septentrio ROS 驱动(ROSaic)技术报告》v3.0(2026-09-01)

外部参考:Septentrio 官方 GitHub 仓库(septentrio_gnss_driver)、ROS 包索引、rosdistro bloom 发布记录

相关文章:Jammertest 2025 抗干扰实测结果(中文版)

接入指南(本站新增):Septentrio GNSS 接收机如何无缝接入 ROS:官方驱动、兼容性与技术优势详解(中文版,v1.2)

Septentrio全球最大代理商-南京宏成:南京宏成智能科技有限公司长期供应 Septentrio Mosaic-G5 系列(P3 / P3H / T / P6 / P8)、mosaic-X5、PolaRx5 系列与 AsteRx 系列高精度 GNSS 模组、板卡与接收机,并提供选型、集成与技术支持。

     企业微信

    

我司企业微信 Close
the qr code