時間戳和采集時間之間的差距:

最佳狀態(tài):數(shù)據(jù)被采集的那一刻被打上時間戳
可接受:數(shù)據(jù)采集和被打時間戳之間有固定時延
困難:變化的時延
時間同步

最佳:硬件同步
可接受:不同的傳感器有相同的時鐘(例如,在系統(tǒng)時鐘下運行),但是不同傳感器采集頻率不同
困難:不同傳感器有不同的時鐘
時間校準
1)首先保證時鐘源是一致的
因為時鐘源都有鐘漂,而且每個時鐘源鐘漂不同,所以即使把各個傳感器時間戳在初始時刻對齊,運行一段時間之后,之前對齊的結(jié)果就會偏離。解決這個問題的辦法就是在硬件上把時鐘源統(tǒng)一,常見的做法是做一個脈沖發(fā)生器,所有傳感器都被這個脈沖觸發(fā),每次觸發(fā)都校正一次自己的時鐘,這樣就可以消除時鐘源的累計誤差。
在自動駕駛的傳感器配置里,GNSS是一個必備的傳感器,它自帶秒脈沖發(fā)生器,所以可以直接使用。而且GNSS信號能夠達到定位要求時,自身時鐘也會受到衛(wèi)星上原子鐘的校正,從而進一步提高精度。大家可能對GNSS的定位功能比較熟悉,其實它的授時功能是和定位同等重要的功能,現(xiàn)在很多系統(tǒng)里都已經(jīng)改變說法,不再把這類東西只稱作定位系統(tǒng),而是稱作定位授時系統(tǒng)。感興趣的可以自行去搜一些資料看看。
在解決硬件同步以后,我們只能保證?時間差沒有累計漂移了,但是各個傳感器的采集時刻并不是相同的。比如,在kitti數(shù)據(jù)集了,雷達和IMU都是10HZ,也就是100ms的周期,但是雷達每次采集的時間要比IMU慢個幾十毫秒,當(dāng)我們想獲得在雷達采集時刻的車體角速度和加速度信息時,就要根據(jù)雷達前后時刻的IMU信息,通過插值計算出一個等效值(勻速模型),這就是獲取同一時刻信息的含義。由于kitti已經(jīng)做好了第一步,所以我們本次的工作就是圍繞第二步來做的。
考慮延遲和無序測量的濾波器處理:
(延遲和無序是指,帶有t1時刻時間戳的數(shù)據(jù),在t2時刻才被我們系統(tǒng)接收,但時間戳本身沒有任何問題)
(而標(biāo)定中,我們對時間的標(biāo)定,實際是要解決這個時間戳和真正的采集時間不一樣的問題)
由于傳輸和計算延遲,必須考慮到測量延遲和無序。
解決的辦法是,我們按照時間順序維護兩個濾波器和一個固定長度的緩沖區(qū)(緩沖區(qū)里存放是濾波器狀態(tài)、濾波器測量值和IMU數(shù)據(jù))。
濾波器-1:計算出實時PVA(位置 速度和方向)及其協(xié)方差通過執(zhí)行時間更新并在接收到新的IMU數(shù)據(jù)時即時整合IMU數(shù)據(jù)。
濾波器-2對延遲測量進行處理。
0)當(dāng)接收到t1處的新測量數(shù)據(jù)時,我們執(zhí)行以下操作。
1)從緩沖器中獲取t1處的濾波狀態(tài)。更新濾波器-2中的濾波狀態(tài)。
2)在濾波器-2中執(zhí)行t1處的測量更新。
3)利用緩沖區(qū)中的IMU數(shù)據(jù)在filter-2中執(zhí)行時間更新,直到到達當(dāng)前時間(tnow)。或者我們在t2處停止(如果在緩沖區(qū)的t2處發(fā)現(xiàn)了另一個測量,其中t2比t1晚。這樣t1和t2處的測量數(shù)據(jù)就會以錯誤的順序接收)
4)如果t2處有另一個測量,在t2處執(zhí)行測量更新。然后重復(fù)步驟3,發(fā)現(xiàn)更多的測量結(jié)果接收順序錯誤。
5)當(dāng)我們完成時間更新,到達當(dāng)前時間時,過濾器的狀態(tài)在緩沖區(qū)中,過濾器-1的狀態(tài)根據(jù)新的結(jié)果從t1開始更新到當(dāng)前時間。

