自己造轮子-基于Ceres的GNSS-INS松耦合组合导航算法
之前硕士期间的研究课题涉及到GNSS-INS组合导航,入门看的武汉大学牛老师团队的KF-GINS,不得不说,大组的东西还是很棒的,很适合组合导航入门,KF-GINS主要是基于ESKF的GNSS/INS松耦合组合导航系统,博主就不在这里对ESKF和松耦合进行过多的阐述了。本篇主要针对基于Ceres的松耦合组合导航系统的设计与实现,那么直接开造~
Ceres
Ceres这个工具对于slamer应该不算陌生,主要用来设计基于优化问题,那么对于松耦合的GNSS/INS组合导航系统,其实也可以参考基于ESKF的思路来设计基于Ceres的融合方案;
使用工具
本篇博客对于gnss和imu的数据主要使用的是开源方针算法“gnss-ins-sim”
1.ubuntu18.04
2.ros-melodic
3.gnss-ins-sim
融合方案设计
松耦合,那么也就是将ins解算得到的PVQ与gnss提供的PVQ进行融合,然后根据建立的运动学模型和观测来反向估计对应传感器的噪声,本篇博客使用的观测有gnss提供的速度以及位置信息,那么涉及到的融合就只有速度和位置的融合;
位置的融合
1.残差函数
e r r o r = P g − P i error = P_g-P_i error=Pg−Pi
下标i表示imu的递推解算得到的P,g表示由gnss提供的P观测;
2.残差的雅可比矩阵
J = [ 1 0 0 0 1 0 0 0 1 ] J=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} J= 100010001
速度的融合
1.残差函数
e r r o r = V g − V i error = V_g-V_i error=Vg−Vi
下标i表示imu的递推解算得到的P,g表示由gnss提供的P观测;
2.残差的雅可比矩阵
J = [ 1 0 0 0 1 0 0 0 1 ] J=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} J= 100010001
加速度计的零偏估计
这块其实与上面的速度融合相似,只是需要对残差函数做更进一步的细化:
对于ins的速度更新公式:
 ( t k − t k − 1 ) v_k=v_{k-1}+(\frac{R_{wb_k}a_k+R_{wb_{k-1}}a_{k-1}}{2}-g)(t_k-t_{k-1}) vk=vk−1+(2Rwbkak+Rwbk−1ak−1−g)(tk−tk−1)
