当前位置: 首页 > news >正文

ORB-SLAM3源码学习:G2oTypes.cc: void EdgeInertial::computeError 计算预积分残差

前言

 这部分函数涉及了g2o的内容以及IMU相关的推导内容,需要你先去进行这部分的学习。

1.函数声明

void EdgeInertial::computeError()

2.函数定义 

涉及到的IMU的公式: 

c8d6f9e364ee4715af328c7733afd5d4.png

92c2e3e72ee54856a1a5e3f6243e1584.png

65e6370b4a4d4f63aa9d93bfd7355ff4.png

{// TODO Maybe Reintegrate inertial measurments when difference between linearization point and current estimate is too big// 当线性化点与当前估计之间的差异过大时,可能需要重新积分惯性测量值。// 在父类中使用了using,故这里可以直接使用保护成员变量// 获取因子图的顶点const VertexPose* VP1 = static_cast<const VertexPose*>(_vertices[0]);           //位姿Ticonst VertexVelocity* VV1= static_cast<const VertexVelocity*>(_vertices[1]);    //速度viconst VertexGyroBias* VG1= static_cast<const VertexGyroBias*>(_vertices[2]);    //零偏Bgiconst VertexAccBias* VA1= static_cast<const VertexAccBias*>(_vertices[3]);      //零偏Baiconst VertexPose* VP2 = static_cast<const VertexPose*>(_vertices[4]);           //位姿Tjconst VertexVelocity* VV2 = static_cast<const VertexVelocity*>(_vertices[5]);   //速度vj// 获取IMU偏置的三个分量并计算预积分的增量// _estimate是类中的一个成员变量,表示该顶点的当前估计值。const IMU::Bias b1(VA1->estimate()[0],VA1->estimate()[1],VA1->estimate()[2],VG1->estimate()[0],VG1->estimate()[1],VG1->estimate()[2]);const Eigen::Matrix3d dR = mpInt->GetDeltaRotation(b1).cast<double>();const Eigen::Vector3d dV = mpInt->GetDeltaVelocity(b1).cast<double>();const Eigen::Vector3d dP = mpInt->GetDeltaPosition(b1).cast<double>();const Eigen::Vector3d er = LogSO3(dR.transpose()*VP1->estimate().Rwb.transpose()*VP2->estimate().Rwb);const Eigen::Vector3d ev = VP1->estimate().Rwb.transpose()*(VV2->estimate() - VV1->estimate() - g*dt) - dV;const Eigen::Vector3d ep = VP1->estimate().Rwb.transpose()*(VP2->estimate().twb - VP1->estimate().twb- VV1->estimate()*dt - g*dt*dt/2) - dP;_error << er, ev, ep;
}

结束语 

以上就是我学习到的内容,如果对您有帮助请多多支持我,如果哪里有问题欢迎大家在评论区积极讨论,我看到会及时回复。

相关文章:

ORB-SLAM3源码学习:G2oTypes.cc: void EdgeInertial::computeError 计算预积分残差

前言 这部分函数涉及了g2o的内容以及IMU相关的推导内容&#xff0c;需要你先去进行这部分的学习。 1.函数声明 void EdgeInertial::computeError() 2.函数定义 涉及到的IMU的公式&#xff1a; {// TODO Maybe Reintegrate inertial measurments when difference between …...

Unity协程机制详解

Unity的协程&#xff08;Coroutine&#xff09;是一种异步编程的机制&#xff0c;允许在多个帧之间分割代码的执行&#xff0c;而不阻塞主线程。与传统的多线程不同&#xff0c;Unity的协程在主线程中运行&#xff0c;并不会开启新的线程。 什么是协程&#xff1f; 协程是一种…...

2024年【高压电工】最新解析及高压电工考试总结

高压电工考试是电力行业从业人员必须通过的资格考试之一&#xff0c;它不仅检验了考生对高压电技术的掌握程度&#xff0c;还考验了考生在实际操作中的安全意识和应急处理能力。为了帮助广大考生更好地备考&#xff0c;本文整理了10道2024年高压电工考试的最新解析及总结试题&a…...

OELOVE 6.0城市列表模板

研究了好久OELOVE6.0源码&#xff0c;一直想将城市列表给单独整出来&#xff0c;做地区排名&#xff0c;但是PHP程序都是加密的&#xff0c;非常难搞&#xff0c;做二开都是要命的处理不了&#xff0c;在这里有一个简单方法可以处理城市列表&#xff0c;并且可以自定义TDK&…...

如何将你的 Ruby 应用程序从 OpenSearch 迁移到 Elasticsearch

作者&#xff1a;来自 Elastic Fernando Briano 将 Ruby 代码库从 OpenSearch 客户端迁移到 Elasticsearch 客户端的指南。 OpenSearch Ruby 客户端是从 7.x 版 Elasticsearch Ruby 客户端分叉而来的&#xff0c;因此代码库相对相似。这意味着当将 Ruby 代码库从 OpenSearch 迁…...

