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