王超,李乾坤
(山東華宇工學院,山東 德州 253034)
隨著社會的發(fā)展以及人們生活要求的進步,自動導航機器人在人們的日常生活中扮演著不可缺失的角色。1959年,在眾多研究者的不懈努力下,第一臺機器人被德沃爾與約瑟夫聯(lián)合制造,他們成立了世界上第一家機器人制造廠,正式開啟了機器人為人類服務的新篇章。機器人的出現(xiàn)對各行業(yè)都有著不同程度的影響。而移動機器人在眾多各式各類的機器人中最為典型,不僅影響著交通的發(fā)展,而且對工業(yè)、農(nóng)業(yè)、教育等各領域都產(chǎn)生著不同程度的影響。在高校教學中往往與Python、C語言等程序設計課程相結(jié)合,寓機器人設計實踐于教學當中。
本文以研究在Python 教學中設計基于自動導航的移動智能機器人,基于ROS 系統(tǒng)利用激光雷達探測周圍環(huán)境,樹莓派3 來處理數(shù)據(jù),OpenCR 控制器為控制中樞轉(zhuǎn)化信號以控制機器人各個方向的移動。實現(xiàn)了物聯(lián)網(wǎng)的對接、機器人的遠程操作以及機器人自主巡航和避障。
機器人操作系統(tǒng)(robot operating system,ROS)是一個開源的機器人操作系統(tǒng),世界上有越來越多的人使用它。它可以提供通用功能、底層控制、流程消息等服務,還可以提供跨計算機獲取、編譯、編寫和運行代碼所需的工具和數(shù)據(jù)庫。它是一種高度靈活的軟件體系結(jié)構(gòu),用于編寫機器人軟件程序以及機器人的研究和開發(fā)。ROS 還支持一個類似于代碼數(shù)據(jù)庫的系統(tǒng),該系統(tǒng)還可以協(xié)作和發(fā)布項目。從驅(qū)動到最新算法,再到強大的開發(fā)系統(tǒng),ROS 的主要目的是提供一個統(tǒng)一的開源程序框架,以實現(xiàn)在各種實際環(huán)境和仿真世界中對移動機器人的控制。ROS 擁有許多機器人開發(fā)軟件工具和軟件功能包,能夠增加移動機器人研究過程中軟件的再利用率,加速項目進程,用最簡單的代碼實現(xiàn)更強大的功能?;赗OS 實現(xiàn)機器人操作越來越普遍,已逐漸發(fā)展為機器人領域的標桿。在機器人和人工智能的研究過程中,ROS 已經(jīng)成為最強大的助手和最穩(wěn)妥的設備。自動導航對于移動機器人來說是最基本的功能,移動機器人應該在陌生或者復雜的環(huán)境中能夠自主探測出障礙物并且躲避障礙物,規(guī)劃出一條安全性最高的最優(yōu)路線,并沿著這條路線智能性地避開路途中的障礙物達到目標點。
機器人的自動導航設計首先需要對機器人的環(huán)境進行構(gòu)建,其次讓機器人進行自主定位,然后進行自動導航,最后對機器人進行仿真模擬實現(xiàn)機器人的自動導航。
機器人系統(tǒng)主要分為三個部分:傳感器板塊、功能運算板塊、功能執(zhí)行板塊。機器人硬件連接如圖1所示。
圖1 硬件連接圖
機器人采用鋰電池作為供電結(jié)構(gòu),360°傳感器作為傳感系統(tǒng),樹莓派作為控制器以完成機器人的整體結(jié)構(gòu),其結(jié)構(gòu)圖如圖2所示?;赗OS 的計算機端通過Wi-Fi 接收信息,從而實現(xiàn)機器人的運動操作、前進、后退、左右轉(zhuǎn)。通過一系列算法來實現(xiàn)環(huán)境探測、自動泊車、遠程桌面控制、自動巡航、檢測障礙以及定點導航的功能。
圖2 機器人結(jié)構(gòu)圖
激光傳感器使用激光發(fā)射對準目標,通過激光反射往返時間測量出與周圍物體的間距,用于對周圍環(huán)境的探測采集,實時測出周圍障礙物的距離。本文采用的是陀螺儀3Axis,加速度計3Axis,磁力計3Axis更加精準并且可靠穩(wěn)定的運行。
機器人的處理器使用了樹莓派3 的CPU,相對于該類型移動機器人樹莓派3 的處理器完全夠用。
OpenCR 是機器人的主控制板是為ROS 嵌入式系統(tǒng)開發(fā)的并且提供了完整的軟件及硬件。外形小,性能高并且高效節(jié)能,相當于大腦,控制著整個機體的操作,使機器人的各個部件能夠協(xié)同運行。
多功能數(shù)字舵機使用高頻率脈沖激勵雷達,使用微處理器來控制,大大地優(yōu)化了舵機的性能,而供電系統(tǒng)也使用了小巧便攜的鋰電池,減小了馬達的壓力,移動機器人的位移活動更加靈敏。
移動機器人要在陌生的環(huán)境中進行完全自主導航,了解周圍環(huán)境必不可少,首先確定移動機器人當前的位置,然后建立一個模型。如今,移動機器人全是通過自身所攜帶的激光雷達設置對周圍環(huán)境進行估算和測量。因此,本文使用SLAM 對周圍環(huán)境進行建模。SLAM 建圖大致分為兩步,首先獲取周圍環(huán)境的大致信息,其次對這些信息進行匹配吻合。整個過程激光雷達起主要作用。SLAM 算法的原理框架如圖3所示,建模后圖像如圖4所示。
圖3 SLAM 原理圖框架
圖4 建模圖
在目前的SLAM 技術中,比較通用的是激光SLAM 和 視覺SLAM,即利用激光雷達對環(huán)境進行掃描,然后對環(huán)境信息進行處理,優(yōu)點在于可靠性高,技術生態(tài)較為完整。與此同時,為了克服不利于精度的影響,采用雙線性插值方法來估計網(wǎng)格占用率。在環(huán)境網(wǎng)格圖構(gòu)建完成后,將當前采集的激光掃描框架與創(chuàng)建的網(wǎng)格圖進行配對,然后完成對移動機器人的位置和姿態(tài)的估計。SLAM 算法采用高精度的激光傳感器,絲毫不需要里程表的數(shù)據(jù)信息,具有巨大的發(fā)展前途,特別是應用于移動機器人領域的地圖建模問題。
在移動機器人領域,定位系統(tǒng)一般采用的算法是AMCL算法,該算法屬于粒子濾波算法。AMCL 定位算法是一種蒙特卡羅粒子濾波算法。主要用于機器人在地圖上導航時,為機器人提供定位功能?;诹W尤簝?yōu)化算法的優(yōu)越性,系統(tǒng)對基于粒子群優(yōu)化的AMCL 算法進行了優(yōu)化。
與建圖系統(tǒng)相比,AMCL 定位系統(tǒng)的功能更加局限。接收到的主要數(shù)據(jù)有靜態(tài)地圖、初始位姿、實時激光雷達數(shù)據(jù)等,這些數(shù)據(jù)是根據(jù)粒子濾波算法、粒子點云以及從里程計到地圖的坐標轉(zhuǎn)換估計出的機器人當前的位姿。由于初始的MCL 算法對于機器人的定位問題存在一些偏差,本文基于KLD 重采樣的AMCL 算法對移動機器人進行定位。
SLAM 建圖首先應當確保已經(jīng)安裝SLAM,其次是獲取要使用的包文件,然后啟動SLAM 系統(tǒng)輸入一系列命令生成所需要顯示的類型,例如地圖類型和點云類型,以可視化所需的數(shù)據(jù)。打開終端可在rviz 中看到實時映射出的地圖。生成地理特征圖之后應當將地圖保存,用以記憶該地圖的探測時間和環(huán)境等相關信息。地圖構(gòu)建完成后應當對地圖進行檢驗是否有誤,在Team_Hector_MappingBoxCup 上找到其地圖是否與剛剛建立的地圖有所不同,如果不同,檢查是否在發(fā)布版本中構(gòu)建了SLAM 以獲得完整的性能,SLAM 的參數(shù)在映射結(jié)果中也發(fā)揮著重要的作用,同時也需要檢查映射出來的參數(shù)。對環(huán)境構(gòu)建完成并獲取地圖后,就需要在煩瑣復雜的環(huán)境中確定好移動機器人實時所處的位置,在接收到雷達信息后,AMCL通過粒子濾波跟蹤SLAM 構(gòu)建中移動機器人的位置和姿勢,對信息進行處理和探測,最終依靠機器人的狀態(tài)使移動機器人能夠完成自主定位。
移動機器人在完成對周圍環(huán)境的建模以及自身的定位之后,還剩最后一步最重要的操作,即移動機器人的路徑規(guī)劃,使得移動機器人能夠自主的進行路徑的選擇去避開途中的障礙物到達目的地,并且采用優(yōu)化后的A*算法和DWA 動態(tài)窗口法完成路徑規(guī)劃和避障等多種功能。
A*算法是一種廣泛使用的圖搜索算法。雖然可以有效地完成了機器人的全局路徑規(guī)劃,但存在拐點多、路徑長等缺點。傳統(tǒng)的A*算法到達目標點的最優(yōu)路徑覆蓋了所有規(guī)劃點。根據(jù)機器人的運動,通過簡化路徑,進一步優(yōu)化A*算法。本文采用平滑法對路徑進行優(yōu)化。優(yōu)化的主要思想是直接找到直線內(nèi)可到達的最遠節(jié)點,舍棄最遠節(jié)點之間的中間節(jié)點,從而減少路徑上冗余的拐點。DWA 算法的基本思想是離散樣本線速度和角速度的多個組速度矢量空間,評估基于運動學模型的運動軌跡,并選擇最優(yōu)目標路線,從而完成對移動機器人局部的路徑規(guī)劃。
在ROS 系統(tǒng)下,移動機器人要想能夠自動導航。首先需要安裝ROS,然后去調(diào)用上面的一些功能包完成環(huán)境建模,移動機器人的定位,路徑規(guī)劃以及機器人的自主運行具體流程圖如圖5所示,仿真分析圖如圖6所示。
圖5 導航流程圖
圖6 仿真分析圖
SLAM 算法在ROS 系統(tǒng)下只需要通過激光掃描所采集的數(shù)據(jù)就可以對環(huán)境進行地圖構(gòu)建,因為不需要里程計等傳感器且技術更加成熟完善,所以應用范圍非常廣泛,如環(huán)境探測儀、視覺設備等。在模擬ROS 環(huán)境中進行仿真,首先需要在ROS 中確定激光數(shù)據(jù)和系統(tǒng)命令主題,從而發(fā)布機器人的姿態(tài)信息和網(wǎng)格地圖信息。其次,通過ROS 系統(tǒng)啟動腳本。同時,鍵盤方向鍵用于控制機器人在環(huán)境中的行走。在移動機器人的行走過程中,完全構(gòu)建了與真實場景基本一致的環(huán)境地圖,沒有滑動、重影。構(gòu)建過程中,可使用鍵盤操作機器人巡視周圍環(huán)境,以完成周圍環(huán)境的構(gòu)建,使之與現(xiàn)實場景相對應。第二步在路徑規(guī)劃的過程中,需要機器人在任何地方都能夠估算出自身所處的位置以便于路徑規(guī)劃:(1)需要對蒙特卡羅算法進行優(yōu)化,實現(xiàn)基于KLD 重采樣的AMCL 算法,準確得到機器人的位置。(2)調(diào)用移動基函數(shù)包,接下來進行全局路徑規(guī)劃和局部路徑規(guī)劃,全局路徑規(guī)劃由A*算法完成,局部路徑規(guī)劃由DWA 算法完成,以準確求出最優(yōu)路徑。經(jīng)過上述一系列算法,實現(xiàn)了SLAM 環(huán)境地圖的構(gòu)建。因此接下來可以打開rviz 將地圖放在ROS 框架上,通過粒子云得出正確位置,對移動機器人進行路徑規(guī)劃以及自動導航實驗,通過地圖的加載以及位置的定位之后使移動機器人能夠自動地進行路徑的規(guī)劃以及自動導航達到終點完成實驗。
該設計最終實現(xiàn)了機器人的自動導航,并且機器人能夠在陌生的環(huán)境中進行建圖進而進行路徑規(guī)劃,對未來的發(fā)展起著重要的作用。
隨著互聯(lián)網(wǎng)教育的興起和人工智能技術的不斷進步,機器人的應用已經(jīng)滲透到教育行業(yè)的各個領域,可用于Python、C 語言等編程課程中,作為編程課程的拓展內(nèi)容,也可作為大學生創(chuàng)新創(chuàng)業(yè)大賽的裝備,提高學生的應用能力和實際操作能力。隨著計算機視覺、語音識別、編程語言等技術的不斷完善,未來的人工智能技術將對教育行業(yè)產(chǎn)生廣泛而深刻的影響。
通過基于ROS 移動機器人自動導航設計,在Python 教學中對SLAM 建圖、AMCL 定位、路徑的自動規(guī)劃開展了一系列的研究,通過虛擬的場景實現(xiàn)了移動機器人的自動導航功能,使得移動機器人在真實場景中也能夠進行地圖的構(gòu)建、路徑的規(guī)劃以及實現(xiàn)自動導航功能。對于移動機器人來說,自主構(gòu)建地圖、規(guī)劃路線并巡航只是機器人自動化的一個最根本的基礎,在未來的研究中軟件方面可以使用Python語言實現(xiàn)與人工智能的結(jié)合,在移動機器人的硬件上根據(jù)需求進一步進行改裝并且插入所需要的軟件,例如可以在該機器人的基礎上安裝爪子來實現(xiàn)機器人的自動導航抓取功能,也可以讓機器人自主識別做一個全自動清潔機器人等使我們的生活更加便捷。在未來的研究過程中自動導航機器人將與編程課程相融合,實現(xiàn)教學與實踐的相融合。自動導航機器人在未來的生活中一定會使用得越來越廣泛,這將是人類必不可少的一部分。