1. 从零开始:为什么你需要掌握SINS/GNSS组合导航仿真?
如果你正在接触惯性导航、组合导航,或者你的项目里涉及到无人机、自动驾驶车辆的定位算法,那你大概率听说过SINS(捷联惯性导航系统)和GNSS(全球卫星导航系统)这两个词。单独用惯导,短时间内精度高,但误差会随着时间累积,漂得没边;单独用卫星导航,虽然长期稳定,但容易受遮挡、干扰,更新频率也跟不上高速动态场景。所以,把两者结合起来,用GNSS的长时稳定去校正SINS的累积漂移,用SINS的高频输出去弥补GNSS的更新间隙,就成了业界标准的解决方案。
但理论归理论,真要把这套算法落地,从公式推导到代码实现,中间隔着十万八千里。自己从头写一个卡尔曼滤波器?光是调参就能让你掉光头发。这时候,一个成熟、可靠的工具箱就显得无比珍贵。PSINS(Precise Strapdown Inertial Navigation System)工具箱,就是国内导航领域大神严恭敏老师开源的一套MATLAB工具箱,它把惯性导航、组合导航里那些复杂的算法、坐标转换、误差模型都封装好了,让我们能专注于算法原理和应用本身,而不是纠结于底层实现的细节。
我刚开始做组合导航时,也试过自己撸代码,结果不是滤波器发散,就是误差校正不对,调试过程痛苦不堪。后来接触到PSINS,感觉像是打开了新世界的大门。原来轨迹生成、误差注入、纯惯导解算、组合滤波,都可以用几行清晰的函数调用完成。这份指南,就是把我这几年用PSINS做SINS/GNSS组合仿真踩过的坑、总结的经验,用最直白的方式分享给你。无论你是在校学生做课题,还是工程师做算法预研,都能跟着一步步做出来,看到实实在在的仿真结果。
2. 仿真环境搭建与PSINS工具箱初探
工欲善其事,必先利其器。第一步,咱们得把“厨房”收拾好。
### 2.1 获取与安装PSINS工具箱
PSINS工具箱是完全开源的,你可以在GitHub或者一些学术论坛上找到它的发布页面。下载下来通常是一个压缩包,解压后你会看到一堆.m文件和文件夹。别被文件数量吓到,我们前期核心用到的就那几个。
安装极其简单,根本不需要什么“安装程序”。你只需要做两件事:
- 将解压后的PSINS主文件夹(比如叫
PSINS_Toolbox)放到你电脑上一个好找的路径。 - 打开MATLAB,在“主页”选项卡里点击“设置路径”,然后“添加并包含子文件夹”,选中刚才那个
PSINS_Toolbox文件夹。这一步的目的是让MATLAB在任何位置都能调用工具箱里的函数。
搞定!你可以打开MATLAB命令行,输入which glvs试试,如果它能返回这个函数的路径,说明环境配置成功了。glvs是PSINS里一个初始化全局常量的函数,比如地球半径、重力常数、地球自转角速度等,几乎每个脚本都会用到它。
### 2.2 理解PSINS的核心文件结构
简单扫一眼文件夹结构,能帮你更快上手:
demos/:这是我们的主战场。里面存放了各种示例脚本,文件名以test_开头。我们今天要用的轨迹生成、纯惯导仿真、组合导航仿真脚本都在这里。functions/:工具箱所有核心函数都在这里,按类别分好了子文件夹。我们不需要直接修改它们,但有时为了理解原理,可以打开看看。data/:存放一些示例数据。- 根目录下还有一些初始化脚本和文档。
作为新手,我强烈建议你先别一头扎进functions里看源码,那会像读天书。咱们就跟着demos里的例子,先跑通,看到现象,再反过来理解原理,这样学习曲线会平滑很多。
3. 第一步:生成一条“虚拟”的载体运动轨迹
仿真仿真,我们得先有仿真的对象。在真实世界,这个对象是搭载了IMU和GNSS接收机的车辆、飞机。在电脑里,我们就需要先用数学方法“造”出一条逼真的运动轨迹。PSINS提供了非常灵活的工具来干这件事。
### 3.1 解剖轨迹生成脚本:test_trj.m
打开demos文件夹下的test_trj.m文件。别看代码行数不少,核心逻辑非常清晰。我带你逐段拆解:


248

被折叠的 条评论
为什么被折叠?



