基于因子图优化的RTK定位开源代码GraphGNSSLib配置及相关介绍

这篇具有很好参考价值的文章主要介绍了基于因子图优化的RTK定位开源代码GraphGNSSLib配置及相关介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

        RTK(载波相位差分技术)定位是GNSS实现定位的一种常见的模式,能够在基站周围的一定范围内快速实现厘米级精度的定位,广泛应用于车载、机载导航。

        在RTK解算过程中,传统的EKF是最为常用的方式,根据前一历元观测值对当前历元的估值进行更新(EKF 拓展卡尔曼滤波在这里就不做过多说,网上的博客以及论文有很多)。但EKF的精度对观测值非常敏感,若前一历元的观测值存在较大的粗差,对后续的精度存在很大的影响。,因此,在一些信号受到遮挡的区域,如城市峡谷,隧道,地下室等,接受到的信号存在很大的粗差,导致RTK定位的精度明显下降。但因子图优化(FGO)的出现很好解决了这个问题,简单的说,因子图优化就是一种全局性的最小二乘法,利用多个历元的数据进行计算,充分利用利用历史数据,能够很好的减少某个粗差的出现对计算的影响。FGO的计算量问题导致其一直被认为是一种后处理的手段,很少应用在GNSS./INS等实时导航的领域。但随着其在机器人领域的发展,使得其在提供冗余信息的同时兼顾实时性成为可能。

        FGO在提升抗差性、鲁棒性的同时也增大了计算量,最小二乘法的计算量随着数据量的增加是呈指数式的增加,因此为了能够满足实时解算的目的,常常采用滑窗因子图的方法进行处理,利用一个窗口内的所用数据进行最小二乘解算(例如一个窗口内包含10、30、50历元的数据),一般来说窗口内的数据越多,其鲁棒性和精度就越高(也存在历元),相应的所需要的计算时间就越长。具体可参考文献《Factor graph optimization for GNSS/INS intergration: A comparsion with the extended Kalman filter》Factor graph optimization for GNSS/INS integration: A comparison with the extended Kalman filter | NAVIGATION: Journal of the Institute of Navigation,这篇文献中wen等人对其进行的详细的研究。

GraphGNSSLib是由香港理工大学文Weisong Wen等人开源的一套利用因子图优化来执行GNSS定位和RTK定位的软件。代码基机于器人操作系统(ROS),使用C++语言进行主要函数的编写,非线性优化问题利用ceres-solver库进行求解。同时集成了rtklib软件其中一部分的内容。开源网址GitHub - weisongwen/GraphGNSSLib:使用因子图优化 GNSS 定位和实时运动学的开源软件包;其中包含完整的开源代码和相关的论文

  • Wen, W., & Hsu, L. T. (2021, May). Towards robust GNSS positioning and Real-time kinematic using factor graph optimization. In 2021 IEEE International Conference on Robotics and Automation (ICRA) (pp. 5884-5890). IEEE.

基于因子图优化的RTK定位开源代码GraphGNSSLib配置及相关介绍,c++,人工智能,自动驾驶

其中本站以及bilibili网站上也有很多对于这篇文章及代码的介绍,需要的话可以选择性的学习;

https://www.bilibili.com/video/BV1r44y1x7Vi/?t=918&spm_id_from=333.1350.jump_directly&vd_source=bbd60eb9ac7d89115eaec1660bf475aa

代码配置

因子图具体的原理以及代码在这里就不做过多的介绍,下面对如何运行这套代码的环境配置进行说明;

程序的配置有两种方法,第一种是docker容器,对于这种方法常用linux以及python配库的学者应该都不陌生,一种固定的模式,但对于没接触过的需要首先学习docker的相关理论和使用方法,这里就不对这种方法进行说明;

第二种就是ubuntu系统下的ROS安装;首先需要安装一个Unbuntu系统(18.04或者16.04),其他的版本本人没有配置成功,ubuntu20.04在配置时一个语句始终无法成功,22.04则只支持ros2系统,很多命令我不是很懂(中途放弃)。因此为了避免麻烦,建议安装ubuntu16.04或者18.04(虚拟机、双系统以及wsl子系统都可以)。

在该前提条件完成的基础上便可以打开linux系统的终端输入下列语句进行环境的配置与相关库的编译;

安装必要的编译环境(建议依照此顺序)

sudo apt-get install cmake

安装google-glog + gflags
sudo apt-get install libgoogle-glog-dev

安装BLAS 和 LAPACK
sudo apt-get install libatlas-base-dev

安装矩阵库Eigen3
sudo apt-get install libeigen3-dev

安装与ros系统相适应的诺瓦泰的相关插件
sudo apt-get install ros-melodic-novatel-msgs(Ubuntu18.04)
sudo apt-get install ros-kinetic-novatel-msgs(Ubuntu16.04)
sudo apt-get install ros-Noetic-novatel-msgs(Ubuntu20.04)
注意:
kenetic,melodic和Noetic分别时与三种版本相适应的ros版本,需要根据不同的Ubuntu版本输入不同的语句,理论上20.04输入应该可以,但在测试的时候一种报错,不知道是不是该版本的ros不支持诺瓦泰的相关库了。

从github上下载源码
mkdir -p ~/GraphGNSSLib/src
cd ~/GraphGNSSLib/src
mkdir result
git clone https://github.com/weisongwen/GraphGNSSLib.git

安装ceres-solver(使用下载下来的压缩包中的版本)
cd ~/GraphGNSSLib/support_files

