文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.180065
中文引用格式: 劉毅,車進,朱小波,等. 空地機器人協(xié)同導航方法與實驗研究[J].電子技術應用,2018,44(10):144-148.
英文引用格式: Liu Yi,Che Jin,Zhu Xiaobo,et al. The navigation method and experimental research of air-ground robot cooperation[J]. Application of Electronic Technique,2018,44(10):144-148.
0 引言
機器人在許多領域發(fā)揮著越來越重要的作用,單獨的機器人可以有效幫助人們完成數(shù)據(jù)收集,而多個機器人的協(xié)調合作則可產(chǎn)生無窮的潛力,不同機器人之間的互補作業(yè)效果將更加明顯。機器視覺、傳感器網(wǎng)絡等的不斷發(fā)展,使空中機器人與地面機器人的結合成為可能??罩袡C器人具有全局視覺,利用空中機器人廣闊的環(huán)境感知能力幫助地面機器人構建全局環(huán)境模型并為地面機器人提供導航信息;地面機器人具有的局部視覺可以使其更好地執(zhí)行任務,二者的結合可以提高任務使命的完成度[1-3]。空地機器人在民用方面適用于救援減災、物流配送、城市垃圾清理等,在軍事方面的用途將更加廣泛,無人作戰(zhàn)將部分取代有人作戰(zhàn),最終無人作戰(zhàn)成為主要形式。
目前在空地機器人協(xié)作方面的研究在國際上較為深入,如美國弗吉尼亞理工大學使用空地機器人在精準農業(yè)上進行研究來估計農作物長勢[4],韓國延世大學使用多四旋翼飛行器建立地面三維信息并引導地面機器人進行全局路徑規(guī)劃[5],美國亞利桑那大學使用無人機進行人群動態(tài)檢測后再由地面機器人進行精確識別[6],瑞士蘇黎世大學利用四旋翼飛行器引導地面機器人對目標物進行檢測與清理[7],意大利卡塔尼亞大學的研究人員測試了由車輛搭載的四旋翼飛行器使用圖像分析幫助地面移動機器人完成路徑重規(guī)劃的任務[8]。在國內,中國科學院大學使用空地機器人共同對目標探查以實現(xiàn)最佳的跟蹤與檢測[9]等。隨著科技的不斷發(fā)展,機器人的相關技術也得以進一步的提升(如仿人比較先進的NAO機器人等),因此可以有條件地針對一些人力不便探索的領域(如深海探測、山區(qū)救援等)進行空地機器人協(xié)同探測。由于我國具有幅員遼闊與地形復雜的特點,有時地面救援和軍事行動難以展開,此時如果采用空地協(xié)同的方式效率就比較高。然而協(xié)作空地機器人的研究平臺和方法還很缺乏且特制設備的實驗難以模擬,目前研究常見于計算機仿真,在實際模擬場景(如協(xié)同救援)方面還未有應用研究。結合上述情況,本文提出了基于嵌入式設備的地面NAO機器人和空中四旋翼無人機進行空地協(xié)作完成模擬搜尋與救援任務場景的方法。
1 空地機器人任務流程及系統(tǒng)結構
空中機器人采用了四旋翼無人機,主要由自組裝四旋翼和ODROID XU4開發(fā)板組成,具有良好的機動性能與靈活性,其中自組裝四旋翼采用了碳纖維機架、pixhawk的開源飛控、好盈樂天skywalker 40 A電調等。ODROID XU4開發(fā)板為Hardkernel公司出品,擁有主頻為2 GHz的三星Exynos5422八核處理器及2 GB RAM,且使用ARM架構并安裝Ubuntu 16.04系統(tǒng)。在組裝完成的四旋翼上加裝開發(fā)板進行數(shù)據(jù)處理能夠實現(xiàn)如對地面目標探測、跟蹤等多種功能。地面機器人為NAO機器人,它擁有25個活動關節(jié),內置Intel ATOM Z530處理器,RAM 1 GB,閃存2 GB,前額裝有上下兩個攝像頭,支持嵌入式GNU/Linux編程環(huán)境且支持Python、C++語言。空地機器人協(xié)同系統(tǒng)結構如圖1所示。
空中機器人與地面機器人基于嵌入式Linux系統(tǒng),支持Python和C++語言,能夠通過程序實現(xiàn)協(xié)作功能。機器視覺處理以在支持嵌入式方面較好的OpenCV庫為主,它是由Intel公司于1999年建立的計算機視覺庫,是機器視覺、圖像處理等領域的優(yōu)秀工具。它由一系列C函數(shù)和少量C++類構成,也提供Python等語言的接口[10]。空中機器人與地面機器人都搭載攝像頭,因而能夠很好地針對不同場景進行功能開發(fā)??盏貦C器人協(xié)作在開發(fā)時采用Python與C++的結合,Python語言擁有強大的標準庫且具有可移植性,因而使Python作為主要開發(fā)工具能進行高效的功能開發(fā)[11-12],搭建了Eclipse+PyDev的Python開發(fā)環(huán)境。在協(xié)作平臺中完成的結論和方法因軟硬件的通用性可在科研教學及實際運用中快速轉化。
空中機器人與地面機器人模擬搜尋與救援的任務流程及方法如圖2所示。首先由空中機器人和地面機器人完成系統(tǒng)各項功能初始化后等待搜尋命令;完成命令接收后地面機器人從起點開始出發(fā),空中機器人起飛后利用其視野廣的優(yōu)勢搜尋目標物體所在位置并計算最佳路徑,以幫助地面機器人找到目標物,在完成路徑規(guī)劃后將精簡命令信息傳輸至地面機器人;地面機器人收到命令后結合視覺信息到達目標位置附近,最后由地面機器人在其附近再次搜尋目標的精確方位并攜帶其返回完成任務。
2 軟件整體設計方案
首先由空中機器人通過攝像頭觀測地面目標并存儲圖像信息,分析圖片中起始點和終止點的信息與提取地面路徑信息后由路徑規(guī)劃的算法計算出到達目標點的最短路徑,由最短路徑及路徑交叉口信息比對生成在路徑交叉口的方向信息并壓縮打包,通過無線連接地面機器人及通信成功后發(fā)送當前命令。地面機器人接收命令后識別地面路徑并按命令信息行走至指定地面,通過單目視覺識別目標并定位后實施抓取,攜帶目標返回后完成整體的空地機器人搜尋與救援任務。
2.1 空中視覺提取地面路徑
在空中視覺提取地面路徑中使用多種算法融合的方式,如圖像閾值分割、圖像平滑、圖像形態(tài)學轉換等方式,針對不同的地面進行處理,在空中視覺識別方面結合應用腐蝕膨脹、濾波、灰度及二值化等一系列去除干擾提取路徑的方法,通過多種方式的組合及對特定區(qū)域單獨處理可以有效地提取特征信息,如圖3提取出有效的路徑信息并降低了非路徑像素的干擾。
2.2 空中機器人識別地面目標
空中機器人準確判別地面目標是空地機器人結合的前提,首先由空中機器人將圖片信息進行HSV空間轉換并設立閾值提取出可能的起始點與終止點,使用cv2.cvtColor()函數(shù)將RGB轉換成HSV。并設定合理閾值,如使用[130,100,100]與[190,255,255]的閾值范圍可提取紅色。在顏色特征識別后結合輪廓、特征點匹配進行多重判定可以更精確地識別目標。如在本實驗中先由findContours函數(shù)進行輪廓查找,根據(jù)輪廓特點排除不相關信息后可以比較準確地判定目標所在位置,最后由cv2.drawContours函數(shù)實現(xiàn)及繪制出目標的所在位置,如圖4所示。
2.3 最優(yōu)路徑規(guī)劃
在空中機器人識別地面目標后獲得起始點和終止點的信息,然后結合提取的地面路徑信息進行路徑規(guī)劃。先將起始點和終止點的坐標信息放入路徑信息中,在實際應用到機器人路徑規(guī)劃中,由于傳統(tǒng)算法(如遺傳算法、神經(jīng)網(wǎng)絡算法等算法)難用公式計算且計算耗時漫長,而在Python內函數(shù)BFS(廣度優(yōu)先搜索算法)使用collections模塊中的deque內部實現(xiàn),非常高效,且使用廣度優(yōu)先搜索基于遍歷的方式可計算很大一部分迷宮路徑問題求得最優(yōu)解,因此作為主要路徑規(guī)劃方法。經(jīng)過路徑規(guī)劃算法計算的地面機器人到達不同目的地點時最短路徑如圖5所示。
為了使空地機器人能夠有效地交流行走路徑信息,需要提取圖像信息中的交叉點信息。在圖像處理中實際使用到的為角點坐標信息的提取,基于Shi-Tomasi的打分函數(shù)選擇最好的N個特征點后識別出的特征點質量也更高。為了更好識別角點,首先對圖像中的路徑特征細化(如圖6所示),采用角點識別對路徑中的交叉點及特征點的檢測結果如圖7所示,所采用角點識別函數(shù)如下:
corners=cv2.goodFeaturesToTrack(gray,25,0.01,10)
為使得空地機器人獲得協(xié)同并得到最終的指令信息,在獲得路徑信息和交叉點信息后需將兩者的坐標點位置提取出以進行比對,通過判斷當前交叉點與前后交叉點的位置判斷地面機器人在經(jīng)過當前交叉點時轉彎的方向,經(jīng)過比對后得出:位置1時地面機器人需要執(zhí)行的方向依次為左、左、右,位置2時需執(zhí)行方向依次為前、左、右、左、前。生成命令后進行編碼并寫入文本文件中進行打包。
2.4 空地機器人通信
空中機器人和地面機器人之間的通信是空地協(xié)作的重要組成部分,應當采用能耗少、傳輸速度快且連接便捷的方法。地面機器人內置WiFi模塊及空中機器人加裝相應的模塊后使其可采用傳輸速率高效的WiFi進行通信,發(fā)送的數(shù)據(jù)由Linux封裝協(xié)議后通過WiFi模塊發(fā)送到無線網(wǎng)絡中。使用由Python語言編寫的paramiko模塊能夠支持空地機器人的文件或命令的傳遞,使兩者進行協(xié)作。該模塊遵循SSH2協(xié)議并支持加密和認證的方式,能夠進行遠程服務器的連接及進行文件的發(fā)送或命令的直接操作,該模塊的代碼如下:
import paramiko
def ssh2(ip,username,passwd,cmd):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
2.5 地面機器人執(zhí)行任務
地面機器人在接收到文本文件指令后進行解讀,并搜尋地面路徑。首先由地面機器人對地面進行拍照及二值化后提取出地面路徑,用霍夫算法提取出地面路徑并對地面機器人進行航偏矯正修正姿態(tài),霍夫變換在圖像特征處理中使用比較普遍,基本思想是通過笛卡爾坐標系上的點轉為極坐標后通過投票算法檢測具有特定形狀的物體[13],本文用到的霍夫直線檢測函數(shù)的使用如下:
img=cv2.imread(′picture1.jpg′)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges=cv2.Canny(gray,50,150,apertureSize=3)
lines=cv2.HoughLines(edges,1,np.pi/180,200)
地面機器人在檢測到地面路徑后沿路徑行走,在地面交叉點處執(zhí)行對應的文本文件指令信息,最終到達目的地面附近。由于地面機器人的電機自身誤差、發(fā)熱等會行成行走偏差,造成與預定方向的偏離,因此根據(jù)實際需要提出使用霍夫算法進行糾偏的方法,在使用霍夫算法檢測到直線后計算其在圖像中的位置,如果偏離在誤差范圍外,則計算直線偏移的位移和角度并根據(jù)偏移值大小對地面機器人進行矯正。
圖8(a)為矯正偏差前攝像頭拍攝的圖片,圖8(b)為經(jīng)矯正后拍攝的圖片。矯正偏差及指令執(zhí)行正確后地面機器人可按既定規(guī)劃路徑前往指定位置。
在地面機器人到達指定位置后需進一步識別和抓取目標物,使用地面機器人的頂部(如圖9(a)所示)和底部(如圖9(b)所示)兩個攝像頭對不同距離的目標物采用周長與面積的特定比例關系并用矩的信息精確定位,以實現(xiàn)對目標物的探測并逐步靠近目標物,根據(jù)單目視覺的標定結果反推目標物距離地面機器人的距離,最終識別到目標物并引導地面機器人的機械臂完成抓取,攜帶目標返回出發(fā)點,完成設計任務。
3 實驗結果及分析
實驗測試搭建了模擬在災害現(xiàn)場搜尋與救援時的環(huán)境,使用擋板進行了隔離,使得地面機器人與目標物置于環(huán)境當中的不同位置,并設置多條路徑以模擬實際環(huán)境,如圖10所示。在操控空中機器人起飛后,由空中視覺傳感系統(tǒng)對地面環(huán)境及目標進行檢測,如圖11所示。計算結果傳輸至地面機器人,地面機器人在到達目的地面后探測周圍環(huán)境找尋目標物,在判定目標為所需目標物后,由單目視覺信息實行精確抓取后完成任務并原路返航,如圖12所示。
實驗結果如表1所示,從中可分析空地機器人的協(xié)作效果,空中機器人基本能夠正確識別地面目標,地面機器人識別能力優(yōu)于空中機器人,經(jīng)過對目標物識別檢測后可以進行正常抓取,兩者之間能夠實現(xiàn)有效協(xié)作。多次試驗完成結果表明,系統(tǒng)中的空中機器人檢測正確率約90%,地面機器人執(zhí)行任務的正確率更優(yōu),接近100%。因此空地機器人總體完成指定任務的成功率在80%以上,表明該空地機器人的結合方法能夠成功地完成搜救目標任務。
4 結論
本文針對空地協(xié)同研究平臺缺乏且缺少實際場景應用(如災害中的搜尋救援)的特點,提出了以通用性較好的NAO機器人與四旋翼作為硬件基礎,并結合移植性較好的Python編程語言實現(xiàn)空地機器人完成指定任務的協(xié)作平臺,針對搜尋救援場景規(guī)劃了從空中機器人對地面目標檢測、路徑檢測、路徑規(guī)劃、命令傳輸?shù)姆椒?,到地面機器人對地面路徑檢測與執(zhí)行命令、對目標檢測與抓取的方法。在空中機器人中,提出了多種圖像處理方法融合的識別方法及使用角點提取加坐標比對生成行走方向的方法;在地面機器人中,提出了運用霍夫變換矯正機器人角度和位移偏移的方法,這些方法能夠很好地幫助實現(xiàn)總體任務的完成。今后將在實際環(huán)境中的路徑規(guī)劃及視覺識別精確度方面做進一步研究以推進平臺軟件包的開發(fā)。
參考文獻
[1] DUAN H B,LIU S Q.Unmanned air/ground vehicles heterogeneous cooperative techniques:current status and prospects[J].Science China Technological Sciences,2010,53(5):1349-1355.
[2] 谷豐,王爭,宋琦,等.空地機器人協(xié)作導航方法與實驗研究[J].中國科學技術大學學報,2012,42(5):398-404.
[3] 陳洋,譚艷平,程磊,等.鄰域約束下空地異構機器人系統(tǒng)路徑規(guī)劃方法[J].機器人,2017,39(1):1-7.
[4] TOKEKAR P,VANDER HOOK J,MULLA D,et al.Sensor planning for a symbiotic UAV and UGV system for precision agriculture[J].IEEE Transactions on Robotics,2016,32(6):1498-1511.
[5] JIN H K,KWON J W,SEO J.Multi-UAV-based stereo vision system without GPS for ground obstacle mapping to assist path planning of UGV[J].Electronics Letters,2014,50(20):1431-1432.
[6] MINAEIAN S,LIU J,SON Y J.Vision-based target detection and localization via a team of cooperative UAV and UGVs[J].IEEE Transactions on Systems Man & Cybernetics Systems,2016,46(7):1005-1016.
[7] MUEGGLER E,F(xiàn)AESSLER M,F(xiàn)ONTANA F,et al.Aerial-guided navigation of a ground robot among movable obstacles[C].IEEE International Symposium on Safety,Security,and Rescue Robotics.IEEE,2014.
[8] CANTELLI L,PRESTI M L,MANGIAMELI M,et al.Auto-nomous cooperation between UAV and UGV to improve navigation and environmental monitoring in rough environments[C].International Symposium Humanitarian Demining,2013.
[9] 梅元剛.空地機器人協(xié)作環(huán)境建模與路徑規(guī)劃[D].北京:中國科學院大學,2014.
[10] 李越.OpenCV應用現(xiàn)狀綜述[J].工業(yè)控制計算機,2017,30(7):123-124.
[11] 趙毅,馬捷.利用Python和GTK+的Linux GUI應用的快速開發(fā)[J].計算機工程,2004,30(8):80-82.
[12] 狄博,王曉丹.基于Python語言的面向對象程序設計課程教學[J].計算機工程與科學,2014,36(s1):122-125.
[13] 李明,黃華,夏建剛.基于Hough變換的車道檢測改進算法研究[J].計算機工程與設計,2012,33(4):1638-1642.
作者信息:
劉 毅1,2,車 進1,2,朱小波1,2,杭 立1,2,郝志洋1,2
(1.寧夏大學 物理與電子電氣工程學院,寧夏 銀川750021;
2.寧夏沙漠信息智能感知重點實驗室(寧夏大學),寧夏 銀川750021)