Skip to content

Latest commit

 

History

History
804 lines (756 loc) · 86.7 KB

导航定位建图开源项目记录.md

File metadata and controls

804 lines (756 loc) · 86.7 KB

导航定位建图开源项目记录

Static Badge Static Badge Static Badge


✨ GNSS 数据处理 ✨

项目 简介
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,并且分为 gnsstkgnsstk-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 信号处理 ✨

项目 介绍
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

 👆👆👆   回到开头   👆👆👆


✨ INS、组合导航 ✨

项目 介绍
INS_Course_Matlab 西工大严恭敏开发的捷联惯导工具箱,包含一系列 MATLAB 后处理脚本,和 C++ 实时松组合导航程序。
PSINS
Android-PSINSToolbox
PSINS-ROS
PSINS_FIMU
KF-GINS
KF_GINS_GUI
py_IMU
OB-GINS
TGINS
PPPLIB 安理工陈超开发,投稿到 GPS Solution,支持 GNSS 三频数据处理,基于 C++ 编写,大部分 GNSS 程序移植自 RTKLIB。
Compass
GINAV/v2.0
IGNAV
MATLAB-Groves
GIOW-release
imu_x_fusion
OpenIMU
ronin
RINS-W
invensense-imu
eagleye
ai-imu-dr
NaveCodePro
InertialNav
allan-variance-ros
eskf_localization
imu_gnss_eskf
nav_matlab
imu_zupt
ZUPT-aided-INS
gnss-ins-zupt
corenav-GP
kalibr
kalibr_allan
allan_variance_ros
allan_variance
imu_allan
allan_ros2
AdevAnalysis
imu-data-simulation
GPS_IMU_Kalman_Filter
TightlyCoupledINSGNSS
stm32f4_mpu9250
mpu6050
mpu9250
FastIMU
Wheel-INS
GNSS-INS
pyshoe
imu_tools
IMUCalibration-Gesture
ImuCalibration-Poistion
imu_utils
GyroAllan
gnss-ins-sim
MEMS-IMU-Denoising
agrobot
IBG_EKF_TC
ZCJ-GNSSINS-DeepIntegration 深组合
Smartphone-IMU-GPS
INSTINCT
Gait-Tracking
Machine-Learning-GNSS-IMU-Integration
ImuCalibration-Poistion
ADIS16470-Arduino-Teensy
Seeed_ADIS16470
iXR_GNSS-IMU_TightlyCouplingProgram
KalmanFilter_Vehicle_GNSS_INS
GPS_Milemeter_IMU_EKFLocation 采用gps、里程计和电子罗盘作为定位传感器,EKF作为多传感器的融合算法,最终输出目标的滤波位置。 本文采用的方法是利用iphone手机上的GPS来获取载体的经纬度,利用电子罗盘获取到航向角,通过加速度计积分得到位移(加速度的功能替代来里程计),再通过EKF融合得到最终的位置。
IMUNet 基于数据驱动的导航和定位方法近年来备受关注,它在精度和效率方面优于所有同类方法。本文介绍了一种名为 IMUNet 的新架构,它能在接收原始 IMU 测量序列的边缘设备上准确高效地进行位置估计。就准确性和效率而言,该架构与最近推出的用于边缘设备实施的最先进 CNN 网络的一维版本进行了比较。此外,还提出了一种使用手机 IMU 传感器和谷歌 ARCore API 收集数据集的新方法,并记录了一个公开可用的数据集。为了证明该架构的性能,我们使用四个不同的数据集以及所提出的数据集和真实设备实施进行了综合评估。Pytorch 和 Tensorflow 框架中的所有代码以及安卓应用程序代码都已共享,以改进进一步的研究。
SmartIMU SmartIMU 是一個集成微控制器(STM32F411)、3-Axis 加速度計、3-Axis 陀螺儀、3-Axis 電子羅盤與氣壓計(MPU9250、LPS22HB)以及無線傳輸(NRF52810)於一體的 10DOF 模組,控制器透過 UART 連接無線傳輸芯片,可以將感測器資料無線傳輸至其他裝置觀察。板上除了有 LED、按鍵、電源管理以及 RF 功率放大外,亦拉出至多 25pin 帶 ADC、UART、SPI、I2C 等功能的可用 I/O,1.27mm 間距的擴充腳位上下皆可連接,方便擴充不同應用,像是小型四軸飛行器。
IMUSensorModels
imu_gps_localization
dcm-imu
denoise_imu_gyro
vectornav
OpenIMUFilter
9DOF_Razor_IMU
IMU_Attitude_Estimator
SparkFun_LSM9DS1_Arduino_Library
IMA-estimation
fusion
Indirect_EKF_IMU_GPS
gps_imu_fusion
imu_ekf
x-IMU-GUI
ekf-imu-depth
imu_tk_matlab
imu_tk
IMU_Preintegration
RTIMULib2
imu_to_odom
imu-human-pose-pytorch
IMU-Array
IMUPoser
IMUDB
har_with_imu_transformer
EyeMU
Attitude-Estimation
Activity_Detection_using_IMU_sensor
lwoi
InvariantEKF_GNSS_IMU
imu_veh_calib
ImuMeanFilter
kalman_filter_with_kitti
ImuGpsGuiding
OpenSimRT
RTD_phone
ADIS16470_Demo
odom_predictor
robot_pose_ekf
UKF
gnss-sensor-fusion
amsi
EgoLocate
learned_inertial_model_odometry
MadgwickAHRS
Madgwick_Filter
integrated-navigation
KGP-IAEKF-IGGIII
navfusion
UrbanRTK-INS-OutlierOpt
SCH63T_MINI_EVK
GPS_IMU_Kalman_Filter
Location
waypoint_nav
GIOW-release
pyins
GINS-Navi
GNSS_INS_Integrations_Comparisons
KF-GINS-ECEF

 👆👆👆   回到开头   👆👆👆


