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

自動駕駛激光雷達(dá):原理、類型與應(yīng)用梳理

激光雷達(dá)技術(shù)原理解析

一則消息引爆激光雷達(dá)行業(yè)!特斯拉竟然在自研激光雷達(dá)?
科普:一文了解固態(tài)和半固態(tài)激光雷達(dá)
激光雷達(dá)會傷害眼睛嗎?

激光雷達(dá)的維護(hù)與故障排查技巧
激光雷達(dá)技術(shù)的基于深度學(xué)習(xí)的進(jìn)步
如何提升激光雷達(dá)數(shù)據(jù)的精度
激光雷達(dá)技術(shù)的發(fā)展趨勢
飛行時間和激光雷達(dá) - 光學(xué)前端設(shè)計應(yīng)用說明

光學(xué)雷達(dá)和激光雷達(dá)的區(qū)別是什么
激光雷達(dá)點云數(shù)據(jù)包含哪些信息
一文看懂激光雷達(dá)

基于FPGA的激光雷達(dá)控制板

評論