第二章 硬件平台选型与评估:主控芯片、IMU、GNSS模块的选型方法论与性能评估

做导航产品,硬件选型是第一步,也是最容易踩坑的一步。我见过太多团队,算法调得漂漂亮亮,结果一上硬件就崩——不是算力不够,就是IMU噪声太大,再不然就是GNSS模块死活收不到星。说白了,选型没做好,后面全是白干。

这一章,我就把主控芯片、IMU、GNSS模块这三块核心硬件的选型方法论,掰开了讲清楚。嗯,都是我在量产项目中实打实摔出来的经验。

2.1 主控芯片(MCU/SoC)选型:算力、外设与成本的三方博弈

主控芯片是整个导航系统的大脑。选它的时候,我习惯先问自己三个问题:

  • 算法需要多少算力?——纯MCU跑卡尔曼滤波够不够?还是要上带FPU的Cortex-M4/M7?或者干脆上ARM Cortex-A系列跑Linux?
  • 外设接口够不够?——IMU要SPI/I2C,GNSS要UART,存储要SDIO,显示要LCD接口。别等画完PCB才发现少一组SPI。
  • 成本天花板在哪?——消费级产品BOM成本压到几块钱?工业级能接受几十块?车规级上百块也正常。

我个人习惯的选型流程:

  1. 先估算算法复杂度。比如一个15状态的EKF,在100Hz更新率下,Cortex-M4F大概占用30%-50%的算力。如果还要跑路径规划、地图匹配,那M4可能就吃力了。
  2. 列出所有外设需求。IMU用SPI(速率高),GNSS用UART(简单),如果有外部Flash,再加个QSPI。数一数,至少需要2路SPI、3路UART、1路I2C。
  3. 看封装和供货。别选那种只有BGA封装的芯片,小公司手工焊接根本搞不定。我建议优先选LQFP封装,手工贴片和返修都方便。

避坑指南:我曾经选了一颗性能很强的SoC,结果发现它的ADC只有12位,而我的IMU需要16位同步采样。最后不得不在外面加一颗外部ADC,成本翻倍,PCB面积也大了。所以,选型时一定要把数据手册里所有外设的精度、速率、通道数都过一遍。

这里给一个常见的选型对照表,供你参考:

应用场景 推荐芯片系列 算力 典型成本(批量) 注意事项
低成本消费级(玩具、手环) STM32F0/G0、GD32F1 48MHz Cortex-M0 $0.3 - $0.8 无FPU,只能跑简单互补滤波
中端工业级(AGV、无人机) STM32F4/H7、NXP i.MX RT 200-600MHz Cortex-M4/M7 $2 - $8 带FPU,可跑EKF,注意散热
高端车规/机器人 TI TDA4、NVIDIA Jetson、NXP S32K 多核A72 + DSP + GPU $15 - $50+ 需要Linux/RTOS,功耗高

2.2 IMU选型:噪声、零偏与温漂,一个都不能少

IMU是导航系统的「眼睛」。选不好,你的卡尔曼滤波器调得再好也没用——因为输入数据本身就是错的。

我评估IMU时,主要看三个核心指标:

  • 角度随机游走(ARW):单位是 °/√h。这个值越小,陀螺仪的噪声越低。消费级IMU一般在0.3-1.0,工业级能做到0.1以下,光纤陀螺可以到0.001。你想想看,如果你的ARW是1.0,那积分10分钟,角度误差就能漂到十几度,这还怎么导航?
  • 零偏稳定性(Bias Instability):单位是 °/h。它决定了IMU在静止时,陀螺仪输出值的波动范围。我遇到过一款标称10°/h的IMU,实际测试时发现温漂特别大,开机前10分钟和稳定后的零偏差了3倍。后来我学乖了,选型时一定要求供应商提供全温范围内的零偏曲线。
  • 加速度计量程与噪声:一般选±2g到±16g。噪声密度用 μg/√Hz 表示。对于导航应用,加速度计的噪声最好低于100 μg/√Hz,否则在静止状态下,你的倾角计算会抖得厉害。

警告:千万别只看数据手册上的典型值!我曾经被一款IMU的「典型零偏10°/h」坑过——那是在25℃恒温下测的。实际产品在-20℃到60℃环境下,零偏直接飙到50°/h。所以,我建议你一定要做全温测试,或者直接选那些标明了「全温范围零偏」的型号。

这里分享一个我常用的IMU选型清单:

型号 类型 ARW (°/√h) 零偏稳定性 (°/h) 加速度计噪声 适用场景
MPU6050 消费级 0.5 20 400 μg/√Hz 入门学习、低成本玩具
ICM-20948 消费级 0.3 10 200 μg/√Hz 手机、可穿戴设备
ADIS16470 工业级 0.1 2 80 μg/√Hz AGV、无人机、机器人
HG4930 战术级 0.01 0.1 10 μg/√Hz 自动驾驶、航空