手动解压ceres-solver.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver

sudo make -j4(j4意思是使用四个线程同时进行编译,若电脑配置不够,建议输入-j即可,避免内存溢出编译失败)
sudo make test
sudo make install

注意:!!!!!
ceres-solver.tar.gz和解压的文件删掉不然在编译graphgnsslib的时候会报错

CMake Error at /opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:100bulabula

编译
cd  ~/GraphGNSSLib
catkin_make
source ~/GraphGNSSLib/devel/setup.bash
catkin_make

运行rtk
在rtklib.h中将RTK FGO值设置为1;

保存重新编译(运行动态数据)
source /home/knight/GraphGNSSLib/devel/setup.bash
roslaunch global_fusion dataublox_TST20190428.launch

重新打开一个终端(运行静态数据)
 source /home/knight/GraphGNSSLib/devel/setup.bash
 roslaunch global_fusion psr_doppler_car_rtk.launch


运行结果:

(动态结果轨迹):

基于因子图优化的RTK定位开源代码GraphGNSSLib配置及相关介绍,c++,人工智能,自动驾驶

(静态结果图)

基于因子图优化的RTK定位开源代码GraphGNSSLib配置及相关介绍,c++,人工智能,自动驾驶文章来源地址https://www.toymoban.com/news/detail-853611.html

到了这里,关于基于因子图优化的RTK定位开源代码GraphGNSSLib配置及相关介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【分享】5G+北斗RTK高精度人员定位解决方案

    5G+北斗RTK高精度定位系统旨在通过5G网络实时提供亚米级、厘米级、毫米级高精度定位服务,构建全天候、全天时、全地理的精准时空服务体系。 伴随着信息技术日新月异的发展,各类“智慧”顺势而出,智慧城市、智慧医院、智慧工厂、智慧电厂等等如雨后春笋,与工业

    2023年04月09日
    浏览(47)
  • RTK 定位回传数据转内网(局域网)mqtt协议--- 格林恩德 CR102 RTK 针对无人机巡检应用

      先简单介绍一下CR102 格林RTK高精度设备,CR102接收机,集成高精度模组与4G, WIFI/蓝牙通信模组;双天线定位定向, 同时内置惯导, 输出加速度和姿态信息。支持4G/WIFI/蓝牙无线传输、 LAN网口传输;对外采用双12芯LEMO接口, 输出多样化数据:定位定向数据、 惯导数据、

    2024年02月08日
    浏览(130)
  • 基于QuantConnect开源引擎Lean本地实现Fama-French五因子Python策略

    基于QuantConnect的开源Lean引擎,生成本地数据源,并实现运行Python语言的Fama-French五因子策略 VS2022企业版,需要安装C#和Python组件; Anaconda3-2020.11-Windows-x86_64,这个版本对应Python3.8,是根据Lean环境要求选择的; git clone https://github.com/QuantConnect/Lean.git下载的Lean框架; VS2022打开

    2024年03月25日
    浏览(61)
  • 【状态估计】基于随机方法优化PMU优化配置(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 文献来源 🌈4 Matlab代码、数据、文章

    2024年02月06日
    浏览(47)
  • 基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)

    目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、数据、讲解 由于能源的日益匮乏,电力需求的不断增长等,配电网中分布式能源渗透率不断提高,且逐渐向主动配电网方向发展。此外,需求响应(demand response,DR)的加入对配电网的规划运行也带来了新的因素[1-2]。

    2024年02月14日
    浏览(43)
  • 【sop】基于灵敏度分析的有源配电网智能软开关优化配置(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 2.1 不含SOP 2.2 SOP选址定容  ​ 🎉3 参考文

    2024年02月04日
    浏览(52)
  • 基于改进遗传算法的配电网故障定位(matlab代码)

    该程序复现文章《基于改进遗传算法的配电网故障定位》,将改进的遗传算法应用于配电网故障定位中, 并引入分级处理思想, 利用配电网呈辐射状的特点, 首先把整个配电网划分为主干支路和若干独立区域, 再利用该算法分别对各独立区域进行故障定位, 然后进行全局寻优, 这

    2024年04月25日
    浏览(50)
  • 开源代码分享(1)—考虑经济性的储能运行优化

    参考文献: [1]Practical operation strategies for pumped hydroelectric energy storage (PHES) utilising electricity price arbitrage - ScienceDirect [2]Towards an objective method to compare energy storage technologies: development and validation of a model to determine the upper boundary of revenue available from electrical price arbitrage         为

    2024年02月08日
    浏览(36)
  • 因子图优化原理(iSAM、iSAM2论文解析)

    在介绍因子图之前,先从一个简单的slam问题入手,如下图所示: 在图中清晰的显示了各个节点和和连接结点边之间的定义,对于图结构不做过多说明,假定读者已经有一定的先验知识。在上图显示的slam问题中,实际上我们要解决的问题就是,从机器人的控制和观测中恢复机

    2024年02月02日
    浏览(50)
  • 基于RSSI测距的多边定位法(附代码与讲解视频)

    1、学习RSSI测距的原理 2、学习多边定位法对RSSI定位的实现 3、用仿真实现RSSI定位 RSSI测距方法是无线传感器网络中比较常用的一种测距方法。当无线信号在大气中传播时,由于各种因素的干扰,信号强度会随着距离的增大而衰减,这表明 在信号强度变化与传播距离之间存在

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包