ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Mini PCIe高精度GNSS板卡:嵌入式厘米级定位实战解析

Mini PCIe高精度GNSS板卡:嵌入式厘米级定位实战解析 调试车道级定位的嵌入式设备时我最常被问到的一个问题就是为什么家用手机导航的GPS也就十米精度却不能直接用到自动化设备上。答案很简单消费级GPS模块和高精度GNSS板卡的差距不是单纯靠天线就能弥补的。最近我手头正好在折腾一块Mini PCIe形态的高精度GNSS/GPS板卡这块卡直接把RTK级别的定位能力压缩到了一张标准网卡大小装进工控机就能用。这篇文章就围绕这块板卡把硬件接口、RTK实现原理、系统集成、传感器协同这些环节一次讲透。这块板卡解决的核心问题是把厘米级定位能力做成标准件。过去做高精度定位要么用笨重的测绘级接收机要么自己做载波板卡加天线成本高、体积大、上手难。现在Mini PCIe形态的高精度GNSS模组把射频前端、基带处理、差分算法全塞进一张半高卡里通过标准接口供电和通信适合做自动驾驶测试设备、机器人底盘、工业巡检无人机地面站等场景。如果你正在选型嵌入式高精度定位方案或者想把现有设备从米级定位升级到厘米级这篇内容可以帮你少走不少弯路。1. 内容整体设计与思路拆解1.1 从需求反推硬件形态为什么是Mini PCIe先聊一个很实际的问题为什么高精度GNSS板卡要采用Mini PCIe形态这要从嵌入式系统的集成方式说起。市面上常见的GNSS模组分为几类贴片式模组类似QFN封装、邮票孔模组、串口/USB小板卡再往上就是PCIE形态的板卡。贴片式模组适合量产的消费级硬件集成度高但需要自己做天线馈线和接口电路串口小板卡适合快速原型验证但固定方式、抗振性能都不够好。Mini PCIe形态是在“集成难度”和“接口标准化”之间取了一个平衡点。它沿用了通信网卡的物理尺寸和引脚定义这意味着你不需要为GNSS板卡重新设计结构件——只要工控机或者嵌入式主板上有一个空闲的Mini PCIe插槽插上就能用。更重要的是Mini PCIe金手指上同时定义了USB、UART、I2C、电源、复位等信号GNSS板卡可以选择自己需要的信号通路接到主控这在传统贴片模组上很难做到。我选择这块板卡的时候核心需求有三个一是要支持双频RTK输出厘米级定位结果二是要能直接插到现有工控机里不需要改外壳和线束三是板载天线供电和状态引脚方便在整机测试时做信号诊断。Mini PCIe形态恰好都满足。如果你做的是车载或者无人机这类振动比较大的场景卡式安装的可靠性比贴片加转接板要高很多。1.2 高精度GNSS板卡的定位它不是一个“更好的GPS”很多人第一次见到这类板卡会误以为它就是个性能好一点的GPS接收器。这是最大的认知误区。普通GPS接收机输出的定位结果精度大概在2.5米到5米之间主要依靠单频伪距测量算法上只有星历解算这一步。高精度GNSS板卡的本质区别在于它输出的不仅仅是经纬度坐标还包括原始观测量、载波相位、多普勒频移、各卫星的载噪比CN0。这些原始数据是厘米级RTK定位的基石。换个更容易理解的说法普通GPS接收机是“直接告诉你你在哪”高精度GNSS板卡是“把测量过程的所有中间数据都给你并且配合差分改正数自己完成高精度解算”。在RTK模式下板卡需要同时接收来自卫星的射频信号和来自基准站/网络服务商的差分改正数据RTCM格式然后通过内部的载波相位差分算法把定位误差从米级压缩到厘米级。这块板卡还支持存储原始观测量和后处理差分。我们在做某些设备标定测试时往往信号环境不好实时RTK解算效果不理想这时候可以把原始数据记录下来回到办公室用后处理软件跑一遍一样能得到厘米级轨迹。这种灵活性是消费级GPS完全不具备的。2. 核心细节解析与实操要点2.1 读引脚定义Mini PCIe金手指上哪些信号真正用的上拿到板卡后第一步不是装驱动而是认真读一遍Mini PCIe金手指引脚定义。Mini PCIe接口有52个引脚分为A面含电源和USB和B面含PCIe数据和辅助信号。高精度GNSS板卡通常没有用到PCIe总线它使用的是这个标准里定义的电源、USB、UART和几个辅助信号引脚。需要重点关注的信号有以下几组供电引脚3.3V和1.5V。GNSS板卡一般只用3.3V主供电1.5V为空脚。实测板卡正常工作时电流在200mA到400mA之间RTK解算启动瞬间电流会稍高。如果主板供电偏弱容易出现卫星信号正常但定位解算反复重置的问题。USB信号引脚USB_D和USB_D-。这是最常用的数据通路。板卡加载驱动后会枚举为一个虚拟串口也就是USB转串口的形式。好处是主机端不需要额外的UART资源即插即用尤其适合带Windows或Linux的工控机。UART引脚如果不走USB也可以使用板卡上预留的UART_TX/UART_RX接到单片机比如STM32上。很多用户问“GPS与STM32怎么连接”实际上就是在这个接口上做文章。天线检测引脚板卡上会有一个天线状态引脚输出高/低电平表示天线是否接入。在整机安装时非常有用可以直接把这个信号接上指示灯或MCU中断及时诊断天线松动问题。WL_DISABLE和PERST这两个引脚在GNSS板卡上通常不启用但为了避免和其他模块冲突最好保持默认状态。下表总结了关键引脚的实际使用情况信号名称Mini PCIe引脚号实际用途注意事项3.3VA4主供电供电能力至少500mAGNDA6、A10等系统地注意和天线馈线地隔离USB_DA36数据正极阻抗匹配按USB 2.0设计USB_D-A38数据负极同上UART_TX需查板卡定义串口发送3.3V电平UART_RX需查板卡定义串口接收3.3V电平天线检测板卡特定引脚天线接入指示可接LED或MCU天线电源由射频座间接输出有源天线供电通常为3.3V/5V短路过流保护这里有一个常见的坑很多Mini PCIe插座设计时只预留了PCIe信号走线没有把USB信号引到主板桥控制器上。如果你的工控机插上GNSS板卡后设备管理器里没有任何反应多半不是板卡坏了而是该插槽的USB引脚压根没有接到主控上。我遇到过一次这种情况翻出主板说明书看了一下发现靠近右侧的插槽只支持PCIe通道不支持USB后来换一个支持USB的插槽就好了。2.2 天线座与射频链路SMA座、U.FL座和有源天线供电天线接口是高精度GNSS板卡最容易出问题的地方因为超高精度对射频前端要求非常高。板卡上的天线接口一般是U.FL也叫IPEX或者SMA。有些板卡会把SMA座直接集成在挡板上这样天线馈线可以直接用SMA接口拧紧非常方便。但更多的Mini PCIe板卡为了尺寸压缩只留了一个U.FL座需要你自己接一根U.FL转SMA的转接线把天线引到机箱外部。这里需要注意馈线损耗的问题。GNSS信号本身非常微弱卫星到达地面的信号功率大约是-130dBm比Wi-Fi信号还弱很多再经过馈线和接头损耗很容易劣化到接收机灵敏度以下。如果使用U.FL转接线尽量选择一代线材长度不超过15cm损耗控制在1dB以内。如果天线必须安装在离板卡比较远的位置比如车辆顶部的GPS天线馈线尽量用RG174级别的低损线长度超过3米时建议增加外置放大器或者选择板卡内置LNA。有源天线供电是另一个需要特别注意的点。高精度GNSS板卡通常默认从天线馈线的中心引脚输出3.3V或者5V直流电给天线内部集成的低噪声放大器供电。如果你接的是无源天线或者陶瓷贴片天线需要把板卡的天线供电功能关掉否则会一直拉电流导致接收机前端过载。反过来如果接的是有源天线但忘了启用供电接收机会发现卫星信号极差因为LNA根本没有工作。为了快速判断天线状态我在实际调试中习惯在板卡软件里查看CN0值。正常开阔环境下双频GNSS接收机各卫星的CN0一般在35dBHz到50dBHz之间如果所有卫星的CN0都低于30dBHz基本可以确定是天线链路的某个环节出了问题。2.3 固件配置NMEA输出、RTCM输入和采样频率板卡上电后默认输出的NMEA数据一般包含GGA、RMC、GSA、GSV这些典型语句。通过配置软件可以调整NMEA输出的语句种类和频率也可以配置串口波特率。这个环节有几个重要参数需要理解透彻。NMEA 0183协议是GNSS接收机最普遍的数据格式每帧以$开头、以\r\n结尾字段用逗号分隔。$GNGGA中包含经纬度、定位质量指示、卫星数、水平精度因子HDOP、海拔$GNRMC中包含推荐的最小数据包括速度、航向$GNGSA中包含定位模式3D/2D和精度因子值。做数据解析时建议至少同时解析GGA和RMC因为GGA有完整的定位状态RMC有速度航向。RTCM输入用于RTK差分。板卡接收基准站传来的RTCM 3.x数据流经过内部解算后输出厘米级定位结果。RTK差分数据的波特率通常设置为115200甚至更高因为RTCM数据量比NMEA大很多差分信息更新率也高。有的板卡支持在同一个串口上混合输出NMEA和输入RTCM用语句头区分有的则要求使用独立数据口输入差分数据这种配置时一定要确认自己的主控软件没有把两个数据口搞混。采样频率方面普通静态测量设置1Hz就够了动态车载测试建议用5Hz无人机在强机动环境下用10Hz会更平滑。需要注意采样频率越高板卡功耗和CPU占用会相应增加同时对差分数据链路的实时性要求也越高。我曾经为了追求平滑轨迹把采样率调到20Hz结果发现差分链路稍微一延迟保护级别就飙升整体定位质量反而变差。3. 实操过程与核心环节实现3.1 软硬件组装从板卡插接到首次定位现在走一遍完整的上手流程。硬件部分是打开工控机机箱找到空闲Mini PCIe插槽在插槽对应位置固定好六角铜柱然后对准金手指缺口把板卡斜向插入约30度角再向下按压到位锁紧两边的螺丝。注意不要用手直接触碰金手指和U.FL座静电很容易损伤射频前端的低噪声放大器。天线放到窗外或者测试车辆顶部尽量保证天空视野开阔。如果是在综合办公楼里做首次验证也可以把天线放到窗边但要做好定位精度下降的心理准备尤其是在室内卫星信号衰减严重能锁定的卫星数可能不到4颗定位状态会从3D固定变为3D浮动甚至无效。连接好天线给工控机通电。Windows系统下插上板卡后设备管理器里会出现一个新的串口设备一般形如“USB Serial PortCOMx”。打开串口助手配置好波特率默认通常是115200就能看到连续的NMEA语句。如果看不到任何输出优先检查以下几点第一设备管理器里是否识别到了USB设备第二串口号是否被其他程序占用第三使用USB转接线时板卡的USB信号线方向是否正确。首次定位的耗时取决于三个因素冷启动时需要接收星历数据板卡内部也没有保存时间和位置通常需要30秒到60秒如果板卡保留了上次掉电时的星历和位置热启动一般在几秒内就能锁定如果太久没用导致星历过期板卡需要重新下载星历数据耗时可能长达数分钟。调试时可以关闭建筑物遮挡严重的区域。3.2 配置RTK差分让定位精度从米级跳到厘米级RTK是这块板卡的核心功能配置步骤值得单独展开。RTK需要两个端基准站和移动站。基准站的位置是已知的或者是通过长期观测解算出的精确坐标移动站就是你的板卡。基准站把观测到的卫星载波相位数据打包成RTCM格式通过某种数据链路发给移动站。移动站收到差分数据后利用双差数学模型抵消掉卫星钟差、接收机钟差和大部分大气误差实现厘米级定位。在自己搭建实测环境时常见的数据链路有几种一是用4G LTE网络从网络RTK服务商获取差分数据比如千寻知寸、六分科技这种方式不需要自建基准站成本低、部署简单二是自建基准站用数传电台比如Xbee、工业级数传电台把RTCM数据发送给移动站适合局部区域没有网络覆盖的场景三是事后处理模式不输出RTCM直接存储原始观测量文件。我推荐调试初期使用网络RTK服务因为操作最简单且稳定也更贴近实际自动驾驶测试场景。配置方法如下在板卡配置工具里设置差分数据输入源的串口或者网络端口填入NTRIP挂载点、用户名和密码设置好坐标系转换参数然后观察该软件输出的GGA语句中的定位质量指示。定位质量指示Fix quality是判断RTK是否成功的直接依据0表示无法定位1表示单点定位2表示伪距差分4表示RTK固定解5表示RTK浮点解。RTK固定解Fix和浮点解Float的区别很关键。固定解意味着整周模糊度已经确定精度可达2cm左右浮点解说明模糊度还没收敛精度一般在10cm到50cm之间。如果一直处于浮点解状态可以从以下几个方面排查检查差分数据的时延是否过大超过10秒基本无法固定检查天空中是否有遮挡检查基准站和移动站之间的距离是否过远超过20公里就很难固定了。3.3 与STM32等主控板的数据对接不少做机器人底盘和嵌入式导航的朋友会问GPS怎么和STM32结合使用。这块Mini PCIe板卡本身是工控机形态但如果你想把数据接给STM32也可以把板卡上的UART引脚引出到MCU串口。更常见的做法是板卡通过USB接到树莓派或工控机然后由工控机上的程序把解析后的定位结果通过CAN或者以太网发给STM32。在STM32端解析NMEA时建议做一个高效的逐字符状态机解析器而不是用字符串函数暴力搜索。GNSS数据帧的到达是不定时的而且可能断帧需要在每个字符到达时更新解析状态。具体来说先检测起始字符“$”然后按逗号切分字段根据语句类型进入不同的处理分支。以$GNGGA为例第2和第4字段分别是经度和纬度格式是度和分混合的十进制表示比如“11408.36686”表示114度8.36686分。把度分转为十进制的公式是十进制度 度分前两位 度分后小数 / 60。还有一点在STM32项目中经常被忽略GPS输出数据的时间戳对应的是收到信号的时间而不是解析程序处理到的时刻。在传感器融合时间同步中这个延迟必须被考虑。如果板卡支持PPS脉冲输出可以把这个引脚的下降沿作为时间基准通过外部中断给每帧定位数据打一个精确时间戳会比用串口接收时刻准确得多。4. 常见问题与排查技巧实录4.1 室内没信号怎么办GNSS的物理边界有不少用户会问为什么在室内GPS基本上搜不到卫星这不是板卡出了问题而是GNSS的物理特性决定的。GPS、北斗、GLONASS等卫星信号频段在1.2GHz和1.5GHz左右穿透能力有限建筑的钢筋混凝土结构会显著衰减信号。普通导航手机在室内能定位主要靠的是基站辅助定位和Wi-Fi定位不是纯GPS。如果你确实需要室内连续定位可以考虑组合导航方案将GNSS与IMU融合。在GNSS信号短暂丢失的时段内IMU可以推算出相对位移和姿态变化维持一段时间的定位连续性。这也是为什么我之前强调“GNSS模组质量评估指标”里一定要看“失锁后重捕获时间”和“多路径抑制能力”的原因。实测下来这块板卡的冷启动重捕获能力不错从室内走到窗边大约两三秒就能重新锁定卫星。4.2 卫星载噪比偏低从天线到馈线的逐级排查如果板卡输出的CN0值普遍偏低可以先做一个简单测试把天线移到开阔的窗台对比CN0值是否明显上升。如果变化不大再检查馈线接头是否松动尤其是U.FL插头很容易因为机箱内线束拉扯而松动。磁吸天线、贴片天线这类低成本天线的噪声系数较大不建议在高精度应用中用。有源天线的增益也是关键参数。高精度板卡一般推荐匹配增益在28dB到35dB之间的有源天线增益太高容易造成饱和太低信噪比吃亏。选择天线时还会看到“无源天线增益”和“有源放大器增益”两个值前者指天线本身接收面积和效率带来的增益后者是内置LNA放大器的增益。实际使用中重点是看组合后整体CN0表现。4.3 差分信号时延大导致RTK无法固定RTK定位的关键前提是差分改正数及时到达移动站。如果使用自建基准站加数传电台的方式需要重点检查电台的波特率配置和空中传输速率。一个常见问题是数传电台波特率设置过低导致RTCM数据排队时延飙到几秒移动站解算出来的定位结果自然不合理。网络RTK模式下时延的来源主要是4G网络和NTRIP服务器本身。发现时延偏大时先看手机卡的信号强度再看NTRIP挂载点的数据更新率。有的服务商提供1Hz的差分数据有的提供5Hz如果你在高速移动场景却接到1Hz的差分数据定位结果会有明显的滞后感。选择挂载点时尽量选距离本地最近的基准站减少网络路径。4.4 常见问题速查表现象可能原因排查与解决无数据输出插槽USB信号未接主控换插槽查看主板说明书确认USB通路模组发热异常天线无源但有源供电开启关闭天线供电或改用有源天线搜星正常但无法定位星历过期或初始位置不准确保持天线开阔等待星历下载完成RTK一直浮点解差分时延大、距离远、遮挡严重检查差分数据链路和基站距离定位漂移大多路径效应严重移动天线位置避免反射物启用多路径抑制串口数据乱码波特率配置不一致核对板卡默认波特率USB转串口驱动正常4.5 多传感器对比GNSS数据质量评估的一个思路最后聊一聊在自动驾驶或者机器人项目中如何判断GNSS板卡的数据质量而不是只看定位结果好不好。在融合camera、lidar、imu、gps四类传感器的系统里GNSS的主要价值是提供全局定位基准但它的质量会受到信号环境、动态、天线安装位置的显著影响因此需要有专属的质量评估指标。我一般会关注这几个维度一是定位状态固定解/浮点解/单点这是最直接的指标二是PDOP位置精度因子和HDOP水平精度因子反映了当前卫星几何分布的好坏精度因子越小越好PDOP大于4说明几何分布比较差三是卫星数和参与解算的卫星数参与解算的卫星数太少会导致几何精度不足四是CN0均值和一致性所有卫星CN0都比较高且差别不大说明信号环境好五是RTK状态机的收敛时间反映差分算法在给定环境下的稳定性。要做GNSS与lidar/imu的融合评估可以设计一个简单实验静止放在开阔场地记录100个定位点计算标准差和最大偏差然后沿已知路径跑一圈叠加相机轨迹和RTK轨迹看横向误差和时间同步误差。通过这种方式可以直观地判断整条传感器链路和GNSS板卡配合得怎么样。在我实际体会里Mini PCIe高精度GNSS板卡的设计初衷就是把“测量级”的定位能力降维到“嵌入式集成”的领域让做设备的人不用再跟繁琐的射频链路和主板定制打交道。它适合的是那些需要在真实世界中获取高可靠定位结果的场景——自动驾驶的路测、无人机的精准起降、机器人室外导航、高精地图采集车。如果你在项目中正好遇到类似需求在硬件选型阶段就从接口、天线、差分链路、数据质量评估这几个维度一起考虑后续的调试和第二轮迭代会轻松很多。
返回列表