我的经验:对于量产产品,我建议至少选工业级IMU。消费级的MPU6050虽然便宜(2块钱),但它的温漂和噪声会让你在算法上花掉10倍的时间去补偿。说白了,IMU省下的钱,最后都会加倍花在工程师的头发上。

2.3 GNSS模块选型:定位精度、更新率与多星座支持

GNSS模块是导航系统的「坐标基准」。选型时,我主要关注这几点:

  • 定位精度:单点定位一般2-5米,差分GPS(DGPS)可以到0.5-1米,RTK能到厘米级。你想想看,你的应用需要什么精度?如果是车道级导航,那必须上RTK;如果是公园里的扫地机器人,单点定位加IMU融合就够了。
  • 更新率:消费级模块一般是1Hz-10Hz,工业级可以到20Hz。对于高速运动(比如无人机、汽车),我建议至少10Hz以上,否则IMU融合时的时间延迟会很大。
  • 多星座支持:GPS + GLONASS + BeiDou + Galileo。支持的星座越多,在城市峡谷、树林等遮挡环境下的可用性越好。我测试过,在深圳的CBD,只开GPS能搜到8颗星,开GPS+北斗能搜到18颗,定位稳定性明显提升。

另外,还有一个容易被忽略的点:GNSS模块的固件和协议。有些模块只支持NMEA协议,有些支持更底层的原始观测值(比如UBX协议)。如果你要做深度的IMU+GNSS融合(比如紧耦合),那必须选能输出原始伪距、载波相位数据的模块。

选型建议:

  • 消费级:Ublox NEO-M8N、ATGM336H。成本低(20-50元),支持GPS+北斗,更新率10Hz,精度2.5米。适合手环、共享单车、低成本无人机。
  • 工业级:Ublox ZED-F9P、Skytraq S1216。支持RTK,精度厘米级,更新率20Hz,成本200-500元。适合AGV、测绘、精准农业。
  • 车规级:Ublox F9K、ST Teseo LIV3F。带IMU融合输出,支持功能安全,成本500-1000元。适合ADAS、自动驾驶。

注意:GNSS模块的天线选型同样重要。我见过一个项目,模块选的是ZED-F9P,结果配了个2块钱的陶瓷天线,RTK死活固定不了。后来换成有源螺旋天线,立马就固定了。天线增益、噪声系数、有源/无源,这些参数一定要和模块匹配。

2.4 性能评估方法:别信数据手册,自己测

数据手册上的参数,都是在理想条件下测的。真正到了你的产品里,电源噪声、PCB布局、温度变化,都会让性能打折扣。所以,我建议你一定要自己做评估测试。

这里给一套我常用的评估流程:

  1. IMU静态测试:把IMU固定在水平台上,上电后记录1小时数据。计算Allan方差,看ARW和零偏稳定性是否达标。我习惯用Python写个脚本,自动出图。
  2. IMU动态测试:把IMU放在转台上,给一个已知角速度(比如100°/s),看输出是否准确。如果没有转台,用手快速翻转180度,看积分后的角度误差。
  3. GNSS静态测试:在开阔天空下,固定位置记录1小时。看定位点的标准差,以及PDOP值。好的模块,静态标准差应该在1米以内。
  4. GNSS动态测试:开车或走路,记录轨迹。看是否有跳点、丢星、重收敛时间。我遇到过一款模块,每次经过高架桥下都会丢星,重收敛要30秒,这显然不行。
  5. 联合测试:把IMU和GNSS接在一起,跑一个简单的松耦合EKF。看融合后的位置、速度、姿态是否平滑。如果融合结果比单独GNSS还差,那说明IMU或者GNSS的某个参数设置有问题。

一个小技巧:评估IMU时,我习惯把原始数据直接打印出来,用Excel画个散点图。如果陀螺仪的零偏在静止时是一条直线,那说明噪声控制得好;如果是一条波浪线,那说明有低频噪声,可能是温漂或者电源纹波引起的。嗯,这个方法虽然土,但很管用。

最后,我想说一句:硬件选型没有完美的方案,只有最适合你产品的方案。算力、精度、成本、功耗、尺寸,这些指标永远是互相制约的。我的建议是,先明确你的产品定位和性能底线,然后在这个框架内,选最成熟、供货最稳定的方案。别为了省5毛钱,选一个没听过的小厂芯片——量产时断供,那才叫欲哭无泪。

下一章,我们会聊IMU的标定与误差补偿。到时候我会分享一些我在产线上用过的标定方法,保证实用。