/Navigation-Learning

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

Navigation-Learning-cover

[TOC]


  • 本仓库是我学习的记录,会长期更新,分享出来,希望有人用得上,也激励着自己坚持学下去。
  • 有些程序会详细写(比如 RTKLIB、KF-GINS),有些只画个流程图、列举重点的函数。
  • 水平不高,理解尚浅,列举的理论公式无法保证准确性,仅供参考,千万不要照着我的笔记来写代码写论文,更不要直接复制到论文里,希望小伙伴们注意。
  • 不建议直接下载整个仓库,内容可能大部分都用不着,Markdown 和 PDF 可以在线看,想要的文件也可以单独下载。Github 上的 Markdown 公式可能显示不完全,可以下载下来用 Typora 看。
  • 本仓库所有内容都可以随意转载,可用于任何目的,不必征求我的意见。
  • 有问题欢迎随时联系我:电话 (15255291038)、微信 (lizhengxiao99)、QQ (1482275402)、Email (dauger@126.com)。

记录一些我看到过的项目,其中加粗的项目会在本仓库介绍:

类型 项目/网址
GNSS 数据处理 RTKLIBRTKLIB-Demo5rtklib-pyrtklib_ros_bridgertkrcv_rosGAMPGinangoGPSBNCGFZRNXGAMIT/GLOBKGraphGNSSLibNet_DiffPOSGOPride-PPPARPPPwizardGPSTkG-NUT/AnubisTeqcBernesegLABgnssreflRobustGNSSGAMPII-GOODntriprtcmcorsgeorinexPPP-BayesTreeFASTgnsspygnssgoraPPPidFCB-FILESMG_APPgps_amclRTKinGSSgnss_lib_pyPNT-IntegrityGDDSgroopsOREKITgnss-tecPW_from_GPSPyGPSClientSTM32-GNSSHASlibGNSSAMSppp-toolscssrlibgpstestiSniff-GPShypatiagps-measurement-toolsFE-GUTgnss-RXPypredictnovatel_gps_driverGPSToolbox 投稿awesome-gnss 整理mcraymer 整理
GNSS 信号处理 GNSS-SDRSoftGNSSSoftGNSS-pythonPocketSDRGNSS-SDRLIBnut2ntBeagle_SDR_GPSFlyDog_SDR_GPSGNSS-GPS-SDRgnss-sdr-1ppsSatDumpgps-sdr-simbeidou-sdr-simgalileo-sdr-simgps-qzss-sdr-simmulti-sdr-gps-simSignalSimGPS_GAL_SSSgreta-otoBD3_FPGAGNSS-matlabSDR-GB-SARgps_rf_frontend_simGNSS-VHDLgnss-basebandAnalog-GPS-data-receiverGNSS-DSP-toolshard_sydrB1C_Signals_SimulationCU-SDR-CollectionESP32_SDR_GPSSTM32F4_SDR_GPSsnappergps-pcbFast_GNSS_ReceiverMATLABgnss-sdr-rs
INS、组合导航 PSINSKF-GINSOB-GINSTGINSPPPLIBCompassGINav_v2.0GINAVIGNAVMATLAB-Grovesimu_x_fusionOpenIMUeagleyeai-imu-drNaveCodePronav_matlabkalibr_allanimu_data_simulationGPS_IMU_Kalman_FilterTightlyCoupledINSGNSSWheel-INS GNSS-INSimu_toolsimu_utilsGyroAllangnss-ins-simMEMS-IMU-Denoisingnav_matlabagrobotIBG_EKF_TCZCJ_GNSSINS_DeepIntegration Smartphone_IMU_GPSINSTINCTGait-TrackingMachine_Learning_GNSS_IMU_IntegrationImuCalibration-PoistionIMU-study 整理
视觉 SLAM Vins-Mono/FusionORB-SLAM3/2/1OpenVINSOpenvslamsvosvo_promsckf_viookvisDM-VIODSODSOLNeRFElasticfusionOpenMVGMeshroomKintinuousMvisionrgbdslam_v2camera_calibrationawesome-visual-slam 整理Recent_SLAM_Research 整理Awesome CV Works 整理Lee-SLAM-source 整理awesome-slam 整理Awesome_Dynamic_SLAM 整理awesome-NeRF 整理visual-slam-roadmap 整理Visual_SLAM_Related_Research 整理vins-application 整理Recent-Stars-2024 整理
激光 SLAM GmappingCartographerhector-slamLeGO-LOAMLOAM-LivoxA-LOAMSuMaLIO-SAMFAST-LIO-SAMFAST-LIOLIO-MappingCT-ICPCoco-LICBoW3DCloudViewer、、LT-Mapperawesome-lidar 整理awesome-point-cloud-place-recognition 整理awesome-sar 整理awesome-radar-perception 整理awesome-deep-point-cloud-compression 整理
多源融合 GICI-LIBGVINSGLIOInGVIOMulti-Sensor-FusionMSF_developedMINSmars_libimu_x_fusionIC_GVINSFAST-LIVOVINS-GPS-Wheelsync_gps_lidar_imu_camcarvigLVI-SAMNaveGoYabLocmulti_sensor_calibrationCalibration-Is-All-You-Need、、Awesome-LiDAR-Camera-CalibrationAwesome-LiDAR-IMU-calibration 整理
规划控制 navigationnavigation2 ApolloAutowarePX4-AutopilotardupilotmarsPathPlanningMissionPlannerslam_toolboxneonavigationrmclnavigatorself-driving-carAwesome-Self-Driving 整理Autopilot-Notes 整理
AI tensorflowkerasPaddlepytorchTheanowekancaffetorch7yolov5DeepSpeedtransformersacceleratemindsporejittoroneflowx-deeplearningMegEnginencnnFinRLspinningupbaselinesstable-baselinesmxnetMegEngineTensorRTdarknetdarknet_rosmxnetCNTKmatconvnetchaineronnxTheanoros_deep_learningDeepLearning 整理awesome-deep-learning 整理Deep-Learning-Papers-Reading-Roadmap 整理awesome-deep-learning-papers 整理awesome-chatgpt-prompts-zh 整理
其它 kalmanbayes-filters-libfilterpyDynAdjustKalmanFilterahrsutmuwb-localizationLocationIndoor-Positioningpositioning-algorithms-for-uwb-matlabUWB_DualAntenna_AoAPedometerGetSensorData_AndroidLoRa_2G4_localizationDeadReckoningSmartlight_UWBsenslogsvrsPedestrian-Dead-ReckoningUWBPositioningutil-uwb-datasetRSSI-Dataset-for-Indoor-Localization-FingerprintingAwesome-Human-Activity-Recognition 整理
常用库 EigenOpenBLASGflagsGlogeasyloggingppCeres-Solverg2ogtsamYaml-CppOpenCVPCLBoostbetter-enumsDBoW2matplotlib-cppprogressbar
开源数据集 PSINS 数据集i2NAV-awesome-gins-datasetsweisongwen/ UrbanNavDatasetUrbanLocoPPPLib-Datasetgici-open-datasetGVINS-Datasetcomma2k19SJTU_GVI Railway-Precise-Localizationprecision-gnssAwesome_list_of_free_smartphone_GNSS_datasetsSYSU-Campus-GVI-DatasetGVI-SYSU-Outdoor-Indoor-DatasetLBL-AQUALOC-Datasetvio-gnss-datasetIMU_datasetHR_IMU_falldetection_datasetimu_comparison_dataHumanInertialPoseH2LIDFusionPoserECC_datasetTRIPODbroadBROAD_IMU_datasetHAR_IMU_Stretchuwb-drone-datasetUWB_TDOA_datasetIndustrial-UWB-localization-CIR-datasetIR-UWB-Radar-Signal-Dataset-for-Dense-People-CountingUWB_Datasetuwb-nlos-human-detectionIURHA2023KITTI数据集EuRoC数据集TUM数据集Oxford数据集ICL-NUIM数据集RGB-D对象数据集Dynamic-Scenes 数据集awesome-slam-datasets 整理
工具 zoteroCaptura GitHub520freecarrotaliyunpanSerialChart
开源程序作者 池澄周峰陈超严恭敏李政苏景岚陈凯王晗刘国庆高翔杨熙张春杰魏源布树辉谢立华邹丹平XikunLiu-huskitcggosshaolinbitWelson WENcggoszarathustrYizeZhangglobskytomojitakasucarlesfernandezrtklibexplorerGeoscienceAustraliatarozosqzssiliasam

