自动驾驶-机器人-slam-定位面经和面试知识系列10之高频面试题(04)

本文主要是介绍自动驾驶-机器人-slam-定位面经和面试知识系列10之高频面试题(04),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个博客系列会分为C++ STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎和牛客也会同步更新,全网同号(lonely-stone或者lonely_stone)。
关于高频面试题和C++ STL面经,每次我会更新10个问题左右,每次更新过多,害怕大家可能看了就只记住其中几个点。(在个人秋招面试过程中,面试到后面,发现除了个人项目和实习经历外,个人所记录的内容基本能涵盖面试官能问到的)
(另外个人才疏学浅,如果所分享知识中出现错误,请大家指出,避免误导其他人)

1. ceres solver之三种求导方式

  • 自动求导AutoDiffCostFunction:
    定义仿函数:仿函数必须是模板函数,因为在ceres内部要用到,
    构造CostFunction:
  • 数值求导NumericDiffCostFunction:
    有时,无法定义自动求导的模板仿函数,比如参数的估计调用了无法控制的库函数或外部函数。 这种情况无法使用自动求导了,数值求导便可以派上用场了。
    数值求导用法类似,先定义仿函数,然后传递给NumericDiffCostFunction,然后去构造问题求解
  • 解析求导:如果使用解析求导的方式,就要自行计算残差和雅克比。

2. 如何推导卡尔曼滤波的卡尔曼增益?状态预测过程中的协方差矩阵怎么计算?

我们要估计的是状态变量,希望估计值和真实值越接近越好。进一步,我们假设这个误差是个正态分布,将原问题转化为误差的协方差矩阵的迹最小。然后,将协方差矩阵表达式推导出来,令其对卡尔曼增益的导数为0,进而将卡尔曼增益求出来。

协方差矩阵的对角线是各个状态的方差,其余变量是状态之间的协方差。

3. 描述卡尔曼滤波(Kalman FIlter)的工作原理,并介绍自己曾经用Kalman Filter做状态估计的场景和遇到的困难

  • 卡尔曼滤波就是在测量结果和经验推测两个都不准确的结论下找到则中的,最有可能接近真实值的过程。卡尔曼滤波的优点不在于它的估计的偏差小多少,而在于它巧妙的融合了观测数据与估计数据,对误差进行闭环管理,将误差限定在一定范围
  • 卡尔曼滤波的流程:五大公式,预测和更新。
  • 场景:VIO与LIO位姿融合,困难主要是调试协方差

4. 哪些手段可以提升重复纹理环境的定位感知能力?

  • 调整SGBM的参数,增大平滑项的权重
  • VO后端增加robust norm,降低feature误匹配带来的误差
  • 对原图进行高斯滤波,降低重复纹理的梯度
  • 对depth增加时域的滤波,降低depth误匹配的影响

5. 如何存储稀疏矩阵?特征值和特征向量?

特征值和特征向量是线性代数中的概念,主要用于描述矩阵的性质。特征值是一个标量,表示矩阵在一定条件下的特殊值;特征向量是一个向量,表示矩阵在特征值处的方向。

稀疏矩阵是指矩阵中非零元素的数量远小于矩阵的总元素数的矩阵。在存储稀疏矩阵时,通常采用稀疏矩阵存储格式,以节省存储空间和提高存取效率。 常用的稀疏矩阵存储格式包括:
压缩行存储(Compressed Row Storage,CRS)格式
压缩列存储(Compressed Column Storage,CCS)格式
关于行(Row-Based)存储格式
关于列(Column-Based)存储格式
关于阶段(Level-Based)存储格式

6. 边缘化的意义

vins中,维护了一个窗口,要保证窗口大小就一定要滑窗,而任意划掉帧的话,就会丢失被划掉帧的约束,于是就通过边缘化的方式留下约束,作为下一次的一个先验约束。

另外,VINS中的边缘化和G2O计算过程中的边缘化意义不太相同(处理方法一致)。G2O中对路标点设置边缘化是为了在求解过程中,先消去路标点变量,实现先求相机位姿,然后利用求解出来的相机位姿去计算路标点的过程,目的是为了加速求解,并非真的将路标点给边缘化掉;而VINS中则真正需要边缘化掉窗口中的最老帧或者次新帧。

7. 剔除离散点有哪些方法

  • ORB slam里面采用卡方分布( 卡方=E( pow((O-E),2)/E ),其中O是实际频数,E是期望频数)来剔除离散点。

  • vins中前端采用F基础矩阵(rejectWithF,八点法)剔除;后端是计算重投影误差进行剔除,若大于三个像素就是外点。

8. ORBSLAM单目和双目初始化的区别?

  • 单目初始化:匹配初始帧(连续两帧匹配特征点数为100以上)、位姿计算(在匹配点中使用RANSAC方法抽样选出最佳F和H,得出最佳位姿)、三角测量和地图创建、BA优化。单目初始化是一个对极约束问题。
  • 双目初始化:当前帧的左右目匹配数超过一定量即可(因为本帧位姿为初始0,而双目可以直接测特征点深度)

9. LM算法的流程,以及与高斯牛顿的区别

在这里插入图片描述

这篇关于自动驾驶-机器人-slam-定位面经和面试知识系列10之高频面试题(04)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107619

相关文章

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable