自动驾驶-机器人-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

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos