ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

IMU、INS、GNSS与组合导航:从原理到工程实践全解析

IMU、INS、GNSS与组合导航:从原理到工程实践全解析 先说个挺常见的场面群里有人发了个无人机炸机视频评论区一堆人讨论“是不是惯导出了问题”“GNSS信号肯定被干扰了”“IMU标定没做好吧”这三句话看着都在说导航实际指的根本不是一回事。我在导航行业混了快十年发现很多人把组合导航、惯导、GNSS、INS、IMU这几个词混着用工程师之间沟通时经常因为概念不清来回扯皮最后排查问题都找错方向。这篇内容就专门把这几兄弟掰开揉碎讲清楚顺带结合这些年做过的实际项目把标定、选型、定位精度这些工程问题也一并聊透。适合谁看搞自动驾驶感知融合的、做无人机飞控的、做机器人定位导航的、做测绘终端集成的还有大学实验室刚接触导航方向的学生。不搞学术推演只讲工程上真正有用的理解和判断。1. 先用一句话把所有关系摆清楚IMU是硬件传感器惯导INS是把IMU数据拿来解算位置姿态的算法系统GNSS是另一套独立的卫星定位系统组合导航是把这两套东西放在一个滤波框架里融合输出。从设备层级看IMU是最底层的传感元件惯导是建立在IMU之上的解算单元组合导航是站在惯导和GNSS两者肩膀上的最终方案。很多车载导航盒子、无人机飞控里标榜的“高精度定位模块”本质就是一套组合导航系统。1.1 最容易混淆的层级关系先给一张总览表后面每个名词再逐步展开名词全称本质输出什么数据频率IMUInertial Measurement Unit 惯性测量单元硬件传感器角速度、加速度原始数据100Hz~1000HzINSInertial Navigation System 惯性导航系统软件硬件组合体姿态、速度、位置100Hz~500HzGNSSGlobal Navigation Satellite System 全球导航卫星系统卫星定位系统位置、速度、时间1Hz~20Hz组合导航Integrated Navigation / GNSS/INS多源融合系统姿态、速度、位置、航向100Hz~500Hz从这张表能看出来INS和GNSS都能输出位置速度但组合导航输出的东西更多、频率更高、可用性更好。这在工程上直接决定了你能不能拿去做闭环控制——飞控、自动驾驶控制律需要稳定高频的姿态和位置输入IMU和INS正好补齐GNSS低频和易失锁的短板。1.2 卫星导航和惯性导航就像两种性格完全不同的人GNSS像那种喜欢定期汇报工作的人每隔一秒报一次位置报得挺准但一进隧道、高楼区就完全失联而且它报的位置有延迟。INS像闷头闷脑做积分的人每毫秒都在拼命累加计算短时间内非常精准顺滑但时间一长它会因为累积误差慢慢跑偏越偏越离谱。工程上把这两种优势互补地合在一起就得到了一套“短期不飘、长期不偏”的连续定位系统这就是组合导航的核心动机。这个类比不是拍脑袋说的它对应两种定位机制的本质。GNSS靠的是电磁波传递时间和载波相位观测对象是卫星和接收机之间的几何距离因此它的误差不随时间积累但信号容易被遮挡、反射和干扰。INS靠牛顿力学对加速度和角速度积分递推位置和姿态传感器本身有零偏和噪声积分过程会把这些误差一步步放大因此它的误差随时间无界增长。两者各自的“病”恰好被对方的“长处”治了所以工程上没人只用一种做高可靠定位。2. IMU最底层的硬件传感器到底在测什么IMU是整套系统里唯一直接接触物理世界的器件。它一般包含三轴加速度计和三轴陀螺仪有些还带磁力计和气压计但磁力计和气压计严格来说不属于IMU的范畴只能算附加传感器。加速度计测的是物体在三个正交轴方向上的比力陀螺仪测的是绕这三个轴的旋转角速度。所谓比力通俗讲就是非引力引起的加速度它和我们高中物理里说的“加速度”概念有细微差别但在多数场景下可以近似理解成加速度。2.1 陀螺仪最核心的指标零偏稳定性陀螺仪的质量直接决定了整个惯导系统能撑多久不飘。消费级MEMS陀螺仪的零偏稳定性一般在每小时几十度战术级能做到每小时零点几度导航级光纤陀螺能到每小时千分之几度。这个数字的物理含义是即使物体完全不转陀螺仪也可能以为自己在转然后姿态积分会按这个误差不断累积。所以选IMU之前先问自己一个问题系统需要GNSS断开之后撑多久还能保持可用的位置精度。如果只要撑2秒消费级IMU完全够用如果要在隧道里开两分钟车起码得战术级以上如果给船舶做惯性导航没有导航级陀螺根本不可能维持长时间精度。这些经验值来自工程实践不是教科书上写的但教科书一定会教你推导这个误差传播公式。姿态误差会线性增长速度误差会积分增长位置误差会二次积分增长所以陀螺仪精度每提升一个数量级惯导可用时间就能延长好几个数量级。2.2 加速度计在振动环境下的表现加速度计的原理大多基于检测质量块的位移或电容变化MEMS加速度计在静态环境下很容易做到毫伽级分辨率但一放到有振动的平台上情况就完全变了。无人机螺旋桨转动、车辆发动机怠速、机器人关节运动这些振动产生的加速度幅值往往远大于运动本身的加速度而且频率和传感器采样率接近时还可能发生混叠。这也是为什么IMU的安装一定要尽量靠近被载体的质心并做减震处理。减震垫的刚度和阻尼需要根据实际振动谱来选不是随便贴个海绵就行。做车载组合导航时IMU硬件最好用螺丝刚性固定在车身上同时用一层薄的硅胶垫隔离高频振动安装完成后要做一次现场振动测试确保在发动机工作状态下IMU输出的噪声不会超过器件手册标称值太多。3. INS从IMU到完整导航解算系统的关键跨越INS不是简单的“把IMU数据做个积分”它是一整套导航解算软件系统。它接收IMU的原始角速度和加速度经过误差补偿、姿态更新、速度更新、位置更新四个环节最终输出高频率的姿态、速度和位置。现代INS基本都是捷联式惯导也就是IMU固定安装在载体上“捷联”两个字的意思就是这个它通过数字化的姿态矩阵替代了物理上的稳定平台。3.1 姿态更新为什么绕不开四元数姿态解算常用的数学表示有欧拉角、方向余弦矩阵和四元数工程主流用的是四元数。原因在于欧拉角存在万向节锁问题方向余弦矩阵计算量偏大且冗余度高而四元数没有奇异性、计算量适中、能平滑插值非常契合嵌入式实时系统的需求。一个四元数包含四个分量表示一个旋转轴和绕该轴的旋转角度本质上用四维单位向量描述三维空间中的姿态。但四元数最大的“毛病”是反直觉调试时你没法直观地看出“现在机头朝哪”。所以我一般在日志里记录四元数在监控界面显示欧拉角两个一起用。有一次现场排查问题发现解算出来的yaw角在车辆直行时缓慢漂移而roll和pitch都很稳定第一反应是陀螺仪z轴零偏很大回办公室做了静置数据采集后用Allan方差分析果然z轴零偏稳定性比标称值差了十倍换了一颗IMU之后问题消失。这种排查思路对新手很有价值先看静态漂移再看动态误差最后怀疑解算算法。3.2 INS误差传播的物理直觉很多新手搞不懂为什么“IMU积分会飘”到底是怎么飘的。用一个简单例子说明假设加速度计有一个1mg的常值零偏误差相当于它在完全不运动时认为自己在以0.001g加速。你把这个误差积分1秒产生0.01m/s的速度误差再积分10秒速度误差0.1m/s位置误差0.5米积到100秒位置误差已经到50米。然后陀螺仪的误差会通过姿态错误影响加速度在导航坐标系下的投影方向使得误差传播更快更无序。这个特性决定了INS单独使用时只适合短时间高动态场景长时间高精度场景必须有外部信息来修正。GNSS就是最常见的修正源。理解这个误差发散机制之后你在看组合导航系统设计时就会明白卡尔曼滤波里每做一个状态更新本质上就是在和“误差随时间增长”这件事对抗。4. GNSS原理、精度层级与局限性GNSS是全球导航卫星系统的统称包括GPS、北斗、GLONASS、Galileo等。接收机通过测距码和载波相位计算它到至少四颗卫星的伪距再联合卫星星历解算出自身的位置。这里“伪距”的意思很形象它不完全是真实的几何距离里面包含了卫星钟差、接收机钟差、大气延迟、多径等误差源。定位算法的本质是从一堆受到污染的距离观测值里反推空间坐标。4.1 精度不是一个固定值而是一个区间GNSS的定位精度取决于很多因素。单点定位SPP使用C/A码测距民用场景通常3到10米。差分GNSSDGNSS利用基准站的改正数能把误差消掉一部分通常到1米左右。RTK实时动态测量利用载波相位并解算整周模糊度可以把精度推到厘米级。PPP精密单点定位用精密星历和钟差不需要基准站就能做到厘米到分米级但收敛时间较长。很多人以为“用了RTK就一定厘米级”实际工程里RTK精度受基线长度、卫星颗数、多径环境、流动站状态影响特别大。城市里高楼遮挡严重时RTK固定解可能完全得不到回退到浮点解或者差分模式精度直接从厘米掉到米级甚至更差。这在自动驾驶项目中经常遇到所以绝不能把“RTK开了”当成“精度有保障”一定要在系统里实时输出定位模式和解状态让下游知道当前定位质量的等级。4.2 单天线GNSS的致命短板没有航向很多人不知道GNSS定位只能给位置和速度单天线接收机无法直接给出载体朝向。虽然GNSS速度方向在一定条件下可以近似载体运动方向但车辆静止或低速时速度方向噪声极大而且侧滑、横风等情况会让运动方向和车头方向完全不一致。所以对航向有严格要求的场景车道级导航、无人机定向、车辆横向控制必须依赖IMU的陀螺仪积分建立航向或者用双天线GNSS定位出基线方向来确定航向。这个短板也直接解释了为什么惯导系统在高精定位里不可替代GNSS负责把位置误差拉回来INS负责在GNSS不给力时维持姿态和高频输出。两者缺一个整套系统在复杂场景下的可靠性都会大打折扣。这正好呼应了组合导航在设计时的“功能互补”初衷。5. 组合导航把两个世界的优点真正融为一体到了组合导航这一层核心工作不再是“选个好IMU”或者“用个高精度GNSS板卡”而是怎么把两者的观测数据融合得聪明、稳定、可诊断。目前工程界的主流实现是基于扩展卡尔曼滤波EKF以IMU做运动学递推以GNSS的位置、速度作为量测更新不断修正IMU的误差状态包括姿态误差、速度误差、位置误差、陀螺零偏和加速度计零偏。5.1 松耦合和紧耦合差距在“能不能抢救信号”松耦合Loosely Coupled是指GNSS先独立解算出位置、速度再把这些结果作为滤波器的量测值。这种方案实现简单很多集成模块出厂就能用但GNSS信号质量差时接收机自身的解算结果可能已经乱掉滤波器接收到错误量测却没有感知。紧耦合Tightly Coupled直接用GNSS的伪距、载波相位等原始观测值作为量测即便卫星少于四颗只要还有一两颗卫星可见依然可以带约束地更新滤波器状态对城市峡谷这种环境有效得多。深耦合Deeply Coupled把GNSS接收机内部跟踪环路和INS放在同一个滤波框架下实现干扰环境下的信号重构一般用于军事和高端工业场景民用项目里比较少见。工程上选择松耦合还是紧耦合看场景需求。如果系统工作环境是开阔道路松耦合完全够用成本低、调试快。如果涉及城市峡谷、林荫道、矿区这类遮挡严重场景紧耦合的收益非常明显。现在市面上一些高性能组合导航模块比如NovAtel PwrPak7、在国内一些自动驾驶项目里用的华测、导远等方案实际都支持紧耦合但需要你正确设置上层配置和标定流程才能发挥出来。5.2 卡尔曼滤波不是魔法只是在做“按精度加权”很多初学者看卡尔曼滤波觉得是一大堆矩阵公式其实直觉特别朴素系统有一个基于物理模型的预测值又有若干个基于传感器的测量值两边都带着不确定度滤波做的事情就是根据不确定度的大小决定“更信谁多一点”然后输出一个折中的最优估计。GNSS精度高时权重给GNSS多GNSS不可用时滤波器切回纯INS预测模式靠陀螺和加速度计维持短时精度。做工程这些年我认为最容易出问题的地方不是滤波公式推导而是噪声协方差矩阵的设置。把过程噪声设得太小滤波器会过度信任IMU递推GNSS量测明明有效但修正得很慢把量测噪声设得太小滤波器会紧贴GNSS输出GNSS跳变会被当成真值传下去定位轨迹就出现毛刺。正确做法是用Allan方差分析IMU噪声特性用实车静态数据统计GNSS定位噪声然后把这些实测值作为协方差初值再在调试中微调。5.3 组合导航系统初始化那点事一套组合导航系统上电之后不是马上就能输出准确结果的。初始对准是第一步包括水平对准和航向对准。水平对准靠加速度计感知重力方向几秒钟就能完成。航向对准分两种动基座对准靠GNSS速度或磁力计辅助静基座对准没有GNSS运动信息时只能靠陀螺感知地球自转这要求陀螺精度非常高普通MEMS根本做不到所以消费级设备静置时航向其实是“随缘保持”的。还有一个容易被忽略的坑初始位置。系统上电时如果直接给一个错误的初始经纬高卡尔曼滤波需要很久才能收敛回来甚至可能发散。有些便宜模块出厂时位置默认在零纬零经用户拿到手没检查就开跑前几十秒的位置全是错的。正确做法是在启动日志里看IMU初始化完成标志、GNSS定位模式和解算状态全部就绪之后再允许系统进入正常工作模式。6. 热词里的“脏数据”INS镜像、ins期刊是什么鬼写这篇文章时我顺手翻了一下近期搜索热词发现“ins镜像版”“ins期刊”“ins国内镜像”这类词流量很高。有朋友可能在查组合导航资料时也搜到过这些词这里统一做个澄清它们和导航用的INS没有任何关系。前者所谓的“ins”是指某海外社交平台的简称出现在“镜像”语境里多半是一些灰色访问方式的暗语后者是某学术期刊的缩写。这类词汇在部分平台上可能关联到不稳定甚至违规的服务搜索时要多留个心眼建议只在正规应用商店下载软件在合法渠道获取学术资源。工程领域搜索资料时也会遇到“惯导”和“INS”这两个词同时出现的情况。中文文献里“惯导”可以指惯性导航设备本身也可以指惯性导航系统技术具体含义看上下文。英文文献里INS和GNSS/INS组合导航系统有时也被混用因为纯惯导系统很难独立工作论文里说INS很多实际默认带了GNSS辅助。读文献时如果看到系统结构图花两分钟看数据流确定GNSS数据和IMU数据是在哪一层融合的就不会被表述绕晕。7. 实战经验对照表定位问题先看这七个方向把组合导航系统常见故障和对应排查方向整理在一张表里工程排障时对照着看会节省大量时间现象优先怀疑方向次要怀疑方向位置缓慢漂移陀螺仪零偏过大加速度计零偏、杆臂未补偿位置突然跳变GNSS多径、周跳滤波器量测噪声设置过小航向发散陀螺仪z轴零偏初始航向错误、磁干扰静止时位置像走路振动耦合减震不良、GNSS多径GNSS失效后快速发散IMU等级不足过程噪声设置过大长时间无GNSS后恢复慢滤波器协方差被过度收缩需要重新初始化高动态下轨迹滞后时间同步不准GNSS更新率太低这张表不是原理图是工程经验的浓缩。每一条背后都有真实项目踩过的坑。比如“时间同步不准”这条很多组合导航系统标称能做到微秒级同步实际中如果IMU和GNSS板卡用的是不同时钟域又没有做硬件PPS对齐高动态场景下位置和姿态会出现可感知的延迟差车辆高速转弯时轨迹直接扭曲。7.1 IMU标定别省也别依赖厂商参数IMU出厂时厂商都会给一套标定参数包括零偏、尺度因子、安装失准角等。但这些参数只能代表出厂那一刻的状态器件老化、温度变化、运输冲击都会让它们漂移。所以做项目时第一步是先做一次现场标定。最基础的是六面法标定加速度计把IMU的每个轴分别朝上朝下静置60秒通过最小二乘拟合得到零偏和尺度因子。陀螺仪的零偏在静置状态下就能采集但想要好结果需要数据够长。实际操作时让设备静置至少30分钟用Allan方差画出噪声曲线从曲线里读出角度随机游走和零偏不稳定性两个关键指标。Allan方差的转储点数最好能支撑最长相关时间到1000秒以上否则读出来的长周期噪声指标会明显偏乐观。温度补偿这块消费级MEMS如果不做温控零偏随温度变化可能比随机游走还大条件允许时应在工作温度范围内分段采集零偏做线性或多项式拟合补偿。7.2 外参标定Lidar/相机和IMU之间的姿态平移关系热词里“lidar imu标定”“相机imu联合标定”“imu雷达外参标定”频繁出现说明做感知融合的同事对这个很头疼。外参标定要估计的是传感器间的相对位姿通常用6自由度参数表示包括3轴旋转和3轴平移。旋转外参误差会直接导致点云或图像投影时出现系统性偏移平移外参误差的影响在近距离目标上更明显。常用的外参标定方法分目标板法和自然场景法。目标板法适合产线和实验室精度高、重复性好典型实现是采集多个带有标定板的位姿解算Lidar或相机坐标系到IMU坐标系的变换。自然场景法适合外场比如用点云配准和运动约束联合优化对标定数据的运动激励要求很高三个旋转轴最好都能充分旋转同时要有足够的平移激励否则约束不够解出来的旋转外参不确定度会很大。最容易被忽略的是时间同步。外参标定解决的是空间对齐时间同步解决的是时间对齐。摄像头帧率30Hz、Lidar帧率10Hz、IMU数据200Hz三者之间要统一时基否则空间外参标得再准实际融合时也全是错位。硬件上常用PPS同步脉冲和SDC时间戳来对齐软件上则对Lidar和相机做时间戳插值。这两件事做成一个体系“空间时间”都对上了传感器融合才算真正开始。7.3 里程计和IMU融合没有卫星时的备用方案有些场景GNSS信号完全没有比如室内、隧道、矿井。这些地方就需要里程计和IMU融合。这里的里程计可以是轮速计、视觉里程计或Lidar里程计。融合思路和GNSS/INS组合非常像IMU做高频递推里程计提供低频的速度或位移约束用卡尔曼滤波或因子图优化把两者对齐。轮式里程计在没有滑移的场景下很可靠但遇到转向打滑就会引入误差。视觉和Lidar里程计容易受环境特征影响比如走廊白墙、雨雾天气都会退化。做这类融合时要额外处理一个特殊问题里程计数据和IMU数据之间往往存在安装杆臂不做杆臂补偿时转弯动作会带来虚假的速度观测。这个和GNSS天线杆臂补偿是同一个数学问题很多现成库都有接口使用前一定要填入准确的杆臂值。8. 从这套系统里往外看选型和架构的几个心得项目落地时方案选型比算法调参更影响最终效果。写几点个人心得供参考先定“最恶劣场景下需要撑多久”再反推IMU精度要求。GNSS在项目工作区域遮挡率超过30%时主要精力要花在紧耦合融合算法和IMU选型上。增益来自于系统架构把传感器数据格式、时间基准、坐标系规范统一好后面融合和调试效率能翻倍。不要盲目追求“最高性能”消费级MEMS已经能支撑很多L2级辅助驾驶和无人机场景战术级光纤陀螺只留给对自主性要求极高的场合。做任何组合导航系统日志里必须同时记录定位模式、解状态、卫星数、协方差对角线缺了这些数据现场出了问题根本没法复盘。这也是我自己反复对团队强调的调试组合导航一半时间在调算法另一半时间在调日志可观测性。组合导航这个领域最大的门槛不是数学而是对传感器物理特性和误差机制的直觉。有了这套直觉再去看各种论文、开源工程库就会通透很多。现在工业界已经有很成熟的封装方案像一些高精度组合导航模块可以直接输出融合好的位姿但理解它们内部在做什么以及如何通过配置、标定去适配自己的场景恰恰是做出“能用”和“好用”之间差距的关键。希望这篇内容能在概念上帮大家理清脉络也把一些工程实践中的坑提前指出来。后面有时间再单独拆一拆卡尔曼滤波的完整推导或者写写Allan方差分析的实际操作流程。
返回列表