自動駕駛為什麼需要時間同步
自動駕駛車輛在未知的動態環境中執行時,需要事先感知周圍環境、檢測障礙物資訊、構建出環境地圖,並在地圖中進行自我定位,這其中涉及到攝像頭、毫米波、鐳射、GPS、ECU等數十個模組、程序的資料精確的時間同步。
試想在高速行駛時,左側車道有一輛時速110km/h的車輛正準備超車變道,由於沒有時間同步,鐳射雷達300ms前的點雲資料與相機當前的影象資料融合。融合時鐳射點雲資料中障礙物位置資訊的置信度又高於影象資料,則決策單元會誤判斷為後車沒有超車行為,繼續當前的行車狀態或加速行駛,那麼下一秒則可能釀成“親人兩行淚”這一悲劇。
由於各個模組物理上的分散性,系統無法為彼此間相互獨立的模組提供一個統一的全域性時鐘,而由各個程序或模組各自維護它們的本地時鐘。即使所有本地時鐘在某一時刻都被校準,一段時間後,這些本地時鐘也會出現不一致。因為準確性和精度之間是有差異的:設定到錯誤時間的高質量手錶可能非常精確,但不準確。
除了本地時鐘的計時速率、執行環境存在不一致性,各種感測器的取樣頻率也不一致,例如鐳射典型取樣頻率為10HZ,相機為30fps,高精度組合導航為100HZ,且一臺車上存在多個鐳射雷達、相機。沒有準確的時鐘同步,各感測器在哪一幀進行融合,在哪裡進行插值都沒法進行判斷。兩個感測器即使取樣頻率一致,其每幀資料的取樣點也一般不一致。透過設定唯一的時鐘主機給各類感測器和執行機構提供相同的基準時間,但是由於各感測器裝置時鐘晶振及資料傳輸路徑不同,需要根據提供的基準時間校準各自的時鐘時間,實現時間同步。因此催生了包括NTP(網路時間協議)與1588v2 PTP(精確時間協議)等用於互聯裝置授時協議、以及透過GNSS接收機進行時間同步的方法。
常用授時解決方案
基準時間主要由以下幾種來源:本地定時器、無線廣播發射器、LTE訊號、網路授時、GNSS訊號等。
本地定時器
本地時鐘易於實施,並且只要有足夠的電量就可以隨時使用。但其精度和準確性有一定的限制,具體取決於工作頻率、晶振的品質因數、功耗、電源以及重要的環境變化,尤其是溫度。此類時鐘還需要初始化以設定時間。
常見的32 kHz低頻時鐘非常適合保持近似的時間觀,使用者可以使用高頻、高質量、溫度補償型晶振為裝置提供高精度的時基,同時最大程度地降低授時抖動。
無線廣播發射器
長期以來,無線發射器一直被用來為廣域裝置提供授時訊號,尤其是Rugby時鐘,後來被遷移並在英國更名為MSF,在美國更名為WWVB,在德國更名為DCF77。除了不受發射機和接收機之間的傳播延遲影響的頻率參考外,它們還廣播多種調製訊號以指示秒數和絕對授時。
當用於同步多個裝置時,可能需要考慮從發射機到裝置的傳播時間之差(Δt = (dA-dB)/C,其中c是光速)。對於物聯網裝置分佈在較小區域(比如相隔100米)或不需要高精度(比如<1毫秒)的應用,可以安全地忽略此誤差影響。
LTE訊號
蜂窩通訊無線訊號(包括來自LTE基準站的訊號)甚至在室內都可以廣泛使用,並且隨著低功耗廣域網路的部署,該訊號可能還會越來越多地應用於地下設施等以前不可用的位置。對於蜂窩通訊調變解調器來說,將此類無線訊號用於授時應用以及通訊顯然是很方便的。
蜂窩通訊訊號可提供出色的短期穩定性以及良好的長期穩定性,並可為連線到同一基準站的靜態分散式物聯網感測器網路提供相對精確的授時。視蜂窩通訊系統設計而定,蜂窩通訊訊號可能會更準確地或不太準確地連結到絕對時間。舉例來說,CDMA和TDMA系統通常使用GNSS準確地與絕對時間同步,而GSM網路的控制則不那麼嚴格,而LTE基準站的絕對授時取決於網路配置。
與廣播無線訊號相同,蜂窩通訊基準站可以傳送指示傳輸絕對時間的訊息,每個裝置在收到該訊息時會給出一個絕對時間(取決於訊號從基準站傳播的距離)。
網路授時
建立網際網路連線後,授時服務和協議(例如NTP、PTP)可用於為調變解調器裝置提供授時服務。此外,在某些為GNSS接收機提供加速定位的服務中,也可能附帶提供授時。作為u-blox蜂窩通訊調變解調器的CellLocate功能的一部分,絕對授時資訊可透過蜂窩通訊網路提供。
GNSS訊號
GNSS訊號可為IoT應用提供原子鐘級別的授時精度。GNSS訊號的授時單元可根據來自搭載原子鐘的GNSS衛星的訊號確定其 x、y 和 z 座標以及絕對時間,因此已成為同步行動通訊網路基礎設施的首選解決方案,並且非常適合廣域應用。
網路時間協議NTP
NTP協議全稱網路時間協議(Network Time Protocol)。它的目的是在國際網際網路上傳遞統一、標準的時間(國際標準時間UTC)。具體的實現方案是透過原子鐘、天文臺、衛星或Internet上獲取UTC時間,這樣就有了準確而可靠的時間源。NTP同時同步指的是透過網路的NTP協議與時間源進行時間校準。前提條件是時間源輸出必須透過網路介面,資料輸出格式必須符合NTP協議。區域網內所有的PC、伺服器和其他裝置透過網路與時間伺服器保持同步,NTP協議自動判斷網路延時,並給得到的資料進行時間補償,從而使區域網裝置時間保持統一精準。
NTP客戶端發出時間請求,與時間伺服器交換時間,這個交換的結果是,客戶端能計算出時間的延遲,它的彌補值,並調整與伺服器時間同步。通常情況下,在設定的初始,在5至10分鐘內有6次交換。 一旦同步後,每10分鐘與伺服器時間進行一次同步,通常要求單一資訊交換。冗餘伺服器和不同的網路路徑用於保證可靠性的精確度,除了客戶端/伺服器商的同步以外,NTP還支援同等計算機的廣播同步。NTP在設計上是高度容錯和可升級的。
GPRMC+PPS
自動駕駛車輛一般使用衛星進行授時,GNSS接收機工作後,會透過一根單線輸出一條時間週期為1s的同步脈衝訊號PPS,脈衝寬度5ms~100ms,同時會透過標準串列埠輸出GPRMC標準的時間同步報文。
同步脈衝前沿時刻與GPRMC報文的傳送在同一時刻,誤差為ns級別,誤差可以忽略。GPRMC是一條包含UTC時間(精確到秒)、衛星數量、經緯度等資料的標準格式報文。PPS秒脈衝為物理電平輸出,接收及處理PPS訊號的時間在ns級別,依舊可以忽略。但GPRMC資料一般透過波特率9600的串列埠傳送,傳送、接收、處理時間在ms級別,是時間同步的關鍵。
使用PPS+GPRMC進行時間同步的原理
(1)裝置收到PPS秒脈衝訊號後,將內部以晶振為時鐘源的系統時間裡的毫秒及以下時間清零,並由此開始計算毫秒時間。
(2)當收到GPRMC資料後,提取報文裡的時、分、秒、年、月、日UTC時間。
(3)將收到秒脈衝到解析出GPRMC中UTC時間所用的時間tx,與UTC整秒時間相加,同步給系統時間,至此已完成一次時間同步。下一秒再進行相同的過程,每秒準確校準一次。
為什麼不把GNSS接收機輸出的PPS和GPRMC直接接到系統中需要時間同步的各個模組呢?
(1)PPS是一個低功率的脈衝電平訊號,驅動電流少的只有0.5mA,多的也就20mA,帶幾個模組還行,十幾個就很困難了。
(2)PPS是無遮蔽的單線脈衝訊號,十幾根PPS線穿梭在車內,極易受到車內惡劣電磁環境的干擾,屆時根本無法區分出是干擾脈衝還是同步脈衝。
(3)GPRMC透過RS232串列埠(3根線)傳送同步報文,RS232是一種1對1的全雙工通訊形式,也可以透過主從形式實現1對幾資料傳輸。但一對十幾,實屬罕見,只能透過試驗驗證到底可不可行,但至少線束工程師是打死不願答應的。
(4)當時鍾源丟失的時候,所有需要時間同步的裝置都一下子沒有了主心骨,每個小弟都可以自立門戶,沒有二當家的及時站出來,主持大局。這對功能安全要求極高的自動駕駛系統來說,根本無法接受。
所以通常需要中央網管作為二當家,當時鍾源丟失時(室內、隧道等衛星訊號丟失場景),二當家依靠內部時鐘源自行走時,二當家的內部時鐘源可以選擇市場上常見的壓控晶振、溫補晶振、恆溫晶振、銣原子鐘等。壓控晶振相對來說是守時精度最差的,價格也相對應的最便宜,守時精度一天誤差幾秒;溫補晶振比壓控晶振的守時精度稍微能好點,誤差在1s/天;恆溫晶振會比溫補晶振稍微貴一些,指標4ms/天;銣鍾會比恆溫晶振價格貴些,銣鐘的守時指標是5ms/年。設計人員可以根據使用者實際應用環境要求來選擇內建時鐘源,不是越貴越好,合適的才是最好的。
高精度時間同步協議PTP
PTP 是一種高精度時間同步協議, 一般在實際使用中,現有的NTP可以達到5ms以內的精度,PTP可以到達亞微秒級精度,有資料說可達到30納秒左右的偏差精度,但需要網路的節點(交換機)支援PTP協議,才能實現納秒量級的同步。
PTP與NTP主要區別:
PTP是在硬體級實現的,NTP是在應用層級別實現的。
PTP 是主從同步系統,採用硬體時間戳,並配合一些對NTP更高精度的延時測量演算法,可以大幅減少軟體處理時間。
PTP可執行在L2層(MAC層)和L4層(UDP層),執行在L2層網路時,直接在MAC層進行報文解析,不用經過四層UDP協議棧,從而大幅減少協議棧駐留時間,提高同步的精確度。
PTP 可以承載在 UDP 上時 , 軟體可以採用 SOCKET 進行收發 UDP包 , 事件訊息的 UDP 埠號 319 , 普通訊息的組播埠號為 320 ,但其精度就大大降低。
在物理硬體要求主從端都是PTP裝置,且網路不能太大,其中間經過的交換機裝置也必須支援PTP協議,並且主從時間網路鏈路唯一,不存在交替的PTP通道。
PTPv2 採用相對時間同步機制。一個參與者被選作主時間鍾,其將傳送同步資訊到從站。主站將傳送同步報文到網路。所有的從站計算時間延遲。裝置中執行PTP協議的網路埠稱為PTP埠,PTP主埠用來發布時間,PTP從埠用來接收時間。
PTP同時定義了三種時鐘節點:邊界時鐘節點、普通時鐘節點、透明時鐘節點。
邊界時鐘節點(BC,Boundary Clock):有一個以上PTP通訊埠的時鐘,其中一個用來同步上游裝置時間,其餘埠用來向下遊裝置傳送時間。當邊界時鐘節點的上游時間同步裝置是GNSS接收機時,此時的邊界時鐘節點就是一個主時鐘節點(最優時鐘)。
普通時鐘節點(OC,Ordinary Clock):只有一個PTP通訊埠的時鐘是普通時鐘,用來同步上游時鐘節點的時間。
透明時鐘節點(TC,Transparent clock):與BC/OC相比,BC/OC需要與其它時鐘節點保持時間同步,而TC則不與其它時鐘節點保持時間同步,收到什麼時間,轉發什麼時間。TC有多個PTP埠,但它只在這些埠間轉發PTP協議報文並對其進行轉發延時校正,而不會透過任何一個埠同步時間。TC包括以下兩種型別:
E2ETC(End-to-End TransparentClock,端到端透明時鐘):直接轉發網路中非P2P(Peer-to-Peer,點到點)型別的協議報文,並參與計算整條鏈路的延時。
P2PTC(Peer-to-PeerTransparent Clock,點到點透明時鐘):只直接轉發Sync報文、Follow_Up報文和Announce報文,而終結其它PTP協議報文,並參與計算整條鏈路上每一段鏈路的延時。
PTP透過在主從裝置之間互動同步報文,並記錄下報文傳送時間,從而計算網路傳輸延遲和主從裝置間時鐘的偏差。PTP定義了四條同步報文:Sync、Follow_Up、Delay_Req、Delay_Resp。
Sync: 同步訊息,由主裝置傳送給從裝置,訊息中可以包含Sync傳送時間標籤,也可以在後續的Follow UP 訊息中包含;
Follow Up:用於傳送Sync訊息的傳送時間;
Delay Req:請求對端返回接收到Delay Req訊息時的時間標籤,時間標籤嵌入在響應訊息Delay Resp;
Delay Resp:對 Pdelayreq 的響應,可以帶傳送時間標籤,如果沒有帶由隨後的Pdelay RespFollow Up 傳送;
精確同步過程如下
(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。
兩個未知數,兩個方程組,應用初中數學知識可以解出:
網路延時=[(t2-t1)+(t4-t1)]/2,
時鐘偏差=[(t2-t1)-(t4-t3)]/2。
在自動駕駛系統中,智駕域控制器因為直接連線GNSS接收機(或內建),而GNSS又是絕佳的時鐘源,因此智駕域控制器自然而然成為主時鐘節點,中央閘道器域控制器透過車載乙太網主幹網串聯起其它域控制器,自然而然成為邊界時鐘的最佳選擇,這樣在時鐘源丟失的時候,邊界時鐘節點同步主時鐘節點的系統時間,仍然可以保持整個全域架構內相對時間一致。 其它域內感測器、執行器的時間同步需求,若沒有,此域控制器設計成普通時鐘節點即可。如有,可以設計成邊界時鐘,以保證無時鐘源時的相對時間統一。
基於乙太網裝置的時間同步方案已經完善,而對於非車載乙太網裝置但有非常強烈同步需求的相機,我們還得特殊處理一下。將相機設定為外觸發模式,透過主控給相機外觸發脈衝訊號。相機拍照時,曝光時刻也會產生脈衝訊號傳送給主控,主控記錄此時系統時間,並將時間戳資料放到相機的影象資料裡。