王 鈺,朱 琳,蘇世雄,馬新華
(1.西安航空學院 計算機學院,西安710077;2.中國兵器裝備集團 摩托車檢測技術研究所,西安710032)
隨著人工智能時代的到來,智能機器人的應用越來越廣泛,智能小車作為一種輪式的移動機器人是智能機器人的一種典型應用。它是一個集環(huán)境感知、動態(tài)決策與規(guī)劃、智能控制與執(zhí)行等多功能于一體的綜合系統(tǒng)[1-2]。同時,伴隨著科技的進步,各種高科技及前沿技術廣泛應用于智能小車領域,使得智能小車越來越多樣化[3],其中,無人控制的智能小車自動行駛成為人們關注的熱點[4]。文獻[5]設計了基于Arduino 的智能避障小車,采用RB-URF02 超聲測距傳感器作為避障檢測模塊,使得小車具有了一定的避障功能,但是只考慮了正前方一個方向的障礙物檢測,并且當遇到障礙物時,默認的轉彎方向也只是同一個方向。文獻[6]設計了一種基于AT89S52 的Android 手機藍牙控制智能小車,使得小車能夠根據(jù)人為控制進行避障,但是該小車無法自主避障。文獻[7]設計了基于89C52 的智能避障小車,采用NREF24L01 作為無線接收模塊,以紅外光電傳感器作為避障模塊,設計了一款智能控制小車。文獻[8]設計了一種基于機器視覺的循跡避障小車系統(tǒng),該小車以攝像頭作為信息采集模塊,得到障礙物的距離,從而避開障礙物。
雖然學術界對智能小車的研究取得了一定的進展,但是,都是基于某一種模式進行研究的,其小車的智能性和多樣性不足。因此,為了進一步提高小車的智能性和多樣性,本文設計的智能小車有2 種控制模式,即自動模式和手動模式,采用5路超聲波傳感器,分別置于小車的前后左右,對小車周圍環(huán)境進行全方位的障礙物檢測。當處于自動模式時,小車根據(jù)5 路超聲波傳感器獲取路障信息,進行算法融合之后,決策出所要執(zhí)行的動作,從而實現(xiàn)自主避障;當處于手動模式時,小車根據(jù)上位機APP 人工控制進行避障,從而達到避障功能。
為了保證智能避障小車的平穩(wěn)性,小車采用四輪穩(wěn)定,其中前兩輪為驅(qū)動輪,后兩輪為萬向輪,通過控制前輪的轉動來實現(xiàn)小車的驅(qū)動及方向的轉向控制。主控MCU 采用STM32F407,該芯片的配置豐富且功能強大。整個系統(tǒng)包括:控制器模塊、5 路超聲波模塊、語音播報模塊、藍牙模塊、Android APP 上位機控制模塊、顯示器模塊、直流電機驅(qū)動模塊和電源模塊。系統(tǒng)功能如圖1所示。
圖1 系統(tǒng)功能圖Fig.1 System function diagram
為了提高檢測信息的全面性,本文設計的智能小車有5 路US-100 超聲波傳感器,分別置于小車周圍,由于前方為主要檢測區(qū)域,因此,前方左右各設置1 路,其余3 路分別置于左、右、后。
本系統(tǒng)主控芯片選擇STM32F407 單片機,該芯片負責整個系統(tǒng)的數(shù)據(jù)收集、信息處理和電機控制。本智能小車設計2 種避障模式,分別為自主(主動)避障和手動(被動)避障。在自主避障模式下,小車根據(jù)5 路超聲波傳感器采集的數(shù)據(jù)融合計算后,控制電機的運轉和轉向;在手動模式下,小車根據(jù)用戶操作上位機(Android APP)發(fā)送的指令,調(diào)節(jié)電機的轉速、轉向和啟停,以此來控制小車的速度和方向。整個主控芯片的電路如圖2所示。
圖2 STM32 主控芯片電路圖Fig.2 STM32 controller
本文選擇的電機是12 V 直流電機,選擇的電機驅(qū)動芯片是雙H 橋L298N 模塊。該模塊可以直接驅(qū)動兩路5~30 V 直流電機,其輸入端口IN1、IN2、IN3、IN4 分別與單片機控制端IO 口的PA11、PG11、PG10、PA15 連接,輸出端口OUT1、OUT2(OUT3、OUT4)分別與左(右)電機的正、負極相連。L298N 的邏輯功能可參見其芯片手冊,電機驅(qū)動模塊電路如圖3所示。
本系統(tǒng)采用US-100 超聲波作為檢測障礙物的距離,該超聲波可測量的范圍為2 cm~4.5 m,擁有2.4~5.5 V 的寬電壓輸入范圍,自帶溫度傳感器對測距結果進行校正,同時具有GPIO、串口等多種工作方式,其工作穩(wěn)定性可靠。采用電平觸發(fā)方式測距,其測距計算方法: 距離=(高電平時間* 聲速)/2,其中,高電平時間可采用單片機的定時器獲取,聲速取值為340 m/s,從而便可計算出障礙物距離。
圖3 電機驅(qū)動電路Fig.3 Motor-driven circuit
語音播報功能使得電子產(chǎn)品更加人性化、便捷化,在許多應用領域都有著不可替代的作用[9]。本系統(tǒng)設計的語音播報功能可用于小車運行的各種狀態(tài)中。例如,小車上電后播報“初始化成功,請選擇模式”,左轉時播報“當前正在左轉”等。本系統(tǒng)所采用的語音芯片為XFS5152CE,該芯片可支持中文、英文語音合成,集成了語音編碼、解碼功能,同時支持錄音和播放功能,支持UART、I2C、SPI 三種通訊方式,本文采用UART 通訊方式。語音播報電路如圖4所示。
圖4 語音播報電路Fig.4 Voice broadcasting circuit
為了清晰顯示小車周圍檢測到的障礙物距離,本文未采用常用的LCD1602 或LCD12864 顯示器,而是采用當前較為流行的專門針對工業(yè)自動化應用而設計的迪文屏顯示,該屏集成了大量的工業(yè)自動化處理相關軟件,使用起來較為方便、簡單。
本文采用HC-06 作為從藍牙模塊,用來接收上位機(手機APP)發(fā)送來的各種指令。但是,在小車與藍牙連接之前需要對藍牙進行相關的設置,例如,測試通訊是否正常,修改波特率、名稱、密碼等。該部分可參見HC-06 藍牙芯片手冊進行設置即可。
電源模塊是整個系統(tǒng)的能量中心,穩(wěn)定良好的電源是保證小車順利完成的基礎。本文采用的電源是12 V 可充電鋰電池,電源管理模塊將電壓調(diào)節(jié)后重新分配給各不同電源標準的模塊,以保證各器件正常工作。
本系統(tǒng)軟件開發(fā)主要有STM32 控制器、手機APP 兩個方面。針對STM32 控制器采用Keil uVision5 集成開發(fā)環(huán)境,該軟件是基于Windows 的平臺開發(fā),簡單易上手,非常適合于嵌入式系統(tǒng)的開發(fā)。針對手機APP 采用常用的Android 平臺進行開發(fā),并且該平臺支持藍牙開發(fā)。因此,整個系統(tǒng)的流程如圖5所示,藍牙模式和自主避障模式流程分別如圖6、圖7所示。
圖5 系統(tǒng)流程Fig.5 System flow chart
圖6 藍牙模式流程Fig.6 Bluetooth mode flow chart
圖7 自主避障模式流程Fig.7 Autonomous obstacle avoidance mode flow chart
將小車置于含有障礙物的路段中,結果表明,小車運行平穩(wěn),各項設計符合要求。圖8 為自主避障模式,圖9 為藍牙模式,2 個碼盤中間顯示小車速度檔位,碼盤顯示小車左右電機的PWM 值。藍牙模式下小車采用PID 來控制速度,通過手機APP 控制小車直行、停止、后退、轉角等。通過點擊加速、減速控制小車速度單位,這里將小車速度劃分為10 個檔位,默認是1 檔,10 檔最大。圖10 為開發(fā)的上位機APP 軟件。
圖8 自主避障模式測試Fig.8 Test autonomous obstacle avoidance mode
圖9 藍牙避障模式測試Fig.9 Test Bluetooth obstacle avoidance mode
圖10 APP 控制軟件Fig.10 APP control software
實踐證明,本文設計并實現(xiàn)的智能小車能夠根據(jù)超聲波傳感器采集的信息進行主動避障和人工控制APP 軟件實現(xiàn)手動避障兩種避障模式,實現(xiàn)了小車的準確避障,并且在手動模式時可以控制小車的前進、后退、左轉、右轉、停止以及調(diào)速等功能。小車整體運行平穩(wěn),操作方便、簡單、易上手,下一步將針對小車循跡展開研究,使得小車的功能更加完善,智能性更高。