上述公式基于中值法做的速度递推
残差公式
e r r o r = V g − V k error = V_g - V_k error=Vg−Vk
雅可比矩阵
这里我没有手推过,就直接用的Ceres的自动求导了…
代码实现
我把代码提到我自己的github了,有兴趣的各位可以去看看,其实对于零偏的估计这块,我自己有点拿不准,但是最终估计出来的效果确实也接近我自己手动设置的加速度计的零偏,还望各位大佬能够不吝赐教,有错误的地方能够大方指点一下,我在这里谢过每一位读过我博客的各位了~
github仓库-选择master分支
如果代码能够帮到各位读者,还望能够star一下哟~
开源工具包使用参考
深蓝学院-多传感器融合定位-第六讲
相关文章:
自己造轮子-基于Ceres的GNSS-INS松耦合组合导航算法
之前硕士期间的研究课题涉及到GNSS-INS组合导航,入门看的武汉大学牛老师团队的KF-GINS,不得不说,大组的东西还是很棒的,很适合组合导航入门,KF-GINS主要是基于ESKF的GNSS/INS松耦合组合导航系统,博主就不在…...
「实战应用」如何为DHTMLX JavaScript 甘特图添加进度线
DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。 今天,您将学习如何使用进度线补充JavaScript 甘特图,以便于监控项目进度。 DHTMLX Gantt 最新试用版下载 …...
MySQL面试题2025 每日20道
1、MySQL 中的数据排序是怎么实现的? 简单 在 MySQL 中,数据排序是通过 ORDER BY 子句来实现的。当你执行一个查询语句时,可以在 SELECT 语句的末尾添加 ORDER BY 来指定按照哪个列进行排序,以及升序(ASC)…...
HTML学习笔记(4)
目录 一、背景相关样式 二、定位position 三、javascript 1、变量的定义 2、数据类型 3、绑定事件 一、背景相关样式 background-image: url(); // 背景图片 background-repeat: repeat; // 背景图片是否平铺 no-repeat background-size: 200px; // 背景图片尺寸 cover把…...
解决 MySQL 服务无法启动:failed to restart mysql.service unit not found
目录 前言1. 问题描述2. 问题分析3. 解决步骤 3.1 检查 MySQL 服务文件3.2 备份旧的服务文件3.3 启动 MySQL 服务3.4 验证服务状态 4. 总结结语 前言 在日常使用 MySQL 数据库时,有时候可能会遇到服务无法正常启动的问题。这类问题通常出现在系统更新或者服务配置…...
在 Ubuntu 上安装 Nginx 的详细指南
在Ubuntu系统中从源码安装Nginx可以让您自定义Nginx的编译选项和模块,以满足特定需求。以下是详细的步骤指南: 前提条件 更新系统包列表 sudo apt update sudo apt upgrade -y安装必要的依赖包 sudo apt install -y build-essential libpcre3 libpcre3-…...
58,【8】BUUCTF [PwnThyBytes 2019]Baby_SQL1
进入靶场 和2次注入的页面很像 不过养成查看源代码的好习惯 先访问source.zip 下载后解压,发现两个文件 第一个文件夹打开又有4个PHP文件 那还是先看index.php文件好了 有PHP和HTML两部分,下面是PHP部分代码(HTML太长了,先放一…...
2.1 三个世界”与“图灵测试”:人工智能与人类智能的深度探索
“三个世界”与“图灵测试”:人工智能与人类智能的深度探索 人工智能的研究和发展,尤其是对其认知能力和智能表现的探索,早在20世纪中期就已成为科学家的热议话题。随着技术的进步,学者们提出了许多思想框架来理解人工智能的运作及其与人类智能的关系。其中,“三个世界”…...
基于微信小程序的优购电商系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
JS宏进阶: 工厂函数与构造函数
一、构造函数 在JavaScript中,构造函数是一种用于创建和初始化对象的特殊函数。构造函数的名字通常以大写字母开头,以区分于普通函数。通过new关键字调用构造函数,可以创建一个新的实例对象,并自动执行构造函数内部的代码来初始化…...
【Linux】线程全解:概念、操作、互斥与同步机制、线程池实现
🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、线程概念 📖 回顾进程 📖 引入线程 📖 总结 &a…...
关于ubuntu命令行连接github失败解决办法
如果发现ping github.com有问题 使用sudo gedit /ect/hosts 打开host文件 添加 140.82.114.4 github.com 发现使用git 克隆失败,出现 aliaubuntu:~/文档/ctest$ git clone https://github.com/LearningInfiniTensor/learning-cxx.git 正克隆到 ‘learning-cxx’… …...
# [游戏开发] [Unity游戏开发]3D滚球游戏设计与实现教程
在这篇文章中,我们将通过一个简单的3D滚球游戏的设计与实现,讲解游戏开发中的一些关键概念和技术。游戏的核心目标是让玩家控制一个小球在跑道上左右移动,躲避障碍物并尽量向前跑,直到成功或失败。通过这一过程,我们会涉及到功能点分析、场景搭建、主体控制、游戏机制等多…...
强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Transformer-LSTMNSGAII多目标优化算法,工艺参数优化、工程设计优化!(Matlab完整源码和数据) Transformer-LSTM模型的架构:输入层:多个变量作…...
Flutter中的事件冒泡处理
在 Flutter 中,GestureDetector 的点击事件默认是冒泡的,即如果嵌套了多个 GestureDetector,点击事件会从最内层的 GestureDetector 开始触发,然后依次向外层传递。如果你希望控制事件的优先级或阻止事件冒泡,可以使用…...
昇腾环境ppstreuct部署问题记录
测试代码 我是在华为昇腾910B3上测试的PPStructure。 import os import cv2 from PIL import Image #from paddleocr import PPStructure,draw_structure_result,save_structure_res from paddleocr_asyncio import PPStructuretable_engine PPStructure(show_logTrue, imag…...
基于 Python 的财经数据接口库:AKShare
AKShare 是基于 Python 的财经数据接口库,目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具,主要用于学术研究目的。 安装 安装手册见…...
电力场景红外测温图像绝缘套管分割数据集labelme格式2436张1类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2436 标注数量(json文件个数):2436 标注类别数:1 标注类别名称:["arrester"] 每个类别标注的框数&am…...
数字艺术类专业人才供需数据获取和分析研究
本文章所用数据集:数据集 本文章所用源代码:源代码和训练好的模型 第1章 绪论 1.1研究背景及意义 随着社会经济的迅速发展和科技的飞速进步,数字艺术类专业正逐渐崛起,并呈现出蓬勃发展的势头。数字艺术作为创作、设计和表现形式的…...
Java中json的一点理解
一、Java中json字符串与json对象 1、json本质 json是一种数据交换格式。 常说的json格式的字符串 > 发送和接收时都只是一个字符串,它遵循json这种格式。 2、前后端交互传输的json是什么? 前后端交互传输的json都是json字符串 比如:…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...
