# NavNewton **Repository Path**: canvas2019/nav-newton ## Basic Information - **Project Name**: NavNewton - **Description**: GNSS+INS松组合 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 8 - **Created**: 2021-05-31 - **Last Updated**: 2023-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NavNewton介绍 image-20210708212241883 ![image-20210708212742527](README.assets/image-20210708212742527.png) [TOC] ### **使用方法** GNSS+INS松组合处理软件NavNewton ##### CUI使用方法: 在cmd切换到NavNewton.exe所在路径后输入 .\NavNewton.exe .\test_data\RTK.PosT .\test_data\IMR.imr .\conf\ .\test_data\result ##### GUI使用方法: 安装NavNewton.msi,按照安装提示安装完成后,在桌面上双击打开NavNewton程序,点击**帮助**弹出说明文档 ##### 源代码编译要求 (GUI或CUI使用不需要,仅从source code编译时需要): 编译环境:VS 2017 x86 依赖库:Eigen 3.3.9 ### **模块功能介绍及性能评估** ##### 文件读取 1. POSMind的RTK结算结果PosT格式 2. Waypoint的imr惯导数据格式 3. INS-D得到的.imu文件转换为如上imr格式 模块1名称:gnss 读入POSMind的RTK解算结果 模块2名称:decode_imr 该模块实现了将Waypoint的imr惯导数据格式钟中的惯导观测值提取出来的功能 结果分析:与ReadWPG.exe解码结果一致 模块3名称:imr_converter 功能:.imu文件解码成.imr 输入:INS-D得到的.imu文件 输出:posMind能导入的.imr文件 结果对比:和另一位同学解码得到的结果相差无几 ##### INS 1. 解析法初始对准 2. 纯惯导推算 模块1:initial_alignment 功能:初始对准,采用的方法是解析法粗对准。 输入:初始对准时间段的比力和角速度值,分别用n行3列的Matrix传入 输出:初始对准后的姿态,用DCM描述 结果对比:和PosMind的对准方法相比,横滚俯仰角差1度左右,航向角差约5度,猜测原因是PosMind采用了精对准的方法。 模块2:pure_ins 功能:惯导机械编排更新载体速度、位置、姿态 输入:输入每一历元的比力和角速度 输出:机械编排得到的速度、位置、姿态 结果对比:和上学期惯导结果一致,已验证 ##### GNSS 1. 读入PosMIND解算结果 ##### LooseCoupled 1. 15维状态向量松组合 2. 前向滤波 模块名称:loose_coupled 功能:n系下15维状态向量GNSS/INS松组合结果 输入:PosMind的GNSS的RTK结果(位置速度及其方差) 自编程序惯导机械编排结果(位置速度姿态及其误差状态方差) 天线相位中心到INS中心的三轴杆臂改正值 输出:松组合结果 结果分析: 与PosMind软件LCI前向滤波结果求差对比分析,以一组实测观测数据为例: **(1)轨迹** ​ ![image-20210708210344537](README.assets/image-20210708210344537.png) > 轨迹图与实际轨迹吻合 **(2)位置偏差** ​ ![image-20210708210403563](README.assets/image-20210708210403563.png) 其中,水平位置偏差如下: ​ ![image-20210708210410586](README.assets/image-20210708210410586.png) 分析:1)位置推算结果较好,大部分水平位置偏差和垂直位置偏差在mm级 2)在质量不好的地方水平位置偏差可达亚米级,垂直偏差可达米级。结合PosMind轨迹图可以发现波动较大的地方是树林遮挡叫严重的地方,卫星定位结果质量较差。 **(3)速度偏差** ​ ![image-20210708210417995](README.assets/image-20210708210417995.png) 分析:1)速度推算结果较好,大部分水平速度偏差和垂直速度偏差在mm级 2)在质量不好的地方速度偏差可达厘米级。结合PosMind轨迹图可以发现波动较大的地方是树林遮挡较严重的地方,卫星定位结果质量较差。 (4)姿态偏差 ​ ![image-20210708210533146](README.assets/image-20210708210533146.png) 分析:1)姿态推算结果较好,大部分俯仰角和横滚角偏差在0.01°以内,航向角在1°以内。 2)航向角偏差在滤波收敛后存在1°左右的常偏,可能与IMU零偏建模策略和参数配置不同有关。 ### **文件格式要求** ##### GNSS输入、POSMind解算结果格式要求 GNSS(RTK)结果格式如下图: ![QQ图片20210708230850](README.assets/QQ图片20210708230850-1625757302934.png) Posmind松组合前向滤波结果如下图 ![QQ图片20210708230850](README.assets/QQ图片20210708230850.png) ##### 结果输出格式 松组合结果输出格式(NED坐标系下): | GPS周 | 周秒 | 纬度 | 经度 | 高程 | VN | VE | VD | roll | pitch | heading | | ----- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | ------- | | 整数 | s | deg | deg | m | m/s | m/s | m/s | deg | deg | deg | ### **软件界面设计** 使用C#,具体参见GUI帮助或软件使用说明.pdf ##### 主界面 ![image-20210708212742527](README.assets/image-20210708212742527.png) ##### 结果显示 ![QQ图片20210708221539](README.assets/QQ图片20210708221539.png) ##### 地图显示 ![image-20210708221610890](README.assets/image-20210708221610890.png) ##### 与POSMind解算文件残差对比 ![image-20210708222319299](README.assets/image-20210708222319299.png) ### **总体结构和功能模块划分** ![松组合模块](README.assets/松组合模块.png) #### 内部接口概设 命名规则: 1. 源文件.cpp,头文件.h,全小写,下划线分隔单词 2. 类、结构体,首字母大写,缩写大写(class LooseCoupled / class INS) 3. 类成员变量、结构体成员变量,下划线开头,下划线分隔单词,全小写,重点在前,修饰语在后(_var_sys) 4. 函数内变量,下划线分隔单词 5. 函数使用驼峰命名法(void timeAlign()) 6. 所有宏定义、全局变量,提交时在KHY处合并 config(模块可选,命名:gnss.config): 1. 注释用#(行头,行尾) 2. 变量名 = 值(数组拆开成多个变量) 3. 示例如下 > ########## SPP 定位参数 ########## > > elev_mask = 10 # 高度角截止角 单位:° > > sys_use = GPS # 使用的卫星系统 选项:"GPS", "BDS", "GPS+BDS" #### 任务分工 2021-06-01 | 人员 | 时间 | 任务 | | ---- | --------- | ------------------------------------------ | | KHY | 6.1-6.16 | 合并代码,确保兼容运行 | | | 6.11-6.16 | 生成dll,给界面使用(7) | | XZ | 6.1-6.5 | config读入模块(1) | | | 6.5-6.11 | SPP(9) | | | 6.11-6.16 | UI界面(8) | | GS | 6.1-6.5 | INS 星网宇达解码(imr=>程序结构体)(2-A) | | | 6.5-6.16 | 松组合(6-A) | | HC | 6.1-6.5 | INS 星网宇达解码(imr=>程序结构体)(2-B) | | | 6.5-6.16 | 松组合(6-B) | | LJN | 6.1-6.5 | INS-Demo解码(bin=>imr) (3-A) | | | 6.5-6.8 | INS初始对准(解析法)(4-B) | | | 6.8-6.16 | INS机械编排(5-A) | | XDZ | 6.1-6.5 | INS-Demo 解码(bin=>imr) (3-B) | | | 6.5-6.8 | INS初始对准(解析法)(4-A) | | | 6.8-6.16 | INS机械编排(5-B) | 注:同一任务A、B队并行开展,互不干扰,仅结果互相参考 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request