记录一些导航相关的网址、学习资源、导航设备:

类型 网址
中文期刊 测绘学报武汉大学学报(信息科学版)测绘地理信息北京航空航天大学学报电子学报遥感学报地理学报地理科学进展科学通报现代测绘测绘工程测绘通报信号处理**惯性技术地球物理学报大地测量与地球动力学全球定位系统导航定位学报地理空间信息海洋预报仪器仪表学报导航定位与授时地球科学与环境学报弹箭与制导学报微电子与计算机西北工业大学学报宇航学报仪表技术与传感器测控技术系统仿真学报航天控制兵工自动化
英文期刊 GPS SolutionsRemote SensingMeasurementSatellite NavigationJournal of GeodesySurvey reviewAdvances in Space ResearchJournal of Geophysical ResearchGeo-Spatial Information ScienceScientific ReportsIEEE Sensors JournalIEEE Transactions on Aerospace and Electronic SystemsIEEE Transactions on Instrumentation and MeasurementIEEE Transactions on Geoscience and Remote Sensing
导航类会议 美国导航年会 IONIEEE/ION Position Location and Navigation Symposium (IEEE/ION PLANS)International Technical Meeting (ITM)**卫星导航学术年会 CSNC欧洲导航年会 ENC慕尼黑卫星导航峰会(Munich Satellite Navigation Summit)欧洲地学联盟大会(EGU General Assembly)
论文下载网站 知网万方维普Bing学术百度学术Sci-Hub思谋学术-谷歌学术镜像
各系统、分析中心官网 BDSGPSGLONASSGalileoQZSSIRNSSMGEXIGSIGMASITRFIGS标准IGS站iGMASIAGWDSIUGGGGOS、CNES、IAC、SHAO、CODE、GFZ、ESA、WHUBKGCDDIS、ING、**卫星导航系统管理办公室测试评估研究中心gpsworldInside GNSSGNSS Calendar时间转换查询灰机wiki卫星百科
导航设备厂商 Ublox诺瓦泰天宝徕卡意法半导体JavadSeptentrioSpectra GeospatialSXblueNavComGeneq和芯星通北斗星通创宇星通华测导航思南导航南方测绘合众思壮移远通信北云科技格林恩德创新微天硕导航超核电子原极科技奥比中光浩如科技凌思科技矽睿科技瑞芬科技北微传感元生创新维特智能智腾微电子北斗时代科技清研讯科喜讯科技沃旭通讯瑞达科讯美迪索科泰浩微RealSense申稷光电司岚光电奥比中光科力光电禾赛科技基恩士锐驰激光EAI科技Kinect海川润泽四信物联网钦天导航思为无线光鉴科技图漾科技微深联创
芯片厂商 恩智浦微芯瑞萨高通意法半导体AMDARM英飞凌德州仪器新唐罗姆三星电子东芝海力士美光赛普拉斯亚德诺莱迪思思佳讯博通Maevell菲菱科思CISCO安森美兆易创新乐鑫科技沁恒微电子高云半导体复旦微电子宏晶科技摩尔线程芯动科技海思半导体平头哥紫光集团长江存储长鑫存储易灵思
计算平台 JetsonArduinoESP32STC89C51STM32GD32CH32ZYNQ香橙派RK3588NanoPi泰山派RockPi
淘宝京东店铺 北天墨子号科技南方测绘体感**移远千寻位置集思宝深圳天工测绘思南导航浩如科技维特智能北云科技原极科技凌思科技啊路比电子超核电子瑞芬科技蓝尊科技北微传感精讯畅通华信红心天线维信天线亚博智能微雪电子轮趣科技幻尔机器人youyeetoo开源硬件商城天之博特合宙正点原子野火Speedseeed芯板坊Abrobt创乐博米尔科技嘉立创微相科技我爱开发板璞致电子香橙派EAI北醒司岚SenkyLaser宇树科恩光电骆鸵互娱科技奥比中光韦东山老师个人店 WeAct StudioOpenJumper开源SDR实验室友善alinx
知乎博主 Random Walker迷途小书童任乾吴桐Hyperionyangongmin曹小白左家垅宋威龙咖啡萝卜丝杨熙Welson WEN枯荣有常计算机视觉life半闲居士邱笑晨Churlaaaaaaa刘国庆泰伦斯-Ternence鱼香ROS行知SLAMHyperionYusheng李想清风
CSDN博主 Random-Walker辉——书生意气GISer.Wang他人是一面镜子,保持谦虚的态度随心乐行十八与她Lucid_Sheep卡尔曼的BD SLAMer梧桐Fighting路痴导航员魔方的块枯荣有常WHU-学渣GNSS初学者LZ_CUMTicebeartyst08hyisoeunbiliverbalMy.科研小菜鸡沃斯故我在什么都不会的小澎友李太白lx不学习就落后学测绘的小王GNSS-by flying fish如阳光如你ManiiCharmvejr9910开源SDR实验室difudan4777Amentia outsiderJANGHIGH
微信公众号 不迷途导航程序员慧天地自动驾驶之心3D视觉工坊**北斗卫星导航系统古月居**测绘学会计算机视觉life卫星导航国际期刊卫星应用泡泡机器人SLAM经纬石旁话遥测i2Nav多源智能导航实验室GNSS与自动驾驶导航员学习札记测绘家绘长安**卫星导航年会
导航视频教程 严恭敏-卡尔曼滤波与组合导航i2NAV-惯性导航i2NAV-组合导航吴德伟-导航原理高成发-GNSS原理哈工大-GNSS原理朱家海-惯性导航系统机器人工匠阿杰-ROS入门杨旭-GNSS接收机赵乐文-开源GNSS数据处理软件介绍冰菓的RTKlib&GAMP泰伦斯-GNSS伪距单点定位大胡子刘师傅-组合导航入门武大-测绘学概论计算机视觉life深蓝学院硬禾学堂古月居
国内知名研究团队 武大牛小骥i2NAV武大耿江辉Pride武大钟燕飞RSIDEA武大姚剑CVRS武大郭迟BRAIN武大张祖勋数字摄影测量与计算机视觉研究中心上交感知与导航研究所同济李博峰GNSS研究团队
SLAM研究团队 香港科技大学空中机器人实验室香港科技大学机器人与多感知实验室 RAM-LAB香港中文大学天石机器人实验室浙江大学 CAD&CG 国家重点实验室美国密歇根大学感知机器人实验室(PeRL)美国卡耐基梅陇大学机器人研究所美国加州大学圣地亚哥分校语境机器人研究所美国特拉华大学人感知与导航组美国麻省理工学院航空航天实验室美国麻省理工学院 SPARK 实验室美国麻省理工学院海洋机器人组美国明尼苏达大学多元自主机器人系统实验室美国宾夕法尼亚大学 Vijay Kumar 实验室美国麻省理工学院 Robust Robotics Group美国佐治亚理工学院智能视觉与自动化实验室加拿大蒙特利尔大学机器人与嵌入式 AI 实验室加拿大舍布鲁克大学智能、交互、综合、跨学科机器人实验室瑞士苏黎世大学机器人与感知课题组瑞士苏黎世联邦理工 Vision for Robotics Lab瑞士苏黎世联邦理工计算机视觉与几何实验室瑞士苏黎世联邦理工自主系统实验室英国帝国理工学院戴森机器人实验室英国牛津大学信息工程学德国慕尼黑工业大学计算机视觉组德国马克斯普朗克智能系统研究所嵌入式视觉组德国弗莱堡大学智能自主系统实验室德国波恩大学摄影测量与机器人实验室西班牙萨拉戈萨大学机器人、感知与实时组 SLAM 实验室西班牙马拉加大学机器感知与智能机器人课题组奥地利格拉茨技术大学计算机图形学与视觉研究所波兰波兹南工业大学移动机器人实验室澳大利亚昆士兰科技大学机器人技术中心澳大利亚机器人视觉中心日本国立先进工业科学技术研究所

