相機和激光雷達之間的時間戳同步問題一直是實時跑SLAM的先決條件。本文試圖以最清晰的思路去講明白這個事情。
開始本文之前,先介紹幾個基本概念。
相機特性-曝光和讀出
相機獲取一幀圖像分為曝光和讀出兩個階段。相機使用的傳感器不同,相機的曝光時間和讀出時間的重疊關(guān)系也有所不同,分為交疊曝光和非交疊曝光兩種。交疊曝光和非交疊曝光相比,交疊曝光可以減少曝光時間對出圖時間的影響。
非交疊曝光是指當前幀的曝光和讀出都完成后,再進行下一幀的曝光和讀出。非交疊曝光幀周期大于曝光時間與幀讀出時間的和。
內(nèi)觸發(fā)模式非交疊曝光
交疊曝光是指當前幀的曝光和前一幀的讀出過程有重疊,即前一幀讀出的同時,下一幀已經(jīng)開始曝光。交疊曝光幀周期小于等于曝光時間與幀讀出時間的和。
內(nèi)觸發(fā)模式交疊曝光
對!上一段就是為了告訴你:后文敘述中無論當前幀曝光時間和上一幀的讀出時間是否重疊都不要驚訝。
圖像采集:觸發(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)部寄存器進行讀寫。下圖是??迪鄼C的電源IO的6-pin線纜:
??迪鄼C電源及IO接口(6-pin Hirose)
其中,海康相機有1個光耦隔離輸入Line0+,1個可配置輸入輸出Line2+,可選擇一個配置為輸入信號。
觸發(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(); //當前幀處理時間
sleep(1/fps-Time);
}
如上圖示意,如果處理單幀數(shù)據(jù)的時間超過0.5s,線程1就會讀到下一幀數(shù)據(jù),就會導(dǎo)致線程2數(shù)據(jù)混亂。因此線程2單幀處理時間需要小于0.5s,且每幀需要等待(1/fps-當前幀處理時間)。
審核編輯:郭婷
-
傳感器
+關(guān)注
關(guān)注
2552文章
51383瀏覽量
756138 -
激光雷達
+關(guān)注
關(guān)注
968文章
4024瀏覽量
190328
原文標題:激光雷達與相機標定的時間戳同步問題
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論