趙云娥 吳振強(qiáng)
摘 要: 針對(duì)目前智能避障小車(chē)存在障礙物距離測(cè)量精度不高,存在探測(cè)盲區(qū)的問(wèn)題,介紹了一種基于Arduino的智能避障系統(tǒng)。常見(jiàn)的超聲波避障模塊探測(cè)距離遠(yuǎn)不易受到干擾,但是反應(yīng)時(shí)間長(zhǎng)。紅外測(cè)距探測(cè)距離近,測(cè)量速度快,精度高,但是受環(huán)境影響較大。利用Arduino作為主控系統(tǒng),采用超聲波測(cè)距、紅外測(cè)距等多傳感器信息融合的采集系統(tǒng),優(yōu)勢(shì)互補(bǔ),并通過(guò)對(duì)數(shù)據(jù)的算法優(yōu)化,提升小車(chē)對(duì)環(huán)境的感測(cè)精度,有效提高了小車(chē)的避障成功率?;贏ndroid開(kāi)源平臺(tái)的藍(lán)牙串口通信APK,智能小車(chē)既可以自動(dòng)避障,也可以接受人的幫助,進(jìn)行人工避障,實(shí)現(xiàn)了手動(dòng)和自動(dòng)雙操作模式,豐富了用戶體驗(yàn)。實(shí)驗(yàn)證明,該系統(tǒng)運(yùn)行穩(wěn)定,對(duì)障礙物的探測(cè)更加精確,可有效實(shí)現(xiàn)全方位避障。
關(guān)鍵詞: Arduino; 智能避障; 測(cè)距傳感器; Android
中圖分類號(hào): TN02?34; TP368 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)21?0094?04
Design and implementation of Arduino?based two?mode intelligent
obstacle avoidance system for car
ZHAO Yune1, 2, WU Zhenqiang2
(1. School of Computer Science, Shaanxi Normal University, Xian 710119, China; 2. Qinghai College of Architectural Technology, Xining 810012, China)
Abstract: Since the available intelligent obstacle avoidance system for car has low range measurement accuracy for obstacle and exists the detection blind area, an intelligent obstacle avoidance system based on Arduino is introduced. The commonly?used ultrasonic obstacle avoidance module has far detection distance and is hard to be disturbed, but has long reaction time. The infrared range?finding module has short detection distance, fast measuring speed and high measuring precision, but is affected by the environment greatly. The Arduino is taken as the main control system of the obstacle avoidance system. The acquisition system including ultrasonic rang?finding module, infrared rang?finding module and multi sensors is used to realize the information fusion and advantage complemention. The data is opitimized with the algorithm to improve the environment sensing accuracy and obstacle avoidance success rate of the car effectively. By using the Bluetooth serial communication APK based on the open source platform Android, the smart car can realize the automatic obstacle avoidance, and accept the help of human for artificial obstacle avoidance, which can implement the manual and automatic dual?operation mode and enrich the users′ experience. The experimental results show that the system is running stably, can detect the obstacles accurately, and realize the omnibearing obstacle avoidance effectively.
Keywords: Arduino; intelligent obstacle avoidance; range?finding sensor; Android
0 引 言
智能小車(chē)屬于多輪驅(qū)動(dòng)機(jī)器人的一種,它具有體積小、重心低、運(yùn)動(dòng)靈活、操控簡(jiǎn)單等優(yōu)點(diǎn),廣泛應(yīng)用在交通運(yùn)輸、軍事、工業(yè)制造、生活服務(wù)以及空間探測(cè)等領(lǐng)域。自動(dòng)避障技術(shù)一直被認(rèn)為是研究智能小車(chē)的一個(gè)核心內(nèi)容。智能小車(chē)自動(dòng)避障綜合應(yīng)用了多傳感器信息融合技術(shù)、藍(lán)牙或紅外數(shù)據(jù)傳輸?shù)葻o(wú)線通信技術(shù)、機(jī)械技術(shù)、電子技術(shù)等多種尖端技術(shù),自動(dòng)避障技術(shù)集中體現(xiàn)了其自動(dòng)化、智能化程度的高低。但是,目前智能避障小車(chē)存在障礙物距離測(cè)量精度不高,存在探測(cè)盲區(qū)的問(wèn)題。Arduino是近年流行的一個(gè)基于開(kāi)放原始代碼的 Simple I/O 平臺(tái),支持多種傳感器擴(kuò)展板,操作簡(jiǎn)單,功能多樣,廣泛應(yīng)用于電子系統(tǒng)設(shè)計(jì)和互動(dòng)產(chǎn)品開(kāi)發(fā)方面。本文介紹了一種基于Arduino的智能避障系統(tǒng),利用Arduino作為主控制板,采用超聲波測(cè)距、紅外測(cè)距等多傳感器信息融合的采集系統(tǒng),并通過(guò)對(duì)數(shù)據(jù)的算法優(yōu)化,有效提高了小車(chē)的避障成功率。利用Android開(kāi)源平臺(tái)的藍(lán)牙串口通信APK,用戶也可實(shí)現(xiàn)小車(chē)人工避障,手動(dòng)和自動(dòng)兩種操作模式讓用戶充分享受到操控智能小車(chē)的樂(lè)趣。endprint
1 系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)總體結(jié)構(gòu)[1]如圖1所示。該系統(tǒng)以雙直流電機(jī)驅(qū)動(dòng)雙定向輪+單向輪小車(chē)底盤(pán)為基礎(chǔ)框架,外加信息采集模塊(含超聲波測(cè)距模塊HC?SR04和紅外測(cè)距模塊GP2Y0A21K0FK0F)、電機(jī)驅(qū)動(dòng)模塊(L298N)、電源模塊(12 V直流電源)、藍(lán)牙模塊(BT?HC05)、上位機(jī)模塊(Android手機(jī))等。為了實(shí)現(xiàn)準(zhǔn)確避障和節(jié)約成本,信息采集模塊的分布如圖2所示。
車(chē)頭前方分別安裝HC?SR04(兩圓圈表示,與實(shí)物形狀相似)和GP2Y0A21K0FK0F(矩形表示)各一個(gè),車(chē)體左右兩邊各安裝一個(gè)GP2Y0A21K0FK0F。此傳感器的配置方案主要基于兩方面考慮:一方面車(chē)體關(guān)鍵信息采集點(diǎn)分布在節(jié)約資源的同時(shí)滿足信息采集的全面性;另一方面,車(chē)頭是信息采集的主要部位,要盡量擴(kuò)大采集信息范圍,而且必須具備測(cè)距精度高,時(shí)效快的特點(diǎn)。HC?SR04探測(cè)距離遠(yuǎn)不易受到干擾,但是反應(yīng)時(shí)間長(zhǎng),存在測(cè)量盲區(qū)。紅外測(cè)距探測(cè)距離近,測(cè)量速度快,精度高,但是受環(huán)境影響較大。此設(shè)計(jì)中車(chē)頭正前方的兩種不同的傳感器優(yōu)勢(shì)互補(bǔ),有效地提升了小車(chē)對(duì)環(huán)境的感測(cè)精度。L298N電機(jī)驅(qū)動(dòng)板內(nèi)置4通道邏輯驅(qū)動(dòng)電路,工作電壓為6~12V,能夠驅(qū)動(dòng)2個(gè)直流電機(jī)或者2個(gè)二相電機(jī),輸出電壓可調(diào),可直接接收Arduino主控板I/O接口提供的電平信號(hào)。電源模塊采用12 V直流電源給L298N供電( 或者8節(jié) 1.5 V 干電池),L298N內(nèi)置的78M05可通過(guò)驅(qū)動(dòng)電源部分取電,輸出的5 V電壓作為Arduino主控板和其他各模塊的電源,其中Arduino板輸出的3.3 V 電壓可供超聲波測(cè)距模塊使用。電源模塊在設(shè)計(jì)中除了考慮系統(tǒng)各模塊電壓和電流等參數(shù)來(lái)確保系統(tǒng)工作穩(wěn)定性,也最大程度地實(shí)現(xiàn)了各模塊電源轉(zhuǎn)換效率、降低噪聲、防止干擾等方面的優(yōu)化。藍(lán)牙模塊BT?HC05默認(rèn)為從機(jī),采用串口透?jìng)髂J脚cAndroid平臺(tái)進(jìn)行數(shù)據(jù)通信。系統(tǒng)各硬件模塊性能穩(wěn)定,操作簡(jiǎn)單,具有良好的通信耦合性,符合智能小車(chē)的性能要求。
1.2 系統(tǒng)工作原理
Android手機(jī)端操控智能小車(chē),提供了手動(dòng)模式和自動(dòng)模式兩種模式[2]。用戶首先需要在Android 2.2以上版本手機(jī)中安裝手機(jī)藍(lán)牙串口通信助手即可對(duì)小車(chē)進(jìn)行操控。當(dāng)手機(jī)藍(lán)牙串口通信助手APK運(yùn)行顯示手機(jī)和藍(lán)牙模塊BT?HC05連接成功后,用戶開(kāi)始發(fā)送手機(jī)指令來(lái)選擇系統(tǒng)的工作模式。進(jìn)入自動(dòng)模式后,信息采集模塊開(kāi)始工作。當(dāng)檢測(cè)到障礙物距離小車(chē)大于安全距離(如10 cm,可依據(jù)小車(chē)速度在算法中動(dòng)態(tài)調(diào)整)時(shí),小車(chē)保持運(yùn)動(dòng)狀態(tài);當(dāng)障礙物和小車(chē)距離小于安全距離,則根據(jù)各信息采集模塊的返回值,Arduino通過(guò)算法判斷障礙物類型,選擇對(duì)應(yīng)的避障策略[3?4],做出對(duì)應(yīng)的避障行為。如分別探測(cè)到左面和前面障礙物距離小車(chē)小于安全距離,則采取小車(chē)右轉(zhuǎn)的避障動(dòng)作,實(shí)現(xiàn)順利避障;當(dāng)收到手動(dòng)控制指令,小車(chē)進(jìn)入手動(dòng)控制模式,用戶可按自己的喜好發(fā)送命令控制小車(chē)前進(jìn)、后退等各種動(dòng)作,并幫助小車(chē)避障。整個(gè)系統(tǒng)運(yùn)行過(guò)程中,信息采集模塊實(shí)時(shí)測(cè)量小車(chē)與障礙物的距離,智能小車(chē)可以進(jìn)行自主避障,也可以接受用戶控制指令,在用戶的幫助下脫離避障困境,兩種操作模式增加了互動(dòng)樂(lè)趣。
2 系統(tǒng)軟件平臺(tái)設(shè)計(jì)
系統(tǒng)軟件平臺(tái)主要分為上位機(jī)、信息傳輸協(xié)議、Arduino控制器三個(gè)層次。Android具有開(kāi)放性和硬件支持豐富的特點(diǎn),Android SDK 2.0以上版本均支持藍(lán)牙開(kāi)發(fā),采用其提供的藍(lán)牙API接口和相應(yīng)功能的類開(kāi)發(fā)出藍(lán)牙串口通信軟件,實(shí)現(xiàn)藍(lán)牙的開(kāi)啟、搜索、連接等功能。信息傳輸協(xié)議主要是手機(jī)和BT?HC05的藍(lán)牙串口通信協(xié)議,系統(tǒng)采用軟件方式設(shè)定藍(lán)牙模塊的工作模式和工作參數(shù),實(shí)現(xiàn)和上位機(jī)的通信。Arduino控制器軟件模塊實(shí)現(xiàn)了小車(chē)實(shí)時(shí)接收控制命令,對(duì)超聲波傳感器模塊、紅外傳感器模塊收集的數(shù)據(jù)信息進(jìn)行優(yōu)化,對(duì)智能小車(chē)避障策略進(jìn)行選擇,并通過(guò)軟件調(diào)節(jié)驅(qū)動(dòng)直流電機(jī)的PWM信號(hào)的大小,控制左右輪轉(zhuǎn)速,實(shí)現(xiàn)小車(chē)的各種避障動(dòng)作。系統(tǒng)流程圖[2,5]如圖3所示。
此智能小車(chē)系統(tǒng)信息采集模塊采用超聲波和紅外兩種不同的技術(shù)手段實(shí)現(xiàn)了測(cè)距。GP2Y0A21K0FK0F 紅外傳感器測(cè)距基于三角測(cè)量原理。首先紅外發(fā)射器以一定的角度發(fā)射紅外光束,當(dāng)遇到被測(cè)物,光束會(huì)被反射回來(lái)。反射回來(lái)的紅外光束在被CCD檢測(cè)器迅速檢測(cè)到以后,得到一個(gè)偏移值,在已知發(fā)射角、偏移值、中心矩和濾鏡焦距的情況下,傳感器到被測(cè)物的距離就能利用三角形幾何原理計(jì)算出來(lái)。測(cè)距過(guò)程中,首先采用曲線擬合方法擬合出電壓值與距離值的數(shù)學(xué)關(guān)系表達(dá)式。而傳感器傳送給Arduino控制板的是其采樣的模擬量數(shù)據(jù),數(shù)據(jù)范圍為0~1 023,其對(duì)應(yīng)的電壓輸出值為0~5 V,經(jīng)過(guò)對(duì)兩者范圍值的約束映射,最終推導(dǎo)出實(shí)際測(cè)距值與采樣值之間的關(guān)系式為:
[d(測(cè)量距離)=2 547.8m(模擬量數(shù)據(jù))×0.49-10.41-0.42 cm]
HC?SR04傳感器利用聲波的反射原理進(jìn)行測(cè)距[6?7],主控板通過(guò)ArduinoIDE[8]庫(kù)自帶的pulsein()脈沖時(shí)間長(zhǎng)度測(cè)量函數(shù)獲得電平持續(xù)時(shí)間,結(jié)合聲波傳播速度,進(jìn)而得到測(cè)量距離。本系統(tǒng)對(duì)以上兩組傳感器采集的數(shù)據(jù)進(jìn)行了比較,從算法上對(duì)測(cè)量數(shù)據(jù)進(jìn)行了優(yōu)化,增加距離測(cè)量的精確度,提高了避障的成功率。具體的算法實(shí)現(xiàn)如算法一所示。
算法一: /*測(cè)距函數(shù)*/
Float meas_distan() //測(cè)量障礙物距離
{float dist,dist1,dist2;
int temp1=analogRead(A0); //讀取模擬量
dist1=2547.8/((float)temp*0.49?10.41)?0.42;
//計(jì)算紅外測(cè)距值endprint
digitalWrite(trigPin, HIGH);
//觸發(fā)腳設(shè)定成高電位
delayMicroseconds(5); //持續(xù)5 μs
digitalWrite(trigPin, LOW);
//觸發(fā)腳設(shè)定成高電位
int temp2=pulseIn(echoPin, HIGH);
//測(cè)量超聲波脈沖時(shí)間長(zhǎng)度
dist2=(float)temp2/58; //計(jì)算超聲波測(cè)距值
return min(dist1,dist2); }
//選取較小值作為測(cè)距準(zhǔn)確值
智能小車(chē)?yán)眯畔⒉杉K獲取到障礙物位置、距離等信息,選擇對(duì)應(yīng)的避障策略,做出對(duì)應(yīng)的避障動(dòng)作[9]。小車(chē)的避障動(dòng)作包括前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等,每個(gè)動(dòng)作的實(shí)現(xiàn)取決于Arduino控制板對(duì)電機(jī)驅(qū)動(dòng)模塊所提供的高低電平和電機(jī)的輸入轉(zhuǎn)速值。小車(chē)左轉(zhuǎn)的示例代碼[9]如算法二所示。
算法二:/*電機(jī)左轉(zhuǎn)示例程序*/
const byte ENA = 5; //電機(jī)A的使能接腳
const byte ENB = 6; //電機(jī)B的使能接腳
const byte IN1 = 10; //電機(jī)A正轉(zhuǎn)控制引腳
const byte IN2 = 9; //電機(jī)A反轉(zhuǎn)控制引腳
const byte IN3 = 8; //電機(jī)B正轉(zhuǎn)控制引腳
const byte IN4 = 7; //電機(jī)B反轉(zhuǎn)控制引腳
const byte speed = 90; //設(shè)定PWM輸出值
void turnLeft() { //電機(jī)轉(zhuǎn)向:左轉(zhuǎn)
analogWrite(ENA, speed); //電機(jī)A的PWM輸出
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENB, speed); //電機(jī)B的PWM輸出
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);}
3 實(shí)驗(yàn)測(cè)試
小車(chē)軟硬件平臺(tái)設(shè)計(jì)完畢后,其實(shí)物如圖4所示。為了驗(yàn)證智能小車(chē)的避障性能,在實(shí)物環(huán)境下對(duì)其進(jìn)行實(shí)驗(yàn)測(cè)試。實(shí)驗(yàn)環(huán)境為存在多種障礙物的平坦地面,為了增加測(cè)試效果的科學(xué)性,特地把道路障礙物按形狀分為規(guī)則(含正方體、圓柱等)和不規(guī)則兩大類。智能小車(chē)在行進(jìn)過(guò)程中信息采集系統(tǒng)不斷探測(cè)前方周?chē)欠裼姓系K物,當(dāng)存在障礙物時(shí),能夠判斷出相應(yīng)障礙物的方向和距離,并采取相應(yīng)的避障動(dòng)作。為了對(duì)比單面避障(車(chē)頭前方只安裝一種測(cè)距傳感器)和全面避障方法下小車(chē)的性能,通過(guò)改變障礙物形狀對(duì)小車(chē)進(jìn)行了避障性能測(cè)試。小車(chē)處于總數(shù)為100由不同比例的規(guī)則和不規(guī)則障礙物組成的障礙環(huán)境,實(shí)驗(yàn)次數(shù)100次,單面避障和全面避障效果對(duì)比如圖5所示。由圖5可見(jiàn),與普通的單面避障方法相比,本文使用的全面避障方法有著明顯較高的避障成功率,且障礙物形狀對(duì)避障成功率無(wú)明顯影響,有效降低了智能小車(chē)和障礙物發(fā)生碰撞的危險(xiǎn)。
4 結(jié) 語(yǔ)
本文設(shè)計(jì)的智能避障小車(chē)車(chē)體兩側(cè)采用兩路紅外避障,車(chē)體前端采用紅外和超聲波相結(jié)合的避障方式,能夠?qū)Νh(huán)境進(jìn)行多面自動(dòng)探測(cè),實(shí)現(xiàn)全方位避障,避障成功率和效率明顯提高。另外,手動(dòng)和自動(dòng)雙操作模式既滿足了用戶的參與度,也能較好地發(fā)揮小車(chē)智能性,豐富了用戶的操作體驗(yàn)。
實(shí)踐證明設(shè)計(jì)的智能小車(chē)系統(tǒng)性能穩(wěn)定、價(jià)格低廉、操作簡(jiǎn)單,今后可結(jié)合人工智能技術(shù)及汽車(chē)智能安全駕駛輔助控制技術(shù),研究小車(chē)處于高速運(yùn)動(dòng)和動(dòng)態(tài)障礙物環(huán)境下的自動(dòng)避障過(guò)程,從而進(jìn)一步優(yōu)化其性能。
參考文獻(xiàn)
[1] 胡珂.基于Arduino的智能小車(chē)測(cè)距安全行駛系統(tǒng)的研究[D].西安:長(zhǎng)安大學(xué),2015.
[2] 潘元驍.基于Arduino的智能小車(chē)自動(dòng)避障系統(tǒng)設(shè)計(jì)與研究[D].西安:長(zhǎng)安大學(xué),2015.
[3] 戈惠梅,徐曉慧,顧志華,等.基于Arduino的智能小車(chē)避障系統(tǒng)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2014,37(11):118?120.
[4] SOORKI M N, TALEBI H A, NIKRAVESH S K Y. A leader?following formation control of multiple mobile robots with active obstacle avoidance [C]// Proceedings of 2011 the 9th Iranian Conference on Electrical Engineering. Tehran: IEEE, 2011: 1?6.
[5] 趙涓涓,杜麒麟,屈明月,等.智能小車(chē)的無(wú)支路循跡算法設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(6):147?149.
[6] GAO Tao, YAO Zhenjing. Sensors network for ultrasonic ranging system [J]. International journal of advanced pervasive and ubiquitous computing, 2013, 5(3): 47?59.
[7] 劉崇翔,高美鳳.基于多超聲波信息融合的小車(chē)避障算法實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2012,28(8):32?34.
[8] 趙英杰.Arduino互動(dòng)設(shè)計(jì)入門(mén)[M].北京:科學(xué)出版社,2014:12?125.
[9] MCROBERTS Michael.Arduino從基礎(chǔ)到實(shí)踐[M].楊繼志,郭敬,譯.北京:電子工業(yè)出版社,2013:92?146.endprint