day1数据结构,关键字,内存空间存储与动态分区,释放

小练习 在堆区空间连续申请5个int类型大小空间&#xff0c;用来存放从终端输入的5个学生成绩&#xff0c;然后显示5个学生成绩&#xff0c;再将学生成绩升序排序&#xff0c;排序后&#xff0c;再次显示学生成绩。显示和排序分别用函数完成&#xff08;两种排序方法&#xff0…...

1_linux系统网络性能如何优化——几种开源网络协议栈比较

之前合集《计算机网络从入门到放弃》第一阶段算是已经完成了。都是理论&#xff0c;没有实操&#xff0c;让“程序猿”很难受&#xff0c;操作性不如 Modbus发送的报文何时等到应答和 tcp通信测试报告单1——connect和send。开始是想看linux内核网络协议栈的源码&#xff0c;然…...

【问题记录】07 MAC电脑,使用FileZilla(SFTP)连接堡垒机不成功

项目场景&#xff1a; 使用MAC电脑&#xff0c;以子账号&#xff08;非root&#xff09;的形式登录&#xff0c;连接堡垒机CLB&#xff08;传统型负载均衡&#xff09;&#xff0c;使用FileZilla&#xff08;SFTP&#xff09;进行FTP文件传输。 问题描述&#xff1a; MAC电脑…...

前端报错npm ERR cb() never called问题

环境使用node版本v14.21.3&#xff0c;npm版本6.14.18 1.问题描述 1.1使用npm install后报错 npm ERR! cb() never called!npm ERR! This is an error with npm itself. Please report this error at: npm ERR! ? ? <https://npm.community>npm ERR! A complete log…...

康谋方案 | 多源相机数据采集与算法集成测试方案

目录 一、相机组成 二、多源相机采集与测试方案 三、应用案例分享 四、结语 在智能化技术快速发展当下&#xff0c;图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进…...

Graspness 端到端抓取点估计 | 环境搭建 | 模型推理测试

在复杂场景中实现抓取检测&#xff0c;Graspness是一种端到端的方法&#xff1b; 输入点云数据&#xff0c;输出抓取角度、抓取深度、夹具宽度等信息。 开源地址&#xff1a;https://github.com/rhett-chen/graspness_implementation?tabreadme-ov-file 论文地址&#xff1…...

交换机是如何避免数据碰撞的(详细解释 + 示例)

交换机是如何避免数据碰撞的&#xff08;详细解释 示例&#xff09; 1. 独立冲突域 交换机的每个端口都形成一个独立的冲突域。这意味着通过交换机连接的每个设备都拥有自己的通信通道&#xff0c;互不干扰。 示例&#xff1a; 假设一个交换机有4个端口&#xff0c;分别连接…...

魅族手机刷官方系统

从魅族官网下载固件 https://flyme.cn/firmware.html 找到自己的型号&#xff0c;里面有历史版本、最新版&#xff0c;按照需求下载。 下载的是update.zip&#xff0c;改名就不能升级了 方法1 直接点击下载的update.zip包就可以升级。 方法2 将文件移动到文件管理的根目录&a…...

女人想要的,是那份懂她的情绪价值

女人想要的&#xff0c;是那份懂她的情绪价值 在情感的世界里&#xff0c;我们常常听到这样的声音&#xff1a;“我不需要你帮我解决问题&#xff0c;我只希望你能懂我。”这句话&#xff0c;简单却深刻&#xff0c;它揭示了女性在情感需求上的一个独特面向——她们渴望的&…...

[python SQLAlchemy数据库操作入门]-10.性能优化:提升 SQLAlchemy 在股票数据处理中的速度

哈喽,大家好,我是木头左! 当处理大量数据时,如股票数据,默认的ORM操作可能会显得效率低下。本文将探讨如何通过一些技巧和策略来优化SQLAlchemy ORM的性能,从而提升其在股票数据处理中的速度。 1. 选择合适的数据类型 在定义模型时,选择合适的数据类型对于性能至关重要…...

【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析

【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析 在裸聊敲诈、虚假理财诈骗案件类型中&#xff0c;犯罪分子为了能实现更低成本、更快部署应用的目的&#xff0c;其服务器架构多为常见的初始化网站架构&#xff0c;也称为站库同体服务器&#xff01;也就是说网站应用…...

[python]使用 Pandas 处理 Excel 数据:分割与展开列操作

在数据处理的过程中&#xff0c;时常需要对 Excel 表格中的数据进行清洗与转换&#xff0c;下面介绍使用 Python 中的 Pandas 库对 Excel 文件中的数据进行操作&#xff0c;具体包括分割列、展开数据、清除空格以及格式转换等操作。 目标&#xff1a; 读取一个没有表头的 Exc…...

单片机的选择因素

在选择单片机型号时&#xff0c;需要根据具体的应用需求来选择合适的单片机。单片机&#xff08;Microcontroller Unit, MCU&#xff09;是一种将计算机的主要部分集成在一个芯片上的微型计算机&#xff0c;它通常包括处理器、存储器、输入/输出接口等。随着技术的发展&#xf…...

