ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面试准备

2022-09-16 06:00:08  阅读:204  来源: 互联网

标签:匹配 地图 矩阵 相机 面试 准备 点云 位姿


激光雷达跟随:pid控制:
答:激光雷达跟随主要包括两部分,检测节点使用激光雷达检测目标的距离和角度,在处理激光数据时首先需要消除噪声点,距离最近的激光点索引和周围的激光点距离差需要小于指定的
阈值,将检测到的距离和角度发送给下一个跟随节点,跟随节点在接受到角度和距离后使用pid来更新速度和角速度值,然后发送给cmd_vel。
p:小车会将检测到的距离和期望的距离的差作为pid的偏差,乘以一个系数来作为比例部分。
I:偏差与时间乘积累加后作为积分部分。
D:偏差与时间的乘积。 这里的时间指的是当前的时间和上一次调用的时间。

hector:
原理:激光点与已有的地图“对齐”。
使用当前帧与已经有的地图数据构建误差函数,使用高斯牛顿法得到最优解和偏差量,上一帧位姿作为迭代的初值。
激光点在转换到栅格地图后以最大的概率落在已有地图的障碍物上。那么就可以构造最小二乘问题。
构建一个多分辨率地图,目的是减弱陷入迭代计算的局部极值。
栅格地图更新采用bresenham划线,连线经过的栅格设置为free,也就是减小一个值,最后根据栅格值是否大于0判断是否占用。

cartgrapher:
使用栅格地图,地图中存储着占据概率,通过把点云投影到栅格地图,计算匹配得分,找到最合适的投影,作为位姿变换。
回环检测:激光点云投影到栅格地图,暴力搜索全局地图,分支定界加速,确定初值以后用非线性优化精修;

LOAM:
对点云提取特征,然后根据稀疏的特征来计算位姿变换。 构建边缘点到边缘线的距离、平面点到平面的距离目标函数,通过非线性优化的方式进行梯度下降求解。
建图部分采用map-map的匹配,后端对特征点周围的点云进行主成分分析(求解协方差矩阵的特征值和特征向量)确定边缘线和平面,计算特征点到线和面的距离。
里程计的匹配,是用两帧点云数据,使用最近临法寻找边缘线和平面。
建图的匹配,是用10帧点云数据,和10立方米范围内的整个地图匹配,特征点增加了10倍。

LeGO-LOAM:
预处理:点云分割,点云聚类和特征提取:分割为地面点和非地面点;对非地面点进行点云聚类:聚类低于30个点就当成噪声处理,地面点进行稀疏;
    将降噪和稀疏后的点云发布到下一个节点进行处理,从降噪和稀疏后的点云的点云中提取边缘点和平面点,边缘点提取自非地面点,平面特征点提取自地面点。
前端:提取特征,使用scan-to-scan推算两帧激光之间的相对位姿变换(使用两次LM优化),频率较高(10Hz)。
后端:scan-to-map,构建全局地图,获得世界坐标系下的位姿,频率较低。
贡献:解决一些非城市化道路或非平整道路上LOAM存在的问题
构建了目标函数以后,仍然采用LOAM中的列文伯格-马尔夸特优化算法,但是分了两阶段,第一阶段计算竖直维度的z,roll,pitch。
(根据地面的平面点来优化)
第二阶段计算水平维度的x,y,yaw,根据边缘点来优化。(类似于把一个O(n^6)的问题变成了两个O(n^3)的问题。)
不存储所有的传感器点云数据,而是只存储特征点集。
LOAM采取的是map-to-map的优化,最近的十帧点云与10立方米内的全局地图进行匹配,主成分分析,构建点到线、点到面的误差.
Lego-LOAM采取的是scan-to-map的优化,scan为当前帧点云中的特征点集;map有两种取法:第一种,和LOAM中一致,10立方米;第二种,
选一组时间上相近的特征点云,构建图优化问题。当前时刻的特征点云作为观测数据,当前位姿作为优化节点。
回环检测:
单独用一个线程运行。从历史位姿中寻找距离最近并且间隔大于30秒的位姿,找不到回环检测终止。找到了就将最近点对应的前后25帧点云组成一个submap。
然后用最新一帧的点云同这个子图进行ICP配准,获取位姿变换关系,就可以往因子图中添加一个新的约束。
默认偏移较小。如果偏移较大,就不能修正了。2.不具备重定位功能。因为这种算法的前提是需要知道自己的大致位置,和历史中附近的位置进行匹配,修正位姿。
保存的地图为稀疏后的点云地图,只能做定位不能做导航用。

