Giter Club home page Giter Club logo

wangyu78 / navigation-learning Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lizhengxiao99/navigation-learning

0.0 0.0 0.0 412.89 MB

我的导航定位源码阅读笔记,内容包括:文档翻译、算法原理、代码解读、流程图。学识甚浅,内容尚少,很多文件都是空的,但随着我学习的深入会持续更新,一点点完善。计划有:RTKLIB、GAMP、PSINS、PPPLib、goGPS、GICI、Ginan、VINS、ORB-SLAM3、GNSS-SDR、KF-GINS、OB-GINS、TGINS。可以随意转载,希望对大家有帮助。不建议直接下载全部内容,Markdown 和 PDF 可以在线看,想要的文件可以点开单独下载。

navigation-learning's Introduction

cover

[TOC]

这个仓库会长期更新,做为我学习的记录,有人用得上,能给我带来一些成就感,激励着自己坚持学下去,就挺好。有些程序会详细写(比如 RTKLIB);另外一些可能不会写的面面俱到(比如TGINS),就只画个流程图、列举重点的函数。列的开源代码很多,但其实目前只有 RTKLIB、GAMP、PSINS、GICI、KF-GINS、OB-GINS 内容稍微多一点:

  • RTKLIB:学的人多而且我用的也多,会写的很详细,仔细修改。
  • GAMP:详细写。
  • KF-GINS:已经写的很详细了,就一千五百行代码,学的很熟了。
  • OB-GINS:也会写的很详细。
  • VINSORB-SLAM:已经有很多高质量的教程,我就不继续更新了。
  • PPPLib:这是我老师写的程序,之前整理过一个函数调用流程图,但以后大概率不继续看了。
  • TGINS:也是我老师写的程序,最近一直在看,老师让我参照着写代码;用的人很少,笔记估计没别人会看,不会写太详细,就梳理一下函数调用关系、程序执行流程。
  • GICI-LIb:之后有空就会更新。
  • GNSS-SDR:打算学完 GNSS 接收机原理之后好好看看。

不建议直接下载,内容太多可能用不着,Markdown 文件和 PDF 论文可以在线看,想要的文件也可以单独下载

1697853752(1)

RTKLIB

RTKLIB 是全球导航卫星系统 GNSS 开源定位解算程序包,由日本东京海洋大学的高须知二(Tomoji Takasu)开发,由一个核心程序库和多个命令行程序界面程序组成;代码规范、功能完善、可拓展性好,许多 GNSS 导航定位程序开源程序都是基于 RTKLIB 二次开发衍生而来,适合作为 GNSS 入门学习的代码。

GAMP:基于RTKLIB的后处理PPP

GAMP 全称 (GNSS Analysis software for Multi-constellation and multi-frequency Precise positioning),在 RTKLIB 的基础上,将一些些多余的函数、代码简洁化,精简出后处理 PPP 部分,并对算法进行改进增强。对初学者非常友好,在我接触过的导航定位开源程序中算是最简单的,是用纯 C 语言编写,由于做了简化,代码比 RTKLIB 原版还要简单;使用也非常简单,软件包里直接有 VS 工程,和组织好的配置、数据文件,简单改改路径就能算出结果。

PSINS:MATLAB-C++ 捷联惯导工具箱

PSINS(Precise Strapdown Inertial Navigation System 高精度捷联惯导系统算法)工具箱由西北工业大学自动化学院惯性技术教研室严恭敏老师开发和维护。工具箱分为Matlab和C++两部分。主要应用于捷联惯导系统的数据处理和算法验证开发,它包括惯性传感器数据分析惯组标定初始对准惯导AVP(姿态-速度-位置)更新解算、组合导航Kalman滤波等功能。C++部分采用VC6编写,可以用于嵌入式开发。

PPPLib:

goGPS:MATLAB-GNSS数据处理

GICI-LIB:GNSS+INS+Camera 图优化融合定位

GICI-LIB 全称 GNSS/INS/Camera Integrated Navigation Library,是上海交大最新开源的一套基于图优化的 GNSS+INS+Camera 集成导航定位库。基于 RTKLIB 处理 I/O 流、编解码;基于 OKVIS 因子图优化类型封装;基于 SVO 做特征提取。以 GNSS 为主,再加入 INS、Camera 做组合,支持相当多的数据格式、定位模式,包含很多 GNSS 因子、惯导因子、视觉因子及运动约束。以处理实时数据为主,后处理也采用模拟实时数据处理的方式进行。

Ginan:

ORB-SLAM 3:

ORB 指 Oriented FAST and rotated BRIEF,是一种结合 FAST 和 BRIEF,并引入旋转不变性的一种特征点和描述子;SLAM 指 Simultaneous Localization and Mapping,指的是同时进行实时定位和地图构建。

