張潤楠 尹宇杰 邱琦 王希文
基于機器人操作系統(tǒng)(ROS)的智能運輸機器人自動導航系統(tǒng)實現(xiàn)的基本方法,設計了一款室內智能運輸機器人,小車通過激光雷達掃描周圍環(huán)境的實時信息,傳入工控處理后通過見圖算法建立一張二維地圖,小車通過A*或Dijkstra算法進行全局路徑規(guī)劃,通過局部路徑規(guī)劃動態(tài)窗口算法(DWS)進行自動避障,通過激光雷達測量物體的距離,精確避障,使用OpenCv搭載Python實現(xiàn)人臉識別開鎖。通過軟硬件結合,構建了一套具有完整結構的服務于社區(qū)的運輸系統(tǒng)。該系統(tǒng)可以選擇不同的配送類型,選擇不同的服務模式,選擇配送時間以及取貨時間等等,本產品解決了“最后一公里”配送的問題,實現(xiàn)了“商戶-物品-用戶”一站式服務,為智慧社區(qū)的構建作出了重要的貢獻。
在智能時代,機器人已經成為幫助人們解決許多問題的得力助手。智能運輸機器人在物流、家庭服務、工業(yè)等領域廣泛應用,但是移動機器人的普及仍然存在很多問題亟待解決,如精準室內定位、精準建立地圖等。為解決上述問題,近幾十年間的研究提出了很多有效的解決方案,如自適應蒙特卡洛算法、動態(tài)窗口局部路徑規(guī)劃算法、A*全局路徑規(guī)劃算法等。
2010年Willow Garage公司發(fā)布了開源機器人操作系統(tǒng)ROS,大大增加了小車在軟件上的復用性、移植性和軟件間的兼容性,本文基于ROS系統(tǒng),介紹了一種基于ROS和樹莓派的室內智能運輸機器人,并搭配通用接口,以適應不同環(huán)境的應用。
小車總體框架
智能機器人系統(tǒng)主要由手機客戶端和基于ROS與樹莓派的智能機器人組成,手機端主要包括界面層和通信層,輪式ROS機器人系統(tǒng)主要包括操作系統(tǒng)層、驅動層及設備層(硬件層),如圖1所示。
在交互層:采用客戶端App,移動App開發(fā)擬采用Native App,擬實現(xiàn)顧客下單、監(jiān)控物流情況、物品狀況照片反饋、生成取貨二維碼等功能,Web頁面采用html5+ccs3技術開發(fā),可以同時在PC端、移動端、iOS設備、安卓設備上運行,可以實現(xiàn)一套代碼跨平臺、跨設備和跨系統(tǒng)的操作,問題反饋、機器人修理等功能。在執(zhí)行層:當智能機器人在運輸過程中受到外界惡意阻擋,或者在配送過程中遇到強行打開柜門等惡意行為時,智能機器人會啟動報警裝置,并觸發(fā)報警器。麥克納姆輪是由瑞典麥克納姆公司發(fā)明生產的。許多室內環(huán)境具有拐角、長廊等狹小部分,而移動機器人或移動智能機器人靈活性差,不能很好地完成轉向,所以不適合在室內進行建圖導航等工作,若想要實現(xiàn)機器人和智能機器人的全向移動,一般使用全向輪或麥克納姆輪。相比全向輪,麥克納姆輪的靈活性和機動性較強,提高了智能機器人的運動穩(wěn)定性。在運動過程中為了方便避障,選用麥克納姆輪。在感知層:本產品感知層主要由Rplidar A1激光雷達、IMU陀螺儀以及RGBD深度相機以及攝像頭三部分組成。其中激光雷達用于測繪二維地圖并且解決智能機器人在行駛過程中的避障問題;陀螺儀用于感知智能機器人的姿態(tài)同時還可以準確對其進行定位;深度相機輔助激光雷達用于環(huán)境深度感知;攝像頭分為箱內攝像頭和箱外攝像頭,箱內攝像頭用于監(jiān)測物品情況;箱外攝像頭用于監(jiān)測機器人運行情況。在控制層:在ROS規(guī)劃端進行地圖構建、自主定位、路徑規(guī)劃、路徑跟蹤、自主導航五大模塊的設計與實現(xiàn)。通過制定ROS規(guī)劃端與硬件系統(tǒng)的通信協(xié)議,使整個軟硬件協(xié)同開發(fā)、協(xié)調工作。通過樹莓派4B,連接攝像頭,將照片傳到App客戶端手機上,此外,可以通過樹莓派實現(xiàn)機器學習,語言包傳輸提醒,提升服務質量,同時也能夠實現(xiàn)智能機器人精準、安全配送。在驅動層:根據(jù)對智能機器人的整體分析,所設計的運動控制線控系統(tǒng)主要分為上位機和下位機兩層,上位機主要是車載工控機,是整個機器人的中央控制系統(tǒng),負責控制整個機器人的所有功能。下位機是由STM32單片機作為主控芯片負責控制信號的輸出,實現(xiàn)對智能機器人的速度和方向的控制[1]。
硬件方案設計
激光雷達
激光雷達主要采集用來構建2D柵格地圖的信息,按激光線束分為單線和多線。可以360°全方位地采集周圍距離信息。在本產品中傳感器模塊采用高性價比的單線激光雷達Rplidar A1。該雷達為思嵐公司生產,價格低廉,可靠性高,能夠確保二維柵格地圖構建的質量。將Rplidar A1作為核心傳感器,可快速獲得環(huán)境輪廓信息,配合相應算法的使用,可以幫助機器人實現(xiàn)自主構建地圖、實時路徑規(guī)劃與自動避開障礙物。
陀螺儀
IMU即慣性測量單元,在標準情況下,一個IMU中包含三個單軸加速度計和三個單軸陀螺儀。其中加速度計的作用是檢測物體在全局坐標系的角速度信號,即移動智能機器人轉動的角度。通過IMU陀螺儀可以測量得到移動智能機器人在空間中的角速度和角加速度,并且由此可以解算出移動智能機器人的姿態(tài)。所以IMU在智能機器人導航應用中有很重要的作用。
下位機主控器STM-32模塊
STM-32F103RBT6是一款基于CORTEX-M3內核、高性能、低成本、低功耗的微控制器,在軟件和引腳封裝方面同其他STM-32系列處理器是兼容的。
它的時鐘頻率達到72MHz,能實現(xiàn)高端運算。內嵌128KB FLASH程序儲存器。豐富的外設,UART、SPI等串行接口以及最大翻轉率18MHz的GPIO。它擁有最快1微秒轉換速度的雙12位精度ADC,此快速采集、高性能的ADC非常適用于數(shù)據(jù)的快速采集和快速處理,這也是本組選擇它作為核心控制器的一個重要原因。
電機驅動模塊
智能機器人要想穩(wěn)定運行,不僅要在電源模塊上做出改變,在電機驅動方面也要有所不同。采用直流減速電機驅動,使用12V寬電壓輸入電機,通電后電機轉速可達1600r/min,智能機器人空載時轉速可達600r/min,電機減速比為1:30,車輪半徑為30mm。當遇到障礙物時,超聲波傳感檢測將障礙物的數(shù)據(jù)分析處理后傳送給STM32單片機,然后由STM32單片機依據(jù)所檢測到的各個數(shù)據(jù)對比標準數(shù)據(jù)的處理結果輸送給BTN7971驅動芯片,從而來控制電機驅動4個麥克納姆全向輪,使機器人改變方向。
攝像頭模塊
OpenCV攝像頭OpenCV是一個開源、低成本、功能強大的攝像頭模塊。以STM32F767CPU為核心,集成了OV7725攝像頭芯片,攝像頭直接成像,并將信號實時傳給主控板,主控板處理并壓縮后,通過以太網模塊傳輸向App。
電源模塊
采用12V可充電鋰電池供電,電機驅動模塊直接由鋰電池提供12V的電壓,電源模塊使用的是XL2596穩(wěn)壓芯片,通過XL2596芯片穩(wěn)壓處理后輸出5V電壓提供給STM32單片機,能夠輸出穩(wěn)定電壓以保證電源模塊正常有效工作。這樣即使電機驅動模塊和控制系統(tǒng)不分開供電,也能實現(xiàn)控制系統(tǒng)的穩(wěn)定工作,減輕機器人在電源上的承重壓力,為機器人提供更大的驅動力。
人臉識別模塊
采用樹莓派4代作為搭建OpenCV視覺環(huán)境的硬件設備。樹莓派具有能耗低、移動便捷性高、集成性高等特點。樹莓派4代更是在前幾代的基礎上,在性能上有了更大的提升,另外樹莓派還帶有Raspberry Pi Camera Module v2專用定制攝像頭,擁有定焦鏡頭,高質量800萬像素[2]。配合樹莓派4B開發(fā)板,運行速度快,流暢度較高。用來作為跑圖像處理的平臺,開發(fā)性高、性能較好、方便且快捷。通過樹莓派平臺搭建計算機視覺庫來使用DRN人臉檢測算法預訓練模型對人臉進行準確檢測捕捉,使人臉檢測更加便捷準確。
軟件系統(tǒng)設計
GmApping SLAM算法
GmApping是一種基于Rpbf的SLAM解決方案,這種解決方案如圖2所示,先估計機器人的運動軌跡,再根據(jù)機器人的狀態(tài)估計環(huán)境地圖;然后反過來這個環(huán)境地圖又可以用來更新機器人的運動軌跡。在算法中的每個粒子都獨立地記錄了一條可能的機器人軌跡及其對應的環(huán)境地圖。GmApping算法作為室內應用最廣泛的2DSLAM方法,可以實時構建地圖,在室內小地圖場景下地圖計算量較小時精度比較高。GmApping算法里每當讀取一對里程計/激光雷達信息時,首先根據(jù)里程計信息更新機器人位姿,隨后以新的機器人位姿為初值進行激光掃描匹配。掃描匹配之后得到的激光雷達的觀測模型可以給出一個相對集中的分布,用采樣的方法在這個相對集中的區(qū)域里確定高斯分布的均值和方差,從而得到與真實分布最為接近的提議分布。在本系統(tǒng)中,直接移植GmApping package進入ROS的工作空間,配置好對應激光雷達的驅動數(shù)據(jù),運行GmApping即可構建地圖數(shù)據(jù)。開源算法GmApping運作過程為:其包含一個用于OpenSLAM的ROS包,采用了粒子濾波算法,提供了基于激光SLAM的ROS節(jié)點,使用該算法可以從智能機器人收集的激光和姿勢數(shù)據(jù)創(chuàng)建柵格地圖[3]。
A*路徑規(guī)劃算法
A*(A-Star)算法是一種靜態(tài)路網中求解最短路徑最有效的直接搜索方法,也是許多其他問題的常用啟發(fā)式算法。注意,它是最有效的直接搜索算法,之后涌現(xiàn)了很多預處理算法(如ALT、CH、HL等等),在線查詢效率是A*算法的數(shù)千甚至上萬倍[4]。
A*算法主要步驟如下:
(1)假如將起點存放于Open List中。
(2)循環(huán)執(zhí)行以下過程。
(3)在Open List中尋找當前需要處理的節(jié)點,篩選的標準為這個節(jié)點的F值是Open List里所有節(jié)點中最小的,假設這個節(jié)點為a,當找到當前處理節(jié)點后,需要將該節(jié)點從開放列表里刪除,緊接著將它加入關閉列表中。
(4)判斷緊挨著a節(jié)點的方格(假如為b、c、d、e、f、g、h、i)是否符合要求,如果那個方格已經在Close List中,或者那個方格因為障礙物或者地形的原因阻礙了運動路徑,則不考慮這個方格。如果方格符合要求,則進行接下來的操作:假如b方格不在Open List中,則把b方格的節(jié)點加入Open List中,并把a節(jié)點設置為b節(jié)點的父節(jié)點;若b方格已經在Open List中,則計算從a節(jié)點移動到b節(jié)點消耗的F值,如果距離更近,則把a節(jié)點設置為b節(jié)點的父節(jié)點,并更新b節(jié)點的F值和G值。
(5)如遇到以下情況,則路徑搜索結束:如果終點已經在Open List中,說明路徑搜索以及進行到最后,完成對最后一個節(jié)點的搜索,路徑規(guī)劃完成;如果Open List里面沒有節(jié)點,則說明無路徑。
(6)從終點開始,沿著指向父節(jié)點的箭頭一直到起點,并刪除多余的路徑節(jié)點。
交互界面介紹
手機App的工作狀態(tài)分為界面層和通信層。界面層用于和用戶進行交互,采集用戶輸入的數(shù)據(jù)(例如用戶所輸入的時間、地點等等),并能夠顯示ROS收到的數(shù)據(jù)信息。通信層用于建立和關閉socket通信,將用戶在界面層輸入的數(shù)據(jù)轉換為JSON格式,將從ROS收到的JSON數(shù)據(jù)解析并傳輸給界面層(例如智能機器人實況、對比照片等等)。主要設置了四個模塊。第一個是登錄與注冊,使用我們產品的第一步;第二個是訂單詳情,用戶可以了解自己的訂單并查看機器人實況;第三個是物品下單,完成物品運送的各種模式選擇并輸入時間地點,具體下單流程如圖3所示;第四個是問題反饋界面,用戶可以輸入待解決問題,也可以使用特別功能(衛(wèi)生維護,查看物品運輸前后對比照片);最后一個則是用戶界面,可以查看個人信息以及進行退出登錄操作。
搭配多功能插口應用在不同場景
應用在機場和火車站等公共運輸服務場所,搭載配件如下:
(1)壓力傳感器:智能機器人箱身底部安裝壓力傳感器檢測乘客箱包重量是否超過承重量。
(2)安全掃描:通過在機器人箱內安裝掃描和自動檢測裝置檢測乘客是否有攜帶違禁用品,確保機場安全。
(3)自動報警:智能機器人通過檢測人體關鍵點分析人員行為,確定存在打架斗毆行為時進行報警。同時系統(tǒng)可監(jiān)測對場景內人群的運動特征變化,并以安全指數(shù)的形式進行提示,當安全知識低于閾值時觸發(fā)報警裝置。
應用在醫(yī)院送藥與餐廳送餐等
社區(qū)服務場所,搭載配件如下:
(1)信息匹配與人員識別:系統(tǒng)通過一系列語音交互和人機交互確定取貨人的身份信息,并且通過與已有信息進行核對,匹配成功后將箱門打開完成取貨操作。
(2)可分離、可分隔的特殊箱柜:智能機器人搭載可分離、可分隔的特殊箱柜,對需要運輸給不同用戶的物品進行分類,以確??梢远啻芜\輸。
應用在酒店和辦公樓,搭載配件如下:
(1)加入通信模塊,在物品到達用戶門口時,撥打用戶手機號碼,告知用戶物品送達,到門口取物。
(2)搭配多奧RFID梯控系統(tǒng),可以實現(xiàn)機器人自主呼叫電梯,實現(xiàn)高層樓宇間智能機器人上下電梯行動。
(3)無線掃描、打印裝置,可以實現(xiàn)線上下單,智能機器人自動送達打印文件。
應用在圖書館、庫房,搭載配件如下:
(1)搭載RFID智能盤點,實現(xiàn)幫助圖書整理、定位。
(2)搭載機械臂,幫助讀者輕松索引圖書,幫助清點數(shù)目、貨物,并精準配送。
結束語
本文運用新一代機器人操作系統(tǒng)ROS來開發(fā)智能運輸機器人,設計了一種簡單的基于ROS的智能小車自主建圖導航的方法。使用ROS開發(fā)移動智能小車具有很高的開放性和擴展性,能進行跨平臺開發(fā),可用該系統(tǒng)開發(fā)機械臂等;系統(tǒng)集合多種功能完善功能包,使得只需在ROS 框架下編寫相關程序和調整相關參數(shù)等,就能快速開發(fā)出具有相應功能的智能小車,提高了開發(fā)效率和減少了軟件開發(fā)的復雜性。本產品基于搭配多種模塊進行開發(fā),得到基礎運輸機器人,將基礎運輸機器人搭配不同模塊則可以應用到多種場景,實現(xiàn)服務地點一體化建設。
參考文獻:
[1]鮑錫桉,孫巧妍,張德軍,等.基于ROS和SLAM的全向移動語音機器人設計[J].單片機與嵌入式系統(tǒng)應用,2021,21(10):59-62+67.
[2]蓋軍雄,雷曉春,江澤濤.基于ROS的阿克曼機器人室內導航實現(xiàn)[J].中國體視學與圖像分析,2021,26(03):215-225.
[3]吳欣.ROS下移動機器人激光雷達地圖構建與路徑規(guī)劃研究[D].西安理工大學,2021.
[4]溫博.基于ROS的室內自主移動機器人系統(tǒng)設計與實現(xiàn)[D].西安建筑科技大學,2021.