王超,李乾坤
(山東華宇工學院,山東 德州 253034)
隨著社會的發展以及人們生活要求的進步,自動導航機器人在人們的日常生活中扮演著不可缺失的角色。1959年,在眾多研究者的不懈努力下,第一臺機器人被德沃爾與約瑟夫聯合制造,他們成立了世界上第一家機器人制造廠,正式開啟了機器人為人類服務的新篇章。機器人的出現對各行業都有著不同程度的影響。而移動機器人在眾多各式各類的機器人中最為典型,不僅影響著交通的發展,而且對工業、農業、教育等各領域都產生著不同程度的影響。在高校教學中往往與Python、C語言等程序設計課程相結合,寓機器人設計實踐于教學當中。
本文以研究在Python 教學中設計基于自動導航的移動智能機器人,基于ROS 系統利用激光雷達探測周圍環境,樹莓派3 來處理數據,OpenCR 控制器為控制中樞轉化信號以控制機器人各個方向的移動。實現了物聯網的對接、機器人的遠程操作以及機器人自主巡航和避障。
機器人操作系統(robot operating system,ROS)是一個開源的機器人操作系統,世界上有越來越多的人使用它。它可以提供通用功能、底層控制、流程消息等服務,還可以提供跨計算機獲取、編譯、編寫和運行代碼所需的工具和數據庫。它是一種高度靈活的軟件體系結構,用于編寫機器人軟件程序以及機器人的研究和開發。ROS 還支持一個類似于代碼數據庫的系統,該系統還可以協作和發布項目。從驅動到最新算法,再到強大的開發系統,ROS 的主要目的是提供一個統一的開源程序框架,以實現在各種實際環境和仿真世界中對移動機器人的控制。ROS 擁有許多機器人開發軟件工具和軟件功能包,能夠增加移動機器人研究過程中軟件的再利用率,加速項目進程,用最簡單的代碼實現更強大的功能。基于ROS 實現機器人操作越來越普遍,已逐漸發展為機器人領域的標桿。在機器人和人工智能的研究過程中,ROS 已經成為最強大的助手和最穩妥的設備。自動導航對于移動機器人來說是最基本的功能,移動機器人應該在陌生或者復雜的環境中能夠自主探測出障礙物并且躲避障礙物,規劃出一條安全性最高的最優路線,并沿著這條路線智能性地避開路途中的障礙物達到目標點。
機器人的自動導航設計首先需要對機器人的環境進行構建,其次讓機器人進行自主定位,然后進行自動導航,最后對機器人進行仿真模擬實現機器人的自動導航。
機器人系統主要分為三個部分:傳感器板塊、功能運算板塊、功能執行板塊。機器人硬件連接如圖1所示。

圖1 硬件連接圖
機器人采用鋰電池作為供電結構,360°傳感器作為傳感系統,樹莓派作為控制器以完成機器人的整體結構,其結構圖如圖2所示。基于ROS 的計算機端通過Wi-Fi 接收信息,從而實現機器人的運動操作、前進、后退、左右轉。通過一系列算法來實現環境探測、自動泊車、遠程桌面控制、自動巡航、檢測障礙以及定點導航的功能。

圖2 機器人結構圖
激光傳感器使用激光發射對準目標,通過激光反射往返時間測量出與周圍物體的間距,用于對周圍環境的探測采集,實時測出周圍障礙物的距離。本文采用的是陀螺儀3Axis,加速度計3Axis,磁力計3Axis更加精準并且可靠穩定的運行。
機器人的處理器使用了樹莓派3 的CPU,相對于該類型移動機器人樹莓派3 的處理器完全夠用。
OpenCR 是機器人的主控制板是為ROS 嵌入式系統開發的并且提供了完整的軟件及硬件。外形小,性能高并且高效節能,相當于大腦,控制著整個機體的操作,使機器人的各個部件能夠協同運行。
多功能數字舵機使用高頻率脈沖激勵雷達,使用微處理器來控制,大大地優化了舵機的性能,而供電系統也使用了小巧便攜的鋰電池,減小了馬達的壓力,移動機器人的位移活動更加靈敏。
移動機器人要在陌生的環境中進行完全自主導航,了解周圍環境必不可少,首先確定移動機器人當前的位置,然后建立一個模型。如今,移動機器人全是通過自身所攜帶的激光雷達設置對周圍環境進行估算和測量。因此,本文使用SLAM 對周圍環境進行建模。SLAM 建圖大致分為兩步,首先獲取周圍環境的大致信息,其次對這些信息進行匹配吻合。整個過程激光雷達起主要作用。SLAM 算法的原理框架如圖3所示,建模后圖像如圖4所示。