✨ 视觉 SLAM ✨

项目 介绍
Vins-Mono/Fusion
ORB-SLAM3/2/1
OpenVINS
Openvslam
svo
svo_pro
msckf_vio
okvis
DM-VIO
DSO
DSOL
wildnav
NeRF
H3/H2-Mapping
gaussian-splatting
2d-gaussian-splatting
Elasticfusion
OpenMVG
Meshroom
Kintinuous
Mvision
rgbdslam_v2
camera_calibration
crisp
VideoIMUCapture-Android
OpenImuCameraCalibrator
Structure-SLAM-PointLine
SLAM_interface
Sync_Pola_IMU_ROS
ViDAR
BEVFormer
aruco_ekf_slam
AVP-SLAM-SIM
MSCKF_VIO_MONO
VIW-Fusion
awesome-visual-slam 整理
Recent_SLAM_Research 整理
Awesome CV Works 整理
Lee-SLAM-source 整理
Awesome-SLAM 整理
awesome-slam 整理
Awesome_Dynamic_SLAM 整理
awesome-NeRF 整理
visual-slam-roadmap 整理
Visual_SLAM_Related_Research 整理
vins-application 整理
Recent-Stars-2024 整理
Visual Navigation 整理
Visual Navigation 整理
Awesome-Optical-Flow 整理
awesome-Implicit-NeRF-SLAM 整理
awesome-computer-vision 整理
awesome-semantic-segmentation 整理
awesome_3d_slam_resources 整理
awesome-road-environment-segmentation 整理
awesome-road-environment-segmentation 整理
Awesome-BEV-Perception-Multi-Cameras 整理

 👆👆👆   回到开头   👆👆👆


✨ 激光 SLAM ✨

项目 介绍
Gmapping
Cartographer
hector-slam
LeGO-LOAM
LOAM-Livox
A-LOAM
SuMa
LIO-SAM
FAST-LIO-SAM
FAST-LIO
LIO-Mapping
CT-ICP
Coco-LIC
BoW3D
OverlapNet
CloudViewer
Lidar_AI_Solution
lidar_IMU_calib
LT-Mapper
LiDAR_IMU_Init
RIs-Calib
FF-LINS
I2EKF-LO
OpenRadar
awesome-lidar 整理
awesome-point-cloud-place-recognition 整理
awesome-sar 整理
awesome-radar-perception 整理
awesome-deep-point-cloud-compression 整理
awesome-point-cloud-analysis 整理
Awesome_Laser_scanners 整理
awesome-point-cloud-analysis-2023
awesome-lidar-curb-detection 整理
LiDAR-Guide 整理
awesome-data-labeling-tools 整理
Awesome-Dynamic-Point-Cloud-Analysis 整理
awesome-point-cloud-scene-flow 整理

 👆👆👆   回到开头   👆👆👆


✨ 多源融合 ✨

项目 介绍
GICI-LIB
GVINS
GLIO
InGVIO
Multi-Sensor-Fusion
MSF_developed
MINS
mars_lib
MMF-LVINS
raw-gnss-fusion
ESEKF-IMU-GNSS-Lidar
imu_x_fusion
RTK-Visual-Inertial-Navigation
IC_GVINS
FAST-LIVO
VINS-GPS-Wheel
sync_gps_lidar_imu_cam
carvig
LVI-SAM
ekfmonoslam
ethzasl_msf
NaveGo
robot_localization
YabLoc
ILCC
ekfmonoslam
SuperFusion
Sensor-Fusion-Using-ES-EKF
msckf_vio_GPS
GPS-Gaussian
clic
multimodal_data_studio
limo
FAST-LIO-Multi-Sensor-Fusion
multi-sensor-calibration
SensorsCalibration
Calibration-Is-All-You-Need
Awesome-LiDAR-Camera-Calibration
Awesome-LiDAR-IMU-calibration 整理

 👆👆👆   回到开头   👆👆👆


