趙云娥 吳振強(qiáng)
摘 要: 針對目前智能避障小車存在障礙物距離測量精度不高,存在探測盲區(qū)的問題,介紹了一種基于Arduino的智能避障系統(tǒng)。常見的超聲波避障模塊探測距離遠(yuǎn)不易受到干擾,但是反應(yīng)時間長。紅外測距探測距離近,測量速度快,精度高,但是受環(huán)境影響較大。利用Arduino作為主控系統(tǒng),采用超聲波測距、紅外測距等多傳感器信息融合的采集系統(tǒng),優(yōu)勢互補(bǔ),并通過對數(shù)據(jù)的算法優(yōu)化,提升小車對環(huán)境的感測精度,有效提高了小車的避障成功率。基于Android開源平臺的藍(lán)牙串口通信APK,智能小車既可以自動避障,也可以接受人的幫助,進(jìn)行人工避障,實現(xiàn)了手動和自動雙操作模式,豐富了用戶體驗。實驗證明,該系統(tǒng)運(yùn)行穩(wěn)定,對障礙物的探測更加精確,可有效實現(xiàn)全方位避障。
關(guān)鍵詞: Arduino; 智能避障; 測距傳感器; Android
中圖分類號: TN02?34; TP368 文獻(xiàn)標(biāo)識碼: A 文章編號: 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 引 言
智能小車屬于多輪驅(qū)動機(jī)器人的一種,它具有體積小、重心低、運(yùn)動靈活、操控簡單等優(yōu)點,廣泛應(yīng)用在交通運(yùn)輸、軍事、工業(yè)制造、生活服務(wù)以及空間探測等領(lǐng)域。自動避障技術(shù)一直被認(rèn)為是研究智能小車的一個核心內(nèi)容。智能小車自動避障綜合應(yīng)用了多傳感器信息融合技術(shù)、藍(lán)牙或紅外數(shù)據(jù)傳輸?shù)葻o線通信技術(shù)、機(jī)械技術(shù)、電子技術(shù)等多種尖端技術(shù),自動避障技術(shù)集中體現(xiàn)了其自動化、智能化程度的高低。但是,目前智能避障小車存在障礙物距離測量精度不高,存在探測盲區(qū)的問題。Arduino是近年流行的一個基于開放原始代碼的 Simple I/O 平臺,支持多種傳感器擴(kuò)展板,操作簡單,功能多樣,廣泛應(yīng)用于電子系統(tǒng)設(shè)計和互動產(chǎn)品開發(fā)方面。本文介紹了一種基于Arduino的智能避障系統(tǒng),利用Arduino作為主控制板,采用超聲波測距、紅外測距等多傳感器信息融合的采集系統(tǒng),并通過對數(shù)據(jù)的算法優(yōu)化,有效提高了小車的避障成功率。利用Android開源平臺的藍(lán)牙串口通信APK,用戶也可實現(xiàn)小車人工避障,手動和自動兩種操作模式讓用戶充分享受到操控智能小車的樂趣。endprint
1 系統(tǒng)設(shè)計
1.1 系統(tǒng)結(jié)構(gòu)設(shè)計
系統(tǒng)總體結(jié)構(gòu)[1]如圖1所示。該系統(tǒng)以雙直流電機(jī)驅(qū)動雙定向輪+單向輪小車底盤為基礎(chǔ)框架,外加信息采集模塊(含超聲波測距模塊HC?SR04和紅外測距模塊GP2Y0A21K0FK0F)、電機(jī)驅(qū)動模塊(L298N)、電源模塊(12 V直流電源)、藍(lán)牙模塊(BT?HC05)、上位機(jī)模塊(Android手機(jī))等。為了實現(xiàn)準(zhǔn)確避障和節(jié)約成本,信息采集模塊的分布如圖2所示。
車頭前方分別安裝HC?SR04(兩圓圈表示,與實物形狀相似)和GP2Y0A21K0FK0F(矩形表示)各一個,車體左右兩邊各安裝一個GP2Y0A21K0FK0F。此傳感器的配置方案主要基于兩方面考慮:一方面車體關(guān)鍵信息采集點分布在節(jié)約資源的同時滿足信息采集的全面性;另一方面,車頭是信息采集的主要部位,要盡量擴(kuò)大采集信息范圍,而且必須具備測距精度高,時效快的特點。HC?SR04探測距離遠(yuǎn)不易受到干擾,但是反應(yīng)時間長,存在測量盲區(qū)。紅外測距探測距離近,測量速度快,精度高,但是受環(huán)境影響較大。此設(shè)計中車頭正前方的兩種不同的傳感器優(yōu)勢互補(bǔ),有效地提升了小車對環(huán)境的感測精度。L298N電機(jī)驅(qū)動板內(nèi)置4通道邏輯驅(qū)動電路,工作電壓為6~12V,能夠驅(qū)動2個直流電機(jī)或者2個二相電機(jī),輸出電壓可調(diào),可直接接收Arduino主控板I/O接口提供的電平信號。電源模塊采用12 V直流電源給L298N供電( 或者8節(jié) 1.5 V 干電池),L298N內(nèi)置的78M05可通過驅(qū)動電源部分取電,輸出的5 V電壓作為Arduino主控板和其他各模塊的電源,其中Arduino板輸出的3.3 V 電壓可供超聲波測距模塊使用。電源模塊在設(shè)計中除了考慮系統(tǒng)各模塊電壓和電流等參數(shù)來確保系統(tǒng)工作穩(wěn)定性,也最大程度地實現(xiàn)了各模塊電源轉(zhuǎn)換效率、降低噪聲、防止干擾等方面的優(yōu)化。藍(lán)牙模塊BT?HC05默認(rèn)為從機(jī),采用串口透傳模式與Android平臺進(jìn)行數(shù)據(jù)通信。系統(tǒng)各硬件模塊性能穩(wěn)定,操作簡單,具有良好的通信耦合性,符合智能小車的性能要求。
1.2 系統(tǒng)工作原理
Android手機(jī)端操控智能小車,提供了手動模式和自動模式兩種模式[2]。用戶首先需要在Android 2.2以上版本手機(jī)中安裝手機(jī)藍(lán)牙串口通信助手即可對小車進(jìn)行操控。當(dāng)手機(jī)藍(lán)牙串口通信助手APK運(yùn)行顯示手機(jī)和藍(lán)牙模塊BT?HC05連接成功后,用戶開始發(fā)送手機(jī)指令來選擇系統(tǒng)的工作模式。進(jìn)入自動模式后,信息采集模塊開始工作。當(dāng)檢測到障礙物距離小車大于安全距離(如10 cm,可依據(jù)小車速度在算法中動態(tài)調(diào)整)時,小車保持運(yùn)動狀態(tài);當(dāng)障礙物和小車距離小于安全距離,則根據(jù)各信息采集模塊的返回值,Arduino通過算法判斷障礙物類型,選擇對應(yīng)的避障策略[3?4],做出對應(yīng)的避障行為。如分別探測到左面和前面障礙物距離小車小于安全距離,則采取小車右轉(zhuǎn)的避障動作,實現(xiàn)順利避障;當(dāng)收到手動控制指令,小車進(jìn)入手動控制模式,用戶可按自己的喜好發(fā)送命令控制小車前進(jìn)、后退等各種動作,并幫助小車避障。整個系統(tǒng)運(yùn)行過程中,信息采集模塊實時測量小車與障礙物的距離,智能小車可以進(jìn)行自主避障,也可以接受用戶控制指令,在用戶的幫助下脫離避障困境,兩種操作模式增加了互動樂趣。
2 系統(tǒng)軟件平臺設(shè)計
系統(tǒng)軟件平臺主要分為上位機(jī)、信息傳輸協(xié)議、Arduino控制器三個層次。Android具有開放性和硬件支持豐富的特點,Android SDK 2.0以上版本均支持藍(lán)牙開發(fā),采用其提供的藍(lán)牙API接口和相應(yīng)功能的類開發(fā)出藍(lán)牙串口通信軟件,實現(xiàn)藍(lán)牙的開啟、搜索、連接等功能。信息傳輸協(xié)議主要是手機(jī)和BT?HC05的藍(lán)牙串口通信協(xié)議,系統(tǒng)采用軟件方式設(shè)定藍(lán)牙模塊的工作模式和工作參數(shù),實現(xiàn)和上位機(jī)的通信。Arduino控制器軟件模塊實現(xiàn)了小車實時接收控制命令,對超聲波傳感器模塊、紅外傳感器模塊收集的數(shù)據(jù)信息進(jìn)行優(yōu)化,對智能小車避障策略進(jìn)行選擇,并通過軟件調(diào)節(jié)驅(qū)動直流電機(jī)的PWM信號的大小,控制左右輪轉(zhuǎn)速,實現(xiàn)小車的各種避障動作。系統(tǒng)流程圖[2,5]如圖3所示。
此智能小車系統(tǒng)信息采集模塊采用超聲波和紅外兩種不同的技術(shù)手段實現(xiàn)了測距。GP2Y0A21K0FK0F 紅外傳感器測距基于三角測量原理。首先紅外發(fā)射器以一定的角度發(fā)射紅外光束,當(dāng)遇到被測物,光束會被反射回來。反射回來的紅外光束在被CCD檢測器迅速檢測到以后,得到一個偏移值,在已知發(fā)射角、偏移值、中心矩和濾鏡焦距的情況下,傳感器到被測物的距離就能利用三角形幾何原理計算出來。測距過程中,首先采用曲線擬合方法擬合出電壓值與距離值的數(shù)學(xué)關(guān)系表達(dá)式。而傳感器傳送給Arduino控制板的是其采樣的模擬量數(shù)據(jù),數(shù)據(jù)范圍為0~1 023,其對應(yīng)的電壓輸出值為0~5 V,經(jīng)過對兩者范圍值的約束映射,最終推導(dǎo)出實際測距值與采樣值之間的關(guān)系式為:
[d(測量距離)=2 547.8m(模擬量數(shù)據(jù))×0.49-10.41-0.42 cm]
HC?SR04傳感器利用聲波的反射原理進(jìn)行測距[6?7],主控板通過ArduinoIDE[8]庫自帶的pulsein()脈沖時間長度測量函數(shù)獲得電平持續(xù)時間,結(jié)合聲波傳播速度,進(jìn)而得到測量距離。本系統(tǒng)對以上兩組傳感器采集的數(shù)據(jù)進(jìn)行了比較,從算法上對測量數(shù)據(jù)進(jìn)行了優(yōu)化,增加距離測量的精確度,提高了避障的成功率。具體的算法實現(xiàn)如算法一所示。
算法一: /*測距函數(shù)*/
Float meas_distan() //測量障礙物距離
{float dist,dist1,dist2;
int temp1=analogRead(A0); //讀取模擬量
dist1=2547.8/((float)temp*0.49?10.41)?0.42;
//計算紅外測距值endprint
digitalWrite(trigPin, HIGH);
//觸發(fā)腳設(shè)定成高電位
delayMicroseconds(5); //持續(xù)5 μs
digitalWrite(trigPin, LOW);
//觸發(fā)腳設(shè)定成高電位
int temp2=pulseIn(echoPin, HIGH);
//測量超聲波脈沖時間長度
dist2=(float)temp2/58; //計算超聲波測距值
return min(dist1,dist2); }
//選取較小值作為測距準(zhǔn)確值
智能小車?yán)眯畔⒉杉K獲取到障礙物位置、距離等信息,選擇對應(yīng)的避障策略,做出對應(yīng)的避障動作[9]。小車的避障動作包括前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等,每個動作的實現(xiàn)取決于Arduino控制板對電機(jī)驅(qū)動模塊所提供的高低電平和電機(jī)的輸入轉(zhuǎn)速值。小車左轉(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è)計完畢后,其實物如圖4所示。為了驗證智能小車的避障性能,在實物環(huán)境下對其進(jìn)行實驗測試。實驗環(huán)境為存在多種障礙物的平坦地面,為了增加測試效果的科學(xué)性,特地把道路障礙物按形狀分為規(guī)則(含正方體、圓柱等)和不規(guī)則兩大類。智能小車在行進(jìn)過程中信息采集系統(tǒng)不斷探測前方周圍是否有障礙物,當(dāng)存在障礙物時,能夠判斷出相應(yīng)障礙物的方向和距離,并采取相應(yīng)的避障動作。為了對比單面避障(車頭前方只安裝一種測距傳感器)和全面避障方法下小車的性能,通過改變障礙物形狀對小車進(jìn)行了避障性能測試。小車處于總數(shù)為100由不同比例的規(guī)則和不規(guī)則障礙物組成的障礙環(huán)境,實驗次數(shù)100次,單面避障和全面避障效果對比如圖5所示。由圖5可見,與普通的單面避障方法相比,本文使用的全面避障方法有著明顯較高的避障成功率,且障礙物形狀對避障成功率無明顯影響,有效降低了智能小車和障礙物發(fā)生碰撞的危險。
4 結(jié) 語
本文設(shè)計的智能避障小車車體兩側(cè)采用兩路紅外避障,車體前端采用紅外和超聲波相結(jié)合的避障方式,能夠?qū)Νh(huán)境進(jìn)行多面自動探測,實現(xiàn)全方位避障,避障成功率和效率明顯提高。另外,手動和自動雙操作模式既滿足了用戶的參與度,也能較好地發(fā)揮小車智能性,豐富了用戶的操作體驗。
實踐證明設(shè)計的智能小車系統(tǒng)性能穩(wěn)定、價格低廉、操作簡單,今后可結(jié)合人工智能技術(shù)及汽車智能安全駕駛輔助控制技術(shù),研究小車處于高速運(yùn)動和動態(tài)障礙物環(huán)境下的自動避障過程,從而進(jìn)一步優(yōu)化其性能。
參考文獻(xiàn)
[1] 胡珂.基于Arduino的智能小車測距安全行駛系統(tǒng)的研究[D].西安:長安大學(xué),2015.
[2] 潘元驍.基于Arduino的智能小車自動避障系統(tǒng)設(shè)計與研究[D].西安:長安大學(xué),2015.
[3] 戈惠梅,徐曉慧,顧志華,等.基于Arduino的智能小車避障系統(tǒng)的設(shè)計[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] 趙涓涓,杜麒麟,屈明月,等.智能小車的無支路循跡算法設(shè)計[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] 劉崇翔,高美鳳.基于多超聲波信息融合的小車避障算法實現(xiàn)[J].微計算機(jī)信息,2012,28(8):32?34.
[8] 趙英杰.Arduino互動設(shè)計入門[M].北京:科學(xué)出版社,2014:12?125.
[9] MCROBERTS Michael.Arduino從基礎(chǔ)到實踐[M].楊繼志,郭敬,譯.北京:電子工業(yè)出版社,2013:92?146.endprint