回环检测:
检测当前位置是否曾经来过,即采用当前scan在历史中搜索。
方法:
特征匹配: 提取当前帧与过去所有帧的特征,并进行匹配
基于词袋模型: 词袋模型就是把特征看成是一个个单词,通过比较两张图片中单词的一致性,来判断两张图片是否属于同一场景.
目的:
1. 位姿的估计往往是由上一帧位姿解算当前帧位姿,递增求解导致相邻两帧之间的误差就会产生累计
2. 已有地图时位姿初始化,不知道当前帧初始位姿,也就不清楚在地图中哪个位置,无法做定位。
方法:大范围内穷举来确定初始位置(利用分支定界加速) + 非线性优化修正位姿

后端重定位:没有初始位姿,暴力匹配的范围变成了整个地图。 因此必须采用算法加速处理。:多分辨率地图+分枝定界操作

自动驾驶和机器人定位的区别:自动驾驶有gps和高精地图来实现全局定位,路途远导致不容易出现闭环检测。机器人不容易进行全局定位,但是室内情况下没有雨雾等
复杂环境,闭环检测条件容易出现。

最小二乘:模型的预测结果与实际的测量结果的偏差就是残差。非线性最小二乘的目的就是,调整模型的参数,使得总的残差平方和也就是目标函数最小。
最大似然估计:最大化所有测量的联合概率,本质上也可以转化为最小二乘问题。
最速下降法:只保留一阶项,增量的方向为:Δx∗=−JT(x),只要沿着反向梯度方向前进一个步长 λ,求得最快的下降方式,就是最速下降法。要达到最低点梯度下降法
    每次只从你当前所处位置选一个坡度最大的方向走一步,容易走出锯齿形状走了弯路。
牛顿法:如果保留二阶梯度信息,那么增量方程为:HΔx=−JT。牛顿法迭代优化时既利用了梯度,又利用了梯度变化的速度(二阶导数)的信息,牛顿法在选择方向时,
    不仅考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。牛顿法比梯度下降法看得更远一点,能更快地走到最底部。牛顿法需要计算 H 矩阵,比较困难。
Gauss-Newton:  f(x) 进行一阶的泰勒展开,求解增量方程: J(x)TJ(x)Δ=−J(x)Tf(x)。高斯牛顿法使用J(x)TJ(x)来近似代替海森矩阵来简化计算,但是J(x)TJ(x)只是半正定矩阵,
    导致算法不收敛。
    1.给定初始值x0​.
    2. 对于第 k 次迭代,求出当前的雅可比矩阵J(xk​) 和误差f(xk​)。
    3.求解增量方程: H Δ x = g 计算出步长Δ x.
    4.若 Δxk​ 足够小,则停止。否则,令 x k + 1 = xk​+Δxk​,返回 2
LM方法:在高斯牛顿法基础上将系数矩阵加上一个对角矩阵,使其正定,确保方程有唯一解。
求解线性方程:Cholesky分解   QR分解   SVD分解都是为了避免对系数矩阵求逆。

视觉SLAM框架及组成:视觉SLAM由前端(视觉里程计)、后端(位姿优化)、闭环检测、建图图4个部分组成

如何滤除外点: 法一:RANSAC方法。法二:先求出所有匹配点最小距离min_dist,小于2倍的距离作为内点。法三:
什么情况下需要进行点云滤波:大量数据需要下采样,噪声数据需要去除,因为遮挡等问题造成离群点需要去除。点云数据密度不规则需要平滑。