圖3 SLAM 原理圖框架

圖4 建模圖
在目前的SLAM 技術中,比較通用的是激光SLAM 和 視覺SLAM,即利用激光雷達對環境進行掃描,然后對環境信息進行處理,優點在于可靠性高,技術生態較為完整。與此同時,為了克服不利于精度的影響,采用雙線性插值方法來估計網格占用率。在環境網格圖構建完成后,將當前采集的激光掃描框架與創建的網格圖進行配對,然后完成對移動機器人的位置和姿態的估計。SLAM 算法采用高精度的激光傳感器,絲毫不需要里程表的數據信息,具有巨大的發展前途,特別是應用于移動機器人領域的地圖建模問題。
在移動機器人領域,定位系統一般采用的算法是AMCL算法,該算法屬于粒子濾波算法。AMCL 定位算法是一種蒙特卡羅粒子濾波算法。主要用于機器人在地圖上導航時,為機器人提供定位功能。基于粒子群優化算法的優越性,系統對基于粒子群優化的AMCL 算法進行了優化。
與建圖系統相比,AMCL 定位系統的功能更加局限。接收到的主要數據有靜態地圖、初始位姿、實時激光雷達數據等,這些數據是根據粒子濾波算法、粒子點云以及從里程計到地圖的坐標轉換估計出的機器人當前的位姿。由于初始的MCL 算法對于機器人的定位問題存在一些偏差,本文基于KLD 重采樣的AMCL 算法對移動機器人進行定位。
SLAM 建圖首先應當確保已經安裝SLAM,其次是獲取要使用的包文件,然后啟動SLAM 系統輸入一系列命令生成所需要顯示的類型,例如地圖類型和點云類型,以可視化所需的數據。打開終端可在rviz 中看到實時映射出的地圖。生成地理特征圖之后應當將地圖保存,用以記憶該地圖的探測時間和環境等相關信息。地圖構建完成后應當對地圖進行檢驗是否有誤,在Team_Hector_MappingBoxCup 上找到其地圖是否與剛剛建立的地圖有所不同,如果不同,檢查是否在發布版本中構建了SLAM 以獲得完整的性能,SLAM 的參數在映射結果中也發揮著重要的作用,同時也需要檢查映射出來的參數。對環境構建完成并獲取地圖后,就需要在煩瑣復雜的環境中確定好移動機器人實時所處的位置,在接收到雷達信息后,AMCL通過粒子濾波跟蹤SLAM 構建中移動機器人的位置和姿勢,對信息進行處理和探測,最終依靠機器人的狀態使移動機器人能夠完成自主定位。
移動機器人在完成對周圍環境的建模以及自身的定位之后,還剩最后一步最重要的操作,即移動機器人的路徑規劃,使得移動機器人能夠自主的進行路徑的選擇去避開途中的障礙物到達目的地,并且采用優化后的A*算法和DWA 動態窗口法完成路徑規劃和避障等多種功能。
A*算法是一種廣泛使用的圖搜索算法。雖然可以有效地完成了機器人的全局路徑規劃,但存在拐點多、路徑長等缺點。傳統的A*算法到達目標點的最優路徑覆蓋了所有規劃點。根據機器人的運動,通過簡化路徑,進一步優化A*算法。本文采用平滑法對路徑進行優化。優化的主要思想是直接找到直線內可到達的最遠節點,舍棄最遠節點之間的中間節點,從而減少路徑上冗余的拐點。DWA 算法的基本思想是離散樣本線速度和角速度的多個組速度矢量空間,評估基于運動學模型的運動軌跡,并選擇最優目標路線,從而完成對移動機器人局部的路徑規劃。
在ROS 系統下,移動機器人要想能夠自動導航。首先需要安裝ROS,然后去調用上面的一些功能包完成環境建模,移動機器人的定位,路徑規劃以及機器人的自主運行具體流程圖如圖5所示,仿真分析圖如圖6所示。

