胡俊立 楊光
【摘 要】導航系統(tǒng)是移動機器人系統(tǒng)中的關(guān)鍵組成部分,主要包括地圖構(gòu)建、定位和路徑規(guī)劃3個部分。近年來,關(guān)于機器人導航系統(tǒng)的研究越來越多,但這些研究大都集中在底層控制器結(jié)構(gòu)和算法上,對上層控制軟件的研究少之又少。文章從解決機器人導航定位的實際問題出發(fā),利用Kinect雙目視覺傳感器獲得三維點云數(shù)據(jù),并使用ROS下的工具包move_base、gmapping和amcl設計了一套機器人導航方案,并在樣機上進行了實驗測試。
【關(guān)鍵詞】ROS;路徑規(guī)劃;導航系統(tǒng)
【中圖分類號】TP242 【文獻標識碼】A 【文章編號】1674-0688(2018)07-0072-02
近年來,關(guān)于機器人導航系統(tǒng)的研究越來越多,但這些研究大都集中在底層控制器結(jié)構(gòu)和算法上,對上層控制軟件的研究少之又少。本文從解決機器人導航定位的實際問題出發(fā),利用Kinect雙目視覺傳感器獲得三維點云數(shù)據(jù),并使用ROS下的工具包move_base、gmapping和amcl設計了一套機器人導航方案,并在樣機上進行了實驗測試。
1 系統(tǒng)結(jié)構(gòu)
導航系統(tǒng)由Kinect2雙目視覺傳感器、主控計算機和TurtleBot3(Burger)機器人開發(fā)平臺組成。Kinect2是“微軟”在2010發(fā)布的一款體感外設,它是一種雙目視覺傳感器,主要由紅外攝像機、紅外深度攝像頭、彩色攝像頭、麥克風陣列及仰角控制電機組成,借助于“微軟”強大的技術(shù)力量,它可以完成即時動態(tài)捕捉、影像辨識、麥克風輸入、語音辨識、社群互動等功能。使用Kinect可以獲得三維點云數(shù)據(jù),一方面這些數(shù)據(jù)可以用來創(chuàng)建二維環(huán)境地圖,另一方面只要對這些數(shù)據(jù)進行適當處理就能建立描述三維場景的地圖。在Kinect出現(xiàn)之前,只能使用航拍飛行器或者三維掃描激光測距儀獲取環(huán)境的三維場景圖,使導航系統(tǒng)的成本大大增加。而Kinect中的紅外攝像機、紅外深度攝像頭等傳感器的使用將會使機器人導航系統(tǒng)的成本大大下降。主控計算機采用ThinkPadX1筆記本電腦,采用英特爾酷睿i5-8250U處理器,操作系統(tǒng)安裝的是Ubuntu14.04,ROS版本選擇ROS Indigo版本。通過RS232串口與TurtleBot3搭載的DSP通信,通過USB接口與Kinect2通信。在實際測試中,直接選擇安裝好相應版本ROS的Ubuntu鏡像。TurtleBot3是iRobot公司生產(chǎn)的兩輪移動機器人,該機器人作為機器人編程開發(fā)的一個基礎平臺,開發(fā)者可以直接使用TurtleBot3自帶的軟、硬件,根據(jù)平臺的軟、硬件接口即可開發(fā)出所需的功能。
ROS是面向機器人的開源操作系統(tǒng),它能夠提供類似傳統(tǒng)操作系統(tǒng)的諸多功能,如硬件抽象、底層設備控制、進程間消息傳遞和程序包管理等。此外,它還提供相關(guān)工具和庫,用于獲取、編譯、編輯代碼及在多個計算機之間運行程序完成分布式計算。本文選用ROS作為導航系統(tǒng)開發(fā)的軟件平臺。作為一種開源機器人操作系統(tǒng),它提供了多種工具程序和庫,用于編寫運行多機整合的程序。ROS的首要設計目標是在機器人開發(fā)領域提高代碼復用率。ROS是一種分布式處理框架,這種框架名為Nodes。這使得可執(zhí)行文件可以單獨設計,并且在運行時松散耦合。這些過程可以封裝到數(shù)據(jù)包Package和堆棧Stacks中,以便于共享和分發(fā)。ROS還支持代碼庫的聯(lián)合系統(tǒng),使協(xié)作也能分發(fā)。這種從文件系統(tǒng)級別到社區(qū)一級的設計使獨立決定發(fā)展和實施工作成為可能。這些功能都由ROS的基礎工具來實現(xiàn)。ROS的運行框架是使用一種ROS通信模塊實現(xiàn)模塊間P2P的松耦合和網(wǎng)絡連接處理架構(gòu),它執(zhí)行若干種類型的通信,包括基于服務的同步RPC(遠程過程調(diào)用)通信、基于TOPIC的異步數(shù)據(jù)流通信及參數(shù)服務器上的實時性。
2 導航系統(tǒng)設計
在設計導航系統(tǒng)時,主要使用到了ROS的3個工具包:move_base、gmapping和amcl。其中,move_base包用于讓機器人在指定的框架內(nèi)移動到目標位置;gmapping包用于從Kinect雙目視覺傳感器采集到的數(shù)據(jù)來繪制地圖;amcl包用于在當前地圖內(nèi)定位機器人。
2.1 使用move_base包進行路徑規(guī)劃和障礙物躲避
move_base包實現(xiàn)了一個完成指定導航目標的ROS行為,在move_base包中包含了base_local_planner,在為機器人尋路的時候,base_local_planner結(jié)合了從全局和本地地圖得到的距離測量數(shù)據(jù)?;谌值貓D的路徑規(guī)劃是在機器人向下一個目的地出發(fā)前開始的,這個過程中會考慮到已知的障礙物和被標記成未知的區(qū)域,要使機器人實際動起來,本地路徑規(guī)劃模塊會監(jiān)聽傳回來的傳感器數(shù)據(jù),并選擇合適的線速度和角速度讓機器人走完全局路徑規(guī)劃上的當前段。上位機將會顯示本地的路徑規(guī)劃模塊是如何隨著時間推移而不斷做出調(diào)整的。使用move_base包實現(xiàn)路徑規(guī)劃和障礙物躲避分為兩步,即首先指定導航目標。在指定導航目標前,機器人要提供在指定框架下的目標方位,move_base包通過使用MoveBaseActionGoal消息指定目標。接下來需要為路徑規(guī)劃設定參數(shù),在move_base包節(jié)點運行前需要4個配置文件,這些文件定義了一系列相關(guān)參數(shù),例如越過障礙物的代價、機器人的半徑、路徑規(guī)劃時要考慮未來多長的路、機器人移動的速度等。
2.2 使用gmapping包創(chuàng)建地圖
在ROS中,地圖是一張位圖,表示網(wǎng)絡被占據(jù)的情況,其中白色像素代表沒有被占據(jù)的網(wǎng)格,黑色像素代表障礙物,灰色像素代表未知點,因此可以使用任意的圖像處理程序處理該位圖。在本系統(tǒng)中,由于配有Kinect雙目視覺傳感器,所以機器人在其目標范圍內(nèi)行動時可以自己創(chuàng)建地圖。為了生成任意具有相同數(shù)據(jù)的測試地圖供以后不同參數(shù)的gmapping使用,系統(tǒng)使用ROS的gmapping實時定位與繪制地圖(SLAM)節(jié)點,這個節(jié)點會把從Kinect傳感器中得到的數(shù)據(jù)整合到一張位圖中。運行時讓機器人在一個區(qū)域內(nèi)活動,同時記錄測量數(shù)據(jù)并放入rosbag文件中,然后運行SLAM節(jié)點生成一張地圖。
2.3 使用amcl包導航和定位
amcl包用于讓機器人在已有的地圖里利用從當前機器人視覺傳感器中得到的數(shù)據(jù)進行定位。當amcl包第一次啟動時,機器人需要設定一個初始方位,之后amcl包利用該初始方位確定自己的位置。為了設定初始方位,在RViz可視化工具中點擊“2D Pose Estimate”,然后在地圖上單擊機器人的位置,當按下鼠標左鍵時會出現(xiàn)一個巨大的綠色箭頭,移動鼠標使箭頭方向和機器人方向一致,最后松開鼠標。機器人初始方位設定好之后,可以使用“2D Nav Goal”按鈕為機器人在地圖上指出不同的導航目標。必要時,可以使用鼠標滾輪放大或者縮小。在機器人運動時,機器人周圍會圍繞一堆綠色箭頭,這些箭頭代表amcl包返回的方位范圍。當機器人在這個環(huán)境周圍活動時,這堆箭頭可以縮小并作為額外的掃描數(shù)據(jù),讓amcl包修正它對機器人方向和位置的估算。
為了驗證所涉及的導航系統(tǒng)能夠?qū)崿F(xiàn)在未知環(huán)境下的定位與導航功能,筆者對機器人的障礙物躲避能力進行了測試。在距離目標一定距離外啟動機器人,在機器人運動路徑前方放置障礙物。測試過程中,機器人會按照規(guī)劃的路徑繞過障礙物,然后繼續(xù)向目標移動。
3 結(jié)語
本文基于開源機器人操作系統(tǒng)ROS,利用Kinect雙目視覺傳感器獲得三維點云數(shù)據(jù),并使用ROS下的工具包move_base、gmapping和amcl設計了一套機器人導航方案,并在樣機上進行了實驗測試。本文為機器人導航系統(tǒng)的研究提供了一條切實可行的思路和方案,在此方案的基礎上可以進行更復雜的應用研究。
參 考 文 獻
[1]蔣浩然,陳軍,王虎,等.移動機器人自動導航技術(shù)研究進展[J].西北農(nóng)林科技大學學報:自然科學版,2011,39(12):207-213.
[2]白亮亮,平雪良,仇恒坦,等.分布式室內(nèi)移動機器人的定位與導航[J].輕工機械,2016,34(4):54-57.
[3]鄧志,黎海超.移動機器人的自動導航技術(shù)的研究綜述[J].科技資訊,2016,14(33):142-144.
[4]陳金寶,韓冬,聶宏,等.ROS開源機器人控制基礎[M].上海:上海交通大學出版社,2016.
[責任編輯:鐘聲賢]