注意 這里的測量,指lidar的數(shù)據(jù)或gnss的數(shù)據(jù)(或者其他傳感器),也就是圖里面的矩形和星號。
現(xiàn)在我們來嘗試進行這個過程:
濾波器1實時的根據(jù)新來的imu測量對其狀態(tài)和協(xié)方差進行更新。
時間來到t1時,lidar得到了數(shù)據(jù),這個數(shù)據(jù)被打上了t1的時間戳,但并不是在t1就被融合系統(tǒng)接收到,而是在之后的時刻t3被接受
時間來到t2,gnss得到了數(shù)據(jù),這個數(shù)據(jù)被打上了t2的時間戳,但并不是在t2就被融合系統(tǒng)接收到,而是在之后的時刻t4被接受
其中t4反而比t3更前。
現(xiàn)在開始:
剛才的0)當(dāng)接收到t1處的新測量數(shù)據(jù)時
什么叫接受到t1處的新測量數(shù)據(jù)呢?實際上 我們是在t3時刻接收到這個數(shù)據(jù),我們發(fā)現(xiàn)這個數(shù)據(jù)的時間戳是t1,這叫“接收到t1時刻的新測量數(shù)據(jù)”,此時當(dāng)前時刻為t3
1)從緩沖器中獲取t1處的濾波狀態(tài)。更新濾波器-2中的濾波狀態(tài)。
現(xiàn)在時刻是t3,但我們接收到了t1時刻的數(shù)據(jù),所以我們從緩沖器里拿一下之前t1時候的濾波器狀態(tài),把這個狀態(tài)給濾波器2
2)在濾波器-2中執(zhí)行t1處的測量更新。
用剛才提取到的t1時刻的濾波器狀態(tài),在其基礎(chǔ)上使用新拿來的測量,對濾波器狀態(tài)進行更新
3)利用緩沖區(qū)中的IMU數(shù)據(jù)在filter-2中執(zhí)行時間更新,直到到達當(dāng)前時間(tnow)。
用剛才更新后的濾波器狀態(tài),從緩沖區(qū)里拿一下t1之后的那些imu數(shù)據(jù),進行imu數(shù)據(jù)的更新(實際上應(yīng)該叫預(yù)測),直至一步步的到達當(dāng)前時間t3,如果一路順利,那就成功,但現(xiàn)在,在一路預(yù)測上我們發(fā)現(xiàn),當(dāng)預(yù)測到t2時,這里還有一個傳感器的測量。這意味著,我們發(fā)現(xiàn)了一對測量數(shù)據(jù)被以錯誤的順序接收,所以我們不要直接預(yù)測到當(dāng)前時間t3,而是預(yù)測到t2時刻就停止
4)如果t2處有另一個測量,在t2處執(zhí)行測量更新。然后重復(fù)步驟3,發(fā)現(xiàn)更多的測量結(jié)果接收順序錯誤。
t2這里有一個測量,所以我們用剛才濾波器預(yù)測到t2時刻的狀態(tài),在其基礎(chǔ)上用t2時刻的測量對濾波器狀態(tài)進行更新,然后重復(fù)步驟三
5)當(dāng)我們完成時間更新,到達當(dāng)前時間時,過濾器的狀態(tài)在緩沖區(qū)中,過濾器-1的狀態(tài)根據(jù)新的結(jié)果從t1開始更新到當(dāng)前時間。
我們結(jié)束了這個循環(huán),現(xiàn)在,濾波器2也更新到當(dāng)前時間t3了,我們將這個狀態(tài)存在緩存區(qū)里,并且把濾波器1從t1到t3的狀態(tài)都更新一遍
最終,濾波器1始終是實時的更新著,每當(dāng)我們收到了一個測量(比如t3時刻),我們就用濾波器2(我更愿意稱其為「暫存濾波器」)來進行測量的更新,從而就可以解決傳感器接受的時延甚至是無序問題