這份面試題整理自12家大廠的2022年秋招面試題。題目基本涵蓋了自動駕駛和機(jī)器人定位方向的主要知識點,包括慣性導(dǎo)航、點云、狀態(tài)估計、CV/VIO、C++等部分。 建議大家先自己答題,再對照參考答案~(參考答案是由5位行業(yè)算法專家整理并校對~),我們也專門建立了面試題交流群,進(jìn)群方式見文末。 目錄 1.慣性導(dǎo)航方向 2.點云算法方向 3.狀態(tài)估計方向 4.計算機(jī)視覺/vio方向 5.C++方向 6.參考答案(部分)
一、慣性導(dǎo)航方向1.IMU測量方程是什么?噪聲模型是什么? 2.慣導(dǎo)誤差模型是怎么來的?比如15維的卡爾曼濾波模型。 3.GPS雙天線安裝偏角是怎么標(biāo)定的? 4.多傳感器之間是怎么對時的? 5.GPS到來時是有延時的,而IMU給出的加速度和角速度是實時的,這種情況下怎么處理延時?怎么做的融合? 6.DR遞推的原理是什么?大概怎么去做? 7.組合導(dǎo)航卡爾曼濾波過程噪聲是如何調(diào)參的? 二、點云算法方向1.最近鄰問題有哪幾種典型解法? 2.怎么對KdTree進(jìn)行插入操作?怎么確定一個節(jié)點的分類面? 3.怎么對KdTree進(jìn)行Search By Range和Search By KNN操作? 4.舉出除了KdTree以外的近鄰計算方法(柵格、B樹、R樹、四叉、八叉樹等)。 5.給定一組點,如何計算其擬合平面?如何計算其擬合直線?解釋其方法的意義。 6.舉出常見的點云的registration方法。 7.說明ICP的詳細(xì)過程,要求說明代數(shù)解法和匹配問題解法。 8.匹配問題除了最近鄰還有什么解法?說明匈牙利算法、最大流/最小割、譜方法等其中一種。 9.解釋混合高斯模型含義。解釋EM算法的原理。 三、狀態(tài)估計方向1.從貝葉斯濾波器角度推出卡爾曼濾波器方程。 2.從增益最優(yōu)化角度推出卡爾曼濾波器方程。 3.從Cholesky方程推出卡爾曼濾波器方程。 4.解釋KF中的噪聲矩陣含義。運(yùn)動方程中估計噪聲是變大還是變?。啃拚匠讨泄烙嬙肼暿亲兇筮€是變??? 5.RTS與KF之間的聯(lián)系? 6.將卡爾曼濾波器推廣至EKF。 7.解釋數(shù)值矩陣求逆的幾種做法(QR、Cholesky、SVD)。 8.什么是Moore-Penrose逆?如何計算Moore-Penrose逆? 9.SVD是什么?SVD是如何求解的? 10.特征值是什么?如何計算矩陣的特征值與特征向量?什么樣的矩陣必然能對角化?不能對角化的矩陣的標(biāo)準(zhǔn)形式是什么?什么是Jordan標(biāo)準(zhǔn)形? 11.如何求解線性最小二乘解?如何求解零空間解?說明特征值方法和奇異值方法之間的聯(lián)系。 12.描述圖優(yōu)化和最小二乘之間聯(lián)系。畫出VIO中常用的圖優(yōu)化模型。 13.稀疏圖優(yōu)化的稀疏性體現(xiàn)在哪里?要求答出稀疏Schur和稀疏Cholesky之一。 14.描述濾波器與最小二乘之間的聯(lián)系?說明為什么卡爾曼濾波器可以看成兩個時刻間的最小二乘。 15.說明UKF、EKF和PF之間的關(guān)系。 16.解釋UKF中的Sigma采樣點關(guān)系。 17.解釋PF中的重要性重采樣的過程是如何做的。解釋輪盤賭原理。 18.解釋李群李代數(shù)在三維狀態(tài)估計中的作用。 19.流形是怎么定義的?流形在局部與R3同胚是什么含義?為什么說SO3是一個流形? 20.解釋SO3, SE3中的Exp和Log的原理。解釋BCH的原理和作用。 21.分別使用左右擾動模型,求解幾個常見的雅可比:
22.解釋四元數(shù)的更新與SO3的更新方式有何異同。 23. 說明四元數(shù)運(yùn)動模型與SO3運(yùn)動模型之間的聯(lián)系。 24. 解釋高斯推斷和概率學(xué)中邊緣化之間的關(guān)系。解釋邊緣化與卡爾曼濾波器之間的關(guān)系。 25. 什么是M估計?說明M估計與核函數(shù)之間的關(guān)系? 四、計算機(jī)視覺/VIO方向1.單應(yīng)矩陣、基礎(chǔ)矩陣、本質(zhì)矩陣的定義? 2.相機(jī)內(nèi)參和外參的含義?如果將圖像放大兩倍,內(nèi)外參如何變化? 3.徑向和切向畸變模型含義,魚眼模型含義(回答等距投影模型即可)? 4.極線是什么?對極約束是什么?描述了什么幾何關(guān)系? 5.八點法原理與過程。 6.預(yù)積分相比于傳統(tǒng)積分的差異在哪里? 7.預(yù)積分的測量模型和噪聲模型是什么?預(yù)積分對零偏是怎么處理的?為什么要這樣處理? 8.說明預(yù)積分的圖優(yōu)化模型。 9.解釋重投影模型和BA的原理。 10.說明PnP問題的解法。 11.說明RANSAC原理,討論存在的問題。 12.解釋單目VIO的初始化過程。需要估計哪些量?重力方向和尺度如何估計? 13.為什么單目VSLAM會有尺度漂移?如何解釋這種尺度漂移?現(xiàn)實當(dāng)中有沒有14.舉出幾種光流方法(LK,HS等)。說明LK光流的建模方式。 五.C++方向1.C++函數(shù)指針有哪幾類?函數(shù)指針、lambda、仿函數(shù)對象分別是什么? 2.如何利用謂詞對給定容器進(jìn)行自定義排序? 3.傳遞引用和傳遞值的區(qū)別?傳遞常引用和傳遞引用之間的區(qū)別?傳遞右值引用和傳遞引用之間的區(qū)別? 4.函數(shù)對象應(yīng)該通過什么傳遞? 5.什么是萬能引用?用途是什么? 6.什么是完美轉(zhuǎn)發(fā)?用途是什么? 7.std::unorded_map和std::map之間的差異是什么? 8.虛函數(shù)、虛表的原理 9.如何在c++中創(chuàng)建線程?如何在線程間同步? 10.互斥鎖是什么?用途是什么?條件變量又是什么?為什么要用條件變量? 11.智能指針和祼指針之間的差異?為什么要用指針的引用計數(shù)? 12.智能指針分哪幾種?std::unique_ptr, std::shared_ptr, std::weak_ptr各有何用途? 13.懸掛指針會導(dǎo)致什么問題?如何避免? 14.traits是什么?什么時候用traits?
參考答案(部分)一、慣性導(dǎo)航方向1. IMU測量方程是什么?噪聲模型是什么? 中值積分的情況下,IMU的測量方程為: IMU的隨機(jī)誤差一般包括以下幾類,各類誤差項及其原理如下(以陀螺儀為例): (1) 量化噪聲 量化噪聲是數(shù)字傳感器必然出現(xiàn)的噪聲,我們通過AD采集把連續(xù)時間信號采集成離散信號,在這個過程中,精度就會損失,損失的精度大小和AD采樣的精度有關(guān)(這里具體指的是模數(shù)轉(zhuǎn)換時,AD器件的位數(shù),位數(shù)越高采樣越精確),精度越高,量化噪聲越小。 (2) 角度隨機(jī)游走 陀螺敏感角速率并輸出時是有噪聲的,這個噪聲里面的白噪聲成分叫寬帶角速率白噪聲,我們計算姿態(tài)時,本質(zhì)上是對角速率做積分,這必然會對噪聲也做了積分。白噪聲的積分并不是白噪聲,而是一個馬爾可夫過程,即這一次的誤差是在上一次誤差的基礎(chǔ)上累加一個隨機(jī)白噪聲得到的。角度誤差所包含的這種馬爾可夫性質(zhì)的誤差就叫做角度隨機(jī)游走。 (3) 角速率隨機(jī)游走 從理解上和角度隨機(jī)游走一樣,角速率里面并不全是白噪聲,它也有馬爾可夫性質(zhì)的誤差成分,而這個誤差是由寬帶角加速率白噪聲累積的結(jié)果。 (4) 零偏不穩(wěn)定性噪聲 這應(yīng)該是大家再熟悉不過的一個誤差項了,如果一個陀螺只讓你用一個指標(biāo)來體現(xiàn)精度,那必然就是它了。但是這個指標(biāo)的理解上卻不像前幾個參數(shù)那樣直白。 我們可以先把它理解為零偏隨時間的緩慢變化,假設(shè)在剛開始時零偏大小是某個值,那么過一段時間之后,零偏便發(fā)生了變化,具體變化成了多少,無法預(yù)估,所以就要給他一個概率區(qū)間,來描述它有多大的可能性落在這個區(qū)間內(nèi),時間越長,區(qū)間越大。 實際上,如果你真的測的時間足夠長,會發(fā)現(xiàn)它也不會無限制增長下去,所以,這個對概率區(qū)間的描述只是近似有效,或者一定時間內(nèi)有效,由于這個有效時間比較長,所以我們一般仍然使用這種方式來描述,只是在理解上要知道這一點的存在。 (5) 速率斜坡 看到斜坡這種描述詞,我們一般會想它是不是一種趨勢項。實際上,它確實是趨勢性誤差,而不是隨機(jī)誤差。所謂隨機(jī)誤差,是指你無法用確定性模型去擬合并消除它,最多只能用概率模型去描述它,這樣得到的預(yù)測結(jié)果也是概率性質(zhì)的。而趨勢性誤差是可以直接擬合消除的,在陀螺里,這種誤差最常見的原因是溫度引起零位變化,可以通過溫補(bǔ)來消除。 加速度計同樣具有這5項誤差,而且原理一致,因此不再重復(fù) 2. 慣導(dǎo)誤差模型是怎么來的?比如15維的卡爾曼濾波模型。 可參考博客文章 < https://zhuanlan.zhihu.com/p/135230133> 或參考英文文獻(xiàn)< Quaternion kinematics for the error-state Kalman filter > 3. GPS雙天線安裝偏角是怎么標(biāo)定的? 通過車輛前行得到航跡角,同時雙天線自己可以計算出一個航向角,兩者之差為安裝偏角,具體擬合方法可以通過最小二乘或濾波算出。 4. 多傳感器之間是怎么對時的? 激光雷達(dá):大多數(shù)雷達(dá)如VLP-16等都提供基于pps脈沖和GPRMC信號的輸入接口,PPS和GPRMC信號可以由GNSS或IMU提供,或者由外部時鐘源提供。少數(shù)激光雷達(dá)還支持NTP/PTP同步,PTP的精度一般來說比NTP要高,這兩個信號都需要由外部時鐘源設(shè)備提供。 相機(jī):需要支持外部觸發(fā)曝光的型號,因為相機(jī)幀周期包括曝光時間和readout時間(整幀像素點讀出),一般來說readout時間是固定的,可以補(bǔ)償這個時間,相機(jī)的時間戳選擇為曝光的中間時間。 GNSS:GNSS可以從衛(wèi)星獲得高精度的時鐘信號,而且通常的GNSS都支持PPS脈沖以及GPRMC信號。 (1)使用GNSS作為時鐘源,將GNSS的PPS信號提供給LiDAR和一個開發(fā)板,開發(fā)板將給相機(jī)同時提供一個曝光的脈沖信號。CAMVOX采用這種方案。 (2)使用外部時鐘源,這種時鐘源通常支持PPS信號輸入,將GNSS的PPS傳給外部時鐘源,同時外部時鐘源可以使用PTP/NTP/PPS給LiDAR做時間同步,同時觸發(fā)相機(jī)開始曝光。外部時鐘源同時也可以使用PTP/NTP對主機(jī)進(jìn)行時間同步。 5. GPS到來時是有延時的,而IMU給出的加速度和角速度是實時的,這種情況下怎么處理延時?怎么做的融合? 先通過imu積分計算實時的軌跡,同時把imu數(shù)據(jù)緩存下來,當(dāng)GPS到來時,再根據(jù)GPS的時間戳去修正歷史時刻的數(shù)據(jù),然后重新積分該時刻后的imu。 6. DR遞推的原理是什么?大概怎么去做? DR,也叫航位推算,是在知道當(dāng)前時刻位置的條件下,通過測量移動的距離和方位,推算下一時刻位置的方法??梢愿鶕?jù)上一時刻位置速度角度,通過imu加速度二次積分得到平移量,角速度積分得到旋轉(zhuǎn)量來進(jìn)行DR,也可以通過輪速計和車輛運(yùn)動模型來進(jìn)行DR。 7. 組合導(dǎo)航卡爾曼濾波過程噪聲是如何調(diào)參的? 先通過GPS和imu的性能參數(shù)和頻率確定一個米級單位下的噪聲。之后在該噪聲參數(shù)下得到融合的軌跡,然后分別對兩個噪聲增大縮小分成幾組進(jìn)行調(diào)節(jié),觀察軌跡。最終選最平滑的一組軌跡的噪聲參數(shù),或者選跟真值比精度最高的一組的噪聲參數(shù)。 同時,我們除了準(zhǔn)備詳細(xì)答案,還為大家提供自動駕駛面試交流群,目前已經(jīng)開到4群了~點擊這里就可以來啦!http://fss./article/dMGIR984ad
|