ORB-SLAM3 是迄今为止,最完整的视觉惯性 SLAM 系统系统,它是第一个集成了单目相机、双目相机、RGB-D相机,以及单目相机结合 IMU、双目相机结合 IMU 的 SLAM 系统。并且在 ORB-SLAM2 的基础上,改进了相机模型,使其不再局限于传统的小孔成像模型,而是可以扩展到鱼眼模型。在与 IMU 的结合上,它根据运动模型在流形上进行 IMU 的预积分的方式,然后采用非线性优化的**,将 IMU 的预积分结果和视觉 SLAM 的重投影模型一同进行图优化,使得预积分残差以及重投影误差共同达到最小,以此来完成视觉信息和惯导系统的紧耦合。并且它采用了更为快速的初始化方法,以及丢失跟踪后利用惯导系统快速重定位方法。此外,它还采用地图集的方式,实现了对大场景的定位建图。这也是如今众多开源方案中,功能最强大、最精准的方法。系统框图如下:

image-20230815102741960

VINS:

与双目相机和 RGB-D 相机相比,单目相机具有结构简单、成本低和处理速度快的优点。然而,单目 VSLAM 存在尺度不确定性、无法对齐位姿和重力方向的自身缺点和快速运动导致的运动模糊的环境下容易跟踪丢失等不足。为弥补此问题,可将单目相机和 IMU 相结合的传感器融合,这种融合方案被称为单目视觉惯性里程计(Visual Inertial Odometry,VIO)或单目视觉惯性 SLAM(Visual-inertial SLAM,VINS)。

  • IMU 也可以弥补视觉 SLAM 在短时间、快速运动上的不足,另外由于 IMU 不依赖外界环境信息,对环境变化不敏感,也可以在少纹理、明暗变化较大或者光线较弱场景内提供短期的定位方案以及位姿估计方案。

  • 较之惯性信息,视觉里程计可以提供丰富的外界信息,在低速平稳的运动中位姿估计稳定,而且视觉里程计在长时间运行后的漂移较小,并且可以通过回环检测修正自身位置以减小累积误差。

香港科技大学沈劭劼团队开发的 VINS 系统,用了一种紧耦合的非线性优化方法。该团队在 2017 年发布的 VINS-Mono 通过在四元数上进行 IMU 的预积分,并且采用滑动窗口法融合 IMU 信息和相机观测到的特征数据,实现了数据的紧耦合。并且采用四自由度的图优化方法实现了回环检测模块,来得到全局约束。在 2019 年,该团队又发布了 VINS-Fusion,在 VINS-Mono 的基础上又加入了双目、双目+IMU 等更多的传感器类型,以及支持了 VINS 和 GPS 的融合。它支持在线标定相机及 IMU 参数及鱼眼相机模型,并且支持保存当前地图和加载过往地图。在与 IMU 的结合上,它采用了四元数积分方案,与视觉信息进行紧耦合,具有很强的鲁棒性和定位精度。

GNSS-SDR:GNSS 软件接收机

GNSS-SDR(GNSS: Global Navigation Satellite Systems、SDR: Software Defined Receiver),在 GitHub 上搜索 “GNSS” 排第一的仓库,收藏量也高达 1.3k。与上面列举的 RTKLIB、GAMP 等 GNSS 数据处理软件不同,GNSS-SDR 直接对信号进行处理,是一个用 C++ 实现的 GNSS 软件接收机开源项目。有了 GNSS-SDR,用户可以通过创建一个图来构建 GNSS 软件接收器,图中的节点是信号处理块,线条代表它们之间的数据流。该软件为不同的合适射频前端提供接口,并实现从接收器一直到 PVT 解算的所有功能。它的设计允许任何形式的定制,包括信号源、信号处理算法、与其他系统的互操作性、输出格式的互换,并为所有中间信号、参数和变量提供接口。

软件旨在促进新信号处理技术的发展,提供一种简便的方法来衡量这些技术对接收机整体性能的影响。通过对每个软件模块进行系统功能验证,以及使用真实和合成信号对整个接收机进行实验验证,对所有流程进行测试。

目前的技术仍无法以卫星发射频率(约 1.5 GHz)对信号进行数字处理,因此我们仍需要一个射频前端,将信号降频到较低频率,在此过程中进行一些滤波和放大,并以一定的速率进行采样,将量化的数字原始采样流传输到计算平台(通过 USB、以太网等)。

软件接收机可在普通的 PC 中运行,并通过 USB 和以太网总线为各种市售或定制的射频前端提供接口,使处理算法适应不同的采样频率、中间频率和采样分辨率。它还可以处理存储在文件中的原始数据样本。软件对可用的卫星信号进行信号采集和跟踪,对导航信息进行解码,并计算定位算法所需的观测值,最终实现完整导航解决方案。处理输出可存储在 RINEX 文件中,或通过 TCP/IP 服务器以 RTCM 3.2 消息形式实时传输。导航结果以 KML 和 GeoJSON 格式存储。

navigation-learning's People

Contributors

lizhengxiao99 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.