📚 推荐书籍

image-20240125155004417


01-RTKLIB:GNSS 数据处理

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

RTKLIB

  • 支持多个 GNSS 系统的标准和精密定位算法,包括 GPS,GLONASS,Beidou,Galileo,QZSS 和 SBAS。

  • 支持 9 种GNSS实时和后处理定位模式

    • single:伪距单点定位
    • DGPS/DGNSS:伪距差分
    • kinematic:载波动态相对定位,动态RTK,假设流动站是移动的,可以做车载定位
    • Static:载波静态相对定位,静态RTK,两站都是静止的,可以得到很高的精度
    • Moving-Baseline:两站都动,双天线,主要用来定姿
    • Fixed:固定坐标,解算模糊度、对流层、电离层等参数
    • PPP-Kinematic:动态精密单点定位
    • PPP-Static:静态精密单点定位
    • PPP-Fixed:PPP 固定坐标,解算模糊度、对流层、电离层等参数。
  • 支持多种GNSS标准格式和协议:RINEX2.10、RINEX2.11、RINEX2.12、RINEX3.00、RINEX3.01、RINEX3.02、RTCM2.3、RTCM3.1、RTCM3.2、BINEX、NTRIP、NMEA0183、SP3、ANTEX1.4、IONEX1.0、NGS PCV、EMS 2.0。

  • 支持多种GNSS接收机专有数据协议格式:NovAtel:OEM4/V/6,OEM3, OEMStar、Superstar II、 Hemisphere、Crescent、u‐blox:LEA-4T/5T/6T、SkyTraq、JAVAD 、GW10-II/III 和 NVS。

  • 支持外部通信:Serial、TCP/IP、NTRIP、本地日志文件、FTP 和 HTTP。

  • 提供许多代码库和API:卫星和导航系统函数、矩阵和向量函数,时间和字符串函数、坐标的转换,输入和输出函数、调试跟踪函数、平台依赖函数、定位模型、大气模型、天线模型、地球潮汐模型、大地水准面模型、基准转换、RINEX函数、星历和时钟函数、精密星历和时钟、接收机原始数据函数、RTCM函数,解算函数、谷歌地球KML转换、SBAS函数、选项(option)函数、流数据输入和输出函数、整周模糊度解算、标准定位、精密定位、后处理定位(解算)、流服务器函数、RTK服务器函数、下载函数。

