OpenVINO + ROS 加速機器人應用
什么是ROS?它與智能機器人有什么關系?另外ROS在OpenVINO中有哪些應用?
如果錯過6月20日來自英特爾物聯網事業部三位技術大咖的線上直播回顧,那么這篇文章為你整理了直播的干貨內容!
嘉賓介紹
接下來,由三位老師為大家分享關于OpenVINO+ROS加速機器人應用的知識干貨。
第一位分享的是楊洪老師。在他的分享中,他從ROS項目介紹,ROS在機器人中的應用,以及英特爾在ROS中的投入等方面進行了分享。
首先,楊老師對ROS進行了一個基本介紹——ROS即Robot Operating System(機器人操作系統),它的實際意義是跑在傳統系統軟件(如Windows)的一個軟件框架,也可以說它是一個次操作系統,它使得復雜的機器人開發變得更加簡單。
首先,楊老師對ROS進行了一個基本介紹——ROS即Robot Operating System(機器人操作系統),它的實際意義是跑在傳統系統軟件(如Windows)的一個軟件框架,也可以說它是一個次操作系統,它使得復雜的機器人開發變得更加簡單。
ROS目前是一個開源項目,由開源機器人基金會進行并推動其發展。
其次,楊老師還為大家分享了ROS及其分支的發展歷程——ROS有三個分支:ROS,ROS-industrial,以及ROS 2.0。
ROS最早是在2007年,斯坦福大學人工智能實驗室與一家機器人初創公司Willow Garage的合作項目。截至2020年,ROS的第14個release版本也是其在ROS分支的最后一個版本被推出。而ROS-industrial的開發是為了能夠更好地支持工業類機器人的發展,比如多軸工業機械臂。這一分支以Consortium的方式組織運營。最后,ROS 2.0,則是在社區在2014年推出的新一代機器人操作系統的概念,其目的是為了使得機器人操作系統具有更好的實時性以及更好的安全性。
接下來,楊老師繼續為大家分享了ROS在機器人領域的典型應用,主要是在Aerial,Component,Ground,Manipulator,Marine五個領域的應用。一些代表公司,如下圖所示:
除此之外,楊老師還分享到ROS的總體框架包括四個基本概念(節點,消息,主題,服務),許多軟件包,以及包含不同stack與repository的Universe。
最后,楊老師講到了Intel與ROS社區的關系。Intel不僅是ROS社區的領導者,還為ROS社區的代碼貢獻、產品推進以及產品落地做出了很大的貢獻。
第二位分享的是劉為志老師,劉老師就ROS與OpenVINO結合的情況展開了分享。
劉老師講到,OpenVINO是經濟基礎,而ROS2 OpenVINO?是上層建筑。另外,ROS2有以下三個功能:
-表明如何把OpenVINO需要的實現封裝成ROS2需要的一些接口;
-在目前智能機器的發展過程中,不同場景的輸出是多種多樣的,而ROS2能將這些輸出整合成一個標準化的通訊協議與實現;
-拓展了在OpenVINO實驗過程中標準化或流水化處理的運行時管理機制。
其次,劉老師還為大家分享了機器人操作系統必備的三個方面:從個人傳感器及環境方面做一個對信息進行感知的系統,對環境的感知進行正確決策的系統,以及基于決策對硬件本體進行控制的系統。
接下來,劉老師還分享了ROS OpenVINO?的應用流程,其本質上使用OpenVINO本身通過第三方提供的模型,基于OpenVINO模型優化器把模型轉化成OpenVINO可以識別的模式,基于OpenVINO提供的推斷引擎進行識別,進而由ROS OpenVINO?提供的運行時管理機制與標準化接口,與機器人的上層應用進行無縫對接。
最后,劉老師還為大家介紹了Pipeline實現機制,如下圖所示:
第三位分享的是劉獻容老師,她主要為大家介紹了基于深度學習卷積神經網絡的OpenVINO?加速和部署。
首先,通過OpenVINO?進行卷積神經網絡的計算步驟為:
利用Model Optimizer將已經訓練好的神經網絡模型轉化成OpenVINO優化的模型,即IR。
利用Inference Engine提供一個通用接口,編寫一個應用程序來完成推理。
其次,劉老師還為大家介紹了OpenVINO?的深度學習卷積神經網絡模型:GPD(Grasp Pose Detection),GQ-CNN抓取檢測模型,以及Mask-RCNN模型。
接下來,劉老師針對一些應用例程和客戶案例進行了,如下圖所示:
最后,劉老師演示了一段OpenVINO?抓取算法的Demo。如下圖所示:
以上就是三位老師分享的內容
Q&A環節
Q1.請問ROS2目前對建圖算法的支持情況怎么樣,像ROS1的cartographer、gmapping等包可以跑嗎?OpenVINO與ROS2通訊交互的功能包是?
楊洪老師:關于ROS2里面的建圖功能的支持,目前在整個開源機器人產品平臺上,用的比較多的是Cartographer以及Gmapping。Cartographer適用于相對較大的應用場景,而Gmapping適用于比較小巧,計算量較小的的場景。
對于ROS2的支持,Cartographer和Gmapping本身核心的算法并沒有太多的依賴,但是為了能夠跟ROS2的其他軟件組件如navigation一起工作,則需要相應的ROS2 interface。目前在github里面,Cartographer和Gmapping都有相應的開源項目支持ROS2了。
Q2.ROS2在交通方面有什么應用?
楊洪老師:在這里我以目前較為火熱的自動駕駛話題為例。ROS在自動駕駛中的應用還蠻多的,雖然這并不是ROS的主要目的。舉一個例子,比如百度開發的Apollo系統就是基于ROS做的。它在ROS上面引入了許多ROS2的概念。另外社區也有一個Autoware Foundation,主要的目標就是開發基于ROS和ROS2的自動駕駛框架。
Q3.ROS1節點之間的通訊需要master分發嗎?
楊洪老師:我在前面介紹過一個ROS Master系統,這個系統起到一個橋梁的溝通作用。但是,這并不意味著所有消息的分發、溝通一定要通過ROS Master去做。它的主要功能是使系統里所有的點,信息等在ROS Master系統里進行注冊創建,使得系統在運行時,第三方模塊需要系統里的信息時,形成點對點的后續溝通。
Q4.ROS2是否得到產品質量,原有ROS1產品現在移植到ROS2是否合適?
楊洪老師:產品的質量包括很多方面,ROS2只是機器人開發中的一個環節。如果基于整個框架,質量要涉及到底層硬件的開發,產品操作系統本身的質量優化,以及框架和上層開發的軟件。如果要落實到具體的產品來講,是需要case by case的。另外,移植到ROS2的時機問題,我個人建議從長期產品規劃的角度來講,現在要開始考慮ROS2的遷移的規劃了。因為社區今后新的開發和版本發布都會主要圍繞ROS2進行了。
Q5.ROS2和OpenVINO的語言可用labview嗎?
劉為志老師:目前我們還未試過,還不能說能夠支持。但Labview本身基于CAI設計,想在OpenVINO上的應用不是很大。
Q6.ROS1的OpenVINO功能包會有二進制的發行版嗎?OpenVINO使用python3會在ROS Melodic這些python2的ROS版本中做適配嗎?
劉為志老師:這是一個很好的問題。去年我們考慮過將OpenVINO的功能包發行二進制版,但我們最后發現有以下幾個風險:
-OpenVINO本身需要依賴的OpenVINO Talk是一個完整的包
-這么大的包如果進行二進制發布,可能會造成使用者或ROS社區發布流程的一些問題。
目前ROS OpenVINO同時支持ROS和ROS2兩個版本,在對ROS Melodic版本的支持中,目前沒有計劃支持Python2的相關工作。
Q7.OpenVINO是否加入了語義分割、實例分割的模型?語義分割每年都會有學者提出新的模型,如何利用OpenVINO使用新的模型得到分割結果?在得到場景理解的結果下,如何結合ros在移動機器人上實現高級別的任務?
劉為志老師:提到分割的問題,這個在OpenVINO里是支持的,在OpenVINO里有2至3個模型是支持道路分割的。另外,關于場景的建設,我認為應該有很多,比如行人過馬路,是需要道路分割的。
Q8.如何利用OpenVINO去實現室內場景的語義分割,構建語義地圖?
劉為志老師:實際上,就這個問題,我建議大家去看Intel Lab史雪松老師在B站上的分享。
Q9.如果使用openvino,建議把openvino和ros放在一臺工控機上還是分開部署?
劉獻容老師:我覺得這個問題取決于工作負載和使用的設備。我可以分享一個我們做實例所得到的結果。目前OpenVINO在工業環境下的負載主要有視覺的計算,對工業機器人的控制,以及對于運動規劃算法的計算。在實際中,我們將OpenVINO的視覺檢測和ROS機器放在同一臺機器上。但是如果增加運動規劃和避障,為了保證實時性以及安全性,可以考慮分開部署,選擇虛擬機或者多種架構集成芯片。
Q10.OpenVINO比Tensorflow Lite有什么優勢,Tensorflow模型可以在OpenVINO運行嗎?
劉獻容老師:首先,Tensorflow Lite我沒有具體操作過,只看過一些簡單的介紹,我覺得它們各自的優化目標和優化目的其實是不一樣的。像OpenVINO更多的是把常用的深度學習框架都能支持其優化,而Tensorflow Lite主要是把其自己的模型進行一個優化。他們的共同之處是,他們二者都希望能夠實現跨平臺。
評論