对于单目相机,E和F矩阵有何不同?
F和E描述的都是两帧间的极线约束,只不过坐标系不同:F描述的是同一空间点在不同帧之间像素坐标的几何约束关系,E描述的是归一化相机坐标之间的几何约束关系
E只与相机外参有关,F与内外参都有关。在相机只有纯旋转而没有平移时,此时t为0,E、F也将为0,导致无法求解R;此时可以使用单应矩阵H求旋转,但仅无平移t,无法三
角化求深度。

描述PnP过程:
通常输入的是上一帧相机坐标系下的3D点和这些3D点在当前帧中的投影得到的2D点,所以它求得的是当前帧相对于上一帧的位姿变换。都是基于已知世界坐标系3D点和对应
的归一化相机坐标系2D点求解相机运动的过程。

BA过程:光束平差法,根据相机的投影模型构造代价函数,利用非线性优化来求最优解,得到最优的相机位姿。

如何选择关键帧:
跟踪质量:比如当前帧跟踪到的特征点数大于一定阈值,如大于50个点。距离最近关键帧的距离是否足够远,距离上一关键帧的帧数是否足够多(时间),

单目SLAM初始化过程、单目SLAM整个过程
a) 初始化过程:是通过前两帧之间2D-2D匹配点,使用对极几何计算出相机的旋转、平移矩阵,并将该平移矩阵初始化为后续相机运动的单位,即初始化之后的运动都以初始化
时的平移作为单位1,是为了解决单目的尺度不确定性问题。且在初始化时,要保证两帧图片之间的运动必须包括平移(不能只是纯旋转),否则将导致求得的本质矩阵E为0,也
就无法分解得到相机位姿。
b) 单目SLAM流程是:初始化—PnP—三角化—PnP—三角化……。具体方法是依赖对极几何的相关知识,根据2D-2D匹配点对计算本质矩阵(或基本矩阵),并对其进行分解
得到相机运动,再依据三角化原理计算特征点距离。至此即得到3D-2D匹配点对,后续的相机位姿的估计就是PnP问题了、后续3D点的计算仍采用三角化方式。

SLAM中的绑架问题(重定位)
a) 绑架问题就是重定位,是指机器人在缺少之前位置信息的情况下如何进行重新定位、确定当前位姿。
词袋模型可以用于回环检测,也可以用于重定位,有什么区别
词袋模型在SLAM中的应用:当前帧与关键帧的特征匹配、重定位的特征匹配、回环检测的特征匹配;(第一个是后两个的基本原理,后两个是应用场景)
重定位:主要是通过当前帧与关键帧的特征匹配,定位当前帧的相机位姿。
回环检测:优化整个地图信息,包括3D路标点、及相机位姿、相对尺度信息。回环检测提供了当前帧与所有历史帧的关系。

欧式变换(刚体变换): 平移(translation)和旋转(rotation)。有3个自由度(θ,tx,ty)
仿射变换的变换矩阵:有6个自由度(a,b,c,d,e,f),4x4矩阵,平移2、旋转、放缩、剪切、反射

什么是紧耦合、松耦合?
融合框架的区别又分为紧耦合和松耦合,松耦合中视觉运动估计和惯导运动估计系统是两个独立的模块,将每个模块的输出结果进行融合,而紧耦合则是使用两
个传感器的原始数据共同估计一组变量。松耦合是在视觉和IMU各自求出的位姿的基础上做的耦合,紧耦合是使用图像和IMU耦合后的数据计算相机位姿。

RANSAC和鲁棒核函数都是为了解决出现outlier的问题,RANAC是从数据中选择正确的匹配进行估计,鲁棒核函数则是直接作用在残差上,
限制单个数据点对于误差函数的影响力。等于对最小二乘问题做了包装,通过降低错误匹配的权重,使得观测数据中的outlier影响不到最终的估计结果。




标签:匹配,地图,矩阵,相机,面试,准备,点云,位姿
来源: https://www.cnblogs.com/liuweiweitju/p/16698572.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有