何海濤 陳勁杰
關鍵詞:機器人;導航;ROS
中圖分類號:TP311 文獻標識碼:A
1 引言(Introduction)
2019年7月1日起《上海市生活垃圾管理條例》正式實施,上海成為全國第一個立法推進垃圾分類的省級行政區(qū)[1],同時上海各高校也紛紛實行垃圾分類措施,定時定點進行垃圾投放,但是部分同學仍然在規(guī)定時間外隨意投放垃圾,該行為為學校后勤工作帶來了不便?;趯W校后勤需求,有必要設計一款垃圾督導機器人對同學隨意丟棄垃圾的行為進行文明、友好的監(jiān)督。然而,機器人系統(tǒng)的復雜性為垃圾督導機器人的開發(fā)帶來很大的困難。機器人操作系統(tǒng)(ROS)的出現(xiàn),大大降低機器人的開發(fā)門檻[2],功能也越來越成熟[3]。ROS使用分布式架構,有大量開源用于實現(xiàn)特定功能的機器人應用程序,稱為功能包,功能包單獨設計,在運行時松散耦合,提高了代碼復用率[4]。因此,開發(fā)者不需要重復造輪子,可以像搭建積木一樣快速搭建各種功能模塊,專注于某一領域的研究,快速完成開發(fā)[5]。
導航功能是該機器人核心和基礎功能,其功能的好壞和開發(fā)周期關系到機器人的魯棒性和生產(chǎn)成本。因此,本文基于ROS提供的功能包設計并開發(fā)了垃圾督導機器人導航系統(tǒng)。
2 系統(tǒng)整體設計(Overall system design)
垃圾督導機器人主要由底層驅(qū)動模塊和頂層控制模塊構成,其整體系統(tǒng)設計如圖1所示。
底層驅(qū)動模塊是垃圾督導機器人控制機器人運動的核心。從控制器使用的是ST公司基于Co t e x-M3內(nèi)核的STM32RCT6,其板載資源能夠滿足整個控制系統(tǒng)的使用。此外,在該開發(fā)板上移植了FreeRTOS(Free Real-TimeOperating System, 自由實時操作系統(tǒng)),使用默認的搶占式調(diào)度,能夠保證系統(tǒng)的可靠性和實時性[6],使得不同任務解耦,方便對后續(xù)的任務進行擴展。
從控制器通過獲取編碼器信息,計算得出機器人的線速度與角速度,并通過PWM(Pulse Width Modulation,脈沖寬度調(diào)制)驅(qū)動電機控制板,進而控制電機的速度;通過模擬I2C(Inter-Integrated Circuit,串行雙向總線)獲取MPU6050(整合性6軸運動處理組件)的陀螺儀和加速度信息,然后將機器人的速度、陀螺儀和加速度等信息通過串口上傳到主控制器,此外將MPU6050放置于機器人的中心,以便獲取準確的信息。
頂層控制模塊是垃圾督導機器人導航系統(tǒng)的主控制中心,主要對整個系統(tǒng)進行決策。主控制器使用的是JetsonNano,是一款搭載低配GPU(Graphics Processing Unit,顯卡)運算平臺的小型計算機[7]。該主控制器控制2個激光雷達獲取二維平面點云信息,并且通過串口向從控制器以比特流的方式發(fā)送線速度和角速度來控制電機的速度,從而控制機器人的移動。此外,主控制器通過獲取從控制器發(fā)過來的速度信息計算得出機器人的里程計,并獲取從控制器發(fā)送的陀螺儀和加速度信息,結合從雷達獲取的二維點云數(shù)據(jù),完成機器人的定位建圖和導航功能,并基于上述功能,使用狀態(tài)機完成巡邏任務。
3 系統(tǒng)硬件設計(System hardware design)
該機器人以四輪差速移動機器人為原型,在進行結構設計時,對部分空間進行分層,放置不同功能的硬件設備,其硬件結構如圖2所示。
激光雷達為“思嵐”A1激光雷達,可以獲取雷達平面的二維點云數(shù)據(jù),由于該機器人是在平地上運行,因此使用二維雷達可以滿足機器人的運行要求。為了讓機器人能夠識別低處的障礙物,不宜將雷達放置在高點,應放置于底盤位置,并且在前后位置各放1個,以加快機器人對地圖的建立速度并提升定位的準確性。
4 系統(tǒng)軟件設計(System software design)
軟件部分主要由底層驅(qū)動模塊和頂層控制模塊構成。
4.1 底層驅(qū)動模塊軟件設計
從控制器使用STM32F103RCT6,其系統(tǒng)軟件結構如圖3所示,移植了FreeRTOS,并且總共設置了4個任務,并且使用中斷接收主控制器發(fā)送過來的速度控制信息,控制機器人運動,通過查看LED是否閃爍,判斷系統(tǒng)是否正常運行。
4.1.1 當前運動速度獲取
在每個電機的尾部都裝有增量式光電編碼器,通過捕獲對應的脈沖,可以計算出電機的轉(zhuǎn)速。假設編碼器的分辨率為M,設在一個時間周期t(s)的范圍內(nèi),通過輸入捕獲得到的脈沖數(shù)為N,那么可以計算得出電機的實際轉(zhuǎn)速n(r/min)。
4.1.3 MPU6050信息讀取
MPU6050是一款常用的IMU(Inertial MeasurementUnit,慣性測量單元),使用模擬I2C周期性讀取MPU6050的陀螺儀和加速度信息,在MPU6050上電之后,需要等待一段時間穩(wěn)定后再對其進行讀數(shù),此外水平面要平穩(wěn)且放置于機器人的中間,提高其測量穩(wěn)定性。
4.1.4 串口通信發(fā)送數(shù)據(jù)信息
使用串口發(fā)送的數(shù)據(jù),進行數(shù)據(jù)處理的時候,均沒有使用浮點類型,而是使用16位短整型,將參數(shù)擴大了1 000倍,STM32F103系列沒有浮點運算單元,如果計算浮點運算,速度比較慢,會影響其運行速度;并且,由于使用串口發(fā)送,沒有校驗,因此在數(shù)據(jù)幀中添加了簡易的異或校驗進行數(shù)據(jù)幀格式的校驗,保證數(shù)據(jù)傳輸?shù)恼_性。
4.2 頂層控制模塊軟件設計
主控制器使用Jetson Nano,環(huán)境為Ubuntu18.04,安裝ROS版本為Melodic。ROS提供了Gazebo(開源機器人仿真器)進行機器人仿真,使用Rviz(ROS Visualization,ROS可視化工具)可視化界面,實時查看機器人的行為動作。
垃圾督導機器人的巡邏任務主要基于定位建圖和導航功能完成。定位建圖與導航框架如圖6所示。
4.2.1 定位建圖
由于垃圾督導機器人只是在一小片區(qū)域活動,因此建圖方法選擇Gmapping(Grid-based FastSLAM mapping,基于柵格的快速建圖算法) 建圖, 是一種基于濾波的SLAM(Simultaneous Localization and Mapping, 同時定位與建圖)框架[8-9],其在使用構建小區(qū)域地圖時所需的計算量較小且在室外測試具有良好的效果。由于有2個激光雷達,需要對兩個激光雷達的信息進行融合,因此使用ROS提供的laser_tools功能包對2個激光雷達的點云數(shù)據(jù)進行融合。由于安裝在前面的雷達后半部分會被機器人自身擋住,后面雷達的前面部分也會被機器人自身遮擋,在實際測試中如果不進行處理,機器人會認為其位置存在障礙,導致其導航功能失效,機器人會不停地在原地擺動,不斷進行軟件復位,因此可以使用ROS中的功能包laser_filters設置需要過濾的區(qū)域,避免對建圖導航等產(chǎn)生影響。
此外,機器人在地圖中的定位也十分重要,只有讓機器人知道身處的確定位置,才能根據(jù)路徑規(guī)劃到達下一個目的地,這就需要較高的定位精確度。使用Gmapping建圖算法與AMCL(Adaptive Monte Carlo Localization,自適應蒙特卡羅定位)進行定位,非常依賴里程計數(shù)據(jù)?,F(xiàn)實生活中,機器人在運動過程中不可避免地會發(fā)生打滑,導致建圖與重定位的效果不理想。為改善這種情況,使用EKF(ExtendedKalman Filter, 擴展卡爾曼濾波)算法對輪式里程計與IMU數(shù)據(jù)進行融合,從而進一步提升里程計數(shù)據(jù)的準確度[10],進而提高定位精確度。
4.2.2 導航
全局路徑規(guī)劃使用global_planner功能包,其實際在調(diào)用A*算法或者Dijkstra最短路徑算法進行全局規(guī)劃,通過更改參數(shù)即可在兩者之間進行選擇,該系統(tǒng)使用了A*全局路徑規(guī)劃算法,A*算法相比Djkstra算法,在尋找最短路徑的問題上效率更高。使用局部路徑規(guī)劃DWA算法(Dynamic WindowApproach, 動態(tài)窗口法)進行導航,通過ROS進行參數(shù)的配置和調(diào)節(jié),即可進行機器人的導航操作。在實際測試中,DWA算法在進行局部路徑規(guī)劃時,不同于TEB(Timed ElasticBand, 時域彈性帶)算法,如果使用該方式進行導航,可以使機器人進行原地旋轉(zhuǎn)的操作,滿足該任務需求。只需在Rviz界面中指定到達的位置,通過上述算法就可以規(guī)劃出一條全局路徑,然后將速度信息發(fā)送給從控制器進行底盤的控制,完成機器人的移動,同時根據(jù)周圍的環(huán)境調(diào)整局部路徑,使機器人順利到達指定地點。
4.2.3 巡邏任務
需要完成的任務如下:首先使用機器人在固定的垃圾堆旁邊建立地圖并保存。然后設置需要進行導航的位置,為了能夠觀察四周的情況,假設安裝相機的可視范圍為90°,那么每次需要旋轉(zhuǎn)4次,并且每旋轉(zhuǎn)一次后,需要暫停模擬攝像頭捕捉行為,在每個指定地點巡視一周后,到達下一個指定地點,如此反復,可完成巡邏任務。
協(xié)調(diào)各個任務,也是軟件設計中的一個重點,在ROS中,不同的任務運行在不同的節(jié)點,那么需要協(xié)調(diào)各個節(jié)點,使其能夠有序地進行。為了完成相對復雜的任務,該機器人使用SMACH(State Machine for Advanced Robots,高級機器人狀態(tài)機)有限狀態(tài)機,有限狀態(tài)機又稱有限狀態(tài)自動機,是表示系統(tǒng)中有限個狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學模型[11],該狀態(tài)機可以明確地描述可能的狀態(tài)和狀態(tài)轉(zhuǎn)換,將不同的模塊組合成為一個系統(tǒng),對于復雜的機器人系統(tǒng)可以有效地分解成不同的任務進行組合。其整個工作流程如圖7所示。假設進行導航巡邏任務,地圖建立完畢后,在地圖上找到需要進行多點導航巡邏的點,進行標記,記錄需要到達的位置,將需要導航到地點的位置參數(shù)按照數(shù)組的格式寫入文本文檔中。當啟動導航巡邏任務時,讀取文檔中的位置地點,并創(chuàng)建相應的任務,在到達每個位置之后,都需要進行四周的巡檢,循環(huán)進行任務,直到完成所有的任務。
雖然該巡邏任務并不復雜,但是可以基于該狀態(tài)機對任務進行擴展,比如在安裝攝像頭后檢測到有行人路過,那么狀態(tài)就可以更新為停止,等待行人經(jīng)過,當行人走過之后,再返回之前的狀態(tài)繼續(xù)執(zhí)行任務。也就是說,使用狀態(tài)機具有良好的擴展性。
5 仿真與實地測試(Simulation and experimental test)
5.1 功能仿真
ROS提供了仿真功能,可以使用Gazebo進行仿真,仿真平臺模擬機器人運行的真實環(huán)境,為機器人有關實物實驗提供安全可靠的依據(jù),并大大縮短機器人的開發(fā)以及實驗周期,具有安全可靠、高效靈活的優(yōu)點[12]。
為了使仿真環(huán)境更接近真實環(huán)境,使用SolidWorks(CAD設計繪畫軟件)進行模型建立,在建模時對仿真模型進行了簡化,設置機器人在長寬方向的尺寸一致,高度略有差距,但是不影響對功能的仿真。由于計算機使用虛擬機,資源有限,因此選取比較簡單的場景進行仿真,如圖8所示。
首先操作機器人進行建圖,可以手動控制機器人進行地圖的建立,或者使用導航算法進行建圖。本次測試通過導航進行建圖操作,如圖9所示。
使用機器人行走路徑形成閉環(huán)之后,可以生成最終的地圖,進行保存,如圖10所示。
最后通過在地圖上采集巡邏點,將巡邏位置寫入記事本,使用狀態(tài)機進行巡邏測試,可以達到預期的要求。
5.2 實地測試
由于在室外條件下,沒有Wi-Fi連接,因此使用JetsonNano的網(wǎng)卡,開啟熱點,使用電腦與機器人實現(xiàn)連接,在仿真滿足功能需求的前提下,將垃圾督導機器人拿到扔垃圾的地點進行實地的定位建圖、導航及巡邏功能的測試,如圖11所示。經(jīng)過測試,垃圾督導機器人定位準確且導航功能可以完成既定的目標,也可以完成在多個地點之間的巡邏操作,符合任務的需要。
6 結論(Conclusion)
本文設計了基于ROS的垃圾督導機器人導航巡邏系統(tǒng)。該機器人能夠快速響應控制信號,及時移動或者停止。主控制器使用ROS,實現(xiàn)了建圖、定位導航等功能,并且通過其提供的仿真功能,節(jié)省了在實體機上調(diào)試的時間,使用狀態(tài)機對復雜的移動巡邏任務進行規(guī)劃。通過實地實驗,證明機器人能夠完成巡邏任務,其導航功能能夠滿足現(xiàn)實需要。同時,該機器人移動導航系統(tǒng)的軟、硬件設計為移動機器人的開發(fā)具有較強的指導意義和應用價值,對于不同的移動機器人模型,只需要修改對應的運動學模型,即可實現(xiàn)導航功能。
由于該機器人必須通過手動建圖、手動設置目標點,才能完成相應的功能,因此自動探索和生成導航路徑也是該導航系統(tǒng)需要進一步研究的方向,并且可以逐步融合視覺、語音等方面以增加并完善該機器人的功能,做到真正的商業(yè)化落地。
作者簡介:
何海濤(1998-),男,碩士生.研究領域:嵌入式,智能控制.
陳勁杰(1965-),男,碩士,副教授.研究領域:人工智能,智能機器人.