推荐阅读:不迷途导航程序员:RTKLIB 源码阅读笔记


02-GAMP:基于 RTKLIB 的后处理双频 PPP

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

GAMP


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

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

image-20231224221345981


04-Ginan

澳大利亚

基于 RTKLIB 改写,做了面向对象封装,

大量使用 C++11/14/17 的新特性,使用了 Boost库,PEA 的主函数就有 500 行,读起来比较困难;

依赖的库较多,好在提供了 Docker;

可以运行在 Linux 和 MacOS,在 Windows 下需运行在 WSL 或 Docker 环境

文档很详细,而且可以生成 Doxygen,根据注释生成网站,可以方便的查看类型嵌套和程序调用

包括 PEA 定位和 POD 定轨程序,

PEA 用 C++、POD 部分用 Fortune,绘图和批处理脚本用 Python

矩阵运算主要用 Eigen 实现,也用 OpenBLAS 进行多线程矩阵运算

推荐阅读:不迷途导航程序员:PEA源码阅读笔记


05-goGPS:MATLAB-GNSS 数据处理

goGPS是一个处理GNSS原始数据的软件,最初支持单频低成本GPS接收机数据,但现在也可以用来处理多频多系统GNSS数据。它实现了多种算法来解算,目前包括两个主要的最小二乘法(LS)引擎:一个基于于组合观测数据(例如无电离层观测);另一个能够使用所有的频率和记录的信号数据,而不进行任何组合(电离层延迟是正常方程的参数)。组合和不组合的引擎都支持PPP、NET解算。目前只支持静态测站的解算,还不能动态解算。

