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

【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--作业

0. 题目

在这里插入图片描述

1. T1 逆深度参数化时的特征匀速模型的重投影误差

参考常鑫助教的答案:思路是将i时刻的观测投到world系,再用j时刻pose和外参投到j时刻camera坐标系下,归一化得到预测的二维坐标(这里忽略了camera的内参,逆深度是在camera系下)
要计算的是i时刻和j时刻之间的补偿之后的u坐标的重投影误差,所以i时刻也要补偿,具体步骤见下,式(5)参照14讲P47的公式,已经用过很多次了。
在这里插入图片描述

2. T2 阅读Kalibr论文,总结基于 B 样条的时间戳估计算法流程

2.1 答题

论文题目: Unified Temporal and Spatial Calibration for Multi-Sensor Systems
多传感器的联合时空标定

B(ackground):标定时time offset和外参是分开标的(但实际上二者应该有联系)。
I(ntention):在不支持硬件或者软件上时间戳同步的多传感器上实现较高精度的多传感器联合时空标定。
M(ethod):提出一个estimator和一个框架来联合标定。
R(esult):精度高。
C(conclusion):好,有望拓展到其他的sensor联合标定。

论文contri(bution):

  1. 提出一种方法标定fixed时间延迟
  2. 推导一个estimator可以同时标时间戳和外参(rotation only)
  3. 数据集和真实数据上的结果证明estimator估计时间戳很准
  4. 准是因为很好的用了之前别人没用的加计数据

助教的学术话版本:

  1. 提出一种统一的使用批量、连续时间下的最大似然估计方法,估计多传感器之间的固定时间戳延迟。
  2. 提出一个可以同时校准相机和IMU之间位姿和时间戳延迟的估计模型。
  3. 这个估计模型应用在仿真数据和真实数据上,都有足够的灵敏度估算出时间戳延迟。
  4. 证明时间戳延迟估计明显受益于在加速度测量中所包含的附加信息。

论文主要理论(助教答案):
在这里插入图片描述

本文方法的主要贡献是把估计时间戳延迟和外参R整合到一个MLE(最大似然估计)框架中,而这样做的基础就是B样条方法,使用B样条可以 parameterize the motion of the device.具体到VI的标定就是下面的内容:

  • B样条参数化将IMU位姿转化为 C ( ) \bm C() C() funtion和旋转向量 φ ( t ) \varphi(t) φ(t)
  • 将平移表示为 t ( t ) \bm t(t) t(t)
  • 速度和加速度可通过 t ( t ) \bm t(t) t(t)求一二阶导而得,
  • 角速度也可由旋转向量推导而得

在这里插入图片描述

如此可以使用B样条参数化所有的构建residual所需的variable,对LSP进行优化求解即可优化出时间戳延迟旋转外参R

在这里插入图片描述

2.2 B样条拓展

下图参考博客:https://blog.csdn.net/weixin_43846627/article/details/104297637
在这里插入图片描述

关于B样条曲线函数,由控制顶点B样条基函数组成,是一系列解析基函数的加权和

原文中的式(1)
在这里插入图片描述
待估计变量被用B样条表示,而(1)中的 Φ ( t ) \bm \Phi(t) Φ(t)是基函数,其值为定值,所以优化待估变量就转化为优化权值向量 c \bm c c,时间戳是如此,其他的以此类推。

2.3 文中其他细节

  1. 可以根据物理性质和动态性给总残差加上正则项
    在这里插入图片描述

  2. B样条参数化可以使info mat的优化过程变稀疏

在这里插入图片描述

  1. 优化过程中信息矩阵中的各个部分与VIO各个参数的关系(这个看到很多论文针对其算法的有效性进行分析时,都研究过info mat)
    在这里插入图片描述

  2. temporal padding value 的选择影响优化的结果,理解为padding即给优化结果锚定一个优化范围,文中选择的是0.04senonds
    在这里插入图片描述

  3. 用最佳拟合线和理论线的斜率差和斜率差与0.5的RMS error,使用LSP来评估结果(这里没太看懂为什么理论值是0.5)
    在这里插入图片描述

  4. 结果表明:使用所有IMU数据进行时空联合标定(即同时使用了gyro和acc数据)的精度高,variance小,对比项是gryo only,acc only,分开标定这三项
    在这里插入图片描述

文献拓展:
[7]提出连续时间的batch估计time offset方法,basis function approach: P. T. Furgale, T. D. Barfoot, and G. Sibley, “Continuous-time batch estimation using temporal basis functions,” in Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), St. Paul, MN, 14-18 May 2012, pp. 2088–2095.
[14]B样条方法: R. H. Bartels, J. C. Beatty, and B. A. Barsky, An Introduction to Splines for use in Computer Graphics and Geometric Modeling. Los Altos, California, USA: Morgan Kaufmann Publishers Inc., 1987.

3. T3 推导时间戳延迟的雅克比

文章即北大的提出轨迹匀速模型:Weibo Huang, Hong Liu, and Weiwei Wan. “Online nitialization and extrinsic spatial-temporal calibration for monocular visual-inertial odometry”. In: arXiv preprint arXiv:2004.05534 (2020).

助教答案:

在这里插入图片描述

在这里插入图片描述

相关文章:

【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--作业