软件测试兼容性测试丨分布式测试与多设备管理

本文将从分布式测试的概念、重要性以及实施方法入手&#xff0c;紧接着探讨多设备管理的必要性和管理策略&#xff0c;最后分析其对软件测试行业的前景与影响。 分布式测试简介 什么是分布式测试&#xff1f; 分布式测试是指将测试任务分散到不同的计算机或者设备上进行&…...

Linux驱动开发(13):输入子系统–按键输入实验

计算机的输入设备繁多&#xff0c;有按键、鼠标、键盘、触摸屏、游戏手柄等等&#xff0c;Linux内核为了能够将所有的输入设备进行统一的管理&#xff0c; 设计了输入子系统。为上层应用提供了统一的抽象层&#xff0c;各个输入设备的驱动程序只需上报产生的输入事件即可。 下…...

生成剧本杀软件2025推荐,创新剧情设计工具引领潮流

剧本杀软件2025推荐&#xff0c;创新剧情设计工具引领潮流随着剧本杀市场的蓬勃发展&#xff0c;越来越多的创作者和玩家对剧本杀软件的需求日益增长。为了帮助大家在众多选择中找到最适合自己的工具&#xff0c;本文将推荐一款在2025年备受瞩目的剧本杀软件——量子探险AI漫剧…...

09_Neo4j知识体系之行业应用与最佳实践

09_Neo4j知识体系之行业应用与最佳实践 体系 行业应用层&#xff1a;金融反欺诈、智能推荐、社交网络分析、知识图谱构建、供应链优化关联能力&#xff1a;与图建模、路径分析、图算法、GraphRAG、实时决策和企业数据治理密切相关适用对象&#xff1a;解决方案架构师、行业数字…...

03_Elasticsearch知识体系之QueryDSL全文搜索过滤聚合实战

03_Elasticsearch知识体系之QueryDSL全文搜索过滤聚合实战 Elasticsearch知识体系 基础概念层数据存储层查询语言层【本文&#xff1a;Query DSL】搜索能力层数据处理层集群架构层开发集成层AI增强层行业应用层 关键词&#xff1a; Elasticsearch、Query DSL、match、term、boo…...

火电行业低成本私有化 RAG 部署

全球 AI 算力市场正处于一场看不见的“围城”之中。 当苹果被曝出为了备战 iOS 18 的 AI 功能&#xff0c;疯狂扫货数千台 NVLX H100 GPU 集群&#xff0c;导致全球高端算力卡供货周期延长至 52 周以上时&#xff0c;对于传统重资产运营的行业——如火电企业——而言&#xff…...

知网检测AI率90%,我用这个方法两天降到12%

三月底&#xff0c;距离论文提交还有8天&#xff0c;知网AIGC检测报告出来了&#xff1a;AI率90%。 我当时的反应就是愣在那里。90%&#xff0c;这意味着几乎整篇论文都被标红了。后来用两天时间&#xff0c;把AI率降到了12%。今天把这个过程完整记录下来&#xff0c;因为我知…...

解决RDK X5(ARM64架构)板卡Remote-SSH运行Antigravity AI崩溃(SIGILL):Samba网络盘本地挂载方案

一、前言最近在折腾 D-Robotics 的 RDK X5 板卡&#xff08;搭载 Sunrise X5 芯片&#xff0c;ARM Cortex-A55 架构&#xff09;。在尝试使用强大的 Antigravity IDE 通过 Remote-SSH 远程连接板卡进行开发时&#xff0c;遇到了一个极其头疼的问题&#xff1a;AI 侧边栏完全不可…...

如何用Smithbox零基础高效定制魂系游戏:从入门到精通指南

如何用Smithbox零基础高效定制魂系游戏&#xff1a;从入门到精通指南 【免费下载链接】Smithbox Smithbox is a modding tool for Elden Ring, Armored Core VI, Sekiro, Dark Souls 3, Dark Souls 2, Dark Souls, Bloodborne and Demons Souls. 项目地址: https://gitcode.c…...

Legacy-iOS-Kit全流程指南:让iPad mini 2重获新生的系统降级实践

Legacy-iOS-Kit全流程指南&#xff1a;让iPad mini 2重获新生的系统降级实践 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS…...

AGV小车如何实现多机调度

多机调度本质是“在地图通信基础上&#xff0c;由调度系统把‘多任务’合理拆给‘多台AGV’&#xff0c;同时做好路径规划和交通管制&#xff0c;避免冲突和死锁”。主流做法是“集中决策 分布式执行”的四层架构&#xff1a;接入层&#xff08;对接WMS/MES&#xff09;、调度…...

跨平台兼容计算引擎:解锁非NVIDIA GPU的CUDA计算潜能

跨平台兼容计算引擎&#xff1a;解锁非NVIDIA GPU的CUDA计算潜能 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 在高性能计算领域&#xff0c;硬件壁垒常常限制着开发者的创新空间——当你手中的Intel GPU无…...