goGPS Main Window


06-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 因子、惯导因子、视觉因子及运动约束。以处理实时数据为主,后处理也采用模拟实时数据处理的方式进行。

典型应用方式如下图:

1689512108793

包含以下估计器:

1690024555067

补充:GICI 还在持续更新,前段时间看作者还准备加 PPP 紧组合模式。


07-SoftGSS:MATLAB-GPS 软件接收机

SoftGNSS 是《软件定义的GPS和伽利略接收机》附带的程序,MATLAB 编写,实现了一套最简单的 GNSS 软件接收机功;输入经过天线接收,射频前端滤波下变频后的数字中频信号文件,进行 GPS L1 C/A 码的捕获跟踪,生成伪距观测值,解译导航电文,最小二乘定位解算;代码量很小也很简单,适合作为 GNSS 基带数字信号处理的入门阅读程序。主要执行流程如下:

SoftGNSS流程图


08-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 的结合上,它采用了四元数积分方案,与视觉信息进行紧耦合,具有很强的鲁棒性和定位精度。

img


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

image-20230815102741960


10-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 格式存储。

GeneralBlockDiagram


11-TGINS:


12-KF-GINS:

KF-GINS 是武大 i2Nav 实验室开源的一套松组合导航程序;可以读取 IMU 数据文件、GNSS 结果文件,进行松组合解算,计算位置、速度、姿态、陀螺仪零偏、加速度计零偏、陀螺仪比例、加速度计比力,共 21 维状态向量。代码量小,有详细的文档、注释和讲解,代码结构很好理解,有一些可以学习的工程技巧。

