時(shí)間不同步的危害
如果一輛無人車上,裝了很多傳感器,如果各個(gè)傳感器的時(shí)間是孤立的,比如傳感器甲在自身時(shí)鐘的T0時(shí)刻,發(fā)現(xiàn)有個(gè)目標(biāo)出現(xiàn);于此同時(shí),傳感器乙也看到這個(gè)目標(biāo),但傳感器乙會根據(jù)自身時(shí)鐘,認(rèn)為當(dāng)前是T1時(shí)刻,于是,當(dāng)數(shù)據(jù)融合時(shí),系統(tǒng)會錯亂,到底是哪個(gè)時(shí)刻,出現(xiàn)的目標(biāo)?如果對兩個(gè)傳感器的時(shí)鐘都加以采信,如果這個(gè)目標(biāo)是個(gè)移動的目標(biāo),那么, 系統(tǒng)會看到兩個(gè)目標(biāo),也就是會出現(xiàn)“鬼影”。
時(shí)間同步的解決辦法
毫秒級同步: 多采用NTP服務(wù)的方式,一般服務(wù)器和電腦就是這么同步的。
納秒級同步:多采用統(tǒng)一時(shí)鐘源的方式,而統(tǒng)一時(shí)鐘源中,又多用GNSS時(shí)間對齊。(或者可以直接用GNSS接收機(jī)對齊時(shí)間)
如果你的電腦,或者你的智能手表,想獲取當(dāng)前準(zhǔn)確的時(shí)間,只要對公網(wǎng)上的某個(gè)NTP服務(wù)器,發(fā)出一個(gè)基于UDP的ntp request,遠(yuǎn)程的NTP服務(wù)器,就能給你返回一個(gè)含時(shí)間reply,這個(gè)時(shí)間經(jīng)過客戶端對網(wǎng)絡(luò)時(shí)延的評估修正,被計(jì)算出來,它就是你所需要的時(shí)間。這適用于對時(shí)間精度不那么敏感的用戶。
如果你需要非常精確的同步(比如無人車,毫秒級的時(shí)間失步將是災(zāi)難性的),那么NTP顯然不能滿足需求,這時(shí)候,你就需要考慮采用統(tǒng)一時(shí)鐘源的方式。
統(tǒng)一的時(shí)鐘源設(shè)備
統(tǒng)一的時(shí)鐘源設(shè)備在通訊/機(jī)場和電力行業(yè)中,應(yīng)用非常之廣泛,特別是光傳輸和4G基站,她們對時(shí)間同步的要求絲毫不亞于無人車傳感器,甚至有過之而無不及,因此,我們可以參考下她們怎么做的。
她們一般采用統(tǒng)一時(shí)鐘源設(shè)備(一般幾U高,安裝在機(jī)架上),該設(shè)備由GPS / COMPASS / GLONASS / GALILEO提供授時(shí)。
(時(shí)鐘同步設(shè)備,盜個(gè)圖,如果有人看出這是什么牌子的設(shè)備,那么該圖版權(quán)屬該公司所有)
她的特點(diǎn):內(nèi)部有一個(gè)非常精準(zhǔn)的主時(shí)鐘(晶體振蕩器),并且會用GNSS時(shí)鐘信號不停的“馴服”該主時(shí)鐘。在馴服晶振過程中能夠不斷“學(xué)習(xí)”晶振的運(yùn)行特性,并將這些參數(shù)存入板載存儲器中。當(dāng)外部時(shí)間基準(zhǔn)出現(xiàn)異?;虿豢捎脮r(shí),它能自動切換到內(nèi)部守時(shí)狀態(tài),并依據(jù)板載存儲器中的參數(shù)對晶體振蕩器特性進(jìn)行補(bǔ)償,使守時(shí)電路繼續(xù)提供高可靠性的時(shí)間信息輸出,同時(shí)避免了因晶體振蕩器老化造成的頻偏對守時(shí)指標(biāo)的影響。
目前絕大部分的無人車團(tuán)隊(duì),相比已經(jīng)成熟的通訊和電力行業(yè)而言,多采用GNSS接收機(jī)或慣導(dǎo)直接輸出的PPS和GPRMC/GPGGA信號來修正各個(gè)傳感器的時(shí)間,特別是激光雷達(dá)的時(shí)間,這會有個(gè)問題,就是使得GNSS信號不好的時(shí)候,時(shí)間有反復(fù)跳變,半個(gè)小時(shí)可能有上百毫秒之巨。(原因是傳感器本身的時(shí)間晶振無法做到很精確的內(nèi)部守時(shí),當(dāng)然部分接收機(jī)也有類似時(shí)時(shí)鐘同步設(shè)備的功能,丟失信號后,也會用內(nèi)部系統(tǒng)模擬輸出,但精度上,對比幾十萬一臺的專業(yè)時(shí)鐘設(shè)備,還是有不小的差距)
PPS和GPRMC
我們看一個(gè)典型的滿足Velodyne要求的時(shí)鐘信號:
第一條線叫PPS信號(Pulse Per Second), 也就是每秒一個(gè)脈沖
PPS信號的呈現(xiàn)五花八門,有上升沿有效的,有下降沿有效的,有3.3V的5V的,也有-3.3V和-5V的,占空比多大的都有。
Velodyne激光雷達(dá)對PPS的要求:默認(rèn)低電平,拉高高電平時(shí),上升沿有效,+3.3v或+5v均可,脈寬要控制在10微秒-200毫秒之間,也就是占空比要在80%以上;
第二條線是輸出GPRMC信號,這條線,要滿足RS232電平標(biāo)準(zhǔn)。(如果你的設(shè)備輸出UART電平,可以用一塊MX232或者7404芯片轉(zhuǎn)一下)。
GPRMC信號要跟在PPS信號后面,也是一秒一個(gè),很多GNSS默認(rèn)是0.2秒一個(gè),要注意修改,另外,GPRMC信號的末尾離下一個(gè)PPS的上升沿,至少要隔開300毫秒。我們一般這樣建議,一個(gè)PPS上升沿后,過300毫秒,開始輸出GPRMC信號,這個(gè)是比較理想的。
不知道你注意到?jīng)]有,GPRMC的NMEA語句,僅僅精確到秒(以pre-2.3版本為例)
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
所以
VelodyneLiDAR是怎么同步時(shí)間的
激光雷達(dá)內(nèi)部有兩個(gè)時(shí)鐘:(Timer 1和Timer II)
Timer I:我們稱之為微秒定時(shí)器,它的范圍是0-999,999微秒
Timer II: 我們稱之為整秒定時(shí)器,它的范圍是0-3599秒
在未收到任何外來同步信號的時(shí)候,這兩個(gè)timer正常工作,為激光雷達(dá)提供系統(tǒng)時(shí)間。當(dāng)PPS信號到來之后,若該P(yáng)PS是合法有效的PPS(即PPS被鎖定),那么,PPS上升沿,會去置零微秒定時(shí)器。當(dāng)合法有效的GPRMC信號到來的時(shí)候,系統(tǒng)抽取GPRMC信號中的時(shí)間,換算成整秒,并將Timer II的時(shí)間重新賦值,賦值成GPRMC中的整秒時(shí)間。
以上就是激光雷達(dá)的時(shí)間同步過程。你發(fā)現(xiàn)沒有:激光雷達(dá)不能表達(dá)整小時(shí)以上的時(shí)間,也就是說,激光雷達(dá)只知道現(xiàn)在是幾分幾秒幾毫秒幾微秒,但是不知道現(xiàn)在是幾月幾號幾點(diǎn)鐘。所以,激光雷達(dá)被授予的,不是標(biāo)準(zhǔn)的UTC時(shí)間戳。我們稱之為TOH時(shí)間(Top of Hour)
數(shù)據(jù)包中的展現(xiàn)
以VLP-16為例,如果你用tcpdump,那么數(shù)據(jù)包中有四個(gè)時(shí)間戳,可不能搞混淆了:
時(shí)間戳1 - 數(shù)據(jù)包接收時(shí)間戳
這是接收系統(tǒng)(不是激光雷達(dá))的時(shí)間戳,對于激光雷達(dá)而言,是然并卵的存在。
時(shí)間戳2 - 位置數(shù)據(jù)包中NMEA語句,(UDP 8308, 如果你沒有改端口的話)
這個(gè)是最近一個(gè)收到的GPRMC下發(fā)的時(shí)間,你可以用來參考是否收到GPRMC信號。
時(shí)間戳3 - 還是位置數(shù)據(jù)包中的時(shí)間戳:
這個(gè)就是激光雷達(dá)自己的TOH時(shí)間,不過這個(gè)TOH時(shí)間出現(xiàn)在這里,僅僅表達(dá)的是當(dāng)前位置數(shù)據(jù)包組包時(shí)的時(shí)間。
最有用的,是時(shí)間戳4 - 主數(shù)據(jù)包時(shí)間戳:
它直接參與點(diǎn)云XYZ坐標(biāo)的計(jì)算,指代的第一個(gè)Block第一束激光的發(fā)射時(shí),激光雷達(dá)自身的TOH時(shí)間,其他激光發(fā)射時(shí)間,要依據(jù)手冊中的時(shí)序表,添加固定的offset。(還記得TOH時(shí)間是怎么被同步的么?)
控制頁面中關(guān)于時(shí)間同步的一些按鈕
不是每個(gè)PPS都認(rèn)為是有效的脈沖,那么,用什么標(biāo)準(zhǔn)判定呢,就是這個(gè)PPS Qualifier
首先,是否要求GNSS接收機(jī)指示有效,因?yàn)樵贜MEA語句中,有一個(gè)字段是指示GNSS是否有效的,通常是等待衛(wèi)星的鎖定。如果選擇ON,那么,GNSS必須確定有效,才能鎖定PPS,如果選擇OFF,那么,無論是否有效,PPS都會被鎖定。
就是這個(gè)字段,A表示有效,V表示無效,通常V是表示衛(wèi)星未鎖定。
其次,PPS是否要求延時(shí)lock,意思是,收到了多少個(gè)電平合格的PPS后,才認(rèn)為PPS被lock? 默認(rèn)OFF,就使用2個(gè),也就是第三個(gè)有效的pps后,開始鎖定。如果你選擇ON,你可以自己選擇,從0-65535個(gè)都行。不過沒人會選那么大的值,一般3-5個(gè)之后就行。
GPS Qualifier表示的是GPRMC信號是否有效,如果選擇ON,則那個(gè)NMEA語句中,“V/A”字段會起效,只有當(dāng)字段為A的時(shí)候,整秒定時(shí)器才會去跟隨GPRMC指示時(shí)間。如果選擇OFF,那么,無論如何都會去跟,并不關(guān)心那個(gè)“V/A”字段。
Python抽取時(shí)間進(jìn)行分析
如何從pcap數(shù)據(jù)包中抽取時(shí)間,并加以一定的分析,Python是個(gè)好工具,墻裂推薦之~
這里不再贅述,常用的幾個(gè)庫socket,dpkg,matplotlib,numpy,pandas等,節(jié)選一點(diǎn)供簡單參考:
舉個(gè)例子,如果你想對比是不是發(fā)生了時(shí)間跳變的現(xiàn)象,只需要把數(shù)據(jù)包中相應(yīng)的時(shí)間戳拉出來,做個(gè)對比,就一目了然:
好啦,就講這么多,希望對大家平常的開發(fā)工作有所幫助。
-
傳感器
+關(guān)注
關(guān)注
2551文章
51106瀏覽量
753653 -
時(shí)間同步
+關(guān)注
關(guān)注
1文章
120瀏覽量
9967
原文標(biāo)題:關(guān)于Velodyne LiDAR的時(shí)間同步
文章出處:【微信號:MEMSensor,微信公眾號:MEMS】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論