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