✨ 参数估计 ✨

项目 介绍
kalman(C++)
Kalman(Py)
kalman(go)
bayes-filters-lib
filterpy
DynAdjust
KalmanFilter(四种编程语言)
kalman_filter(C)
kalman-cpp(Eigen)
kalman-filter(30行np)
bayesian-kalmanfilter
easykf
CarND-Extended-Kalman-Filter-Project
Kalman-and-Bayesian-Filters-in-Python
Comparison-of-UKF-CKF-EKF
TinyEKF
Adjustment-Of-Traverse-Network
Kalman-Filter-for-Sensor-Fusion
Embedded_UKF_Library
KF-a-priori
KF-a-posteriori
MCCKF-a-posteriori
MCCKF-a-priori
KF-GARCH-in-Mean
LBFGS-Lite
rednose
SimpleKalmanFilter
SFND_Unscented_Kalman_Filter
kalmanif
kalman_filter(Jupyter Notebook)
KalmanFilter(Swift )
Radar-Basic-Algorithm
Kalman(Arduino)
KalmanFilter-for-Arduino
KalmanRx
robust-kalman
ukf
ukfm
ukfLib
UKF
pyUKF
UKFSharp
kalman-clib
Kalman-Filter-for-Beginners
ikalman
kalman_filters
IKFoM
KalmanFilterTutorial
KalmanFiltering
how-kalman-filters-work-examples
OpenKF
Data_Fusion_Course
FKF
switching-kalman-filter
KalmanFilters.jl
tf-kalman
GNC-and-ADAPT
auto_ks
SCL-RKF-code
IKFoM
weighted-likelihood-filter

 👆👆👆   回到开头   👆👆👆


✨ 室内定位、手机定位 ✨

项目 介绍
openpose
uwb-localization
Location
SensorServer
Fusion-DHL
Indoor-Positioning
UWB-Node
RTLS-UWB
positioning-algorithms-for-uwb-matlab
UWB_DualAntenna_AoA
Pedometer
ahrs
ahrs
ios_logger
GetSensorData_Android
LoRa_2G4_localization
DeadReckoning
dead-reckoning
Smartlight_UWB
senslogs
vrs
Pedestrian-Dead-Reckoning
UWBPositioning
util-uwb-dataset
RSSI-Dataset-for-Indoor-Localization-Fingerprinting
Thrifty
bluetooth_gnss
MAINSvsMAGEKF
Awesome-Human-Activity-Recognition 整理
Awesome-WiFi-CSI-Research 整理

 👆👆👆   回到开头   👆👆👆


✨ 规划控制 ✨

项目 介绍
navigation/2
Apollo
Autoware
PX4-Autopilot
ardupilot
mars
Avem
dRehmFlight
PathPlanning
MissionPlanner
slam_toolbox
neonavigation
rmcl
navigator
self-driving-car
NamelessCotrunQuad_V1.0
ONE-Robot
RoboND-EKFLab
ros_motion_planning
AutoTrans
CICRSIM
FC-Planner
FC-Hetero
OccNet
UniAD
End-to-end-Autonomous-Driving
Birds-eye-view-Perception
teb_local_planner_tutorials
chhRobotics_CPP
Smart-UAV-Return-GNSS-Station
Awesome-Self-Driving 整理
Autopilot-Notes 整理
Awesome-IntelligentCarRace 整理
Awesome-Autonomous-Driving 整理
awesome-autonomous-vehicles 整理
awesome-robotic-tooling 整理
awesome-self-driving-car 整理
awesome-ros-tools 整理
Awesome-IntelligentCarRace 整理

 👆👆👆   回到开头   👆👆👆


✨ AI ✨

项目 介绍
tensorflow
keras
Paddle
pytorch
Theano
wekan
caffe
torch7
yolov5
DeepSpeed
transformers
accelerate
mindspore
jittor
oneflow
x-deeplearning
MegEngine
ncnn
FinRL
spinningup
baselines
stable-baselines
mxnet
MegEngine
TensorRT
darknet
darknet_ros
mxnet
CNTK
matconvnet
chainer
onnx
Theano
ros_deep_learning
mamba
efficient-kan
awesome-machine-learning 整理
DeepLearning 整理
awesome-deep-learning 整理
Deep-Learning-Papers-Reading-Roadmap 整理
awesome-deep-learning-papers 整理
awesome-chatgpt-prompts-zh 整理
awesome-machine-learning-cn 整理
Awesome-PyTorch-Chinese 整理

 👆👆👆   回到开头   👆👆👆


✨ C++ 库 ✨

项目 介绍
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++ 测试框架,我还没咋用过,但对于工业落地的项目,测试至关重要,专门有测试岗。

 👆👆👆   回到开头   👆👆👆


✨ Python 包 ✨

项目 简介
pip
NumPy
matplotlib
Basemap
SciPy
joblib
PyYAML
Requests

 👆👆👆   回到开头   👆👆👆