圖5 導航流程圖

圖6 仿真分析圖
SLAM 算法在ROS 系統下只需要通過激光掃描所采集的數據就可以對環境進行地圖構建,因為不需要里程計等傳感器且技術更加成熟完善,所以應用范圍非常廣泛,如環境探測儀、視覺設備等。在模擬ROS 環境中進行仿真,首先需要在ROS 中確定激光數據和系統命令主題,從而發布機器人的姿態信息和網格地圖信息。其次,通過ROS 系統啟動腳本。同時,鍵盤方向鍵用于控制機器人在環境中的行走。在移動機器人的行走過程中,完全構建了與真實場景基本一致的環境地圖,沒有滑動、重影。構建過程中,可使用鍵盤操作機器人巡視周圍環境,以完成周圍環境的構建,使之與現實場景相對應。第二步在路徑規劃的過程中,需要機器人在任何地方都能夠估算出自身所處的位置以便于路徑規劃:(1)需要對蒙特卡羅算法進行優化,實現基于KLD 重采樣的AMCL 算法,準確得到機器人的位置。(2)調用移動基函數包,接下來進行全局路徑規劃和局部路徑規劃,全局路徑規劃由A*算法完成,局部路徑規劃由DWA 算法完成,以準確求出最優路徑。經過上述一系列算法,實現了SLAM 環境地圖的構建。因此接下來可以打開rviz 將地圖放在ROS 框架上,通過粒子云得出正確位置,對移動機器人進行路徑規劃以及自動導航實驗,通過地圖的加載以及位置的定位之后使移動機器人能夠自動地進行路徑的規劃以及自動導航達到終點完成實驗。
該設計最終實現了機器人的自動導航,并且機器人能夠在陌生的環境中進行建圖進而進行路徑規劃,對未來的發展起著重要的作用。
隨著互聯網教育的興起和人工智能技術的不斷進步,機器人的應用已經滲透到教育行業的各個領域,可用于Python、C 語言等編程課程中,作為編程課程的拓展內容,也可作為大學生創新創業大賽的裝備,提高學生的應用能力和實際操作能力。隨著計算機視覺、語音識別、編程語言等技術的不斷完善,未來的人工智能技術將對教育行業產生廣泛而深刻的影響。
通過基于ROS 移動機器人自動導航設計,在Python 教學中對SLAM 建圖、AMCL 定位、路徑的自動規劃開展了一系列的研究,通過虛擬的場景實現了移動機器人的自動導航功能,使得移動機器人在真實場景中也能夠進行地圖的構建、路徑的規劃以及實現自動導航功能。對于移動機器人來說,自主構建地圖、規劃路線并巡航只是機器人自動化的一個最根本的基礎,在未來的研究中軟件方面可以使用Python語言實現與人工智能的結合,在移動機器人的硬件上根據需求進一步進行改裝并且插入所需要的軟件,例如可以在該機器人的基礎上安裝爪子來實現機器人的自動導航抓取功能,也可以讓機器人自主識別做一個全自動清潔機器人等使我們的生活更加便捷。在未來的研究過程中自動導航機器人將與編程課程相融合,實現教學與實踐的相融合。自動導航機器人在未來的生活中一定會使用得越來越廣泛,這將是人類必不可少的一部分。