說(shuō)明:轉(zhuǎn)自知乎,著作權(quán)歸作者,僅供學(xué)習(xí)和交流,侵刪 報(bào)告:下載 7.85G 自動(dòng)駕駛&智能網(wǎng)聯(lián)資料 為什么需要時(shí)間同步? 在自動(dòng)駕駛中,需要用到很多傳感器的數(shù)據(jù)(Lidar,Camera,GPS/IMU),如果計(jì)算單元接收到的各傳感器的消息時(shí)間不統(tǒng)一,則會(huì)造成例如障礙物識(shí)別不準(zhǔn)等問(wèn)題。 時(shí)間同步包含哪些內(nèi)容?自動(dòng)駕駛中,時(shí)間同步可以分為幾部分的內(nèi)容:統(tǒng)一時(shí)鐘源,硬件同步,軟件同步。其中硬件時(shí)間同步主要針對(duì)相機(jī) 。 1.統(tǒng)一時(shí)鐘源假設(shè)各傳感器都有自己的內(nèi)部時(shí)鐘,但由于每個(gè)時(shí)鐘的鐘漂不一樣,導(dǎo)致各時(shí)鐘之間存在時(shí)間差,所以需要統(tǒng)一各傳感器的時(shí)間源。 一般采用GPS時(shí)間作為統(tǒng)一時(shí)間源,通過(guò)GPS給各個(gè)傳感器提供基準(zhǔn)時(shí)間,各傳感器根據(jù)提供的基準(zhǔn)時(shí)間校準(zhǔn)各自的時(shí)鐘時(shí)間。 各傳感器根據(jù)已經(jīng)校準(zhǔn)后的各自時(shí)間為各自獨(dú)立采集的數(shù)據(jù)加上時(shí)間戳信息,來(lái)做到所有傳感器時(shí)間戳同步。 統(tǒng)一時(shí)鐘源的常見(jiàn)方式有兩種,一種是基于GPS的“PPS+NMEA”,另一種是基于以太網(wǎng)的IEEE 1588(或IEEE 802.1AS)時(shí)鐘同步協(xié)議。 a.PPS+NMEA GPS能夠從衛(wèi)星獲得高精度的時(shí)鐘信號(hào),因此通常作為整個(gè)系統(tǒng)的時(shí)鐘源。常規(guī)的GPS單元都支持輸出精確到毫秒的秒脈沖信號(hào)PPS和包含年月日時(shí)分秒信息的NMEA指令,通過(guò)PPS和NMEA的組合就能夠?qū)崿F(xiàn)對(duì)激光雷達(dá)或主機(jī)的毫秒級(jí)時(shí)鐘同步。 PPS+NMEA的優(yōu)點(diǎn)是協(xié)議簡(jiǎn)單,容易實(shí)現(xiàn);缺點(diǎn)是必須基于RS232。多個(gè)設(shè)備之間實(shí)現(xiàn)同步比較困難。 b.PTP(IEEE 1588或IEEE 802.1AS) PTP(Precision Time Protocol,1588 V2)是基于以太網(wǎng)的高精度時(shí)鐘同步協(xié)議,能夠?qū)崿F(xiàn)以太網(wǎng)中多個(gè)從節(jié)點(diǎn)(各種傳感器)與主節(jié)點(diǎn)(主機(jī))之間的亞微秒級(jí)時(shí)鐘同步,前提是所有節(jié)點(diǎn)之間都通過(guò)以太網(wǎng)互聯(lián),交換機(jī)支持PTP協(xié)議,并且每個(gè)節(jié)點(diǎn)都支持PTP協(xié)議。 與PTP同時(shí)出現(xiàn)的還有一種NTP,即網(wǎng)絡(luò)時(shí)間協(xié)議,不同的是PTP是在硬件級(jí)實(shí)現(xiàn)的,NTP是在應(yīng)用層級(jí)別實(shí)現(xiàn)的 。 2.硬件同步圖片來(lái)源: @喝苦咖啡的小阿飛 由于每種傳感器的采樣頻率不一致,如lidar通常為10Hz,camera通常為25/30Hz,不同傳感器之間的數(shù)據(jù)傳輸還存在一定的延遲,那么可以通過(guò)尋找相鄰時(shí)間戳的方法找到最近鄰幀,但如果兩個(gè)時(shí)間戳相差較大,且傳感器或障礙物又在運(yùn)動(dòng),那么最終會(huì)得到較大的同步誤差。這個(gè)情況可以采用硬件同步觸發(fā)的方法來(lái)緩解查找時(shí)間戳造成的誤差現(xiàn)象。 那如何實(shí)現(xiàn)硬件同步呢?也就是在激光雷達(dá)和相機(jī)的時(shí)間源都統(tǒng)一到GPS時(shí)間后,如何保證他們同步觸發(fā)采集呢?方式是以PPS信號(hào)為觸發(fā)信號(hào),實(shí)現(xiàn)激光雷達(dá)和相機(jī)均在PPS信號(hào)上升沿的時(shí)候采集數(shù)據(jù),且打上各自時(shí)鐘的時(shí)間戳。由于PPS的頻率只有1Hz,所以通常需要一個(gè)設(shè)備把PPS信號(hào)轉(zhuǎn)發(fā)為任意頻率、但是跟PPS信號(hào)同相位的方波,這樣就可以控制相機(jī)的采集頻率了。 用外部信號(hào)觸發(fā)相機(jī)比較好理解,那如何保證激光雷達(dá)在PPS信號(hào)上升沿的時(shí)候采集數(shù)據(jù)呢?激光雷達(dá)制造商想出了一個(gè)相位鎖定功能,也就是輸入PPS,但PPS上升沿到來(lái)時(shí),激光雷達(dá)的激光束恰好旋轉(zhuǎn)到一定的角度。 圖片來(lái)源:CSDN打工人小謝 3.軟件同步圖片來(lái)源:CSDN是安瀾啊 當(dāng)兩傳感器的采集時(shí)刻不一致,但又想得到同一時(shí)刻下兩傳感器的結(jié)果,就可以使用軟件同步的方式。目前常采用的軟件同步方式為內(nèi)插外推法,此方法適用于傳感器間幀率不存在倍數(shù)關(guān)系的情況,或者傳感器有幀率不穩(wěn)定的情況。主要利用兩個(gè)傳感器幀上的時(shí)間標(biāo)簽,計(jì)算出時(shí)間差,然后通過(guò)包含有運(yùn)動(dòng)信息的目標(biāo)幀與時(shí)間差結(jié)合,對(duì)幀中每一個(gè)目標(biāo)的位置進(jìn)行推算,推算出新的幀時(shí)各個(gè)目標(biāo)的位置,并于原有的兩幀之間建立新的幀。 略作補(bǔ)充的是,Apollo的每一個(gè)感知初始階段,都會(huì)采用的內(nèi)插外推這個(gè)經(jīng)典方法。 時(shí)間同步的第一步,其主要目的是,用傳感器的時(shí)間,在localization/pose中查找該時(shí)刻所對(duì)應(yīng)的位姿數(shù)據(jù),繼而通過(guò)坐標(biāo)系換算,使傳感器的局部數(shù)據(jù)能夠映射在全局坐標(biāo)系上。舉例而言,Lidar會(huì)感知到物體的位置,但這個(gè)位置僅僅是對(duì)于lidar而言的,但首先需要通過(guò)外參將其轉(zhuǎn)化為物體對(duì)于車(chē)輛的位置,這才是感知所關(guān)心的。其間就涉及到了Lidar與Localization的時(shí)間統(tǒng)一。 我們可能比較好奇的是,Lidar的時(shí)間已經(jīng)經(jīng)過(guò)pps授時(shí),那么localization的時(shí)間是從何處獲取的呢?二者又是如何進(jìn)行匹配的呢? 實(shí)際上,每次查詢(xún)定位時(shí)間時(shí),都會(huì)傳入Lidar這幀數(shù)據(jù)的采集時(shí)間,在綿綿無(wú)長(zhǎng)的Localization時(shí)間中,去尋找一個(gè)插值。而Localization的時(shí)間記錄,則是實(shí)時(shí)存在在系統(tǒng)里的,所以系統(tǒng)必須授時(shí),則localiaziton的時(shí)間戳就與lidar的時(shí)間戳保持了同步。 在此,apollo對(duì)ROS經(jīng)典的tf2:buffer類(lèi)采用了一次外包裝,以實(shí)現(xiàn)激光雷達(dá)坐標(biāo)系到定位坐標(biāo)系的轉(zhuǎn)換。從該源碼中,我們稍微窺探一下其背后的原理,便是經(jīng)典的內(nèi)插外推原理。 Localization的時(shí)間會(huì)以緩存的形式進(jìn)行存儲(chǔ),圖中的小盒子,就是我們理解的每一截緩存。在緩存的開(kāi)始時(shí)間,我們稱(chēng)之為Earlist_time,緩存的結(jié)束時(shí)間,我們稱(chēng)之為L(zhǎng)atest_time; 下一個(gè)階段的緩存,又是如此的循環(huán)往復(fù)。 如果我們傳入進(jìn)來(lái)要做查詢(xún)的時(shí)間,也就是Lidar時(shí)間,在盒子時(shí)間的左右邊界外,對(duì)于當(dāng)前盒子而言,已經(jīng)要采用外插法來(lái)做推斷。 如果我們傳入進(jìn)來(lái)做查詢(xún)的時(shí)間,對(duì)于當(dāng)前盒子而言,在盒子時(shí)間的左右邊界內(nèi),對(duì)于當(dāng)前盒子而言,我們便采用內(nèi)插法來(lái)做推斷。 使用內(nèi)插法時(shí),其原理可以用下圖概括:虛線為存儲(chǔ)的localization數(shù)據(jù)的相關(guān)時(shí)間,而t1和t2,是該時(shí)刻緩存的邊界。我們可以利用緩存邊界內(nèi)的數(shù)據(jù),抽象一個(gè)函數(shù)f(t)出來(lái),而Lidar(t0)傳入的值便可用f(t0)求解 使用外推法時(shí),其原理可以用下圖概括,盡管我們可以用t1,t2內(nèi)的時(shí)間抽象出函數(shù)f(t),假設(shè)外推的時(shí)間距離邊界較近,我們?nèi)钥梢圆捎迷撃P退蟮玫闹?,但假如時(shí)間已經(jīng)過(guò)遠(yuǎn),之前推導(dǎo)的模型就不再有效,往往會(huì)產(chǎn)生較大的誤差,Apollo在這里,也在配置中規(guī)定了外插法的最大可信任時(shí)間,如果時(shí)間超過(guò)該值,則會(huì)報(bào)錯(cuò) 各傳感器的時(shí)間戳 圖片來(lái)源:CSDN是安瀾啊 自動(dòng)駕駛常用的時(shí)間同步方案
以下是某智駕系統(tǒng)的時(shí)間同步系統(tǒng)架構(gòu) 軟件介紹gpsd:gpsd的功能是解析NMEA信息和pps信號(hào),獲取當(dāng)前GPS時(shí)間,但是它沒(méi)有辦法給系統(tǒng)授時(shí);chrony:chrony能夠給系統(tǒng)授時(shí),但是需要從gpsd獲取當(dāng)前GPS時(shí)間,chronyd和gpsd的通訊是通過(guò)共享內(nèi)存實(shí)現(xiàn)的,這需要對(duì)chrony做一定的配置;同類(lèi)軟件還有ntpdptp4l:ptp4l是PTP同步,即精確網(wǎng)絡(luò)時(shí)間同步協(xié)議的軟件,它需要從chronyd獲取系統(tǒng)當(dāng)前時(shí)間,然后發(fā)布到局域網(wǎng),給相機(jī)或其他局域網(wǎng)內(nèi)的工控機(jī)授時(shí),ptp4l與chronyd的通訊也是通過(guò)共享內(nèi)存。統(tǒng)一時(shí)間源的操作步驟硬件配置通過(guò)串口將NEMA(GPRMC)和PPS信號(hào)給到工控機(jī)。其中工控機(jī)上的引腳定義如下:DB9的1號(hào)針腳:PPS信號(hào) DB9的2號(hào)針腳:發(fā)來(lái)的NEMA(GPRMC)信號(hào) DB9的5號(hào)針腳:接地 其中華測(cè)(組合導(dǎo)航)的A串口輸出NEMA(GPRMC)信號(hào),SMA接口輸出PPS信號(hào),需要自己做線將他們組合在一起給到工控機(jī)。 由于此次接到了工控機(jī)的COM2口,所以對(duì)應(yīng)系統(tǒng)中的 /dev/ttyS1。如果接到COM1口,則對(duì)應(yīng)的是 /dev/ttyS0。下面軟件配置中需要做相應(yīng)更改,將下面所有 ttyS1 改成 ttyS0 軟件配置主要參考:github.com/linuxonly199
2.配置gpsd 3.配置chrony 激光雷達(dá)與相機(jī)標(biāo)定時(shí)的時(shí)間同步問(wèn)題怎么進(jìn)行解決? - 知乎 在自動(dòng)駕駛領(lǐng)域,如何實(shí)現(xiàn)激光雷達(dá)和相機(jī)的時(shí)間同步呢? - 知乎 時(shí)間同步,自動(dòng)駕駛里的花好月圓 關(guān)于GPS的1PPS時(shí)間同步功能探索與測(cè)試_學(xué)一點(diǎn)IOT-CSDN博客_1pps 激光雷達(dá)與相機(jī)時(shí)間同步問(wèn)題的低成本完整解決方案_打工人小謝的博客-CSDN博客 【多傳感器融合理論】02自動(dòng)駕駛中多傳感器同步理論_是安瀾啊-CSDN博客 激光雷達(dá)與相機(jī)標(biāo)定的時(shí)間戳同步問(wèn)題_3D視覺(jué)工坊-CSDN博客 github.com/linuxonly199 |
|
來(lái)自: ADS智庫(kù) > 《待分類(lèi)》