張恪尹,成瀚,高寶滿,楊賢哲,鄭英
(東南大學 成賢學院,江蘇南京,210088)
新型冠狀病毒疫情的暴發(fā),使得消殺工作成為當前亟須解決的重要問題。傳統(tǒng)的消殺方式存在著效率低、安全難以保證等問題,而采用機器人技術(shù)進行智能消殺則成為一種備受關(guān)注的解決方案。智能消殺機器人可以通過集成多種傳感器和機器學習技術(shù),實現(xiàn)對多種病毒、細菌的高效、自主、安全和可靠的管理。與此同時,該技術(shù)還可以有效減少人工消殺的風險,提高消殺的效率和準確性。
疫情的突如其來,導致國內(nèi)外各地區(qū)都無法及時地研發(fā)智能消殺機器人,但隨著疫情形勢越來越嚴重,國內(nèi)外高新技術(shù)企業(yè)和許多科研單位也都進行了智能消殺機器人的研究和開發(fā),市場上許多新型的智能消殺機器人也層現(xiàn)疊出。比如美國已經(jīng)研制出的Xenex 公司的LightStrike Germ-Zapping robot,該機器人底盤裝有四個被動輪,移動平臺上裝有高強度氣脈沖紫外線燈和運動傳感器,可對室內(nèi)進行消毒,同時感知消毒區(qū)域是否有人員存在。山東日照的創(chuàng)澤智能的創(chuàng)創(chuàng)智能消毒機器人,特點是仿人型輪式機器人,在機器人背部加裝噴灑裝置,實現(xiàn)對工作區(qū)域的噴灑消毒。深圳的優(yōu)艾智合消毒機器人,特點是輪式移動機器人,移動平臺上配備紫外線消殺管,可實現(xiàn)無人值守,遠程遙控[1]。
消殺機器人涉及的核心技術(shù)包括:感知技術(shù)、建圖技術(shù)、路徑規(guī)劃技術(shù)、消殺系統(tǒng)技術(shù)。
感知技術(shù):消殺機器人能夠通過攝像頭來識別待消殺區(qū)域的人員和物體,以實現(xiàn)對消殺場景的感知。
建圖技術(shù):消殺機器人獲取激光雷達和里程計數(shù)據(jù),并通過自己的運動來確定自身位置。然后,機器人使用這些數(shù)據(jù)來構(gòu)建二維柵格地圖,以幫助機器人更好地了解其周圍環(huán)境,并進行路徑規(guī)劃的任務(wù)。
路徑規(guī)劃技術(shù):路徑規(guī)劃是消殺機器人自主移動的關(guān)鍵技術(shù),通過路徑規(guī)劃算法(本系統(tǒng)使用全局Dijkstra 算法配合局部DWA 算法)綜合考慮多種因素,包括地形、障礙物、消殺任務(wù)等,為機器人規(guī)劃一條最優(yōu)路徑。
消殺系統(tǒng)技術(shù):消殺系統(tǒng)是消殺機器人的核心,它需要綜合考慮多種因素,包括消殺劑的類型、噴灑量、噴灑方式、紫外光的光照強度等,為機器人提供高效、安全、可靠的消殺服務(wù)。本系統(tǒng)使用消毒液噴灑技術(shù)和紫外光照射技術(shù)相結(jié)合。
智能消殺機器人的總體框架主要包括硬件系統(tǒng)和軟件系統(tǒng)兩個方面。
硬件系統(tǒng)主要包括底盤、傳感器、執(zhí)行器、消殺裝置等組成部分。底盤是機器人的運動平臺,包括驅(qū)動電機、車輪、霍爾編碼器等組件,用于實現(xiàn)機器人的移動和姿態(tài)控制。傳感器包括激光雷達、攝像頭等,用于獲取機器人周圍環(huán)境的信息。執(zhí)行器選用吸水棉棒和繼電器,用于控制機器人執(zhí)行具體的消殺任務(wù)。消殺裝置選用噴霧器,用于實現(xiàn)消殺操作。
軟件系統(tǒng)主要包括機器人的控制軟件、感知軟件、路徑規(guī)劃軟件和消殺軟件等組成部分??刂栖浖刂茩C器人的移動和姿態(tài)。感知軟件處理傳感器獲取的數(shù)據(jù),以實現(xiàn)對消殺區(qū)域、人員、障礙物等的感知。路徑規(guī)劃軟件根據(jù)目標區(qū)域的地圖信息和感知數(shù)據(jù),生成機器人的運動路徑,以實現(xiàn)自主導航。消殺軟件控制消殺裝置的開關(guān)和消殺時間,以實現(xiàn)消殺操作。
在整個框架中,機器人的感知和路徑規(guī)劃是兩個重要的環(huán)節(jié),需要通過各種算法和技術(shù)來實現(xiàn)。此外,機器人的安全性、可靠性和智能化程度也是整個框架的關(guān)鍵考慮因素。綜合上述分析,將智能消殺機器人系統(tǒng)框圖如圖1 所示。
圖1 消殺機器人系統(tǒng)結(jié)構(gòu)框圖
上位機選擇NVIDIA Jetson Nano 2GB。下位機選擇Arduino Nano 單片機。驅(qū)動電機選擇JGB37-520 直流減速電機。電機驅(qū)動芯片選擇TB6612FNG。激光雷達選擇RPLIDARA1。并在直流減速電機上裝載霍爾編碼器實時測速。
從控制的角度來看,機器人系統(tǒng)可以分為四部分:傳感系統(tǒng)、控制系統(tǒng)、驅(qū)動系統(tǒng)、執(zhí)行機構(gòu)。而執(zhí)行機構(gòu)與驅(qū)動系統(tǒng)構(gòu)成了機器人底盤,也就是本章重點介紹的部分。
在本智能消殺機器人中,采用電池驅(qū)動TB6612FNG 電機驅(qū)動芯片進而驅(qū)動JGB37-520 直流減速電機作為驅(qū)動系統(tǒng)。作為最簡單的能源,電池驅(qū)動的優(yōu)點是:速度變化范圍大,效率高,速度和位姿精度很高。缺點也同樣明顯,不能直接驅(qū)動電機[2]。
在執(zhí)行系統(tǒng)中,兩輪差速模型是最簡單的底盤模型,通常是在底盤兩邊安裝兩個平行的同構(gòu)動力輪,但考慮到在不添加其他維持平衡的系統(tǒng)的情況下至少需要三個點作為支撐點才能維持機器人的平衡。在底盤的后方兩側(cè)安裝了兩個同構(gòu)動力輪,在底盤前方中間安裝一個萬向輪,由此組成了智能消殺機器人的執(zhí)行系統(tǒng)[3]。簡易示意圖如圖2 所示。
圖2 三輪差速機器人簡易模型
差速模型可以用來推算機器人的軌跡,通過左右輪編碼器的讀數(shù),可以計算出機器人的位移和轉(zhuǎn)角。假設(shè)機器人在t 時刻的位姿已知,包括位置和姿態(tài),輪距和輪子半徑也已知,同時知道t 時刻左右輪的編碼器讀數(shù),那么就可以推算出t+1 時刻的位姿。
在采樣間隔中,如果機器人的左右輪速不同,那么機器人走過的軌跡就是一個圓弧,如圖3 所示。圖中Xw,Yw為世界坐標系,紅色和綠色坐標軸分別表示機器人的x 軸和y軸,假設(shè)機器人在初始時刻的位置為 (x0,y0),朝向為θ0,兩個輪子的速度分別為vL和vR,運動時間為t。機器人底盤的半軸距為L,則機器人的運動模型可以表示為式(1)圓弧的弧長?SK可以由式(2)和(3)計算出,轉(zhuǎn)角?θ 可以由式(4)計算出來。
圖3 差速模型示意圖
根據(jù)機器人的運動軌跡,我們可以計算出機器人在每個時刻的位置和朝向。假設(shè)機器人在時刻t的位置為(x(t),y(t)),在時刻t+dt的位置為 (x(t+dt),y(t+dt)),則機器人在這段時間內(nèi)轉(zhuǎn)過的弧長可以近似表示為式(2):
因此,機器人在整個運動過程中轉(zhuǎn)過的弧長可以表示為式(3):
并且,機器人在整個運動過程中轉(zhuǎn)過的角度可以表示為式(4):
因此,在推算機器人的軌跡時,可以使用差速模型配合編碼器讀數(shù)計算機器人的位移和轉(zhuǎn)角,然后根據(jù)左右輪速不等的假設(shè),計算出機器人走過的圓弧軌跡的弧長和轉(zhuǎn)角。最終可以得到機器人在t+1 時刻的位姿如圖3 所示。
顯然,在這個圓弧模型中,機器人邊走邊轉(zhuǎn)過全部的角度,也就是圓弧的圓心到機器人中心的半徑從起始位置,到終止位置,轉(zhuǎn)過了?θ,先采用向量運算,通過機器人位置,推出圓心位置,然后通過半徑轉(zhuǎn)了?θ,推導出最終位置,方程組如式(5)所示。
顯而易見,當機器人走直線時,?θ=0,即轉(zhuǎn)式過的(5角)度不變,則最終位置的橫縱坐標應(yīng)為其初始位置與其根據(jù)行進角度在世界坐標軸上的投影之和[5]。
Gmapping 算法是一個基于2D 激光雷達(本課題選用RPLIDARA1)使用RBPF 算法建出二位柵格地圖的SLAM算法。該算法可以實時構(gòu)建室內(nèi)環(huán)境地圖,計算量少,地圖精度高,對激光雷達掃描頻率要求低。依照粒子濾波的思想,地圖信息包含在各粒子之中,因此該算法的算法復雜度也是由粒子數(shù)所決定的[6]。
在ROS 中,Gmapping 需要訂閱機器人關(guān)節(jié)變換話題(/tf) 和激光雷達掃描數(shù)據(jù)話題(/scan),發(fā)布柵格地圖話題(/map) 。將智能消殺機器人從開機到t 時刻傳感器測量的數(shù)據(jù)表示為 z1:t(/scan),里程計的測量值表示為u1:t(/odom),同時估計地圖信息為m(/map),運動軌跡狀態(tài)為x1:t。由此,SLAM 問題概率能夠被描述為一個條件聯(lián)合概率分布,表述如式(6)所示。
為了將SLAM 問題劃分得更細一點,用概率論原理將上述公式進行分解,分解過程如式(7)所示。
式中p(x1:t,m|u1:t,z1:t)表示機器人運動軌跡的估計,p(m|x1:t,z1:t)表示在已知機器人軌跡和傳感器測量數(shù)據(jù)的情況下對地圖構(gòu)建的閉式運算,也就是Rao-Blackwellized分解。這樣一來SLAM 建圖就被分解為兩個問題,即機器人軌跡的估計和已知機器人位姿的地圖構(gòu)建。
通過上述分析,可以知道p(x1:t|u1:t,z1:t)估計了機器人的運動軌跡,接下來使用條件貝葉斯公式和條件聯(lián)合概率公式將其繼續(xù)分解,結(jié)果如式(8)所示。
理論上,xt只與xt-1和ut有關(guān),所以將軌跡估計問題轉(zhuǎn)化為一個增量估計問題,p(x1:t-1|u1:t-1|u1:t-1,z1:t-1)表示上一時刻機器人的位姿,用上一時刻的粒子群表示。每一個粒子都有運動學模型p(xt|xt-1,ut)進行狀態(tài)傳播,以得到每個粒子的預測軌跡。對每個傳播后的粒子,用觀測模型p(zt|xt)進行權(quán)重計算歸一化處理,這樣就得到現(xiàn)在時刻的機器人軌跡。之后根據(jù)估計的軌跡以及傳感器觀測數(shù)據(jù)進行地圖構(gòu)建[7]。
作為一種經(jīng)典的用于解決單源最短路徑問題的算法,它的優(yōu)點有很多,比如:
正確性:Dijkstra 算法能夠在無向圖中,正確地找到某個源點到其他所有節(jié)點的最短路徑。這是因為Dijkstra 算法使用了貪心策略,每次都選擇當前距離源點最近的節(jié)點進行擴展,并利用已知的最短路徑來更新其他節(jié)點的距離值。
可優(yōu)化性:Dijkstra 算法的時間復雜度可以通過使用優(yōu)先隊列等數(shù)據(jù)結(jié)構(gòu)進行優(yōu)化,從而達到更快的運行速度。
靈活性:Dijkstra 算法可以用于有向圖和無向圖,并且可以處理帶權(quán)圖和不帶權(quán)圖。
當然,它的缺點也很明顯,Dijkstra 算法的時間復雜度通常比其他算法高,為O((V+E)logV),其中V 和E 分別為圖中的節(jié)點數(shù)和邊數(shù)。可能導致機器人路徑規(guī)劃的實時性降低。
在智能消殺機器人的應(yīng)用場景中,實時性很重要,因為機器人需要在短時間內(nèi)快速響應(yīng)環(huán)境變化并調(diào)整路徑。如果路徑規(guī)劃算法耗費太長時間,機器人可能無法及時調(diào)整路徑,從而無法避開障礙物或到達目標位置,甚至可能導致任務(wù)失敗或機器人受損。
對于這種情況,本文嘗試引入啟發(fā)式信息以優(yōu)化Dijkstra 算法。通過引入啟發(fā)式信息,機器人有效地減少了搜索范圍,從而降低算法時間復雜度。啟發(fā)式信息是指一種對搜索問題的估計,它可以幫助算法更快地找到最優(yōu)解。
在Dijkstra 算法中引入啟發(fā)式信息的具體實現(xiàn)步驟包括:定義啟發(fā)式函數(shù)、初始化最短距離和優(yōu)先級、計算節(jié)點優(yōu)先級、搜索并更新節(jié)點的最短距離、使用優(yōu)先隊列進行節(jié)點排序。
定義一個啟發(fā)式函數(shù),該函數(shù)用于估算節(jié)點到目標節(jié)點的距離。常用的啟發(fā)式函數(shù)有曼哈頓距離、歐幾里得距離等。與曼哈頓距離相比,歐幾里得距離更精確地估算了節(jié)點之間的距離,因為歐幾里得距離是兩點在平面上的直線距離,而曼哈頓距離只是兩點在網(wǎng)格狀地圖上的距離。所以本文選用歐幾里得距離為模型定義啟發(fā)式函數(shù)。將節(jié)點n到起點的距離作為節(jié)點的估計值,定義為h(n) 函數(shù)。設(shè)節(jié)點n的坐標為(xn,yn),起點的坐標為(x0,y0),則節(jié)點n到起點的歐幾里得距離為。則節(jié)點n的估計值h(n) 為到起點的歐幾里得距離d。通過這樣定義啟發(fā)式函數(shù)能夠有效減少搜索的節(jié)點數(shù)量,加快算法的運行速度。
在算法開始之前,將起點的最短距離初始化為0,將所有其他節(jié)點的最短距離初始化為正無窮大,并將所有節(jié)點的優(yōu)先級初始化為無窮大。
對于每個節(jié)點,我們定義一個優(yōu)先級f(n)=g(n)+h(n),其中g(shù)(n) 表示起點到節(jié)點n的最短距離,h(n) 表示節(jié)點n到目標節(jié)點的估計距離。
搜索時,我們首先選取優(yōu)先級最小的節(jié)點作為當前節(jié)點,并標記該節(jié)點為已訪問。然后,更新該節(jié)點的相鄰節(jié)點的最短距離,并重新計算相鄰節(jié)點的優(yōu)先級。
重復前一步,直到找到目標節(jié)點或者未訪問的節(jié)點集合為空。至此,完成了定義啟發(fā)式函數(shù)的所有步驟。
上述引入啟發(fā)式信息是使用優(yōu)先隊列的思想來實現(xiàn)的,即每次從隊列中選取優(yōu)先級最小的節(jié)點作為當前節(jié)點。在每次更新節(jié)點的最短距離后,機器人會將該節(jié)點重新加入優(yōu)先隊列中,并按照更新后的優(yōu)先級進行排序。這樣,在每次選擇下一個節(jié)點時,算法會優(yōu)先考慮優(yōu)先級較小的節(jié)點,從而加速算法的運行。
完成Dijkstra 算法的優(yōu)化后,搭載好Dijkstra 算法,控制機器人在相對密閉的空間內(nèi)移動,使用激光雷達掃描周圍環(huán)境獲得數(shù)據(jù)來構(gòu)建地圖,在ROS 系統(tǒng)中通過可視化工具RVIZ 可以觀察到地圖逐步被構(gòu)建出來。生成的地圖如圖4 所示。
圖4 SLAM 建圖例圖
地圖創(chuàng)建好后,在RVIZ 中,可以看到機器人所在的具體位置。在地圖上設(shè)置目標位置,機器人就能夠基于啟發(fā)式函數(shù)改進的Dijkstra 算法自主規(guī)劃最優(yōu)路徑,完美避開障礙物,運動到目標位置。
首先根據(jù)Arduino Nano、TB6612 大小尺寸,確定洞洞板尺寸和安裝位置。確定好架子尺寸之后,進行底盤驅(qū)動板的安裝。
其次,移動機器人底盤和電機支架的尺寸根據(jù)電機的尺寸、激光雷達的尺寸、Jetson Nano 大小等來確定。確定好尺寸后,打印出亞克力板進行安裝。
消殺系統(tǒng)由噴霧器、紫外線消毒燈和各類傳感器組成,吸水裝置利用虹吸原理將消毒液從瓶底吸到瓶口,霧化噴灑器由Arduino 通過繼電器控制,它可以通過吸水裝置從下到上吸出消毒液,再經(jīng)由霧化噴頭將消毒液噴出。系統(tǒng)結(jié)構(gòu)圖如圖5 所示。配合紫外線消毒燈對消殺區(qū)域進行一定時間的照射,來實現(xiàn)定點定時消殺的功能。并外接DHT11 傳感器、CO2傳感器實時監(jiān)測并反饋環(huán)境溫濕度數(shù)據(jù)和空氣的滯留量,讓機器人及時制定合適的消殺方案(控制紫外線照射時間、控制消毒液噴射量)。與此同時,Jetson Nano 會接收攝像頭傳輸?shù)臄?shù)據(jù),進行實時檢測和分析,獲取目標位置、形狀、顏色等信息。根據(jù)目標物體的類型和狀態(tài),通過Arduino 使用相應(yīng)的消殺方案進行消殺操作。
圖5 消殺系統(tǒng)結(jié)構(gòu)圖
接著,將消殺系統(tǒng)、控制系統(tǒng)和感知系統(tǒng)有機地結(jié)合在一起,從而實現(xiàn)自主、高效、智能地消殺操作。這種有機結(jié)合可以使它們相互協(xié)調(diào),提高整個系統(tǒng)的效率和精度。消殺系統(tǒng)框圖如圖6 所示,展示了整個系統(tǒng)的架構(gòu)和各個組件之間的聯(lián)系。
圖6 消殺系統(tǒng)運行示意圖
通過在消殺裝置下方安裝壓力傳感器,并在上位機上訂閱壓力傳感器傳輸?shù)男畔ⅲ瑢崿F(xiàn)消殺系統(tǒng)與機器人端的通信,獲取壓力變化的信息。當消毒液減少到一定程度后,發(fā)出警報并適當減少消毒液噴灑量,保證消毒液的正常噴射功能。
本文設(shè)計了一個基于ROS 環(huán)境、SLAM 建圖和基于啟發(fā)式函數(shù)改進的Dijkstra 算法導航的智能消殺機器人,將建圖導航功能與消殺系統(tǒng)緊密結(jié)合。機器人的軟硬件配合工作,實現(xiàn)了各個模塊的互相協(xié)作,提高了消毒殺菌的效率,大大減少防疫工作人員的風險。作為這樣一種高效、智能、安全的消殺工具,具有廣泛的應(yīng)用前景和推廣價值。