
本文來源:計算機視覺life
/ 導讀 /
相機和雷射雷達之間的時間戳同步問題一直是實時跑SLAM的先決條件。本文試圖以最清晰的思路去講明白這個事情,開始本文之前,先介紹幾個基本概念。
相機特性-曝光和讀出
相機擷取一幀圖像分為曝光和讀出兩個階段。相機使用的傳感器不同,相機的曝光時間和讀出時間的重疊關系也有所不同,分為交疊曝光和非交疊曝光兩種。
疊曝光和非交疊曝光相比,交疊曝光可以減少曝光時間對出圖時間的影響。
非交疊曝光是指目前幀的曝光和讀出都完成後,再進行下一幀的曝光和讀出。非交疊曝光幀周期大于曝光時間與幀讀出時間的和。
▲内觸發模式非交疊曝光 交疊曝光是指目前幀的曝光和前一幀的讀出過程有重疊,即前一幀讀出的同時,下一幀已經開始曝光。交疊曝光幀周期小于等于曝光時間與幀讀出時間的和。
▲内觸發模式交疊曝光 對!上一段就是為了告訴你:後文叙述中無論目前幀曝光時間和上一幀的讀出時間是否重疊都不要驚訝。
圖像采集:觸發模式(外部輸入)
相機的觸發模式分為内觸發模式和外觸發模式 2 種。 内觸發模式: 相機通過裝置内部給出的信号采集圖像。 外觸發模式: 相機通過外部給出的信号采集圖像。外部信号可以是軟體信号,也可以是硬體信号,主要包含軟觸發和硬體觸發。外觸發模式如圖:
▲外觸發模式 軟觸發: 觸發信号由軟體發出(也可以利用相機SDK提供的API接口進行軟觸發)。 硬體觸發: 外部裝置通過相機的 I/O 接口與相機進行連接配接,觸發脈沖信号由外部裝置給到相機進行采圖。其實是直接對相機内部寄存器進行讀寫。下圖是海康相機的電源IO的6-pin線纜:
▲海康相機電源及IO接口(6-pin Hirose) 其中,海康相機有1個光耦隔離輸入Line0+,1個可配置輸入輸出Line2+,可選擇一個配置為輸入信号。
觸發輸出
相機觸發輸出信号為開關信号,可用于控制報警燈、光源、PLC等外部裝置。觸發輸出信号可通過Strobe 信号實作。 相機的曝光發生時,會立即輸出一個Strobe信号,該信号為高電平有效。後文我們主要使用該信号對Lidar等其他傳感器進行硬觸發。這裡有一個Strobe的預輸出的概念。Strobe信号早于曝光生效。其工作原理為延遲曝光先進行Strobe輸出。該功能可應用于響應比較慢的外部裝置。Strobe預輸出時序如圖所示。(後面會講為啥要延遲曝光)。
▲Strobe信号預輸出時序 現在我們回到正題吧,現在講起來就很快了。 要同步相機和雷射雷達的時間戳主要有三個方式,硬觸發、軟觸發、軟觸發+硬觸發。下面我以手繪示意圖的形式一一介紹。 先說硬觸發吧。一個MCU産生脈沖信号對三個傳感器裝置進行硬觸發。
對于軟觸發+硬觸發來說,可以先用相機SDK的API對一個相機進行軟觸發,然後利用相機的外觸發信号Strobe對雷達和相機等其他傳感器進行硬觸發。
這裡需要注意一個問題,如果進行軟觸發的第一個相機在曝光的同時發出Strobe信号,其他被硬觸發的傳感器總歸是晚了一步,不能完全同步。是以引出了之前Strobe的預輸出的概念,即先進行Strobe輸出再延遲曝光。 配置該模式時注意四點:
- 1.上升沿 or 下降沿的觸發方式;
- 2.有效電平寬度,電平幅值,你要知道能觸發 Lidar 的最低幅值;
- 3.Strobe 預輸出
- 4.兩邊電平信号是否一樣,3v or 5v 是否需要升壓…
最後講講不被推薦的軟觸發。 首先調用API操作相比于硬觸發(對傳感器内部寄存器直接進行讀寫操作)明顯是慢了,執行第二句指令API(2)前API(1)就已經花了些時間。
如上圖示意,如果處理單幀資料的時間超過0.5s,線程1就會讀到下一幀資料,就會導緻線程2資料混亂。是以線程2單幀處理時間需要小于0.5s,且每幀需要等待(1/fps-目前幀處理時間)。 - End -
▎最新熱文
Waymo谷歌母公司宣布布局車路協同,落後中國5年?華為提出适用于彎道的車道線檢測方法 CurveLane-NAS
免責聲明: 凡本公衆号注明“來源:XXX(非智車科技)”的作品,均轉載自其它媒體,轉載目的在于傳遞和分享更多資訊,并不代表本平台贊同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯系我們删除。