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