本發(fā)明涉及機(jī)器人分布計(jì)算技術(shù)領(lǐng)域,具體涉及一種利用云計(jì)算作為后援支持,通過搭建混合云架構(gòu),實(shí)現(xiàn)基于云機(jī)器人語義地圖構(gòu)建的方法。
背景技術(shù):
機(jī)器人的感知數(shù)據(jù)來源可能包括視覺、力覺、觸覺、紅外、超聲、激光雷達(dá)等多個(gè)維度,機(jī)器人語義地圖構(gòu)建是指機(jī)器人基于這些感知數(shù)據(jù),認(rèn)知和理解所處環(huán)境,核心關(guān)注如何對感知數(shù)據(jù)去粗取精、去偽存真,進(jìn)而分析綜合,提煉出可供機(jī)器人自主決策所使用的高層次語義信息(如物體名稱和所處位置),具體表現(xiàn)為在幾何地圖上添加環(huán)境內(nèi)物體的標(biāo)簽。語義信息的獲取可通過射頻識(shí)別技術(shù)、聽覺技術(shù)、視覺技術(shù)等關(guān)鍵技術(shù)來實(shí)現(xiàn),目前大多數(shù)研究集中在后者,本發(fā)明也是基于視覺技術(shù)。機(jī)器人基于視覺的語義地圖構(gòu)建過程同時(shí)具備計(jì)算密集和知識(shí)密集的特點(diǎn)。具體可分為如下兩個(gè)并行執(zhí)行的環(huán)節(jié):(1)構(gòu)建幾何地圖,通常借助于機(jī)器人所攜帶的rgb-d(redgreenblue-depth)攝像頭、激光雷達(dá)等傳感器,采用同步定位與地圖構(gòu)建算法slam(simultaneouslocationandmapping),slam算法最早由smith、self和cheeseman于1988年提出,相關(guān)思想發(fā)表在論文《estimatinguncertainspatialrelationshipinrobotics》(機(jī)器人學(xué)中不確定空間關(guān)系的估計(jì))中(smithr,selfm,cheesemanp.estimatinguncertainspatialrelationshipinrobotic[m]//autonomousrobotvehickes.springernewyork,1990:167~193.)。這類算法通常使用基于統(tǒng)計(jì)學(xué)的濾波算法或者圖像匹配技術(shù),通過多次迭代來進(jìn)行計(jì)算求解,是典型的計(jì)算密集型任務(wù)。(2)添加物體標(biāo)簽信息,機(jī)器人實(shí)時(shí)感知的圖像中很可能包含多個(gè)物體,因此需要首先對圖像進(jìn)行分割,再通過機(jī)器學(xué)習(xí)等方法對分割后圖像中的物體進(jìn)行識(shí)別。該過程同樣涉及到大量的圖像運(yùn)算,是典型的計(jì)算密集型任務(wù)。同時(shí)識(shí)別準(zhǔn)確率嚴(yán)重依賴于機(jī)器人預(yù)置的知識(shí),這些知識(shí)通常以機(jī)器學(xué)習(xí)訓(xùn)練出的模型等形式存在,因此也是知識(shí)密集型任務(wù)。如果環(huán)境是開放動(dòng)態(tài)、無法精確預(yù)測的,則機(jī)器人語義地圖的準(zhǔn)確度將面臨嚴(yán)峻挑戰(zhàn)。
云機(jī)器人利用云計(jì)算和大數(shù)據(jù)等后臺(tái)基礎(chǔ)設(shè)施,提升機(jī)器人在復(fù)雜環(huán)境下遂行任務(wù)的能力,因此可以給機(jī)器人語義地圖構(gòu)建這類計(jì)算和知識(shí)密集型任務(wù)帶來新的解決思路:(1)利用云端強(qiáng)大的計(jì)算資源進(jìn)行地圖構(gòu)建,實(shí)現(xiàn)本地計(jì)算卸載。(2)更重要的是,利用云端豐富的經(jīng)驗(yàn)知識(shí),打破機(jī)器人本地知識(shí)的局限性,使機(jī)器人基于云端智慧實(shí)現(xiàn)知識(shí)擴(kuò)展,對環(huán)境內(nèi)物體有較好的識(shí)別能力。機(jī)器人能夠利用的云包括私有云(privatecloud)和公有云(publiccloud):私有云是指為一個(gè)客戶單獨(dú)使用而構(gòu)建的云,因而可以提供對數(shù)據(jù)、安全性和服務(wù)質(zhì)量的最有效控制;公有云通常指第三方提供商為客戶提供的能夠使用的云,一般可通過互聯(lián)網(wǎng)使用,成本低廉甚至有些是免費(fèi)的,公有云的核心屬性是共享資源服務(wù)。
目前,云機(jī)器人語義地圖構(gòu)建的主流方法一般是使用私有云,在私有云端為機(jī)器人提供物體知識(shí)庫,機(jī)器人將圖片上傳至私有云獲得物體識(shí)別類別標(biāo)簽,以解決機(jī)器人自身計(jì)算和知識(shí)資源的局限性,提高運(yùn)行效率,縮短請求響應(yīng)時(shí)間。但是這種私有云端物體識(shí)別是基于物體個(gè)體匹配的,或物體識(shí)別算法的準(zhǔn)確率還比較低,而且知識(shí)仍需事先預(yù)置,并且無法識(shí)別陌生物體。也就是說,私有云雖資源可控、請求響應(yīng)時(shí)間可縮短,但其知識(shí)仍存在局限性。
如果使用互聯(lián)網(wǎng)基于大數(shù)據(jù)的公開物體識(shí)別云服務(wù)如cloudsight,將其應(yīng)用于語義地圖構(gòu)建的物體識(shí)別環(huán)節(jié),機(jī)器人就可以利用基于互聯(lián)網(wǎng)大數(shù)據(jù)的豐富知識(shí),提高在復(fù)雜開放環(huán)境中的識(shí)別準(zhǔn)確率。cloudsight提供開放的api,用戶上傳圖片,cloudsight即可返回物體標(biāo)簽或?qū)ξ矬w的描述?;诨ヂ?lián)網(wǎng)海量圖片數(shù)據(jù)知識(shí),cloudsight目前可以識(shí)別4千萬余種物品,而且即使對于較差光線條件和角度下拍攝的物品也有較好的識(shí)別結(jié)果。但此類互聯(lián)網(wǎng)公有云服務(wù)基于“besteffort”模型,性能不可控、請求響應(yīng)時(shí)間長,這對于許多機(jī)器人應(yīng)用是不可接受的,尤其是當(dāng)它們與物理世界直接交互時(shí)。也就是說,公有云雖具有互聯(lián)網(wǎng)大數(shù)據(jù)豐富知識(shí),但資源不可控、請求響應(yīng)時(shí)間長。
綜上所述,基于私有云的方案在請求響應(yīng)時(shí)間上表現(xiàn)較好,能識(shí)別熟悉物體,但需要預(yù)先訓(xùn)練,且存在知識(shí)局限性,無法識(shí)別開放環(huán)境中的陌生物體;基于公有云的方案利用互聯(lián)網(wǎng)大數(shù)據(jù)知識(shí)對環(huán)境中的物體識(shí)別具有更廣泛的智能,可以在無需預(yù)先訓(xùn)練的情況下識(shí)別陌生物體,但識(shí)別延遲大,請求響應(yīng)時(shí)間長。基于以上分析可以發(fā)現(xiàn),在構(gòu)建機(jī)器人語義地圖時(shí),機(jī)器人如何在開放環(huán)境中準(zhǔn)確識(shí)別陌生物體,并且盡可能縮短識(shí)別延遲時(shí)間,是語義地圖構(gòu)建方法需要解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種基于云機(jī)器人混合云架構(gòu)的語義地圖構(gòu)建方法,利用公有云和私有云組合成的混合云,使得機(jī)器人可以利用云端來擴(kuò)展識(shí)別能力,在提高物體識(shí)別的準(zhǔn)確率和縮短識(shí)別時(shí)間之間達(dá)到一個(gè)恰當(dāng)?shù)钠胶狻;旌显浦腹性坪退接性频慕M合,它綜合二者的優(yōu)勢,并實(shí)現(xiàn)兩者之間的良好協(xié)調(diào)。
本發(fā)明的技術(shù)方案是搭建由機(jī)器人、私有云節(jié)點(diǎn)、公有云節(jié)點(diǎn)構(gòu)成的混合云環(huán)境,私有云節(jié)點(diǎn)基于ros(robotoperatingsystem)的消息機(jī)制獲得機(jī)器人拍攝的環(huán)境圖片數(shù)據(jù)和機(jī)器人里程計(jì)及位置數(shù)據(jù),基于里程計(jì)和機(jī)器人位置數(shù)據(jù)利用同步定位與建圖算法slam實(shí)時(shí)繪制環(huán)境幾何地圖。然后私有云節(jié)點(diǎn)基于機(jī)器人拍攝的環(huán)境圖片使用基于fasterr-cnn(fasterregionconvolutionalneuralnetwork)的物體識(shí)別模塊進(jìn)行物體識(shí)別,將可能識(shí)別錯(cuò)誤的物體上傳至公有云節(jié)點(diǎn)進(jìn)行識(shí)別。最后私有云節(jié)點(diǎn)將公有云節(jié)點(diǎn)返回的物體類別識(shí)別標(biāo)簽與slam地圖進(jìn)行映射,將物體類別識(shí)別標(biāo)簽標(biāo)在地圖的相應(yīng)位置完成語義地圖的構(gòu)建。
本發(fā)明包括以下步驟:
第一步,構(gòu)建機(jī)器人混合云環(huán)境,它由機(jī)器人計(jì)算節(jié)點(diǎn)和私有云節(jié)點(diǎn)、公有云節(jié)點(diǎn)構(gòu)成。機(jī)器人計(jì)算節(jié)點(diǎn)是可以運(yùn)行軟件程序的機(jī)器人硬件設(shè)備(如無人機(jī)、無人車、人形機(jī)器人等),私有云節(jié)點(diǎn)是具有良好計(jì)算能力的資源可控的計(jì)算設(shè)備,可以運(yùn)行計(jì)算密集型或者知識(shí)密集型的機(jī)器人應(yīng)用。公有云節(jié)點(diǎn)是存儲(chǔ)資源豐富、并能對外提供服務(wù)的計(jì)算設(shè)備。機(jī)器人計(jì)算節(jié)點(diǎn)、私有云節(jié)點(diǎn)通過網(wǎng)絡(luò)設(shè)備互連,私有云節(jié)點(diǎn)通過互聯(lián)網(wǎng)訪問公有云節(jié)點(diǎn)。
機(jī)器人計(jì)算節(jié)點(diǎn)上除了裝有操作系統(tǒng)ubuntu(例如14.04版本)、機(jī)器人中間件ros(例如indigo版本,由ros消息發(fā)布者、ros消息訂閱者以及ros通信協(xié)議等組成)外,還裝有感知數(shù)據(jù)采集模塊。
在ros中,消息傳遞采用的是基于主題(topic)的發(fā)布/訂閱機(jī)制,即消息按照主題進(jìn)行分類,消息的發(fā)布者在某一主題上發(fā)布消息,所有訂閱了這個(gè)主題的消息訂閱者將收到該消息。一個(gè)ros主題名唯一標(biāo)識(shí)一類消息,ros主題名由字母、數(shù)字和“/”符號組成。
ros中包含多個(gè)軟件包,為機(jī)器人自主行動(dòng)提供輔助支持。tf庫是ros中一系列軟件包的集合,它可以提供坐標(biāo)變換、方向計(jì)算功能。輸入當(dāng)前坐標(biāo)系在參考坐標(biāo)系中的描述,則tf庫可以把當(dāng)前坐標(biāo)系里任何一個(gè)點(diǎn)的坐標(biāo)變換成參考坐標(biāo)系里的坐標(biāo);輸入陀螺儀的歷史數(shù)據(jù)和當(dāng)前數(shù)據(jù),則tf庫可通過積分計(jì)算得到機(jī)器人當(dāng)前的方向。
ros中的rbx1包可以提供角度變換功能。機(jī)器人位姿信息中的方向使用四元數(shù)旋轉(zhuǎn)方式表示(四元數(shù)是一種高階復(fù)數(shù),由一個(gè)實(shí)數(shù)單位和三個(gè)虛數(shù)單位組成),計(jì)算物體在slam地圖上的位置時(shí)需要用到機(jī)器人的轉(zhuǎn)動(dòng)角度(即按照一定的坐標(biāo)軸順序,每個(gè)軸旋轉(zhuǎn)一定角度),則要將四元數(shù)的方向表示方式變換到轉(zhuǎn)動(dòng)角度的方向表示方式。四元數(shù)到轉(zhuǎn)動(dòng)角度的方向表示方式變換是數(shù)學(xué)上的一個(gè)經(jīng)典轉(zhuǎn)換,相關(guān)數(shù)學(xué)算法最早在1843年由hamilton提出,在圖形、圖像學(xué)里常用于物體定位等。
機(jī)器人的位姿信息指機(jī)器人的位置和姿態(tài);里程信息指機(jī)器人走過的路程;深度信息指物體識(shí)別位置到機(jī)器人節(jié)點(diǎn)的攝像頭平面的距離。
感知數(shù)據(jù)采集模塊采集機(jī)器人的位姿信息、里程信息、深度信息和攝像頭拍攝的彩色環(huán)境圖片,并使用ros的消息發(fā)布/訂閱機(jī)制將這些數(shù)據(jù)發(fā)布給私有云節(jié)點(diǎn)上的感知數(shù)據(jù)接收模塊。
私有云節(jié)點(diǎn)上除了裝有操作系統(tǒng)ubuntu、機(jī)器人中間件ros外,還裝有感知數(shù)據(jù)接收模塊、slam建圖模塊、基于fasterr-cnn物體識(shí)別模塊、協(xié)同識(shí)別決策模塊、圖片上傳模塊和語義標(biāo)注模塊。
感知數(shù)據(jù)接收模塊使用ros的消息發(fā)布/訂閱機(jī)制從感知數(shù)據(jù)采集模塊訂閱位姿信息、里程信息、深度信息和彩色環(huán)境圖片。感知數(shù)據(jù)接收模塊接收到位姿信息、里程信息、深度信息和彩色環(huán)境圖片后,將位姿信息轉(zhuǎn)發(fā)給slam建圖模塊和語義標(biāo)注模塊,將里程信息發(fā)送給slam建圖模塊,將彩色環(huán)境圖片發(fā)送給基于fasterr-cnn物體識(shí)別模塊,將深度信息發(fā)送給語義標(biāo)注模塊。
slam建圖模塊利用從感知數(shù)據(jù)接收模塊接收的機(jī)器人位姿信息和里程信息,在完全沒有先驗(yàn)知識(shí)的陌生環(huán)境中實(shí)時(shí)繪制環(huán)境slam地圖,并將slam地圖發(fā)送給語義標(biāo)注模塊。slam地圖指使用slam算法繪制的二維幾何地圖。
基于fasterr-cnn物體識(shí)別模塊利用從感知數(shù)據(jù)接收模塊接收的彩色環(huán)境圖片,基于fasterr-cnn模型對物體進(jìn)行識(shí)別,得到彩色環(huán)境圖片中各物體位置、物體圖片、物體識(shí)別類別標(biāo)簽、物體圖片置信度得分。
fasterr-cnn模型是2015年由shaoqingren,kaiminghe,rossgirshick等人用卷積神經(jīng)網(wǎng)絡(luò)(cnn)實(shí)現(xiàn)的物體識(shí)別引擎(rens,hek,girshickr,etal.fasterr-cnn:towardsreal-timeobjectdetectionwithregionproposalnetworks(使用區(qū)域推薦網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)物體檢測)[c]//advancesinneuralinformationprocessingsystems.2015:91~99.)。利用卷積神經(jīng)網(wǎng)絡(luò)使用訓(xùn)練樣本集圖片對fasterr-cnn模型進(jìn)行有監(jiān)督的訓(xùn)練,即對訓(xùn)練樣本集圖片進(jìn)行特征提取和物體分割,用已知類別標(biāo)簽的樣本不斷調(diào)整fasterr-cnn的softmax分類器的參數(shù),使得經(jīng)過分類器計(jì)算后的輸出中的物體識(shí)別類別標(biāo)簽盡可能多地為訓(xùn)練樣本真實(shí)的類別標(biāo)簽,也就是調(diào)整分類器參數(shù)使得分類效果盡可能好。fasterr-cnn模型訓(xùn)練完成之后,對彩色圖片進(jìn)行物體識(shí)別,得到物體位置、物體識(shí)別類別標(biāo)簽、物體置信度得分。物體位置指以物體左上角坐標(biāo)、物體的長度和寬度來描述物體在環(huán)境圖片中的位置。物體識(shí)別類別標(biāo)簽包括某種具體類別標(biāo)簽(如蘋果類、杯子類等)和除具體類別物體之外的其他物體類別標(biāo)簽?!捌渌矬w類”代表了“所有其他物體”,包含了多種多樣其他類型的物體,只能確定這些都是物體但卻無法表示其為具體某類物體的特征。置信度得分由fasterr-cnn的softmax分類器計(jì)算得出,表征了fasterr-cnn識(shí)別結(jié)果的可靠性大小。識(shí)別置信度得分在0和1之間,得分越大表示識(shí)別結(jié)果的可靠性越大。
基于fasterr-cnn物體識(shí)別模塊采用物體識(shí)別領(lǐng)域著名的pascalvoc2007數(shù)據(jù)集和互聯(lián)網(wǎng)上隨機(jī)下載的多幅包含各種物體的圖片(例如著名的圖片和視頻網(wǎng)站www.flickr.com上的物體圖片)對fasterr-cnn模型進(jìn)行訓(xùn)練。pascalvoc的全稱是patternanalysis,statisticalmodellingandcomputationallearningvisualobjectclasseschanllenge,是該比賽為圖像中物體識(shí)別所提供的標(biāo)準(zhǔn)化數(shù)據(jù)集,其中以2007年比賽的數(shù)據(jù)集最為代表性,簡稱pascalvoc2007。
基于fasterr-cnn物體識(shí)別模塊對從感知數(shù)據(jù)接收模塊傳來的彩色環(huán)境圖片,采用fasterr-cnn模型對彩色環(huán)境圖片進(jìn)行物體識(shí)別,輸出彩色環(huán)境圖片中各物體的物體識(shí)別位置、物體圖片、物體識(shí)別類別標(biāo)簽、物體置信度得分。其中物體識(shí)別類別標(biāo)簽和物體置信度得分由fasterr-cnn模型進(jìn)行物體識(shí)別后得到。物體識(shí)別位置指以物體外框像素點(diǎn)坐標(biāo)位置來描述物體在環(huán)境圖片中的位置,取物體外框的中心點(diǎn)坐標(biāo)作為物體識(shí)別位置的坐標(biāo)。物體圖片指根據(jù)fasterr-cnn模型輸出的物體位置而分割出的圖片。基于fasterr-cnn物體識(shí)別模塊將識(shí)別結(jié)果(包括物體識(shí)別類別標(biāo)簽、置信度得分、物體識(shí)別位置、物體圖片)發(fā)送給協(xié)同識(shí)別決策模塊。
協(xié)同識(shí)別決策模塊根據(jù)置信度閾值判斷從基于fasterr-cnn物體識(shí)別模塊收到的識(shí)別結(jié)果是否正確,對是否需要上傳至公開云再次識(shí)別進(jìn)行決策。置信度閾值由用戶設(shè)置,是使用pascalvoc2007數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)而選擇的最優(yōu)值:置信度閾值的可選擇范圍為0~1,在選擇閾值時(shí)設(shè)置實(shí)驗(yàn)步長為0.1,即從[0,0.1,0.2,……1]中選擇置信度閾值的最優(yōu)設(shè)置值。實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)置信度閾值設(shè)置為0.7時(shí),協(xié)同識(shí)別決策模塊在識(shí)別準(zhǔn)確率的提升上效果最優(yōu),因此建議置信度閾值設(shè)置為0.7。
若識(shí)別結(jié)果中物體識(shí)別類別標(biāo)簽不是“其他物體類”且得分大于等于置信度閾值,協(xié)同識(shí)別決策模塊認(rèn)為對該物體識(shí)別正確,將物體識(shí)別位置和物體識(shí)別類別標(biāo)簽發(fā)送給語義標(biāo)注模塊。對于下述兩種物體識(shí)別錯(cuò)誤或無法識(shí)別的情況,協(xié)同識(shí)別決策模塊將物體圖片發(fā)送給圖片上傳模塊,由公有云再次進(jìn)行識(shí)別,最后協(xié)同識(shí)別決策模塊將公有云返回的物體識(shí)別類別標(biāo)簽和物體識(shí)別位置發(fā)送給語義標(biāo)注模塊。兩種物體識(shí)別錯(cuò)誤或無法識(shí)別的情況包括:1)若物體識(shí)別結(jié)果中置信度得分小于閾值,則認(rèn)為基于fasterr-cnn物體識(shí)別模塊對此物體的識(shí)別結(jié)果置信度不夠高,即基于fasterr-cnn物體識(shí)別模塊對該物體識(shí)別錯(cuò)誤;2)若該物體識(shí)別類別標(biāo)簽為“其他物體類”,則說明該物體所屬類別可能未經(jīng)訓(xùn)練,基于fasterr-cnn物體識(shí)別模塊難以將其分類為某一具體類別,即基于fasterr-cnn物體識(shí)別模塊無法對該物體所屬類別進(jìn)行識(shí)別。
圖片上傳模塊從協(xié)同識(shí)別決策模塊接收協(xié)同識(shí)別決策模塊判斷為識(shí)別錯(cuò)誤或無法識(shí)別的物體圖片,將這些物體圖片傳給公有云節(jié)點(diǎn)進(jìn)行再次識(shí)別,并將公有云節(jié)點(diǎn)再次識(shí)別后得到的物體識(shí)別類別標(biāo)簽發(fā)送給協(xié)同識(shí)別決策模塊。
語義標(biāo)注模塊從slam建圖模塊接收slam地圖,從感知數(shù)據(jù)接收模塊接收位姿信息和深度信息,從協(xié)同識(shí)別決策模塊接收物體識(shí)別位置和物體識(shí)別類別標(biāo)簽,將其保存在“標(biāo)簽-位置”表中。語義標(biāo)注模塊通過“標(biāo)簽-位置”表,將物體識(shí)別類別標(biāo)簽標(biāo)注在slam地圖相應(yīng)位置,完成語義地圖的構(gòu)建,最后將語義地圖發(fā)布給機(jī)器人計(jì)算節(jié)點(diǎn)。語義地圖指添加了物體識(shí)別位置、物體識(shí)別類別標(biāo)簽的slam地圖,使得機(jī)器人和人能理解場景中各物體分布,是機(jī)器人實(shí)現(xiàn)自主行為能力的基礎(chǔ)。
公有云節(jié)點(diǎn)使用互聯(lián)網(wǎng)基于大數(shù)據(jù)的公開云服務(wù)cloudsight識(shí)別圖片上傳模塊接收的物體圖片,給出圖片中物體的識(shí)別標(biāo)簽。2014年,cloudsight公司開發(fā)了物體識(shí)別云服務(wù)cloudsight(https://www.cloudsightapi.com)。cloudsight提供開放的api,用戶上傳圖片,cloudsight即可返回物體識(shí)別類別標(biāo)簽或?qū)ξ矬w的描述。cloudsight提供了post方法和get方法。用戶首先需要獲得apikey,apikey是字符串密碼或數(shù)字證書,訪問應(yīng)用程序接口的憑據(jù);post方法是客戶機(jī)向云服務(wù)cloudsight上傳數(shù)據(jù)的方法;get方法是客戶機(jī)從云服務(wù)cloudsight上獲得數(shù)據(jù)的方法,可以用get方法從云服務(wù)cloudsight上獲取到用于身份和安全認(rèn)證的令牌token,然后獲得物體圖片的識(shí)別結(jié)果類別標(biāo)簽。
第二步,私有云節(jié)點(diǎn)訂閱感知數(shù)據(jù)相關(guān)的ros消息;機(jī)器人計(jì)算節(jié)點(diǎn)感知環(huán)境,發(fā)布感知數(shù)據(jù)相關(guān)的ros消息并訂閱語義地圖相關(guān)的ros消息。具體步驟如下:
2.1私有云節(jié)點(diǎn)的感知數(shù)據(jù)接收模塊通過基于ros的發(fā)布/訂閱機(jī)制從機(jī)器人計(jì)算節(jié)點(diǎn)訂閱主題名為/tf的位姿信息、主題名為/odom的里程信息、主題名為/camera/depth/points的深度信息和/camera/rgb/image_raw的彩色環(huán)境圖片上的消息。
2.2基于fasterr-cnn物體識(shí)別模塊采用物體識(shí)別領(lǐng)域pascalvoc2007數(shù)據(jù)集和互聯(lián)網(wǎng)上隨機(jī)下載的多幅包含各種物體的圖片所構(gòu)成的“其它物體類”對fasterr-cnn模型進(jìn)行訓(xùn)練。
2.3私有云節(jié)點(diǎn)的協(xié)同識(shí)別決策模塊從鍵盤接收置信度閾值。
2.4機(jī)器人計(jì)算節(jié)點(diǎn)上ros消息訂閱者訂閱/sem_map主題上的消息。
2.5機(jī)器人計(jì)算節(jié)點(diǎn)移動(dòng),通過硬件傳感器和加速度計(jì)、陀螺儀感知環(huán)境獲得數(shù)據(jù),并通過ros機(jī)制發(fā)布數(shù)據(jù)。具體步驟如下:
2.5.1感知數(shù)據(jù)采集模塊從距離傳感器獲得數(shù)據(jù),產(chǎn)生里程信息發(fā)布到/odom主題上;
2.5.2感知數(shù)據(jù)采集模塊從距離傳感器、加速度計(jì)、陀螺儀獲得機(jī)器人移動(dòng)的距離、各時(shí)刻的加速度、陀螺儀角度。感知數(shù)據(jù)采集模塊獲得機(jī)器人的初始位置和計(jì)算移動(dòng)時(shí)間,根據(jù)上述信息使用ros中tf庫進(jìn)行計(jì)算得到機(jī)器人當(dāng)前在slam地圖上的位置坐標(biāo)(position)和方向(orientation)產(chǎn)生位姿信息,并發(fā)布到/tf主題上;
2.5.3感知數(shù)據(jù)采集模塊從視覺傳感器獲得數(shù)據(jù),視覺傳感器數(shù)據(jù)包括圖像中各像素點(diǎn)距離視覺傳感器的深度信息和rgb(redgreenblue)顏色值的彩色信息,后者即表現(xiàn)為拍攝到的彩色環(huán)境圖片。感知數(shù)據(jù)采集模塊根據(jù)視覺傳感器數(shù)據(jù)產(chǎn)生機(jī)器人距前方物體的深度信息和彩色環(huán)境圖片,并分別發(fā)布到/camera/depth/points和/camera/rgb/image_raw主題上。
第三步,私有云節(jié)點(diǎn)上的感知數(shù)據(jù)接收模塊獲取機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息,并將機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息發(fā)送給slam建圖模塊,slam建圖模塊建立slam地圖。具體步驟如下:
3.1私有云節(jié)點(diǎn)上的感知數(shù)據(jù)接收模塊使用ros消息機(jī)制接收到/tf主題和/odom主題上的消息,獲取機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息,并將機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息發(fā)送給slam建圖模塊,將機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息發(fā)送給語義標(biāo)注模塊。
3.2私有云節(jié)點(diǎn)的slam建圖模塊接收機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息,利用同步定位與建圖算法slam繪制環(huán)境幾何地圖即slam地圖,并將slam地圖發(fā)送給語義標(biāo)注模塊。
第四步,私有云節(jié)點(diǎn)上的感知數(shù)據(jù)接收模塊獲取機(jī)器人計(jì)算節(jié)點(diǎn)的彩色環(huán)境圖片并將其發(fā)送給基于fasterr-cnn物體識(shí)別模塊,基于fasterr-cnn物體識(shí)別模塊進(jìn)行物體識(shí)別后將識(shí)別結(jié)果發(fā)送給語義標(biāo)注模塊。具體步驟如下:
4.1感知數(shù)據(jù)接收模塊使用ros消息機(jī)制接收到/camera/rgb/image_raw主題上的消息,獲取機(jī)器人節(jié)點(diǎn)當(dāng)前拍攝的彩色環(huán)境圖片,并將其發(fā)送給基于fasterr-cnn物體識(shí)別模塊。
4.2基于fasterr-cnn物體識(shí)別模塊接收機(jī)器人計(jì)算節(jié)點(diǎn)的彩色環(huán)境圖片,進(jìn)行物體識(shí)別,具體步驟如下:
4.2.1基于fasterr-cnn物體識(shí)別模塊從感知數(shù)據(jù)接收模塊接收彩色環(huán)境圖片。
4.2.2基于fasterr-cnn物體識(shí)別模塊使用fasterr-cnn模型進(jìn)行圖片特征提取和物體分割,根據(jù)物體位置計(jì)算物體識(shí)別位置和從彩色環(huán)境圖片中截取物體圖片,并將物體識(shí)別位置、物體圖片、物體識(shí)別結(jié)果類別標(biāo)簽和識(shí)別置信度得分發(fā)送給協(xié)同識(shí)別決策模塊。具體步驟如下:
4.2.2.1fasterr-cnn模型對滑動(dòng)窗口中的圖片進(jìn)行特征提取,并判斷是否為一個(gè)物體。如果是,fasterr-cnn模型進(jìn)行物體分割,并返回彩色環(huán)境圖片中物體位置、物體識(shí)別結(jié)果類別標(biāo)簽和對應(yīng)的識(shí)別置信度得分,執(zhí)行步驟4.2.2.2;否則執(zhí)行步驟5.5。
4.2.2.2基于fasterr-cnn物體識(shí)別模塊獲得fasterr-cnn模型返回彩色環(huán)境圖片中物體位置、物體識(shí)別結(jié)果類別標(biāo)簽和對應(yīng)的識(shí)別置信度得分,根據(jù)物體位置計(jì)算物體識(shí)別位置和從彩色環(huán)境圖片中截取物體圖片?;趂asterr-cnn物體識(shí)別模塊將物體識(shí)別位置、物體圖片、物體識(shí)別結(jié)果類別標(biāo)簽和識(shí)別置信度得分發(fā)送給協(xié)同識(shí)別決策模塊。
4.2.3協(xié)同識(shí)別決策模塊判斷物體識(shí)別是否正確。如果正確,協(xié)同識(shí)別決策模塊將結(jié)果發(fā)送給語義標(biāo)注模塊,執(zhí)行第五步;否則協(xié)同識(shí)別決策模塊將識(shí)別錯(cuò)誤的物體發(fā)送給圖片上傳模塊,圖片上傳模塊進(jìn)一步上傳至公有云節(jié)點(diǎn)。具體步驟如下:
4.2.3.1協(xié)同識(shí)別決策模塊從基于fasterr-cnn物體識(shí)別模塊接收物體圖片、物體識(shí)別位置、物體識(shí)別類別標(biāo)簽和識(shí)別置信度得分,進(jìn)行判斷。若物體識(shí)別類別標(biāo)簽不是“其他物體類”且置信度得分大于等于置信度閾值,則協(xié)同識(shí)別決策模塊判定對該物體識(shí)別正確,執(zhí)行步驟4.2.3.4。
4.2.3.2若物體識(shí)別類別標(biāo)簽為“其他物體類”或識(shí)別置信度得分小于置信度閾值,則協(xié)同識(shí)別決策模塊判定對該物體識(shí)別錯(cuò)誤,將該物體圖片發(fā)送給圖片上傳模塊。
4.2.3.3圖片上傳模塊使用公有云cloudsight對物體圖片進(jìn)行再次識(shí)別,并將物體識(shí)別類別標(biāo)簽發(fā)送給協(xié)同識(shí)別決策模塊。具體步驟如下:
4.2.3.3.1圖片上傳模塊申請一個(gè)cloudsight的apikey。
4.2.3.3.2圖片上傳模塊利用http的post方法將物體圖片的地址url(資源描述符)和所申請的apikey上傳至https://api.cloudsightapi.com/image_requests發(fā)出請求。
4.2.3.3.3圖片上傳模塊利用http的get方法獲取到用于身份和安全認(rèn)證的令牌token。
4.2.3.3.4圖片上傳模塊通過訪問https://api.cloudsightapi.com/image_responses/[token]獲得物體圖片的識(shí)別結(jié)果類別標(biāo)簽,并將物體識(shí)別類別標(biāo)簽發(fā)送給協(xié)同識(shí)別決策模塊。
4.2.3.4協(xié)同識(shí)別決策模塊接收到物體識(shí)別結(jié)果類別標(biāo)簽后,將物體識(shí)別類別標(biāo)簽和物體識(shí)別位置發(fā)送給語義標(biāo)注模塊。
第五步,私有云節(jié)點(diǎn)上的語義標(biāo)注模塊接收機(jī)器人計(jì)算節(jié)點(diǎn)的深度信息、位姿信息、物體識(shí)別類別標(biāo)簽和物體識(shí)別位置后,計(jì)算出物體在slam地圖上的位置坐標(biāo)后,將物體識(shí)別類別標(biāo)簽標(biāo)注在slam地圖相應(yīng)位置,完成語義地圖的構(gòu)建。具體步驟如下:
5.1感知數(shù)據(jù)接收模塊使用ros消息機(jī)制接收到/camera/depth/points主題上的消息,獲取機(jī)器人節(jié)點(diǎn)的深度信息,并將機(jī)器人節(jié)點(diǎn)的深度信息發(fā)送給語義標(biāo)注模塊。
5.2語義標(biāo)注模塊從感知數(shù)據(jù)接收模塊接收機(jī)器人節(jié)點(diǎn)的位姿信息,包括機(jī)器人的位置坐標(biāo)(x0,y0)(笛卡爾坐標(biāo)系)和表示3d姿態(tài)的方向γ。使用ros中的rbx1包,將機(jī)器人方向γ轉(zhuǎn)化為對應(yīng)的轉(zhuǎn)動(dòng)角度β。
5.3語義標(biāo)注模塊從感知數(shù)據(jù)接收模塊接收機(jī)器人計(jì)算節(jié)點(diǎn)的深度信息,從協(xié)同識(shí)別決策模塊接收物體識(shí)別類別標(biāo)簽和物體識(shí)別位置(x2,y2),計(jì)算機(jī)器人節(jié)點(diǎn)到物體的視覺角度α和深度d。
視覺角度是通過結(jié)合物體識(shí)別位置和攝像頭的角度偵測范圍,按照三角函數(shù)比例對應(yīng)關(guān)系計(jì)算得到。設(shè)圖片水平像素值的一半為b,則圖片中物體中心距離圖片中心的水平像素值a為
a=|x2-b|
視覺傳感器的水平偵測角度范圍為θ(即以傳感器為中心,左右水平偵測角度范圍各θ/2),機(jī)器人到物體中心的視覺角度α為
α=tan-1((tan(θ/2))·a/b))
,通過結(jié)合機(jī)器人節(jié)點(diǎn)到物體的角度,按照三角函數(shù)關(guān)系計(jì)算得到機(jī)器人節(jié)點(diǎn)距離物體的深度。
設(shè)機(jī)器人節(jié)點(diǎn)獲得的深度信息為d,機(jī)器人節(jié)點(diǎn)距離物體的水平深度d為
d=d/cosα
5.4語義標(biāo)注模塊融合環(huán)境圖像中物體識(shí)別位置、機(jī)器人節(jié)點(diǎn)到物體的視覺角度和深度、機(jī)器人節(jié)點(diǎn)的位置坐標(biāo)和轉(zhuǎn)動(dòng)角度,利用三角函數(shù)關(guān)系計(jì)算得到物體在slam地圖上的位置坐標(biāo),將物體結(jié)果類別標(biāo)簽標(biāo)注在slam地圖的相應(yīng)位置。利用三角函數(shù)關(guān)系計(jì)算物體在slam地圖上的位置的方法是:
設(shè)機(jī)器人的位置坐標(biāo)為(x0,y0),那么物體在slam地圖上的位置坐標(biāo)(x1,y1)為
對于攝像頭左側(cè)的物體而言:
對于攝像頭右側(cè)的物體而言:
5.5基于fasterr-cnn物體識(shí)別模塊判斷滑動(dòng)窗口是否已經(jīng)到右下角,如果是,即彩色環(huán)境圖片已經(jīng)完成識(shí)別,執(zhí)行步驟5.6;否則將滑動(dòng)窗口移到下一個(gè)位置,執(zhí)行步驟4.2.2.1。
5.6語義標(biāo)注模塊將語義地圖作為ros消息發(fā)布在/sem_map主題上。
第六步,機(jī)器人計(jì)算節(jié)點(diǎn)使用ros消息機(jī)制接收語義地圖相關(guān)的ros消息。具體步驟如下:
6.1ros消息訂閱者使用ros消息機(jī)制接收私有云節(jié)點(diǎn)的語義標(biāo)注模塊發(fā)布的/sem_map主題上的消息,獲得語義地圖。
6.2機(jī)器人判定是否收到用戶發(fā)出的“已完成整個(gè)環(huán)境的遍歷”的指令,若收到,轉(zhuǎn)第七步;若未收到,執(zhí)行步驟2.5。
第七步,結(jié)束。
采用本發(fā)明可以達(dá)到如下的有益效果:
(1)私有云與機(jī)器人協(xié)同構(gòu)建環(huán)境幾何地圖,利用云端強(qiáng)大的計(jì)算能力,減輕了機(jī)器人本地的計(jì)算負(fù)載。
(2)利用混合云架構(gòu)進(jìn)行環(huán)境中物體的識(shí)別,可以在利用云端擴(kuò)展機(jī)器人能力的同時(shí),同時(shí)最小化請求響應(yīng)時(shí)間。基于協(xié)同識(shí)別決策模塊,私有云熟悉的物體即可在私有云端進(jìn)行識(shí)別,私有云的資源可控,請求響應(yīng)時(shí)間短;對于私有云有可能識(shí)別錯(cuò)誤的物體,會(huì)篩選出來上傳至公有云進(jìn)行再次識(shí)別,利用互聯(lián)網(wǎng)基于大數(shù)據(jù)的豐富知識(shí)為物體打標(biāo)簽,擴(kuò)展機(jī)器人的識(shí)別認(rèn)知能力,提高了物體識(shí)別的準(zhǔn)確率,使得在提高物體識(shí)別的準(zhǔn)確率和縮短識(shí)別時(shí)間之間達(dá)到一個(gè)恰當(dāng)?shù)钠胶狻?/p>
(3)基于數(shù)據(jù)融合實(shí)現(xiàn)“物體標(biāo)簽-地圖位置”的映射,完成語義地圖的構(gòu)建。融合不同空間維度的數(shù)據(jù)并進(jìn)行計(jì)算,將物體標(biāo)簽標(biāo)注在地圖相應(yīng)位置,構(gòu)建語義地圖,展示機(jī)器人對環(huán)境理解的效果。
附圖說明
圖1是本發(fā)明第一步構(gòu)建的機(jī)器人混合云環(huán)境整體邏輯結(jié)構(gòu)圖。
圖2是本發(fā)明第一步構(gòu)建的機(jī)器人混合云環(huán)境上的軟件部署圖。
圖3是本發(fā)明整體流程圖。
圖4是本發(fā)明第四步和第五步中機(jī)器人計(jì)算節(jié)點(diǎn)、私有云節(jié)點(diǎn)和公有云節(jié)點(diǎn)協(xié)同建立語義地圖的流程圖。
圖5是本發(fā)明步驟5.3中機(jī)器人節(jié)點(diǎn)到物體的視覺角度和深度的計(jì)算示意圖。
圖6是本發(fā)明步驟5.4中物體在slam地圖上位置的計(jì)算示意圖。圖6(a)是物體在攝像頭左側(cè)的計(jì)算示意圖,圖6(b)是物體在攝像頭右側(cè)的計(jì)算示意圖。
具體實(shí)施方式
圖1是本發(fā)明第一步構(gòu)建的機(jī)器人混合云環(huán)境,它由機(jī)器人計(jì)算節(jié)點(diǎn)、私有云節(jié)點(diǎn)和公有云節(jié)點(diǎn)構(gòu)成。機(jī)器人計(jì)算節(jié)點(diǎn)是可以運(yùn)行軟件程序的機(jī)器人硬件設(shè)備(如無人機(jī)、無人車、人形機(jī)器人等),私有云節(jié)點(diǎn)是具有良好計(jì)算能力的資源可控的計(jì)算設(shè)備,可以運(yùn)行計(jì)算密集型或者知識(shí)密集型的機(jī)器人應(yīng)用。公有云節(jié)點(diǎn)是存儲(chǔ)資源豐富、并能對外提供服務(wù)的計(jì)算設(shè)備。機(jī)器人計(jì)算節(jié)點(diǎn)、私有云節(jié)點(diǎn)通過網(wǎng)絡(luò)設(shè)備互連,私有云通過互聯(lián)網(wǎng)訪問公有云。
圖2是本發(fā)明機(jī)器人計(jì)算節(jié)點(diǎn)和私有云節(jié)點(diǎn)上的軟件部署圖。機(jī)器人計(jì)算節(jié)點(diǎn)是可以在環(huán)境中移動(dòng)、能夠運(yùn)行軟件程序的機(jī)器人硬件設(shè)備,其上帶有攝像頭、激光雷達(dá)等傳感器,機(jī)器人計(jì)算節(jié)點(diǎn)和私有云節(jié)點(diǎn)都裝有操作系統(tǒng)ubuntu和機(jī)器人中間件ros。除此之外,機(jī)器人計(jì)算節(jié)點(diǎn)上還裝有感知數(shù)據(jù)采集模塊。私有云節(jié)點(diǎn)上還裝有感知數(shù)據(jù)接收模塊、slam建圖模塊、基于fasterr-cnn物體識(shí)別模塊、協(xié)同識(shí)別決策模塊、圖片上傳模塊和語義標(biāo)注模塊。公有云使用cloudsight物體識(shí)別云服務(wù)。
以下以輪式機(jī)器人turtlebot構(gòu)建語義地圖為例說明本發(fā)明的具體實(shí)施方式。該實(shí)例的turtlebot上配置有微軟視覺傳感器kinect,可以實(shí)時(shí)拍攝環(huán)境圖像和測距。私有云部署在服務(wù)器上,由于機(jī)器人和私有云存在知識(shí)的局限性,因此借助公有云基于互聯(lián)網(wǎng)大數(shù)據(jù)擴(kuò)展機(jī)器人的識(shí)別認(rèn)知能力,使得混合云可以在擴(kuò)增物體識(shí)別認(rèn)知能力的同時(shí)最小化請求響應(yīng)時(shí)間。
采用本發(fā)明的具體實(shí)施方式如圖3所示如下:
第一步,構(gòu)建機(jī)器人混合云系統(tǒng),它由turtlebot輪式機(jī)器人、服務(wù)器和基于大數(shù)據(jù)的公開云服務(wù)cloudsight組成,三者通過網(wǎng)絡(luò)設(shè)備互連。turtlebot輪式機(jī)器人裝有操作系統(tǒng)ubuntu14.04版本、機(jī)器人操作系統(tǒng)中間件rosindigo版本和感知數(shù)據(jù)模塊。服務(wù)器裝有操作系統(tǒng)ubuntu、機(jī)器人中間件ros、感知數(shù)據(jù)接收模塊、slam建圖模塊、基于fasterr-cnn物體識(shí)別模塊、協(xié)同識(shí)別決策模塊、圖片上傳模塊和語義標(biāo)注模塊。公有云使用cloudsight物體識(shí)別云服務(wù)(https://www.cloudsightapi.com)。
第二步,私有云節(jié)點(diǎn)訂閱感知數(shù)據(jù)相關(guān)的ros消息;turtlebot感知環(huán)境,發(fā)布感知數(shù)據(jù)相關(guān)的ros消息并訂閱語義地圖相關(guān)的ros消息。
2.1私有云節(jié)點(diǎn)的感知數(shù)據(jù)接收模塊通過基于ros的發(fā)布/訂閱機(jī)制從機(jī)器人計(jì)算節(jié)點(diǎn)訂閱主題名為/tf的位姿信息、主題名為/odom的里程信息、主題名為/camera/depth/points的深度信息和/camera/rgb/image_raw的彩色環(huán)境圖片上的消息。
2.2基于fasterr-cnn物體識(shí)別模塊采用物體識(shí)別領(lǐng)域pascalvoc2007數(shù)據(jù)集和互聯(lián)網(wǎng)上隨機(jī)下載的多幅包含各種物體的圖片所構(gòu)成的“其它物體類”對fasterr-cnn模型進(jìn)行訓(xùn)練。
2.3私有云節(jié)點(diǎn)的協(xié)同識(shí)別決策模塊從鍵盤接收置信度閾值0.7。
2.4turtlebot上ros消息訂閱者訂閱/sem_map主題上的消息。
2.5turtlebot輪式機(jī)器人移動(dòng),通過硬件傳感器和加速度計(jì)、陀螺儀感知環(huán)境獲得數(shù)據(jù),并通過ros機(jī)制發(fā)布數(shù)據(jù)。具體步驟如下:
2.5.1感知數(shù)據(jù)采集模塊從距離傳感器獲得數(shù)據(jù),產(chǎn)生里程信息發(fā)布到/odom主題上;
2.5.2感知數(shù)據(jù)采集模塊從距離傳感器、加速度計(jì)、陀螺儀獲得turtlebot移動(dòng)的距離、各時(shí)刻的加速度、陀螺儀角度。感知數(shù)據(jù)采集模塊獲得turtlebot的初始位置和計(jì)算移動(dòng)時(shí)間,根據(jù)上述信息使用ros中tf庫進(jìn)行計(jì)算得到機(jī)器人當(dāng)前在slam地圖上的位置坐標(biāo)和方向產(chǎn)生位姿信息,并發(fā)布到/tf主題上;
2.5.3感知數(shù)據(jù)采集模塊根據(jù)kinect視覺傳感器數(shù)據(jù)產(chǎn)生機(jī)器人距前方物體的深度信息和彩色環(huán)境圖片,并分別發(fā)布到/camera/depth/points和/camera/rgb/image_raw主題上。
第三步,私有云節(jié)點(diǎn)上的感知數(shù)據(jù)接收模塊獲取turtlebot輪式機(jī)器人的位姿信息和里程信息,并將機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息發(fā)送給slam建圖模塊,slam建圖模塊建立slam地圖。具體步驟如下:
3.1私有云節(jié)點(diǎn)上的感知數(shù)據(jù)接收模塊使用ros消息機(jī)制接收到/tf主題和/odom主題上的消息,獲取機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息,并將機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息發(fā)送給slam建圖模塊,將機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息發(fā)送給語義標(biāo)注模塊。
3.2私有云節(jié)點(diǎn)的slam建圖模塊接收機(jī)器人計(jì)算節(jié)點(diǎn)的位姿信息和里程信息,利用同步定位與建圖算法slam繪制環(huán)境幾何地圖即slam地圖,并將slam地圖發(fā)送給語義標(biāo)注模塊。
第四步,私有云節(jié)點(diǎn)上的感知數(shù)據(jù)接收模塊獲取機(jī)器人計(jì)算節(jié)點(diǎn)的彩色環(huán)境圖片并將其發(fā)送給基于fasterr-cnn物體識(shí)別模塊,基于fasterr-cnn物體識(shí)別模塊進(jìn)行物體識(shí)別后將識(shí)別結(jié)果發(fā)送給語義標(biāo)注模塊。具體步驟如下:
4.1感知數(shù)據(jù)接收模塊使用ros消息機(jī)制接收到/camera/rgb/image_raw主題上的消息,獲取機(jī)器人節(jié)點(diǎn)當(dāng)前拍攝的彩色環(huán)境圖片,并將其發(fā)送給基于fasterr-cnn物體識(shí)別模塊。
4.2基于fasterr-cnn物體識(shí)別模塊接收機(jī)器人計(jì)算節(jié)點(diǎn)的彩色環(huán)境圖片,進(jìn)行物體識(shí)別,具體步驟如下:
4.2.1基于fasterr-cnn物體識(shí)別模塊從感知數(shù)據(jù)接收模塊接收彩色環(huán)境圖片。圖片中包括了機(jī)器人和椅子。
4.2.2基于fasterr-cnn物體識(shí)別模塊使用fasterr-cnn模型進(jìn)行圖片特征提取和物體分割,根據(jù)物體位置計(jì)算物體識(shí)別位置和從彩色環(huán)境圖片中截取物體圖片,并將物體識(shí)別位置、物體圖片、物體識(shí)別結(jié)果類別標(biāo)簽和識(shí)別置信度得分發(fā)送給協(xié)同識(shí)別決策模塊。具體步驟如下:
4.2.2.1fasterr-cnn模型對滑動(dòng)窗口中的圖片進(jìn)行特征提取,并判斷是否為一個(gè)物體。判斷是一個(gè)物體后fasterr-cnn模型返回的彩色環(huán)境圖片中機(jī)器人的物體位置、物體識(shí)別結(jié)果類別標(biāo)簽和對應(yīng)的識(shí)別置信度得分。fasterr-cnn模型將機(jī)器人的物體識(shí)別結(jié)果類別標(biāo)簽設(shè)置為“person”,識(shí)別置信度得分為0.551。
4.2.2.2基于fasterr-cnn物體識(shí)別模塊獲得fasterr-cnn模型返回彩色環(huán)境圖片中物體位置、物體識(shí)別結(jié)果類別標(biāo)簽和對應(yīng)的識(shí)別置信度得分,根據(jù)物體位置計(jì)算物體識(shí)別位置和從彩色環(huán)境圖片中截取物體圖片。基于fasterr-cnn物體識(shí)別模塊將物體識(shí)別位置、物體圖片、物體識(shí)別結(jié)果類別標(biāo)簽和識(shí)別置信度得分發(fā)送給協(xié)同識(shí)別決策模塊。
4.2.3協(xié)同識(shí)別決策模塊判斷物體識(shí)別是否正確。如果正確,協(xié)同識(shí)別決策模塊將結(jié)果發(fā)送給語義標(biāo)注模塊,執(zhí)行第五步;否則協(xié)同識(shí)別決策模塊將識(shí)別錯(cuò)誤的物體發(fā)送給圖片上傳模塊,圖片上傳模塊進(jìn)一步上傳至公有云節(jié)點(diǎn)。具體步驟如下:
4.2.3.1協(xié)同識(shí)別決策模塊從基于fasterr-cnn物體識(shí)別模塊接收機(jī)器人的物體圖片、物體識(shí)別位置、物體識(shí)別類別標(biāo)簽和識(shí)別置信度得分,進(jìn)行判斷。若物體識(shí)別類別標(biāo)簽不是“其他物體類”且置信度得分大于等于置信度閾值,則協(xié)同識(shí)別決策模塊判定對該物體識(shí)別正確,將物體識(shí)別位置和物體識(shí)別類別標(biāo)簽發(fā)送給語義標(biāo)注模塊,執(zhí)行第五步。
4.2.3.2由于機(jī)器人的識(shí)別置信度得分小于閾值0.7,協(xié)同識(shí)別決策模塊判定對該物體識(shí)別錯(cuò)誤,將該物體圖片發(fā)送給圖片上傳模塊。
4.2.3.3圖片上傳模塊使用公有云cloudsight對物體圖片進(jìn)行再次識(shí)別,并將物體識(shí)別類別標(biāo)簽發(fā)送給協(xié)同識(shí)別決策模塊。具體步驟如下:
4.2.3.3.1圖片上傳模塊申請一個(gè)cloudsight的apikey。
4.2.3.3.2圖片上傳模塊利用http的post方法將物體圖片的地址url(資源描述符)和所申請的apikey上傳至https://api.cloudsightapi.com/image_requests發(fā)出請求。
4.2.3.3.3圖片上傳模塊利用http的get方法獲取到用于身份和安全認(rèn)證的令牌token。
4.2.3.3.4圖片上傳模塊通過訪問https://api.cloudsightapi.com/image_responses/[token]獲得物體圖片的識(shí)別結(jié)果類別標(biāo)簽為blueandwhiterobot,并將物體識(shí)別類別標(biāo)簽發(fā)送給協(xié)同識(shí)別決策模塊。
4.2.3.4協(xié)同識(shí)別決策模塊接收到物體識(shí)別結(jié)果類別標(biāo)簽后,將物體識(shí)別類別標(biāo)簽和物體識(shí)別位置發(fā)送給語義標(biāo)注模塊。
第五步,私有云節(jié)點(diǎn)上的語義標(biāo)注模塊接收機(jī)器人計(jì)算節(jié)點(diǎn)的深度信息、位姿信息、物體識(shí)別類別標(biāo)簽和物體識(shí)別位置后,計(jì)算出物體在slam地圖上的位置坐標(biāo)后,將物體識(shí)別類別標(biāo)簽標(biāo)注在slam地圖相應(yīng)位置,完成語義地圖的構(gòu)建。具體步驟如下:
5.1感知數(shù)據(jù)接收模塊使用ros消息機(jī)制接收到/camera/depth/points主題上的消息,獲取機(jī)器人節(jié)點(diǎn)的深度信息,并將機(jī)器人節(jié)點(diǎn)的深度信息發(fā)送給語義標(biāo)注模塊。
5.2語義標(biāo)注模塊從感知數(shù)據(jù)接收模塊接收機(jī)器人節(jié)點(diǎn)的位姿信息,包括機(jī)器人的位置坐標(biāo)(0.21,0.18)和表示3d姿態(tài)的方向[0.8128,0.3430,0.4073,0.2362]t。使用ros中的rbx1包,將機(jī)器人方向[0.8128,0.3430,0.4073,0.2362]t轉(zhuǎn)化為對應(yīng)的轉(zhuǎn)動(dòng)角度50.02°。
5.3語義標(biāo)注模塊從感知數(shù)據(jù)接收模塊接收機(jī)器人計(jì)算節(jié)點(diǎn)的深度信息,從協(xié)同識(shí)別決策模塊接收物體識(shí)別類別標(biāo)簽和物體識(shí)別位置(391,105),計(jì)算機(jī)器人節(jié)點(diǎn)到物體的視覺角度和深度。
如圖5所示,在彩色環(huán)境圖片水平像素值的一半為250,機(jī)器人圖片中心距離圖片中心的水平像素值為141。
a=|391-250|
kinect視覺傳感器的水平偵測范圍為57度(即以傳感器為中心,左右各28.5度),則機(jī)器人到物體中心的視覺角度為
α=tan-1((tan(28.5°))·141/250))=17.03°
機(jī)器人節(jié)點(diǎn)距離物體深度為d,機(jī)器人節(jié)點(diǎn)獲得的深度信息為2.15米,機(jī)器人節(jié)點(diǎn)到物體的視覺角度為17.03°,那么機(jī)器人距離物體深度為
d=2.15/cos(17.03°)=2.25(米)
5.4語義標(biāo)注模塊融合環(huán)境圖像中物體識(shí)別位置、機(jī)器人節(jié)點(diǎn)到物體的視覺角度和深度、機(jī)器人節(jié)點(diǎn)的位置坐標(biāo)和轉(zhuǎn)動(dòng)角度,利用三角函數(shù)關(guān)系計(jì)算得到物體在slam地圖上的位置坐標(biāo),將物體結(jié)果類別標(biāo)簽標(biāo)注在slam地圖的相應(yīng)位置。利用三角函數(shù)關(guān)系計(jì)算物體在slam地圖上的位置的步驟是:
通過上面5.2和5.3步驟得到機(jī)器人到物體的視覺角度α為17.03°,機(jī)器人距離物體的深度d為2.25米,機(jī)器人的轉(zhuǎn)動(dòng)角度β為50.02°,機(jī)器人的位置坐標(biāo)為(0.21,0.18),該物體位于攝像頭右側(cè),如圖6(b)所示,物體在地圖上的位置坐標(biāo)(x1,y1)為
計(jì)算完成后,將物體結(jié)果類別標(biāo)簽(blueandwhiterobot)標(biāo)注在slam地圖坐標(biāo)為(2.10,1.41)的位置。
5.5fasterr-cnn模型判斷滑動(dòng)窗口是否已經(jīng)到右下角,由于還沒有到右下角,即沒有完成彩色環(huán)境圖片中物體識(shí)別,fasterr-cnn模型將滑動(dòng)窗口移到下一個(gè)位置,執(zhí)行步驟4.2.2.1,判斷是否為一個(gè)物體,如果不是物體,繼續(xù)移動(dòng)滑動(dòng)窗口,直到滑動(dòng)窗口中是一個(gè)物體。繼續(xù)執(zhí)行步驟4.2.2.2識(shí)別下一個(gè)物體椅子,并將其標(biāo)注在slam地圖上。若滑動(dòng)窗口已經(jīng)滑到右下角,則完成識(shí)別彩色環(huán)境圖片中物體(椅子和桌子)的識(shí)別,執(zhí)行步驟5.6。
5.6語義標(biāo)注模塊將語義地圖作為ros消息發(fā)布在/sem_map主題上。
第六步,機(jī)器人計(jì)算節(jié)點(diǎn)使用ros消息機(jī)制接收語義地圖相關(guān)的ros消息。具體步驟如下:
6.1turtlebot輪式機(jī)器人上的ros消息訂閱者使用ros消息機(jī)制接收私有云節(jié)點(diǎn)的語義標(biāo)注模塊發(fā)布的/sem_map主題上的消息,獲得語義地圖。
6.2機(jī)器人判定是否從用戶收到“已完成整個(gè)環(huán)境的遍歷”的指令,如果收到,轉(zhuǎn)第七步,否則執(zhí)行步驟2.5,turtlebot繼續(xù)移動(dòng),發(fā)布里程消息、位姿消息、深度消息、彩色環(huán)境圖片;混合云節(jié)點(diǎn)上的感知數(shù)據(jù)接收、基于fasterr-cnn物體識(shí)別、協(xié)同識(shí)別決策、語義標(biāo)注等模塊繼續(xù)接收消息、進(jìn)行物體識(shí)別和標(biāo)注語義地圖,不斷地豐富語義地圖。
第七步,結(jié)束。