時間同步
第一次談及時間同步,可能會有點懵逼。其實這在我們生活中是很常見的,小時候應該都用過那種電子手表,這種電子手表往往隔一段時間就會不准確,需要手動進行校准。這種手動校准的過程就可以認為是時間同步。想想看,若是沒有時間同步,那可真是亂了套了,想要在家看個世界杯,都不能及時的和別人分享進球的喜悅,這這這…是不是也太難受了…
好了,下面就重點來說說多傳感器的時間同步。多傳感器數據的時間同步是多傳感器信息融合的必備條件之一。實際上,由於各個傳感器獨立封裝並按照自己的時鍾基准運行,往往采樣頻率也不盡不同,這些將導致種采樣數據時間上不同步。針對這一問題有硬同步和軟同步兩種解決方案。硬件同步是指定制傳感器,使得多個傳感器能在同一時刻觸發采樣,例如多個傳感器安裝於同一個晶振下工作。軟件同步是指通過統一的主機給各個傳感器提供基准時間,使得傳感器每幀數據同步到統一的時間戳上。
1.1 軟同步
軟件同步的方法主要就是利用時間戳進行不同傳感器的匹配。通常是將各傳感器數據統一到掃描周期較長(頻率較小)的傳感器數據上。拿某4線激光雷達(采樣頻率約12.5Hz)和某相機(采樣頻率約30Hz)來說明,顯然記過雷達的周期大,則以激光雷達的采樣頻率為基准進行匹配,如下圖所示:
圖中綠色虛線框表示激光雷達采集頻率,藍色虛線框表示相機采集頻率,橫軸表示統一的時間戳。傳感器的每個采樣時刻記錄在統一的時間序列上。當激光雷達完成一次采樣時,尋找與該時刻最近鄰時刻的圖像,這樣便完成了兩種數據的時間匹配,如圖中紅色方框所示。
可以看出,這種時間同步的方式可能存在一些問題:上文紅色字體所述的最近鄰時刻較為模糊,若最近鄰的時刻同樣和激光雷達采樣時間差距較大,那最終的時間同步的效果肯定不好;另一方面,如若隨着需要進行時間同步的傳感器越來越多,那么匹配的難度必然加大,匹配的精度也大大折扣。這時候可能就需要別的方法來支持時間同步了,硬件同步就油然而生。
1.2 硬同步
硬同步主要是通過GNSS進行授時的,傳感器自身集成了GPS通信接口,可以接收一些數據和信號。目前使用較多的是使用PTP協議解決各傳感器設備時間同步的問題。
首先先來介紹一下PTP協議,其是基於數據包的時間同步協議。數據傳輸和時間同步使用同一網絡,它描述了如何在基於數據包網絡(比如以太網)上分配同步時間的機制。時鍾精度達到亞微秒級。PTP是一種主從式的時間同步系統,采用硬件時間戳,因此可以大幅減少軟件處理時間。同時PTP可運行在L2層(MAC層)和L4層(UDP層),運行在L2層網絡時,直接在MAC層進行報文解析,不用經過四層UDP協議棧,從而大幅減少協議棧駐留時間,進一步提高時間同步精度,對於自動駕駛系統來說非常友善。
好了,是不是沒怎么看懂,我也是。我覺得姑且可以認為這種方法還是蠻不錯的,可以較好的完成時間同步的任務。下面具體闡述通過PTP協議進行時間同步的過程。
還是先來對一些基本概念進行一個了解。設備中運行PTP協議的網絡端口稱為PTP端口,PTP主端口用來發布時間,PTP從端口用來接收時間。同時還定義了如下三種始終節點:
PTP通過在主從設備之間交互同步報文,並記錄下報文發送時間,從而計算網絡傳輸延遲和主從設備間時鍾的偏差。PTP定義了四條同步報文:Sync、Follow_Up、Delay_Req、Delay_Resp,精確同步過程如下。
1、PTP主端口向從端口發送Sync報文,同步記錄下Sync發送的時間t1。從端口收到Sync報文后,記錄下收到的時間t2。
2、緊接着主端口將t1時間放到Follow_Up報文發送給從端口,從端口收到此報文后就可以解析出t1,並由此得到第一個方程式:t1+網絡延時+時鍾偏差=t2。
3、從端口向主端口發送Delay_Req報文,同步記錄下Delay_Req發送的時間t3。主端口收到報文后,記錄下收到的時間t4。
4、緊接着主端口將t4時間放到Delay_Resp報文發送給從端口,從端口收到此報文后就可以解析出t4,並由此得到第一個方程式:t3+網絡延時-時鍾偏差=t4。
上文紅色公式有兩個未知數,兩個方程組,應用初中數學知識可以解出:網絡延時Delay=[(t2-t1)+(t4-t1)]/2,時鍾偏差Offset=[(t2-t1)-(t4-t3)]/2。
知道了Delay和Offset就能對傳感器的時間進行調整,從而進行傳感器的時間同步。
咻咻咻咻~~duang~~點個贊唄
參考文章: https://zhuanlan.zhihu.com/p/135938786
https://mp.weixin.qq.com/s/zE32DmNAVthRBlPXK9OA3w