
图1:Septentrio ROS 驱动(ROSaic)技术报告封面
—— 从安装、话题、坐标系到 INS 集成的全解析
版本 v3.0 | 2026-09-01 | 数据来源:Septentrio 官方驱动文档(GitHub README 全文)
本报告聚焦"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 为主依据,两篇文章建议人工核对。
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 回放测试;易扩展新消息类型。【官方来源】
官方二进制包覆盖 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
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 专用精简配置。
依赖: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】
| 连接方式 | device 参数格式 | 要点(README) |
|---|---|---|
| 串口 | serial:/dev/ttyS0 | 串口 USB 建议按设备 ID 指定(/dev/serial/by-id/...),避免重连后 tty 变化;默认波特率 921600;MeasEpoch 等块可能需近 400 kBit/s |
| TCP/IP | tcp://host:port | 默认命令端口 28784;换端口需先在 Web 界面重新配置接收机 |
| USB 虚拟网卡 | tcp://192.168.3.1:28784 | RNDIS 提供 192.168.3.1 地址;外网 NTRIP 需启用 USB 外网访问并配置 Linux 网络共享 |
| UDP | stream_device.udp | 低时延接收;可设 unicast_ip 或组播 |
| 文件回放 | file_name:xxx.sbf / xxx.pcap | SBF 日志与 PCAP 抓包均可回放,用于测试复现;回放时自动启用 use_gnss_time |
数据接收机制:SBF 块与 NMEA 语句经主连接(device)或静态 TCP/UDP 服务器(stream_device)接收;configure_rx=true 时驱动按配置自动配置接收机(注意会覆盖接收机原参数)。【官方来源】
驱动把 SBF 块 / NMEA 语句翻译为 30+ 个可选发布的 ROS 话题,全部消息带标准 Header(接收机时间戳 + frame_id)。以下为核心话题与 ROS 生态衔接方式。【官方来源:README "ROS Topic Publications" 章节】
| 话题 | 消息类型 | 数据来源(SBF 块) | ROS 生态衔接(README 明确说明) |
|---|---|---|---|
| /navsatfix | sensor_msgs/NavSatFix | PVTGeodetic + PosCovGeodetic(GNSS)/ INSNavGeod(INS) | 可直接送入 robot_localization 的 navsat_transform_node |
| /imu | sensor_msgs/Imu | ExtSensorMeas + INSNavGeod | 角速度/加速度为原始 IMU 测量、姿态来自 INS 解;可直接送入 robot_localization(建议 use_ros_axis_orientation=true) |
| /localization | nav_msgs/Odometry | INSNavGeod → UTM 转换 | 可直接送入 robot_localization;可发布 tf(ins_use_poi 需为 true) |
| /localization_ecef | nav_msgs/Odometry | INSNavCart + INSNavGeod | ECEF 坐标系版本,同样可直连 robot_localization |
| /gpsfix | gps_msgs/GPSFix | 8 块融合:PVTGeodetic、PosCovGeodetic、ChannelStatus、MeasEpoch、AttEuler、AttCovEuler、VelCovGeodetic、DOP | 比 NavSatFix 信息更全;航向填入 dip 字段(err_dip 为不确定度) |
| /pose | PoseWithCovarianceStamped | PVTGeodetic + PosCovGeodetic + AttEuler + AttCovEuler(GNSS)/ INSNavGeod(INS) | 绝对位置(经纬高)+ 姿态;注意姿态系为 NED/ENU,位置为地理系,互协方差为 0 |
| /twist_gnss / /twist_ins | TwistWithCovarianceStamped | PVTGeodetic + VelCovGeodetic / INSNavGeod | 速度 + 速度协方差 |
| 话题 | 消息类型 | 说明 |
|---|---|---|
| /aimplusstatus、/rfstatus | AIMPlusStatus / RFStatus | AIM+ 抗干扰/防欺骗状态;部分信息需 OSNMA 激活 |
| /galauthstatus | GALAuthStatus | Galileo OSNMA 认证状态 |
| /diagnostics | diagnostic_msgs/DiagnosticArray | 由 QualityInd、ReceiverStatus、ReceiverSetup 块生成,标准 ROS 诊断接口 |
| /gpst | sensor_msgs/TimeReference | GPS 时间参考 |
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 可只发布时间戳有效的块)。【官方来源】
驱动按 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 坐标。
INS 原理(README 原文要点):INS 将 IMU 的旋转/加速度测量与 GNSS 的位置/速度信息融合,经 Kalman 滤波得到 9D 状态(3 位置 + 3 速度 + 3 姿态)。相比 7D/8D(双天线)GNSS 方案,9D 解更准、更稳、更能抵抗 GNSS 中断。
指定 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)。
ins_vsm.ros.source 可选 odometry 或 twist,驱动将订阅 /odometry_vsm 或 /twist_vsm 话题(nav_msgs/Odometry 或 TwistWithCovarianceStamped),把线速度经 TCP 发给接收机参与 INS 解算;config 可定义各轴是否转发,并可为阿克曼等车型引入非完整约束(侧向/垂向零速),即使只有 x 向测速也能用。【官方来源】
ins_initial_heading:auto(GNSS 测定,默认)/ stored(沿用停车前航向,适合停车断电场景)。
ins_std_dev_mask:姿态标准差上限 5°、位置标准差上限 10 m,超限即判无效。
/imu 原始 IMU 最高 200 Hz;INS 解算 100 Hz(/imu 输出按 INS 速率)。
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 时驱动退出后差分链路保持。【官方来源】
osnma.mode 三档:off / loose(认证成功或状态未知的卫星参与解算)/ strict(仅认证成功卫星参与,必须 NTP 同步);ntp_server 可选 default 或指定服务器。【官方来源】
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)。
| 接收机类型 | 固件版本要求 | 功能限制(低于要求时) |
|---|---|---|
| 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 不受支持 |
回放调试: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 组权限。【官方来源】
依据: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 是少数全项齐备的厂商。
| 内容 | 链接/位置 | 类别 |
|---|---|---|
| 官方驱动仓库 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 模组、板卡与接收机,并提供选型、集成与技术支持。
电话: 025-85577685
地址:南京市江宁开发区诚信大道990号优尚天地3栋417室
企业微信