| 项目 | 简介 |
|---|---|
| RTKLIB | 由一个核心程序库和多个命令行程序、界面程序组成;代码规范、功能完善、可拓展性好,许多 GNSS 导航定位程序开源程序都是基于 RTKLIB 二次开发衍生而来,适合作为 GNSS 入门学习的代码;GNSS 所需的基本功能都有,支持的数据格式很多,既可以实时解算也可以后处理,既可以接自己的 GNSS 模块也可以连 IGS 的数据流,既可以解算自己采集的数据也可以算 IGS 测站的数据,既可以 RTK 也可以 PPP。 |
| RTKLIB-Demo5 | 美国学者 rtklibexplorer 在 RTKLIB 基础上,针对低成本接收机进行优化,在这三年的谷歌分米级手机定位比赛中都排在前几名;因为 RTKLIB 很久不更新了,而且这个版本效果不错,所以有很多人自己用这个版本;作者写了不少博客记录他做的工作,发在他的个人网站上: |
| learning_rtklib | |
| rtklib-py | Python 版 RTKLIB,移植了 SPP 和 PPK,由 rtklibexplorer 编写。 |
| MatRTKLIB | |
| CSSRLib | |
| rtklib_ros_bridge | 提供了 ROS 框架支持的 RTKLIB, ROS 节点,支持 ROS 下实现定位解算。 |
| rtkrcv_ros | |
| FiPPP | 基于 GPSTK 的单频至五频 PPP。 |
| GAMP | GAMP 全称 (GNSS Analysis software for Multi-constellation and multi-frequency Precise positioning),在 RTKLIB 的基础上,将一些些多余的函数、代码简洁化,精简出后处理双频 PPP 部分,并对算法进行改进增强。对初学者非常友好,在我接触过的导航定位开源程序中算是最简单的,是用纯 C 语言编写,由于做了简化,代码比 RTKLIB 原版还要简单;使用也非常简单,软件包里直接有 VS 工程,和组织好的配置、数据文件,简单改改路径就能算出结果。 |
| GAMPII-GOOD | |
| Ginan | |
| goGPS | |
| goGPS_Java | |
| BNC | 全称 BKG Ntrip Cilent,主要是数据流处理,也支持实时 PPP 解算,最早基于 Qt4 编写,后迁移到 Qt5。 |
| GFZRNX | 由德国地学中心 (GFZ)开发,实现了版本转换、文件合并等 Rinex处理功能。 |
| GNSSLogger | |
| georinex | |
| GAMIT/GLOBK | |
| GraphGNSSLib | 图优化 GNSS,港理工,基于 RTKLIB,基于 ROS1,支持图优化 SPP 和 RTK,三篇参考论文,港理工同课题组出的 GLIO 程序在此基础上开发 。 |
| NavCodeMonitor | |
| Net_Diff | |
| laika | |
| CSRS-PPP | |
| POSGO | 图优化 GNSS,武大李政博士开发,投稿到 GPS Solution,目前只支持 SPP、RTD。 |
| Pride-PPPAR | 武大耿江辉课题组开发的后处理 PPP,投稿到 GPS Solution,持续更新,模糊度固定可达到毫米级定位精度,可以用于算 RTK 基准站坐标,地震学等地学研究。 |
| PPPwizard | |
| GPSTk | GPSTk 改名为 GNSSTk,并且分为 gnsstk、gnsstk-apps 两个仓库。 |
| gnsstk | |
| gnsstk-apps | 观测数据质量分析 |
| G-NUT/Anubis | 观测数据质量分析 |
| Teqc | 观测数据质量分析 |
| RNXQCE | RINEX 观测数据质量分析,作者给的介绍所是 TEQC 很久没更新,所以开发了 RNXQCE。 |
| Bernese | 伯尔尼大学天文研究所(AIUB)开发的 GNSS 数据处理软件,主要是欧洲定轨中心(CODE)在用。 |
| gLAB | 加泰罗尼亚理工大学天文学和地球数学研究小组(gAGE)根据欧洲空间局(ESA)合同开发的。 |
| Look4Sat | |
| RobustGNSS | 基于 GTSAM 的图优化 GNSS。 |
| PPP-BayesTree | 基于 GTSAM、GPSTK 的图优化 GNSS。 |
| ntrip | 使用 NTRIP2.0 协议的简单 ntrip caster/客户端/服务器示例程序。 |
| rtcm | TypeScript 编写的 RTCM 解码器/编码器,适用于 RTCM 3 的所有报文类型。 |
| cors | 武大苏景岚开发,连续运行参考站 (CORS) 程序,提供网络 RTK 差分服务。支持:多频多系统网络RTK解算:基线解算、模糊度闭合检验、虚拟参考站技术、基准站观测数据时间同步技术、支持连接大规模基准站、基于Delaunay三角形基准站组网、基准站大气延迟误差计算、基准站/虚拟站完好性监测、支持虚拟参考站数据播发能力和网络RTK差分定位服务。 |
| GDDS | |
| FAST | |
| QGOPDD | 数据下载,南师大本科生颜瀚文编写,基于 Qt 编写,支持使用 ftp 客户端从武汉大学 IGS 数据中心下载 GNSS 观测数据。特点是提供了测站选择的界面。 |
| gnss-downloader | |
| groops | |
| georb | |
| madocalib | |
| OREKIT | 卫星定轨 |
| rt-clk-service | |
| polaris | |
| gnss-tec | Python 编写,基于 GNSS 伪距、载波,重建电离层中的斜向总电子含量。 |
| utm | LLH 转 UTM。 |
| PW-from-GPS | |
| GNSS-Multipath-Analysis-Software | |
| gnss-multipath-detector | |
| GNSS-Shadowing | |
| gnssIR-python | |
| GARNO | |
| GPSPACE | |
| GNSSDataQC | |
| gnssr-synth | |
| gnssIR-matlab-v3 | |
| gnssrefl | Python 编写的 GNSS 干涉反射测量(GNSS-IR)软件包,文档写的挺详细,主要是用信噪比来计算。 |
| gnssSNR | gnssrefl 作者的另一套程序,从 RINEX 文件中提取信噪比、方位角、高度角,基于 Fortran 编写。 |
| gnss2tws-green | |
| mphw | |
| hgpt_model | |
| GNSSR_MERRByS | |
| PyGPSClient | |
| STM32Primer2-GNSS-Tracker | |
| STM32-GNSS | |
| GNSSTimeServer | |
| GNSS_Clock | |
| AgOpenGPS | |
| nmea-msgs | |
| LilyGo-LoRa-Series | |
| HASlib | |
| HASPPP | |
| OSNMA | |
| galileo-osnma | |
| GNSSAMS | |
| geodetic_utils | |
| ppp-tools | |
| gpstest | |
| iSniff-GPS | |
| hypatia | |
| gps-measurement-tools | |
| FE-GUT | |
| gnss-RX | |
| Pypredict | |
| novatel-gps-driver | |
| GNSSAMS | |
| GNSS-Radar | |
| geodesy_modeling | |
| gnss-odometry | |
| Caster_Project | |
| rviz_satellite | |
| gnatss | |
| gnssr_lowcost | |
| satellite-position-calculation-mapping | |
| SatellitePosition | |
| GNSSTool | |
| pynex | |
| pygnssutils | |
| flipperzero-gps | |
| ROS-GPS | |
| rtk-rs | |
| ge-gnss-visibility | |
| OpenRTK | |
| GNSS_RTK | |
| GPSToolbox 投稿 | |
| barbeau-awesome-gnss 整理 | |
| hdkarimi-awesome-gnss 整理 | |
| mcraymer 整理 | |
| Awesome-Geospatial 整理 | |
| GISResourcce 整理 |
👆👆👆 回到开头 👆👆👆
| 项目 | 介绍 |
|---|---|
| GNSS-SDR | 基于GNURadio的软件接收机,在Github上搜“GNSS”排第一的项目,C++编写,使用了Boost库,二十多万行,支持十几个频点、支持CUDA并行计算、支持实时运行、支持采集数据后处理、支持HackRF、USRP等软件接收机设备,有配套商用的FPGA相关器IP核(需要购买),引入 RTKLIB 进行定位解算。 |
| gnss-sdr-monitor | 用Qt写的GNSS-SDR监控界面,独立于GNSS-SDR运行,配置好GNSS-SDR运行设备的IP和端口号,可以实时查看捕获和跟踪的状态。 |
| meta-gnss-sdr | 用Qt写的GNSS-SDR监控界面,独立于GNSS-SDR运行,配置好GNSS-SDR运行设备的IP和端口号,可以实时查看捕获和跟踪的状态。 |
| gnss_sdr_gui | Qt写的软件接收机配置界面程序,用于生成配置文件,在图形界面上就可以配置信号源、信号调节器、捕获、跟踪、解码器、VT 块,但是程序七年没更新了,不知道生成还的配置文件还能不能用。 |
| GNSS_SDR_HACKRF | HackRF 做射频前端的 GNSS-SDR 配置文件,说是没有运行成功,捕获不到 GPS L1-C/A 码信号(可能是因为没加外部时钟,官方用 HackRF 实验成功了,在 YouTube 上有视频)。 |
| gnss-sdr-1pps | 在 GNSS-SDR 基础上通过分析在 L1 波段发射的每颗GPS卫星的信号到达方向和额外的1-PPS输出来提供欺骗检测能力,以及通过检测多天线检测到的强相关信号来提供干扰检测和消除能力;使用 Ettus Research B210 双输入 SDR 平台、XTRX Osmocom 信号源和文件信号源进行了测试。 |
| SoftGNSS | |
| SoftGNSS-python | Python 版 SoftGNSS。 |
| PocketSDR | |
| GNSS-SDRLIB | |
| nut2nt | |
| Beagle_SDR_GPS | |
| KiwiSDR | |
| FlyDog-SDR-GPS | |
| FlyCat-SDR-GPS | |
| Full_Stack_GPS_Receiver | |
| BDS-3-B1C-B2a-SDR-receiver | |
| FGI-GSRx | |
| gypsum | |
| sydr | |
| NavLab-DPE-SDR | 斯坦福大学四年前开源,包括CUDARecv(直接位置估计的开源并行 GPS 接收机)、PyGNSS(顺序 GPS 接收机,采用标量跟踪(传统两步法)和 DPE(一步法)定位算法)。 |
| multi-channel-gnss | |
| GPUAcceleratedTracking | 利用 CUDA 加速多天线全球导航 GNSS 软件接收机,在英伟达 1050Ti 上测试,Tracking.jl: Accelerating multi-antenna GNSS receivers with CUDA。 |
| GNSS-GPS-SDR | 基于 C语言和 MATLAB 编写的一些小程序,用于 GPS 信号的接收、回放,支持 HackRF、RTL-SDR。 |
| SDR-GPS-SPOOF | |
| gps | Python 和 C 语言编写的 GPS-L1-C/A 码软件接收机,相关器算法用 C 语言实现,文档挺详细,有一些 JupyterNotebook 文件。 |
| SnapperGPS | |
| snapshot-gnss-algorithms | |
| gnss-sdr-1pps | |
| SatDump | |
| gps-sdr-simulink | 【论文】基于 MATLAB-Simulink 的 GPS-L1-C/A 码软件接收机。 |
| gps-sdr-sim | JAVA写的界面程序,设置好坐标、时间,直接生成模拟的数字中频信号文件。 |
| gps-sdr-sim-assistant | |
| beidou-sdr-sim | |
| galileo-sdr-sim | |
| gps-qzss-sdr-sim | |
| multi-sdr-gps-sim | |
| pluto-gps-sim | |
| SignalSim | |
| Microsat-gps-sim | |
| GPS_GAL_SSS | |
| greta-oto | |
| BD3_FPGA | |
| GNSS-matlab | |
| oresat-gps-software/hardware | 包括开源PCB和用Python编写软件接收机程序,PCB上带有 SkyTraq Orion-B16 GNSS 模块和 MAX2771 射频前端。 |
| MAX2769FT2232H | |
| SDR-GB-SAR | |
| gps-rf-frontend-sim | |
| GNSS-VHDL | |
| GNSS-Metadata-Standard | |
| gnss-baseband | |
| GPSMAXIM2769b- | |
| Analog-GPS-data-receiver | |
| GNSS_Firehose | |
| GNSS-DSP-tools | |
| hard_sydr | |
| B1C-Signals-Simulation | |
| CU-SDR-Collection | |
| ESP32-SDR-GPS | |
| STM32F4-SDR-GPS | |
| Fast-GNSS-ReceiverMATLAB | |
| gnss-sdr-rs | |
| sdr-beamforming | |
| gr-gnMAX2769 | |
| gps-sdr | |
| GPSL1-DPEmodule | |
| esp2822_NMEA_sim | |
| BDS_SDR |
👆👆👆 回到开头 👆👆👆
👆👆👆 回到开头 👆👆👆
👆👆👆 回到开头 👆👆👆
👆👆👆 回到开头 👆👆👆
👆👆👆 回到开头 👆👆👆
👆👆👆 回到开头 👆👆👆
👆👆👆 回到开头 👆👆👆
👆👆👆 回到开头 👆👆👆
👆👆👆 回到开头 👆👆👆
| 项目 | 介绍 |
|---|---|
| Eigen | Eigen 是 C++ 的一个开源线性代数库,主要是进行矩阵运算,对导航算法相当关键,要知道导航算法基本都是矩阵计算。除了基本的矩阵计算之外,支持四元数、旋转矩阵,C++ 写的导航定位的开源代码中基本都是用 Eigen。使用 Eigen 有个麻烦的地方就在于难以调试,经常报错了,你找不到问题在哪,尤其是一口气写了一大段。有的错误写出来的时候编译器就会提示你错了,有的编译的时候就报错并且告诉你哪一行出错了,这两种都还比较友好;麻烦的是的是有的编译的时候报错不告诉你哪一行错,有的编译能过,运行到那一行才出错。所以如果你对 Eigen 不是很熟,建议写两行就编译一下,写几句就单步调试一下,要不然写多了不好调试。 |
| OpenBLAS | 也是一个线性代数库,其中 BLAS 全称 Basic Linear Algebra Subprograms 基础线性代数程序集,可以实现高性能计算,它优化了多种处理器架构下的性能,可以多线程并行计算;有些后处理 GNSS 算法不用卡尔曼滤波,而直接用最小二乘,矩阵维数相当大,用 OpenBLAS 来实现矩阵运算。 |
| Gflags | Gflags 是一个由 Google 开发并用于 C++ 的命令行参数管理库,它为C++开发者提供了一种高效、简洁的方式来处理命令行参数,从而简化了程序的配置和使用过程。提供一种声明式的方式来定义、解析和检查命令行标志。这些命令行标志(或称为“参数”)允许程序员在程序执行时通过命令行参数传递配置信息,从而控制程序的行为,例如设置日志级别、指定配置文件位置等。通过 gflags,用户可以在运行程序时方便地临时修改输入参数,如果没有指定参数,则使用默认参数。例如,一个可执行程序可以通过命令行参数来指定其连接的IP地址和端口号,或者使用默认设置。 |
| Glog | Glog,即 Google Logging,是一个由 Google 开发的、基于程序级记录日志信息的C++库。这个库的设计是为了在应用程序中实现高性能、灵活和可定制的日志记录。采用了高效的缓冲机制和异步写入日志的方式,使得日志记录操作不会阻塞主程序的执行;提供了丰富的配置选项,允许开发者通过命令行参数或配置文件来定制日志输出的行为,包括指定要记录的日志级别、日志文件的路径、是否同时输出到标准错误流等;Glog 支持多种日志级别,包括 INFO、WARNING、ERROR和FATAL;此外,Glog还具有一些其他的功能,如条件中止程序(通过丰富的条件判定宏来预设程序终止条件)、异常信号处理(自定义异常处理过程)以及系统级日志记录等。 |
| easyloggingpp | 也是一个日志库,比 Glog 轻量,只有头文件,也是四种日志级别,简单使用,体验和 Glog 差不多。 |
| Ceres-Solver | Ceres Solver是一个 Google 开源的C++库,用于解决具有边界约束的非线性最小二乘问题和一般无约束优化问题,是图优化程序使用最多的库,Ceres Solver的依赖项包括 CMake、Eigen、glog和gflags,这些都是必要的。还有一些可选的依赖项,如SuiteSparse、BLAS and LAPACK 以及 CUDA。 |
| g2o | 也有部分图优化程序使用,但不如 Ceres 多。General Graphic Optimization,即通用的图优化算法库,提供了一种建模和求解图优化问题的框架,使得用户可以方便地定义自己的优化问题并使用不同的数值优化方法进行求解;使用g2o求解优化问题时,需要先定义节点(顶点)和边,包括初始化函数、更新函数、误差计算函数、输入输出函数等。然后在主程序内部,实例化g2o求解器,选择迭代求解方式,实例化所使用的节点与边来逐步建立图模型,设置迭代次数并开始求解。 |
| gtsam | GTSAM(Georgia Tech Smoothing and Mapping library)是一个使用BSD许可的C++库,主要用于机器人技术和计算机视觉应用中的传感器融合。它实现了用于SLAM(同时定位和地图构建)、VO(视觉里程计)和SFM(运动结构)等任务的关键算法。广泛应用场景包括机器人定位、结构化环境建模(如3D重建)、多目标跟踪以及传感器网络同步等。无论是学术研究者还是工业界开发者,GTSAM都能提供强大而灵活的工具,帮助他们在机器人学和计算机视觉等领域实现更精准的估计和优化。 |
| Yaml-Cpp | YAML,即 YAML Ain't Markup Language,是一种轻量级的数据序列化格式,被广泛应用于各种场景,如配置文件、数据交换、Web 应用程序等。相比于其他格式,如XML和JSON,YAML的语法更为简洁明了,易于阅读和编写。它使用缩进的方式组织数据,支持多种数据类型,包括纯量数据、序列数据和映射数据,并可以使用嵌套的方式表示数据结构,支持多层级的嵌套。此外,YAML还支持Unicode编码,并可以在多种编程语言中实现,如Python、Java、Ruby、PHP等。yaml-cpp库的功能包括但不限于:提供了将C++对象转换为YAML文本的功能,生成的YAML文本可以保存到文件或者作为网络传输中的数据。支持YAML 1.2规范的语法,包括基本类型、映射、序列、流等,同时还支持YAML的标记(Tag)扩展,可以根据需要自定义并解析标记。 |
| OpenCV | OpenCV,全称 Open Source Computer Vision Library,涵盖了数字图像和视频处理的大部分内容。它提供了图像和视频的读取、写入、显示、变换、滤波等基本操作,还支持特征提取、目标检测、人脸识别、物体跟踪、相机标定、三维重建等高级功能。此外,OpenCV还集成了各种机器学习算法,如支持向量机、随机森林等,可以用于图像分类、目标检测等任务。 |
| PCL | PCL(Point Cloud Library)实现了大量点云相关的通用算法和高效数据结构,主要涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等领域。 |
| Boost | Boost 库是一个强大而灵活的工具集,为C++程序员提供了丰富的扩展功能,包含了160余个库/组件,涵盖了字符串与文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等多个领域。其中,许多组件如正则表达式库、线程和并发编程工具、时间和日期处理功能、文件系统操作接口、序列化和反序列化功能、数学和统计工具以及网络编程工具等,都在实际编程中发挥着重要作用。是C++最重要的库,在C++11之前的程序中大量使用,缺点是比较臃肿,由于很多Boost库的特性都被现代C++语法吸收了,所以现在渐渐的用的少了。 |
| better-enums | 是一个编译时工具,提供了一个更强大、更易用且类型安全的方式来定义和操作枚举,通过提供一组静态工厂方法和扩展功能,使得枚举不再仅仅是简单的常量列表。在C++中,它允许转换枚举、循环它们、找到它们的最大值,静态地执行约定,并将结果作为模板参数传递给constexpr函数。所有这些反射功能都可以满足元编程需求。 |
| DBoW2 | 词袋库,用于 ORB-SLAM 等 SLAM 算法中的回环检测。它使用特征提取算法(如Fast)提取图像的特征描述子,并根据一定的策略将这些特征描述子聚类为“单词”,通过树的形式组织,得到一个vocabulary tree(词汇树)。之后,利用vocabulary tree将图像转换为{单词,权值}的向量表示,通过计算向量间距离的方式计算图像之间的相似性。 |
| matplotlib-cpp | C++ 绘图库,科研绘图,实现同 MATLAB 中 Plot 和 Python 中 Matplot 类似的功能。 |
| progressbar | 一个极简的C++终端进度条库,100多行代码。 |
| googletest | C++ 测试框架,我还没咋用过,但对于工业落地的项目,测试至关重要,专门有测试岗。 |
👆👆👆 回到开头 👆👆👆
| 项目 | 简介 |
|---|---|
| pip | |
| NumPy | |
| matplotlib | |
| Basemap | |
| SciPy | |
| joblib | |
| PyYAML | |
| Requests |
👆👆👆 回到开头 👆👆👆