0. 题目 1. T1 逆深度参数化时的特征匀速模型的重投影误差 参考常鑫助教的答案:思路是将i时刻的观测投到world系,再用j时刻pose和外参投到j时刻camera坐标系下,归一化得到预测的二维坐标(这里忽略了camera的内参,逆深…...

Naocs配置中心配置映射List、Map、Map嵌套List等方式

一、配置映射List 1、常规逐个配置方式,示例如下: 代码: @Data @Configuration @ConfigurationProperties(prefix = "list-json-str") public class ConfListByJsonStr implements Serializable, InitializingBean {@ApiModelProperty("映射结果集")…...

如何通过CRM系统进行销售机会管理?

销售机会管理是在销售过程中对潜在客户的精细化管理,销售机会管理的本质是公司用于管理销售机会通用的工具和方法。对于希望建立长期客户关系的现代销售团队来说,CRM客户管理系统是必不可少的工具。那企业如何通过CRM系统进行销售机会管理? …...

解决idea启动tomcat控制台中文乱码

#1.tomcat日志中文乱码# 如图这种情况,一般在idea用tomcat跑一个web项目启动后tomcat日志在控制台打印出来会出现中文乱码的情况 解决方案1:tomcat的日志配置文件的编码修改,找到tomcat安装目录conf下的logging.properties,encod…...

vscode + cmake + opencv example

nice try on macos CMakeLists.txt cmake_minimum_required(VERSION 3.20) #添加OPENCV库 #指定OpenCV版本,代码如下 #find_package(OpenCV 3.3 REQUIRED) #如果不需要指定OpenCV版本,代码如下 find_package(OpenCV REQUIRED)#添加OpenCV头文件 includ…...

day57【动态规划】647.回文子串 516.最长回文子序列

文章目录 647. 回文子串516.最长回文子序列 647. 回文子串 力扣题目链接 代码随想录讲解 题意:给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的…...

分享vmware和Oracle VM VirtualBox虚拟机的区别,简述哪一个更适合我?

VMware和Oracle VM VirtualBox虚拟机的区别主要体现在以下几个方面: 首先两种软件的安装使用教程如下: 1:VMware ESXI 安装使用教程 2:Oracle VM VirtualBox安装使用教程 商业模式:VMware是一家商业公司,而…...

YOLOV5模型运行

1安装包 如果已经有了torch-cuda环境直接在环境下 pip install -r requirements.txt 2解决报错代码 raise ImportError("Failed to initialize: {0}".format(exc)) from exc ImportError: Failed to initialize: Bad git executable. The git executable must be …...

@Autowired和@Resource注解的区别和联系

直接看原文 原文链接: 【精选】Autowired和Resource注解的区别和联系【精选】 ------------------------------------------------------------------------------------------------------------------------------- 先说联系 联系 Autowired和Resource注解都是作为bean…...

设计模式类型

创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系…...

Android修行手册-实现利用POI将图片插入到Excel中(文末送书)

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…...

低功耗工业RFID设备应用

随着工业自动化的迅速发展,RFID技术也在工业领域得到了广泛的应用,在近距离非接触读写应用时,常常利用低功耗的工业RFID设备来进行识别,下面我们将详细介绍低功耗工业RFID设备的应用。 低功耗工业RFID设备具有功耗低、体积小、重量…...

# Oracle 库常见问题排查

Oracle 库常见问题排查 文章目录 Oracle 库常见问题排查查询数据库的相关信息查看正在执行的语句杀掉正在执行的sql查看未提交的事务查看锁表 查询数据库的相关信息 查看正在执行的语句 SELECT s.sid, s.serial#, s.username, s.status, s.sql_id, s.sql_child_number, sq.sq…...

矩阵乘积的迹对矩阵求导

说明 有时候为了输入方便,B和都代表B的转置。 矩阵的在线计算有个网站可以参考:Matrix Calculus dtr(AB)/dAB 下面用一个例子来证明。 dtr(ABA)/dAABAB 下面用一个例子来证明: 因为我们要求ABA的迹,所以为了简便,我们…...

IP 地址冲突检测工具

IP 冲突是一个术语,用于表示同一网络或子网中尝试使用相同 IP 地址的两个或多个设备的状态,这可能会导致发往特定主机的通信与其他主机混淆,因为两者都使用相同的 IP,为了避免这种情况,某些主机在发生 IP 冲突时会失去…...

js树形数组遍历练习,扁平化、格式化、获取节点父级

1.树形数组扁平化 数组扁平化的方式很多,这里主要是用递归处理,除此之外还有正则、扩展运算符等等 const list [{name:1,id:1,children:[{name:11,id:11,children:[{name:111,id:111}]},{name:12},]},{name:2,id:2,children:[{name:21,id:21,children:…...

c语言贪吃蛇项目的实现

ncurse的引入 ncurse的概念 ncurse(new curses)是一套编程库,它提供了一系列的函数,以便使用者调用它们去生成基于文本的用户界面。 ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。ncurses用得最多的地方是…...

IDEA运行前端vue项目,安装nodejs,以及配置

我在刚接手到一个项目的时候,不知道前端的代码的情况下,想要写后端代码,遇到问题 所以需要看前台代码,着手IDEA 开始 安装nodejs (为什么要安装nodejs呢,首先就是说需要npm, 而nodejs 内置npm) 1.从官网下载 nodej…...

SAP S4后的一些注意点(一)(更新中)

SAP 此外,我们必须确保 P10 中所有新的 Unicore 代码都是云就绪的。因此,在 ATC 中增加了一项新的检查(自定义),以证明代码的云就绪性。此外,我们还在 ADT 中安装了一个名为 ABAP Cleaner 的新插件&#xf…...

Python高级语法----深入asyncio:构建异步应用

文章目录 异步I/O操作示例:异步网络请求异步任务管理示例:并发执行多个任务使用异步队列示例:生产者-消费者模式在现代软件开发中,异步编程已经成为提高应用性能和响应性的关键技术之一。Python的asyncio库为编写单线程并发代码提供了强大的支持。本文将深入探讨asyncio的三…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...