結合模塊導航方案,使用深度攝像頭時,應該將深度攝像頭安裝在上位機上。用戶自行編寫攝像頭的驅動程序,在獲取其深度數(shù)據(jù)后,再通過我們SDK中提供的publishDepthCamFrame接口將傳輸給模塊,至此Slamware Core才能將深度數(shù)據(jù)用于避障。
配置
同添加其它傳感器類似,在安裝深度攝像頭后,需通過RoboStudio中的Slamware配置工具將深度攝像頭的具體安裝位姿等相關信息進行配置,然后將配置好的文件導出,重新放到底盤MCU中進行Make,再將生成的新的hex文件燒錄至底盤。
開啟濾波:高度濾波開關,只處理相應高度范圍內的障礙物測距信息,主要應用于濾除地面噪聲和高于機器人高度的障礙物信息。
開啟形態(tài)學濾波:利用形態(tài)學運算主要采用態(tài)學開、閉運算進行濾波操作,用來過濾孤立噪點。(可能會影響性能,客戶自行取舍是否勾選)
倒裝:攝像頭是否倒置,一般不勾選。
最小濾波高度:以地面為基準,高度小于該值的障礙物測距信息將被忽略,單位為m。
最大濾波高度:以地面為基準,高度大于該值的障礙物測距信息將被忽略,單位為m。
相關文檔:
KBSW180147 機器人底盤傳感器位置坐標及底盤配置工具的使用
注意:配置深度攝像頭前,請先確保使用的固件版本至少需要2.6.7及以上,否則配置的濾波相關信息無法被讀出。
接口調用
sensorId:使用Slamware配置工具配置時,設置的Id.
DepthCameraFrame:需要傳入一個DepthCameraFrame類型的結構體變量,代表的是一幀數(shù)據(jù)。
DepthCameraFrame的成員:
深度攝像頭有自己的屬性參數(shù),如分辨率,深度視角(FOV)等。定義DepthCameraFrame類型的結構體變量時,可以把深度攝像頭的屬性參數(shù)賦值給成員。另外,請注意如下幾點:
注意各個成員的單位,距離為米,角度為弧度。
maxValidDistance建議在2米,否則可能存在噪點。
cols和rows,建議為320x240,不要大于這個值。如果一定要設置為更小的分辨率,需先確認所用的攝像頭是否支持。
minFovPitch和maxFovPitch涉及到深度攝像頭的VFOV(垂直視角)。假設VFOV=a(rad),則minFovPitch=-a/2,maxFovPitch=a/2。
minFovYaw和maxFovYaw涉及到深度攝像頭的HFOV(水平視角)。假設HFOV=b(rad),則minFovPitch=-b/2,maxFovPitch=b/2。
data就是具體的一幀里面每個像素的值,需要把完整的一幀的深度數(shù)據(jù)全傳進去。
代碼描述
上述代碼僅傳輸了一幀數(shù)據(jù)。實際在調用接口傳遞數(shù)據(jù)時,需要注意以下幾點:
1.深度攝像頭的數(shù)據(jù)是要持續(xù)發(fā)送的。為了防止數(shù)據(jù)傳輸堵塞,調用publishDepthCamFrame的頻率不要超過一秒鐘10次。
2.得到深度數(shù)據(jù)后,模式是實時處理的,為了防止有延遲,請選擇性能好的上位機,獲取一幀深度數(shù)據(jù)到調用publishDepthCamFrame接口總的時長應該在100ms以下。
3.對于深度攝像頭的規(guī)格型號,并無特殊要求,只需要在調用接口時傳送符合要求的數(shù)據(jù)即可。注意,需要的深度信息單位是米,如果您的攝像頭的單位與此不同,需要轉換。
4.對于不同品牌型號的深度攝像頭,驅動攝像頭的SDK不同,若對此需要幫助,建議您咨詢攝像頭品牌的支持工程師以獲得專業(yè)的支持。
檢驗效果
當成功傳輸了正確符合要求的深度數(shù)據(jù)后,如果深度攝像頭測距范圍內有障礙物,可以通過RoboStudio或者Web portal看到深度信息。
depthcam是一個非常簡單的示例文件,DepthCameraFrame中用到的data是人為構造填充的一個vector,用戶可以自行下載,在VS2010中打開,查看檢測到深度數(shù)據(jù)的效果。
1.通過RoboStudio查看
在此之前,需先獲取下載Slamware Sensor Map插件(參考RoboStudio用戶手冊)。點擊工作區(qū)的顯示設置圖標,在彈出的圖層面板中選中傳感器視野(深度攝像頭)。
2.通過Web Portal查看
訪問Web portal,開啟Slamware Core診斷模式,具體步驟請參考KBSW180153 SLAMWARE Web Portal Function Overview
關鍵字:思岚科技