宋家驥 李雨祺 劉壯壯 呂建全 石衛(wèi)東
摘? 要:文章基于Arduino設(shè)計(jì)一款能夠自動(dòng)避障并具有消毒功能的小車,分別進(jìn)行了軟硬件系統(tǒng)的設(shè)計(jì),搭建了智能小車平臺(tái)。利用超聲波傳感器、紅外傳感器對(duì)路況進(jìn)行監(jiān)測(cè),采用基于柵格法地圖的弓字形遍歷路徑,以靜態(tài)路徑規(guī)劃和動(dòng)態(tài)路徑規(guī)劃相結(jié)合的方式進(jìn)行綜合路徑規(guī)劃,借助驅(qū)動(dòng)程序?qū)崿F(xiàn)避障,同時(shí)結(jié)合消毒液噴灑裝置實(shí)現(xiàn)消毒作業(yè)。試驗(yàn)結(jié)果表明,該智能消毒小車能夠穩(wěn)定運(yùn)行,滿足設(shè)計(jì)要求。
關(guān)鍵詞:Arduino;消毒小車;智能避障;紅外傳感器;超聲波傳感器
中圖分類號(hào):TP277? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2023)20-0161-04
Design of Intelligent Disinfection Trolley Based on Arduino
SONG Jiaji, LI Yuqi, LIU Zhuangzhuang, LYU Jianquan, SHI Weidong
(School of Artificial Intelligence, China University of Mining & Technology-Beijing, Beijing? 100083, China)
Abstract: This paper is based on Arduino to design a trolley that can automatically avoid obstacles and has disinfection function. The software and hardware systems are designed separately, and an intelligent car platform is built. Utilizing ultrasonic sensors and infrared sensors to monitor road conditions, using bow shape of grid-based map to traverse path, comprehensive path planning is carried out through a combination of static and dynamic path planning. Obstacle avoidance is achieved through driver, and disinfection operations are achieved through the use of disinfectant spraying devices. The experimental results indicate that the intelligent disinfection trolley can operate stably and meet the design requirements.
Keywords: Arduino; disinfection trolley; intelligent obstacle avoidance; infrared sensor; ultrasonic sensor
0? 引? 言
我國(guó)公共場(chǎng)所的消殺工作主要仍以人力為主,疫情期間的人力緊缺,而且這樣的方式消毒人員的感染風(fēng)險(xiǎn)大?,F(xiàn)在的消毒措施仍可以進(jìn)行一些優(yōu)化改進(jìn),通過智能消毒小車輔助公共場(chǎng)所的消毒,對(duì)于減少消毒人員,節(jié)約人工成本與時(shí)間成本具有重要意義。我國(guó)的消毒小車,種類繁多,全自動(dòng)的、遙控的,都有一定的應(yīng)用,目前所用的消毒小車具有便攜、噴灑范圍廣、結(jié)構(gòu)簡(jiǎn)單等特點(diǎn),但仍存在維護(hù)成本高,半自動(dòng)等問題,還有很大的優(yōu)化空間。設(shè)計(jì)基于Arduino的消毒小車,實(shí)現(xiàn)在避障過程中的消毒,對(duì)于公共衛(wèi)生安全事件的消殺作業(yè)具有一定意義。
1? 設(shè)計(jì)原理
如圖1所示,系統(tǒng)主要由六個(gè)模塊組成:控制模塊、藍(lán)牙通信模塊、避障尋路模塊、驅(qū)動(dòng)模塊、消毒模塊與信息采集模塊。通過藍(lán)牙模塊在Android平臺(tái)來控制主控板。再由控制模塊獲取超聲波與紅外傳感器的信息,去實(shí)現(xiàn)避障尋路,由驅(qū)動(dòng)模塊驅(qū)使小車的運(yùn)動(dòng),另外獲取到小車的運(yùn)動(dòng)狀態(tài)和液位傳感器的信息,來控制消毒模塊的工作。
2? 硬件部分設(shè)計(jì)
2.1? 控制模塊
關(guān)于主板硬件的選用,我們的主板是選擇Arduino UNO系列的R3型號(hào),雖然R3主板上也可以添加藍(lán)牙模塊,但需要進(jìn)行焊接操作,故外接一個(gè)Xbee V5.0的擴(kuò)展板,在擴(kuò)展板上接一個(gè)藍(lán)牙模塊,來實(shí)現(xiàn)在手機(jī)對(duì)小車進(jìn)行操作。
2.2? 信息采集模塊
由于布置在車頭位置的測(cè)距傳感器,容易受到智能小車運(yùn)動(dòng)的影響,要求精度為1 mm。由于車體側(cè)面發(fā)生碰撞的可能性比較小,所以布置在車體兩側(cè)的測(cè)距傳感器精度要求為10 mm即可。所以在小車的前部安置兩個(gè)紅外測(cè)距傳感器,在小車的左右安置了兩個(gè)超聲波傳感器。超聲波傳感器我們?cè)谶x擇時(shí)主要對(duì)比了hc-sr04和ks103這兩款傳感器。前者的測(cè)量精度為3 mm,測(cè)量范圍為2~450 cm,工作電壓為5 V,電流為15 mA,溫度在-10~50 ℃,而后者精度在1~3 mm,測(cè)量范圍在1~800 cm,工作電壓、電流和溫度與前者是一樣的,但后者的價(jià)格是前者的數(shù)十倍,結(jié)合我們小車實(shí)際使用的使用場(chǎng)景主要為室內(nèi),所以選擇hc-sr04這款。紅外傳感器兩者的各項(xiàng)指標(biāo)和價(jià)格都相差不多,主要差異是我們選用的這款測(cè)量范圍在10~80 cm,后者則在20~150 cm,小車對(duì)較近處的距離測(cè)量重要性大于測(cè)量范圍。這個(gè)液位傳感器是放置在消毒液容器中來監(jiān)測(cè)消毒液含量的傳感器,在消毒液告罄以后發(fā)出警報(bào)。
發(fā)送超聲波監(jiān)測(cè)是否反射回來的聲波,超聲波模塊工作受物體表面反射程度影響,并且在傳播過程中信號(hào)強(qiáng)度容易衰減,因此該模塊適用的檢測(cè)距離有限,一般在50 cm以內(nèi)相對(duì)正確,而且我們?cè)诒苷蠒r(shí)不需要檢測(cè)太遠(yuǎn)的距離,因此超過50 cm以上的都按50 cm計(jì)算。具體代碼如下:
int getDistance()
{
digitalWrite(outputPin, LOW); // 使發(fā)出發(fā)出超聲波信號(hào)接口低電平2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // 使發(fā)出發(fā)出超聲波信號(hào)接口高電平10μs,這里是至少10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號(hào)接口低電平
int distance = pulseIn(inputPin, HIGH); // 讀出脈沖時(shí)間
distance= distance/58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米)
Serial.println(distance); //輸出距離值
if (distance >=50)
{
//如果距離小于50 厘米返回?cái)?shù)據(jù)
return 50;
}//如果距離小于50 厘米小燈熄滅
else
return distance;
}
2.3? 驅(qū)動(dòng)模塊
驅(qū)動(dòng)模塊主要由電機(jī)和驅(qū)動(dòng)板構(gòu)成,電機(jī)選擇簡(jiǎn)單功率穩(wěn)定、起動(dòng)和調(diào)速性能好、調(diào)速范圍廣平滑、過載能力較強(qiáng)、受電磁干擾影響小的vms電機(jī),它可以精確地控制小車的速度并提供即使反饋。驅(qū)動(dòng)板則選擇對(duì)比其他驅(qū)動(dòng)板更高功率更大電流且適合小車的L298N。
驅(qū)動(dòng)模塊主要是用于實(shí)現(xiàn)小車的向前運(yùn)動(dòng)、向左轉(zhuǎn)彎、向右轉(zhuǎn)彎、停止和向后倒車。通過控制Arduino的數(shù)字引腳來控制車輪的轉(zhuǎn)動(dòng)。
設(shè)計(jì)參數(shù)DriveRightl、DriveRight2負(fù)責(zé)智能小車右輪,參數(shù)DriveLeft1、DriveLeft2負(fù)責(zé)智能小車左輪。具體設(shè)計(jì)代碼封裝成為一個(gè)個(gè)函數(shù),代碼如下:
void advance(int a)//前進(jìn)
{
digitalWrite(DriveRight1,LOW);
digitalWrite(DriveRight2,HIGH);
digitalWrite(DriveLeft1,LOW);
digitalWrite(DriveLeft2,HIGH);
delay(a);
}
void turnR(int b)//右轉(zhuǎn)(單輪)
{
digitalWrite(DriveLeft1,LOW);
digitalWrite(DriveLeft2,HIGH);
digitalWrite(DriveRight1,LOW);
digitalWrite(DriveRight2,LOW);
delay(b);
}
void turnL(int c)//左轉(zhuǎn)(單輪)
{
digitalWrite(DriveRight1,LOW);
digitalWrite(DriveRight2,HIGH);
digitalWrite(DriveLeft1,LOW);
digitalWrite(DriveLeft2,LOW);
delay(c );
}
void stop(int f)//停止
{
digitalWrite(DriveRight1,LOW);
digitalWrite(DriveRight2,LOW);
digitalWrite(DriveLeft1,LOW);
digitalWrite(DriveLeft2,LOW);
delay(f);
}
void back(int g)//后退
{
digitalWrite(DriveRight1,HIGH);
digitalWrite(DriveRight2,LOW);
digitalWrite(DriveLeft1,HIGH);
digitalWrite(DriveLeft2,LOW);
delay(g);
}
2.4? 消毒模塊
微孔霧化片是通過中間細(xì)微孔,用細(xì)海綿棒將水吸上來,從而霧化。為增大消毒面積和效率,選擇使用8個(gè)微孔霧化片以圓周均勻安置。這里通過繼電器去控制這些霧化片的開合。
3? 軟件部分設(shè)計(jì)
3.1? 避障功能工作原理
超聲波傳感器工作原理是通過送波器將超聲波(振蕩頻率大于20 kHz以上的聲波)向?qū)ο笪锇l(fā)送,受波器接收這種反射波,從接收反射波的有無、多少或從發(fā)送超聲波到接收反射波所需的時(shí)間與超聲波聲速的關(guān)系,來檢測(cè)對(duì)象物的有無或傳感器與對(duì)象物之間的距離。
紅外線傳感器其具有一對(duì)紅外線發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線,當(dāng)檢測(cè)方向遇到障礙物(反射面)時(shí),紅外線反射回來被接收管接收,經(jīng)過比較器電路處理之后,綠色指示燈會(huì)亮起,同時(shí)信號(hào)輸出接口輸出數(shù)字信號(hào)(一個(gè)低電平信號(hào))。
在避障模塊中,采用的是來回折返的弓字形避障邏輯。將小車的狀態(tài)簡(jiǎn)單分為五種,如圖2所示。
小車在運(yùn)行一次后未能覆蓋所有地圖,可將小車垂直原方向再次布置,或手動(dòng)操作以此達(dá)到全覆蓋。小車控制程序主要由單片機(jī)初始化、路徑檢測(cè)判斷及電機(jī)驅(qū)動(dòng)組成,程序流程圖如圖3所示。
3.2? 路徑規(guī)劃方案
消毒小車在工作中要提前規(guī)劃路徑,系統(tǒng)在進(jìn)行全覆蓋路徑消毒情況下可以避開障礙物。本文智能消毒小車使用基于柵格法地圖的弓字形遍歷路徑,其中路徑規(guī)劃采用靜態(tài)路徑規(guī)劃和動(dòng)態(tài)路徑規(guī)劃結(jié)合的方式進(jìn)行綜合路徑規(guī)劃。
3.2.1? 柵格法地圖概述
柵格法實(shí)質(zhì)上是將智能消毒小車的工作環(huán)境用大小相等的方塊進(jìn)行單元分割,將已知障礙物投射在環(huán)境地圖上設(shè)置為障礙區(qū)域,其余區(qū)域設(shè)為非障礙區(qū)域,以便小車進(jìn)行預(yù)路徑規(guī)劃,當(dāng)智能消毒小車進(jìn)行環(huán)境遍歷結(jié)束后通過未消毒柵格和已覆蓋柵格計(jì)算消毒覆蓋率。
柵格法地圖優(yōu)點(diǎn)在于精確度較高,能較為準(zhǔn)確地為智能消毒小車提供已知環(huán)境信息,提高算法規(guī)劃速度。與此同時(shí),柵格大小的選取是影響算法性能的關(guān)鍵。柵格過小,地圖中環(huán)境信息會(huì)更加精確,但由于柵格數(shù)量的增加導(dǎo)致存儲(chǔ)信息量變多,將會(huì)降低算法運(yùn)行速率。柵格過大,算法運(yùn)行速度有所提高,但降低了獲取環(huán)境信息的準(zhǔn)確程度,也降低了消毒覆蓋率,不利于有效的路徑規(guī)劃。因此采用柵格法建立環(huán)境地圖時(shí)要合理設(shè)置柵格大小。
3.2.2? 弓字形覆蓋路徑
對(duì)于已知環(huán)境。智能消毒小車在開始工作前,需獲取全局環(huán)境信息選取需消毒范圍,形成柵格地圖,在消毒范圍內(nèi)采用弓字形全覆蓋路徑規(guī)劃算法。對(duì)于未知環(huán)境,通過固定距離的弓字形遍歷實(shí)時(shí)探索環(huán)境,遇到障礙物時(shí)為保證消毒覆蓋率按固定程序,如圖4進(jìn)行向后貼邊繞行。
由于智能消毒小車在遇到障礙物的情況下,可能做不到全覆蓋,降低消毒效率。因此在障礙物較多的復(fù)雜環(huán)境中,可以采用兩次不同方向的往返弓字形算法以提高消毒覆蓋率。
柵格地圖及弓字形路徑如圖5所示。
3.2.3? 綜合路徑規(guī)劃
靜態(tài)路徑規(guī)劃是在環(huán)境區(qū)域已知情況下,智能消毒小車獲取全局環(huán)境地圖與障礙物范圍提前生成柵格地圖并進(jìn)行路徑規(guī)劃,但此方法并不適用于復(fù)雜的動(dòng)態(tài)地形,同時(shí)無法避開未在地圖上顯示的障礙物。
動(dòng)態(tài)路徑規(guī)劃是在環(huán)境區(qū)域未知情況下,智能小車通過紅外傳感器與超聲波傳感器進(jìn)行固定距離的弓字形路線消毒,并生成柵格地圖,同時(shí)可以手動(dòng)控制小車的實(shí)時(shí)路徑,可以高效完成消毒任務(wù)。但通過傳感器檢測(cè)局部位置信息控制機(jī)器人運(yùn)行在復(fù)雜的地形環(huán)境中可能使小車無法準(zhǔn)確到達(dá)終點(diǎn)。
4? 具體應(yīng)用與實(shí)現(xiàn)
綜合路徑規(guī)劃是指靜態(tài)路徑規(guī)劃與動(dòng)態(tài)路徑規(guī)劃結(jié)合的形式實(shí)現(xiàn)小車的消毒路徑全覆蓋。首先在已知全局環(huán)境信息基礎(chǔ)上,建立柵格法地圖,并通過弓字形遍歷算法建立一條最優(yōu)路徑,在小車行進(jìn)過程中傳感器探測(cè)到未知障礙物時(shí),啟用避障模式重新規(guī)劃局部路徑。綜合路徑規(guī)劃結(jié)合了靜態(tài)及動(dòng)態(tài)路徑規(guī)劃的優(yōu)點(diǎn),提高了消毒效率。實(shí)際應(yīng)用如圖6所示。
通過實(shí)驗(yàn)成功實(shí)現(xiàn)了小車的智能避障,使小車在預(yù)期的軌道上能順利的躲避障礙物,通過超聲波所測(cè)距離,進(jìn)行判斷暫停、后退、前進(jìn)或轉(zhuǎn)向達(dá)到了預(yù)期目標(biāo),小車實(shí)物場(chǎng)景示意圖如圖7所示。
5? 結(jié)? 論
本文提出了一種基于Arduino的經(jīng)濟(jì)實(shí)用智能消毒小車,完成了小車的硬件及軟件開發(fā)工作,實(shí)現(xiàn)了小車的自動(dòng)消毒避障功能,具有一定的實(shí)用價(jià)值。本文中的智能消毒小車,系統(tǒng)設(shè)計(jì)簡(jiǎn)單、成本低、抗干擾能力強(qiáng)、精度高,可以出色完成室內(nèi)的簡(jiǎn)單消毒工作,具有一定實(shí)用價(jià)值。但其的巡線路經(jīng)并不絕對(duì)是最優(yōu)路線,存在一定的時(shí)間與能源浪費(fèi)問題,以及由于車身本體體量小,續(xù)航也是一個(gè)待解決的問題,這些都有待進(jìn)一步發(fā)展和提高。
參考文獻(xiàn):
[1] 潘元驍.基于Arduino的智能小車自動(dòng)避障系統(tǒng)設(shè)計(jì)與研究 [D].西安:長(zhǎng)安大學(xué),2015.
[2] 劉芳.基于Android的智能小車控制及路徑規(guī)劃 [D].桂林:廣西師范大學(xué),2017.
[3] 紀(jì)欣然.基于Arduino開發(fā)環(huán)境的智能尋光小車設(shè)計(jì) [J].現(xiàn)代電子技術(shù),2012,35(15):161-163.
[4] 趙津,朱三超.基于Arduino單片機(jī)的智能避障小車設(shè)計(jì) [J].自動(dòng)化與儀表,2013,28(5):1-4.
[5] 張建龍.清潔機(jī)器人避障控制及路徑規(guī)劃 [D].武漢:武漢科技大學(xué),2015.
作者簡(jiǎn)介:宋家驥(2002—),男,漢族,安徽安慶人,本科在讀,研究方向:信息工程。
收稿日期:2023-03-12