相機和激光雷達之間的時間戳同步問題一直是實時跑SLAM的先決條件。本文試圖以最清晰的思路去講明白這個事情。
01 相機特性-曝光和讀出
相機獲取一幀圖像分為曝光和讀出兩個階段。相機使用的傳感器不同,相機的曝光時間和讀出時間的重疊關(guān)系也有所不同,分為交疊曝光和非交疊曝光兩種。交疊曝光和非交疊曝光相比,交疊曝光可以減少曝光時間對出圖時間的影響。
非交疊曝光是指當(dāng)前幀的曝光和讀出都完成后,再進行下一幀的曝光和讀出。非交疊曝光幀周期大于曝光時間與幀讀出時間的和。
內(nèi)觸發(fā)模式非交疊曝光交疊曝光是指當(dāng)前幀的曝光和前一幀的讀出過程有重疊,即前一幀讀出的同時,下一幀已經(jīng)開始曝光。交疊曝光幀周期小于等于曝光時間與幀讀出時間的和。
內(nèi)觸發(fā)模式交疊曝光對!上一段就是為了告訴你:后文敘述中無論當(dāng)前幀曝光時間和上一幀的讀出時間是否重疊都不要驚訝。02 圖像采集:觸發(fā)模式(外部輸入)相機的觸發(fā)模式分為內(nèi)觸發(fā)模式和外觸發(fā)模式 2 種。
內(nèi)觸發(fā)模式:相機通過設(shè)備內(nèi)部給出的信號采集圖像。
外觸發(fā)模式:相機通過外部給出的信號采集圖像。外部信號可以是軟件信號,也可以是硬件信號,主要包含軟觸發(fā)和硬件觸發(fā)。外觸發(fā)模式如圖:
外觸發(fā)模式軟觸發(fā):觸發(fā)信號由軟件發(fā)出(也可以利用相機SDK提供的API接口進行軟觸發(fā))。硬件觸發(fā):外部設(shè)備通過相機的 I/O 接口與相機進行連接,觸發(fā)脈沖信號由外部設(shè)備給到相機進行采圖。其實是直接對相機內(nèi)部寄存器進行讀寫。下圖是海康相機的電源IO的6-pin線纜:
海康相機電源及IO接口(6-pin Hirose)其中,海康相機有1個光耦隔離輸入Line0+,1個可配置輸入輸出Line2+,可選擇一個配置為輸入信號。03 觸發(fā)輸出相機觸發(fā)輸出信號為開關(guān)信號,可用于控制報警燈、光源、PLC等外部設(shè)備。觸發(fā)輸出信號可通過Strobe 信號實現(xiàn)。相機的曝光發(fā)生時,會立即輸出一個Strobe信號,該信號為高電平有效。后文我們主要使用該信號對Lidar等其他傳感器進行硬觸發(fā)。這里有一個Strobe的預(yù)輸出的概念。Strobe信號早于曝光生效。其工作原理為延遲曝光先進行Strobe輸出。該功能可應(yīng)用于響應(yīng)比較慢的外部設(shè)備。Strobe預(yù)輸出時序如圖所示。(后面會講為啥要延遲曝光)
Strobe信號預(yù)輸出時序現(xiàn)在我們回到正題吧,現(xiàn)在講起來就很快了。要同步相機和激光雷達的時間戳主要有三個方式,硬觸發(fā)、軟觸發(fā)、軟觸發(fā)+硬觸發(fā)。下面我以手繪示意圖的形式一一介紹。先說硬觸發(fā)吧。一個MCU產(chǎn)生脈沖信號對三個傳感器設(shè)備進行硬觸發(fā)。
對于軟觸發(fā)+硬觸發(fā)來說,可以先用相機SDK的API對一個相機進行軟觸發(fā),然后利用相機的外觸發(fā)信號Strobe對雷達和相機等其他傳感器進行硬觸發(fā)。
這里需要注意一個問題,如果進行軟觸發(fā)的第一個相機在曝光的同時發(fā)出Strobe信號,其他被硬觸發(fā)的傳感器總歸是晚了一步,不能完全同步。因此引出了之前Strobe的預(yù)輸出的概念,即先進行Strobe輸出再延遲曝光。配置該模式時注意四點:1.上升沿or下降沿的觸發(fā)方式;2.有效電平寬度,電平幅值,你要知道能觸發(fā)Lidar的最低幅值;3.Strobe預(yù)輸出4.兩邊電平信號是否一樣,3v or 5v是否需要升壓。。.最后講講不被推薦的軟觸發(fā)。首先調(diào)用API操作相比于硬觸發(fā)(對傳感器內(nèi)部寄存器直接進行讀寫操作)明顯是慢了,執(zhí)行第二句命令A(yù)PI(2)前API(1)就已經(jīng)花了些時間
//讀取lidar和image數(shù)據(jù)的線程1
while(1)
{
API(1); //軟觸發(fā)第一個sensor
API(2); //軟觸發(fā)第二個sensor
//假設(shè)脈沖周期為0.5s
}
//處理數(shù)據(jù)線程2
for(i=0;i
{
t1 = getTickCount();
//部分程序有互斥鎖
t2 = getTickCount();
Time = (t2 - t1) / getTickFrequency(); //當(dāng)前幀處理時間
sleep(1/fps-Time);
}
如上圖示意,如果處理單幀數(shù)據(jù)的時間超過0.5s,線程1就會讀到下一幀數(shù)據(jù),就會導(dǎo)致線程2數(shù)據(jù)混亂。因此線程2單幀處理時間需要小于0.5s,且每幀需要等待(1/fps-當(dāng)前幀處理時間)。
審核編輯:郭婷
-
相機
+關(guān)注
關(guān)注
4文章
1347瀏覽量
53524 -
激光雷達
+關(guān)注
關(guān)注
967文章
3943瀏覽量
189625
原文標(biāo)題:清晰講解激光雷達與相機標(biāo)定的時間戳同步問題
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論