image-20230928094541518

image-20230925181044694


13-OB-GINS:

武大 I2NAV 开源,基于图优化的 IMU/GNSS 松组合解算,IMU 预积分算法相比以视觉为主的 ORB-SLAM3、VINS 要精细一些。

OB-GINS 执行流程

相关链接:

  • 开源地址:https://github.com/i2Nav-WHU/OB_GINS,
  • 相关论文:
    • Hailiang Tang, Tisheng Zhang, Xiaoji Niu, Jing Fan, and Jingnan Liu, “Impact of the Earth Rotation Compensation on MEMS-IMU Preintegration of Factor Graph Optimization,” IEEE Sensors Journal, 2022. 下载
    • Junxiang Jiang, Xiaoji Niu, and Jingnan Liu, “Improved IMU Preintegration with Gravity Change and Earth Rotation for Optimization-Based GNSS/VINS,” Remote Sensing, vol. 12, no. 18, p. 3048, Sep. 2020, doi: 10.3390/rs12183048. 下载
    • Le Chang, Xiaoji Niu, and Tianyi Liu, “GNSS/IMU/ODO/LiDAR-SLAM Integrated Navigation System Using IMU/ODO Pre-Integration,” Sensors, vol. 20, no. 17, p. 4702, Aug. 2020, doi: 10.3390/s20174702. 下载

14-ROS导航功能包

功能简单来说,就是根据输入的里程计等传感器的信息流和机器人的全局位置,通过导航算法,计算得出安全可靠的机器人速度控制指令。广泛用在一些对可靠性要求没那么高的自主导航机器人场景中,比如扫地机器人、物流机器人等。

image-20231111160631063

img


15-北斗GPS双模软件接收机

《北斗GPS双模软件接收机》书配套程序,MATLAB 编写,程序运行相当耗时,70s 的示例程序要算几个小时。

GnssRcvr_V14程序文件结构


16-PocketSDR

PocketSDR 是 RTKLIB 作者写的一款 GNSS 软件接收机,包含一个射频前端和一套后处理 GNSS 接收机程序(只支持后处理),实现了一整套完整的 GNSS 接收机功能,采用 C、Python 编写,支持几乎所有的 GNSS 信号(比商业接收机支持的还要多),目前 0.8 版本的程序支持的信号如下:

  • GPS: L1C/A, L1CP, L1CD, L2CM, L5I, L5Q,
  • GLONASS: L1C/A, L2C/A, L3OCD, L3OCP,
  • Galileo: E1B, E1C, E5aI, E5aQ, E5bI, E5bQ, E6B, E6C,
  • QZSS: L1C/A, L1C/B, L1CP,L1CD, L1S, L2CM, L5I, L5Q, L5SI, L5SQ, L6D, L6E,
  • BeiDou: B1I, B1CP, B1CD, B2I,B2aD, B2aP, B2bI, B3I,
  • NavIC: L5-SPS, SBAS: L1C/A, L5I, L5Q

image-20240110092301571