ROS大神為你詳解:如何搞定Movidius神經計算棒基於ROS的實現與封裝
都說Movidius神經計算棒是神器
什麼才是正確用法?
如今,人工智慧熱潮正在席捲各行各業,而計算力和數據、演算法一同支撐著人工智慧的蓬勃發展。作為人工智慧的一個重要分支,深度學習以其良好的表現,越來越受到業界的廣泛關注。
深度學習模型包含海量的參數,需要強大的計算力進行大規模的神經網路矩陣運算;但是終端和物聯網設備往往更多考慮小體積和低功耗的要求,以至於很難兼顧滿足高性能神經網路計算力和實時性要求。英特爾在去年發布了針對神經網路矩陣運算優化的Movidius神經計算棒,兼具性能強大、外形小巧、超低功耗三大優勢,因此一經上市就備受追捧。
那麼問題來了,如何基於ROS搞定英特爾Movidius神經計算棒的實現與封裝?機器人創新生態特邀Intel開源軟體技術中心專家,為你詳解基於 Movidius 神經計算棒的ROS開發包的功能及其使用方法(附全套代碼),幫助你輕鬆地將深度學習技術引入項目,和其他ROS節點無縫連接,為你的機器人裝上人工智慧的利器。
搞定實現與封裝後,能應用在哪些領域?
將提供物體分類和物體檢測的能力,可以運用於多種機器人使用場景,例如:
1
3D物體識別與追蹤
基於已經識別出的2D物體信息,結合深度感測器採集到的深度信息,可以定位到物體在三維空間當中的位置,從而對物體進行3D識別與跟蹤。
2
機器人智能避障
傳統的機器人避障對於障礙物不加以區分,採取相同的策略。而基於物體識別的避障,能夠根據識別出的物體信息,通過指定不同的策略來應對不斷變化的場景,使機器人避障更加智能。
4
基於語義的同步定位與建圖(SLAM)
通過將識別出的物體標註在SLAM得到的地圖上,可以極好地提高地圖的可讀性。
準備好了嗎?
讓我們跟隨Intel開源軟體技術中心專家一起進入技術細節
技術背景
英特爾在2017年發布了Movidius神經計算棒,與英特爾Movidius神經計算棒一同發布的還有NCSDK和NCAppZoo,為用戶在Movidius 神經計算棒之上開發各自的應用提供了良好的軟體支持。
NCSDK目前提供了C和Python兩種語言的編程的介面,通常應用開發者通過調用這些介面就能操作NCS做深度學習方面的圖像預測工作。然而,機器人研究領域廣泛採用ROS框架,這一框架下的各個應用通常採用消息(message)和話題(topic)的方式進行通信。
在這種特殊情況下,機器人應用開發者不得不對NCSDK做進一步的封裝才能使其無縫工作在ROS系統中。
針對NCSDK到ROS系統的銜接問題,我們提出並實現了一種基於ROS系統的對NCSDK的封裝。該項目目前已經在github上面開源:
github 地址:
https://github.com/intel/ros_intel_movidius_ncs/tree/master
項目介紹
1
軟體架構設計
本項目主體由一個ROS發布節點和一個ROS服務節點組成,以適應不同的應用場景。ROS發布節點用於處理來自相機的視頻流數據,預測結果以消息(message)的形式發布到相應的話題(topic)中,供上層應用調用。ROS服務節點用於處理單張圖片數據,預測結果直接返回給上層消費服務的節點做進一步處理。為了更好的演示這兩個節點的使用方法,我們還開發了多個客戶端節點,最終處理結果會以圖像的形式展現出來。
目前項目可以支持物體分類和物體識別兩種應用。物體分類可以採用不用的CNN模型,例如,GoogleNet, AlexNet和SqueezeNet等。物體識別可以支持TinyYolo, mobilenet-SSD等。
Figure 1. ROS NCS structure
2
運行條件
·運行Ubuntu16.04的x86_64計算機
·ROS Kinetic
·Movidius神經元計算棒(NCS)
·NCSDK和NCAppZoo
·RGB相機
具體環境配置可以參考這裡
https://github.com/intel/ros_intel_movidius_ncs/tree/master
3
編譯與安裝
下載源碼到本地ROS工作區,切換到最新發布,編譯、安裝。
複製CNN標籤文件到指定目錄。
4
運行演示程序
目前本項目可以支持一般的USB camera和Intel RealSense camera。也允許用戶根據需要配置不同的相機。以下以一般USB Camera和RealSense D400系列為例進行說明。其他使用方式請參考文檔(https://github.com/intel/ros_intel_movidius_ncs/tree/master)。
物體分類
視頻流處理
在一個終端啟動視頻流處理節點:
在另一個終端啟動demo節點顯示分類結果:
靜態圖像處理
在一個終端啟動圖像處理節點:
在另一個終端啟動demo節點顯示分類結果,例如:
ROS客戶端軟體的輸出效果如下圖所示.
物體識別
(不僅給出物品分類,還給出物體所在圖像中的二維坐標)
視頻流處理
在一個終端啟動視頻流處理節點:
在另一個終端啟動demo節點顯示物體識別結果:
靜態圖像處理
在一個終端啟動圖像處理節點:
在另一個終端啟動demo節點顯示物體識別結果,例如:
ROS客戶端軟體的輸出效果如下圖所示.
項目展望
本項目目前開發到v0.5.0版本,基於Movidius NCSDK 的不斷演進,本產品也在不斷迭代開發當中。一方面,由於ROS2相對ROS具有更好的安全性和實時性,我們計劃移植項目到ROS2中。另一方面,深度學習正經歷著快速發展,所以我們希望能支持更多的CNN模型以適應不同的機器人使用場景的需要。
5大方向技術詳解正在路上
敬請期待
Intel開源軟體技術中心近期將不斷推出更多的基於ROS/ROS2開發的新技術詳解,涉及物體識別、跟蹤、定位技術,帶有物體信息的語義地圖,移動物體檢測及避障,Intel 3D RealSense 攝像頭的應用,以及ROS到ROS2 的演進,ROS2 的實時及安全性等課題。機器人創新生態也將第一時間提供。
Intel開源技術中心致力於提供豐富的開源解決方案,從Linux kernel,可視化軟體,到大型的支持多架構的項目如Yocto, Chrome/Android 和OpenStack,最近一年,Intel開源軟體技術中心致力於到人工智慧領域的研究,特別是基於機器人研究領域廣泛採用的ROS/ROS2 架構,開發更多的AI開源解決方案。
如果你對此次課題有任何問題,歡迎留言提問,我們會邀請Intel開源技術中心專家親自回答。
END
GIF
對接產業商機
分享行業乾貨
微信ID:robotplaces


※IFR預測:服務機器人已進入高速發展的快車道
※科學家研發出毫米級Delta機器人,速度快20倍
TAG:機器人創新生態 |