- 博客(393)
- 收藏
- 关注
原创 KF-GINS 和 OB-GINS 的 Earth类 和 Rotation 类
原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。
2025-01-27 10:00:00
719
原创 KF-GINS源码阅读
KF-GINS 是武大 i2Nav 实验室开源的一套松组合导航程序;可以读取 IMU 数据文件、GNSS 结果文件,进行松组合解算,计算位置、速度、姿态、陀螺仪零偏、加速度计零偏、陀螺仪比例、加速度计比力,共 21 维状态向量。代码量小,有详细的文档、注释和讲解,代码结构很好理解,有一些可以学习的工程技巧。用 cloc 对 src 目录进行统计,结果如下。可以看出代码量很小,只有1412行,注释很详细,足有804行。无需自己配置,作者把它们放到 ThirdParty 文件夹,并在 CMakeLists 文件
2025-01-27 09:00:00
979
原创 TGINS源码阅读
直接运行终端会输出很多很多中间数据,有些调试输出没删干净,先全局搜索 matprint 把解算代码中的都注释掉。写输出代码之前先试试在前面打个断点,确认程序能运行到那。代码风格比较 C 语言,用了一些 C++
2025-01-26 09:30:00
321
原创 GNSS-SDR源码阅读(一)软件介绍、编译调试、配置文件
GNSS-SDR(GlobalNavigationSatelliteSystems、SoftwareDefinedReceiver)是一个用 C++ 实现的 GNSS 软件接收机开源项目。有了 GNSS-SDR,用户可以通过创建一个图来构建 GNSS 软件接收器,图中的节点是信号处理块,线条代表它们之间的数据流。该软件为不同的合适射频前端提供接口,并实现从接收器一直到 PVT 解算的所有功能。
2025-01-26 08:30:00
288
原创 ORB-SLAM3源码阅读(三)LocalMapping 线程
先加入关键帧和地图点到当前激活地图,删除其余帧,并通过对当前帧的附近关键帧操作,利用视觉 BA 或视觉-惯性 BA 优化地图。对于关键帧中每个未匹配的 ORB 特征点,在另一个关键帧中搜索与其他不匹配点进行匹配,丢弃不满足对极约束的匹配。:采用 ORB-SLAM1 (单目)的初始化流程,按照关键帧速率 4 Hz 运行 2s 揷入关键帧 ,然后按比例缩放的地图,包括10个关键帧以及上百个地图点,然后通过 Visual-Only BA 进行优化。随着关键帧数量的增加,BA 的复杂度也会随之提高。
2025-01-25 13:00:00
606
原创 ORB-SLAM3源码阅读(五)ORB-SLAM 延伸
有了对数数据,就可以根据 RGB-D 数据,更新整个八叉树地图。假设在 RGB-D 图像中观测到某个像素带有深度 d,就说明在深度值对应的空间点上观测到了一个占据数据,并且从相机光心出发,到这个点的线段上都没有物体(否则会被遮挡)。学过地信的都知道这种地图编码方式比较高效,节省空间,当某个方块的子节点都相同,就无需展开。ORB-SLAM3 生成的是稀释点云地图,只能定位,无法直接用于导航,需要对稀疏点云稠密化构建稠密地图。对于占据和空白来说,选择用概论的形式表达,这样就可以动态建模地图中的障碍物信息。
2025-01-25 10:30:00
777
原创 ORB-SLAM3源码阅读(二)Tracking 线程
由于此时搜索出的角点过多,因此本文对检测出来的角点群利用非极大值抑制方法进行 FAST 角点的筛选,并在保留的 FAST 角点上计算方向,以此来实现特征点的旋转不变性,最后计算当前图像帧中角点的 BRIEF( binary robustindependent elementary features)描述子用于与上一帧中的角点的 BRIEF 描述子进行特征匹配。实际情况下,从不同的距离,不同的方向、角度,不同的光照条件下观察一个物体时,物体的大小,形状 ,明暗都会有所不同。
2025-01-24 10:15:00
1051
原创 ORB-SLAM3源码阅读(四)Loop&Merging 线程
Welding window 是由匹配的关键帧组合而成、重复的 3D 点被融合、更新共视图以及本质图的连接关系。当检测到闭环候选帧的时候,就需要对当前关键帧和对应的闭环候选帧之间计算其变换关系,即Sim3 求解。所有的被闭环处的关键帧观察到的地 图点会通过映射在一个小范围里,然后去搜索它的近邻匹配。,也 就能对当前关键帧进行位姿校正 (当然也要对关键帧对应的MapPoints 以及其共视的关键帧进行校正)。以及其共视帧,以及被这些关键帧观测的地图点。,并 更新关键帧位姿,以及在图中的边。
2025-01-24 08:15:00
831
原创 01-ORB-SLAM3源码阅读(一)程序简介、编译调试、基础知识点
ORB 指 Oriented FAST and rotated BRIEF,是一种结合 FAST 和 BRIEF,并引入旋转不变性的一种特征点和描述子;SLAM 指 Simultaneous Localization and Mapping,指的是同时进行实时定位和地图构建。ORB-SLAM3 是迄今为止,最完整的视觉惯性 SLAM 系统系统,它是第一个集成了单目相机、双目相机、RGB-D相机,以及单目相机结合 IMU、双目相机结合 IMU 的 SLAM 系统。并且在 ORB-SLAM2 的基础上,改进了相
2025-01-23 13:00:00
1062
原创 VINS-Mono源码阅读(五)VIO 初始化
需要初始化的变量如下,分别是滑窗,状态,和外参:Xxkxcbx0x1xnxcbλ0λ1λmpbkwvbkwqbkwbabgk∈0npcbqcb。
2025-01-23 08:30:00
1346
原创 VINS-Mono源码阅读(四)IMU预积分
加速度是由与载体固连的加速度计测量得到的(会跟随载体转动),每一时刻的加速度都是在当前的载体系下得到的,进行速度和位置的积分,前提是把这些加速度都统一到同一个坐标系下。如果我们假设参考坐标系下载体的初始速度和初始位置已知,利用载体运动过程中参考系下的加速度信息,就可以不断地进行积分运算,更新实时的速度和位置。及速度等状态,根据这种思路,如果知道上一帧图像采样时刻载体的位姿和速度,则可以根据两帧之间的 IMU 测量(角速度和比力)递推得到当前帧的位姿和速度。,利用 IMU 测量得到的比力和角速度信息进行。
2025-01-22 18:30:00
811
原创 VINS-Mono源码阅读(二)Feature_tracker 节点:视觉前端
setMask() 函数,先对跟踪到的特征点 forw_pts 按照跟踪次数降序排列(认为特征点被跟踪到的次数越多越好),然后遍历这个降序排列,对于遍历的每一个特征点,在 mask 中将该点周围半径为 MIN_DIST 的区域设置为 0,在后续的遍历过程中,不再选择该区域内的点。因此,本质矩阵的维度是3 x 3。转化为用优化问题,为防止局部最小,用图像金字塔提高光流追踪的稳定性,图像缩放了更容易追踪,最终还要把找到的特征点返回到实际图像上的位置,上一次金字塔最终的结果作为下一次金字塔最终的初值。
2025-01-22 09:00:00
1605
原创 VINS-Mono源码阅读(一)程序简介、编译调试、配置文件
与双目相机和 RGB-D 相机相比,单目相机具有结构简单、成本低和处理速度快的优点。然而,单目 VSLAM 存在尺度不确定性、无法对齐位姿和重力方向的自身缺点和快速运动导致的运动模糊的环境下容易跟踪丢失等不足。为弥补此问题,可将单目相机和 IMU 相结合的传感器融合,这种融合方案被称为单目视觉惯性里程计(Visual Inertial Odometry,VIO)或单目视觉惯性 SLAM(Visual-inertial SLAM,VINS)。
2025-01-21 14:13:17
1450
原创 SoftGNSS软件接收机源码阅读(一)程序简介、运行调试、执行流程
卫星信号由导航电文、测距码、载波三个层次组成,GNSS 原始的信号频率高达 1.5 Ghz,且信号过于微弱,
2025-01-21 14:12:45
1130
原创 基于因子图优化的GNSS定位算法原理
GNSS在诸如城市、施工现场、农田、密林等城市峡谷等遮挡环境下:且由于在此类环境下,这些测量值的时间相关性更加明显,使用传统的滤波手段进行处理仅考虑前一状态的值忽略了其他历史状态值,使得定位结果更加不精确。为充分挖掘历史信息的作用,引入因子图优化(FGO)对GNSS测量值进行融合解算,该方法将伪距、载波相位、多普勒观测量添加为因子节点,引入多普勒因子连接历元间变量节点,实现解算模型的因子图优化。相较于滤波,因子图的优势体现在:因子图技术的潜力,也在一个近期的Google在美国导航协会的ION GNSS+ 2
2025-01-18 15:45:00
145
原创 GraphGNSSLib README翻译
此仓库是开源软件包的实现,GraphGNSSLib 利用因子图优化(FGO)来执行GNSS定位和实时动态(RTK)定位.在这个软件包中,历史和当前时期的测量结果被结构化为因子图,然后通过非线性优化进行求解。在容器中位于 ~/graph1/shared_dir ,你可以下载代码到 ~/shared_dir ,并且在容器中编译(推荐给那些有兴趣更改源代码的人)。如果你不熟悉ROS,我们强烈推荐推荐你用我们的Docker容器来使用GraphGNSSLib,具体见下文。已经安装在你的电脑上。
2025-01-18 07:30:00
644
原创 03-GICI-LIB源码阅读(三)因子图优化模型
原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。
2025-01-17 08:30:00
88
原创 02-GICI-LIB源码阅读(二)主要的类和程序执行流程
和 是 cpp 中用于函数包装和绑定的工具,在 GICI中用于绑定数据回调函数。 是一个可调用对象,可以存储任何可调用对象,例如函数指针、成员函数指针或 lambda 表达式。您可以使用 来创建一个函数对象,以便稍后调用。例如:在上面的例子中,我们使用 来存储 函数,并在 函数中调用它。 用于将函数和其参数绑定到特定的对象。它返回一个可调用对象,可以将其传递给 或直接调用。例如:在上面的例子中,我们使用 将 函数绑定到 对象上,并将参数 传递给它。然后,我们将绑定后的函数存储到 中
2025-01-16 16:45:00
798
原创 01-GICI-LIB源码阅读(一)程序简介、编译调试、配置文件
作者的介绍:为了阐明 GNSS 的算法模型,加快在多源融合应用中针对 GNSS 的开发效率,我们开源了 GICI-LIB,并辅以详尽的文档和全面的数据集。GICI-LIB 以可扩展的设计理念,实现了GIC传感器之间多种形式的松紧组合。评估结果表明,GIC 系统能够在多种复杂环境下,提供分米到米级的高精度导航。GICI-LIB 全称GNSS/INS/CameraIntegrated Navigation Library,是上海交大最新开源的一套基于图优化的 GNSS+INS+Camera 集成导航定位库。
2025-01-16 11:30:00
181
原创 【论文翻译】GICI-LIB:A GNSS-INS-Camera Integrated Navigation Library
准确的导航定位信息对机器人和车辆至关重要。近年来,全球导航卫星系统(GNSS)、惯性导航全球导航卫星系统(GNSS)、惯性导航系统(INS)和相机(Camera)量测数据的融合(Integrated),由于在不同环境下的鲁棒性和高精度,受到了广泛关注。但在这些系统中,很难充分发挥 GNSS 的作用,因为 GNSS 可选择的误差模型、卫星星座、信号频率和增强服务类型太多了;不同的 GNSS 解算方式会带来不同的精度、鲁棒性、依赖性。
2025-01-15 19:59:42
593
原创 goGPS WiKi网站翻译
注意:目前只支持静止测站的解算,还不能动态解算。那是2007年,在米兰理工大学–科莫校区,最初有一套用来教学生GPS数据处理和 Kalman 滤波的程序。当时Mirko Reguzzoni 和 Eugenio Realini 觉得,基于MATLAB语言的新的GPS处理软件可能有发展空间。在一些学生(创始者)的帮助下,他们开始写一套利用 Kalman 滤波的完整软件。goGPS 的第一个版本可以追溯到2009年,当时代码在 GPL 下发布并上传到 SourceForge 平台。之后该软件开始在大学里被使用,并
2025-01-15 19:55:37
632
原创 PPPLib源码阅读
PPPLib 基于 RTKLib 以 C++ 为主要开发语言编写,支持后处理 PPP、PPK、INS/GNSS 松组合和紧组合 ,作者是我的老师陈超。
2025-01-15 19:54:50
265
原创 微分方程-姿态阵微分方程及求解-四元数微分方程及求解-等效旋转矢量微分方程及求解
C˙bi=Cbi(ωibb×)\dot{\boldsymbol{C}}_{b}^{i}=\boldsymbol{C}_{b}^{i}\left({\boldsymbol{\omega}_{i b}^{b}}\times\right)C˙bi=Cbi(ωibb×)描述的是姿态的变化和角速率 ωibb\boldsymbol{\omega}_{i b}^{b}ωibb 的关系,角速率正好可以由陀螺仪测量得到,三个轴装三个陀螺,就有了微分方程,再结合初值,可得到姿态变化阵。简记C˙bi=Cbi(ωib
2025-01-14 10:50:21
874
原创 PSINS工具箱学习(五)SINS-GNSS组合导航
原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。
2025-01-14 10:47:55
368
原创 PSINS工具箱学习(四)捷联惯导更新算法
原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。
2025-01-14 10:47:20
200
原创 03-PSINS工具箱学习(三)让AI解释PSINS中的各种卡尔曼滤波函数
原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-LearningPSINS 中的 Kalman 滤波代码都在百行以内,没调用什么函数,而且通用性很强,拿去让 AI 解释,效果挺好。
2024-12-22 13:00:00
1610
原创 02-PSINS工具箱学习(二)姿态的表示:姿态阵、四元数、欧拉角、等效旋转矢量的概念和转换
由于捷联惯导系统采用通过姿态矩阵计算建立的数学平台,在捷联惯导系统的姿态、速度和位置的更新算法中,姿态算法对整个系统的精度影响最大,它是算法研究和设计的核心。姿态求解目标:知道初始姿态参数,实时根据陀螺仪的测量,输出姿态参数:根据原点的位置和轴线得到指向,可以将惯导坐标系分为以下几类:也称 ECI,原点在地球质心,坐标轴不随地球自转(Z轴指向北极,X轴指向春分点)。惯性传感器输出以此为基准。尽管受到太阳引力场的作用,存在 6∗10−7g6*10^{-7}g6∗10−7g 的公转向心力;但在地球表面以地球做惯
2024-12-22 10:30:00
97
原创 01-PSINS工具箱学习(一)下载安装初始化、SINS-GPS组合导航仿真、习惯约定与常用变量符号、数据导入转换、绘图显示
PSINS(Precise Strapdown Inertial Navigation System 高精度捷联惯导系统算法)工具箱由西北工业大学自动化学院惯性技术教研室严恭敏老师开发和维护。工具箱分为Matlab和C++两部分。主要应用于捷联惯导系统的数据处理和算法验证开发,它包括惯性传感器数据分析惯组标定初始对准惯导AVP(姿态-速度-位置)更新解算、组合导航Kalman滤波等功能。C++部分采用VC6编写,可以用于嵌入式开发。如果你之前还没接触过PSINS工具箱,强烈建议先去看严老师的视频讲解。
2024-12-21 10:15:00
1502
原创 GAMP源码阅读:卫星位置钟差计算
原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。
2024-12-21 08:00:00
1071
原创 GAMP源码阅读:RINEX文件读取
原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。
2024-12-20 14:00:00
796
原创 GAMP源码阅读:PPP中的模型改正:对流层延迟、电离层延迟、天线相位、潮汐、地球自转效应、引力延迟
对流层一般指距离地面 50km 内的大气层,是大气层质量的主要部分。当导航信号穿过对流层时,由于传播介质密度的增加,信号传播路径和传播速度会发生改变,由此引起的 GNSS 观测值误差称为对流层延迟。对流层延迟一般可分为干延迟和湿延迟,对于载波相位和伪距完全相同,一般在米级大小,可通过模型改正和参数估计的方法来削弱其影响。修正模型如下:T=MdryTdry+MwetTwetT=M_{d r y} T_{d r y}+M_{w e t} T_{w e t}T=MdryTdry+MwetTwet式
2024-12-20 09:00:00
1122
原创 GAMP源码阅读(下)精密单点定位 PPP
以非差非组合双频 PPP 模型为例,假如某一时刻观测到 m\mathrm{m}m 颗卫星,则可建立 4 m4 \mathrm{~m}4 m 个观测方程,其误差方程为:V4m×1=H4m×n⋅X−ln×1\underset{4 m \times 1}{\mathbf{V}}=\underset{4 m \times n}{\mathbf{H}} \cdot \mathbf{X}-\underset{n \times 1}{\mathbf{l}}4m×1V=4m×nH⋅X−n×1l式中,V\mat
2024-12-19 11:45:00
766
原创 GAMP源码阅读(中)伪距单点定位 SPP
默认使用广播星历计算卫星位置、钟差,使用克罗布歇模型通过广播星历中的参数计算电离层延迟,使用 Saastamoinen 模型计算对流层延迟。调用 计算卫星位置、卫星钟差:调用 计算接收机位置:加权最小二乘,其中会调用 valsol 进行卡方检验和GDOP检验。存入方位角和俯仰角 ,赋值解算状态结构体 ssat。2、estpos()这个函数是 GAMP 新加的,原本 的内容都移到 中了;这个函数看着着实费劲,有段看半天没看明白,后来把代码复制给 AI,才知道那啥计算阶乘、组合数。先初始化待估参
2024-12-19 10:45:00
583
原创 GAMP源码阅读(上)主要类型、后处理流程
GAMP 全称 (GNSSAMPrecise positioning),在 RTKLIB 的基础上,将一些多余的函数、代码简洁化,精简出后处理 PPP 部分,并对算法进行改进增强。简化后代码比 RTKLIB 原版还要简单,对初学者非常友好,在我接触过的导航定位开源程序中算是最简单的。使用也很方便,软件包里提供了 VS 工程,和组织好的配置文件、数据文件;设置好 pthreads 库,简单改改文件路径就能算出结果。大部分沿用 RTKLIB,做了少量拓展大部分沿用 RTKLIB,做了少量拓展。
2024-12-18 08:15:00
705
原创 RTKLIB源码阅读(九)相对定位 RTK、PPK、RTD
存RTK选项,定位结果2、sol_t:结果结构体3、SOLQ_XXX:解的类型状态4、ambc_t:模糊度固定控制结构体5、ssat_t:卫星状态控制结构体6、prcopt_t:算法处理选项结构体7、obs_t:观测值信息结构体存一系列的字段是数组,字段表示存着的数目,字段表示目前内存空间最大能存的数目函数执行向中添加观测值数据的操作,先检验值,不够就函数中读取完数据后,会调用根据time, rcv, sat ,对的元素进行排序、去重,得到历元数,调用,进行星历数据的排
2024-12-17 12:45:00
88
原创 RTKLIB源码阅读(八)伪距单点定位 SPP
卫星GNSS电磁波信号在传播过程中需要穿过地球大气层,会产生一些大气延迟误差,包括电离层延迟误差和对流层延迟误差。电离层的范围从离地面约50公里开始一直伸展到约1000公里高度的地球高层大气空域。电离层的主要特性由电子密度、电子温度、碰撞频率、离子密度、离子温度和离子成分等空间分布的基本参数来表示。电离层的研究对象主要是电子密度随高度的分布。电子密度(或称电子浓度)是指单位体积的自由电子数,随高度的变化与各高度上大气成分、大气密度以及太阳辐射通量等因素有关。
2024-12-17 10:30:00
99
原创 RTKLIB源码阅读(六)观测值误差改正:电离层、对流层、天线相位中心、相位缠绕、DCB
文件头结束于。多组总电子含量,每组以,结束于。多组电子含量均方根误差,与总电子含量对应,开始于,结束于DCB数据块开始于,结束于,也称辅助数据块天线相位中心,即天线]接收信号的电气中心,其空间位置在出厂时往往不在天线的几何中心上。天线所辐射出的电磁波在离开天线一定的距离后,其等相位面会近似为一个球面,该球面的球心即为该天线的等效相位中心,即天线相位中心(Antenna Phase Center )GNSS观测量是相对于接收机天线的平均相位中心。
2024-12-16 16:35:39
119
原创 RTKLIB源码阅读(五)导航电文、星历数据读取、卫星位置钟差计算
GPS卫星信号由载波、伪码、导航电文(数据码)三个层次组成。数据码首先与伪码异或相加实现扩频,然后二者的组合码通过双向移位键控(BPSK)对载波进行调制。用户接收机首先对载波信号进行BPSK(调相调制)解调,使卫星信号的中心频率从L1下变频为0,之后再将载波解调后的卫星信号与接收机内部复制的C/A码Gi做自相关运算,剥离卫星信号中的C/A码,使信号频宽变回到只含数据码的基带,以得到 50bps 数据码,再按导航电文的格式最终将数据码编译成导航电文。每一个子帧的第一个字均为遥测字,在导航电文中每6s出现一次,
2024-12-16 16:35:02
1288
原创 RTKLIB源码阅读(四)观测数据读取:RINEX、RTCM、NMEA、接收机原始数据
卫星导航定位都是通过对卫星观测以获得卫星所需的观测量来实现的,卫星发射的信号由载波测距码导航电文三部分组成,接收机通过接收处理卫星信号生成定位所需的观测量。RINEX 是的缩写。采用文本文件ASCII码存储数据。数据记录格式与接收机的制造厂商和具体型号无关,这样可以方便数据的传递,使数据尽可能多被使用。观测数据文件O导航信息文件N气象数据文件Meteorological Data File),本文主要介绍OBS和NAV文件的读取。文件结构都以节、记录、字段和列为单位逐级组织。
2024-12-11 10:00:00
1787
基于C++和ROS的无人机编队仿真源码+部署教程(比赛项目).zip
2025-04-04
股票型基金规模与基金业绩的相关性分析系统设计与实现-万字论文
2025-04-03
python开发股票型基金规模与基金业绩的相关性分析预测系统源码+数据.zip
2025-04-03
基于python+pyqt5实现视频自动化下载、剪辑和上传系统源码+项目说明.zip
2025-04-03
基于Gdbts-DenseNet-Bert联合抽取特征的识别模型python源码+设计报告.zip
2025-03-31
基于STM32F10微控制器的物流搬运小车项目源码及全部资料(机器人大赛冠军作品).zip
2025-03-31
船舶工程中MATLAB代码用于设备布局优化及粒子群算法实现
2025-03-29
建模大赛-2024数学建模期中考题.pdf
2025-03-29
计算机毕业设计-水库巡检机器人视频采集与通信系统设计-基于ARM架构的硬件与Python软件实现
2025-03-28
移动机器人技术综述:涵盖导航、感知、应用及养老机器人研发难点
2025-03-28
硬件课程设计-基于Logisim的单周期CPU硬件设计(CPU硬件实现+推箱子游戏).zip
2025-03-27
基于Arduino硬件平台和python实现智能物流小车搬运项目源码+运行说明+报告文档(可做毕设、比赛).zip
2025-03-25
使用GIS的landscan人口密度数据测算城市多中心程度的步骤详细文档.zip
2025-03-17
机器人先进视觉赛-基于深度学习yolov8的3D识别项目源码含gui界面(最新发布).zip
2025-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人