黃志芳,陳澤銳,何梓杰,宋世杰
(嘉應學院電子信息工程學院,廣東梅州 514015)
隨著人工智能、物聯(lián)網(wǎng)技術的不斷發(fā)展,各行各業(yè)對于機器人使用的要求和智能化也越來越高,機器人如何更好地結合人工智能和物聯(lián)網(wǎng)技術來滿足各行各業(yè)的需求已成為當今研究的熱點[1-2]。智能小車作為小型智能機器人,其機動靈活、操作方便,車上可集成各種精密傳感器,其避障功能確保了小車在行駛中能夠避免發(fā)生碰撞、碰擦,是智能小車的重要組成部分。智能小車是人工智能、自動控制、計算機等學科交叉融合的產(chǎn)物,并在無人駕駛汽車和智能掃地機器人中起著重要作用[3-6]??刂葡到y(tǒng)是智能小車的關鍵部分,可以根據(jù)預定的軌跡在復雜的環(huán)境中行駛,實現(xiàn)小車的速度和位置控制,完成指定的任務,并在智能小車系統(tǒng)中占有舉足輕重的地位[7-9]。傳統(tǒng)的智能小車是一種四輪驅(qū)動機器人,四輪驅(qū)動導致了智能小車體積較大,在比較狹窄空間中的轉(zhuǎn)彎性、行動性會受到較大限制,遇到石塊、坑洼障礙物時會導致傳統(tǒng)智能小車脫困能力較差[10]。為此,文中設計了兩輪獨立的智能交互式平衡小車,以MPU6050 陀螺儀感知小車的平衡狀態(tài),以TB6612 電機來控制兩輪差速值,從而達到小車自平衡,可應用于消防、無人巡查、娛樂等領域。
基于STM32 的智能交互式平衡小車是由硬件部分、軟件部分和各個模塊構成的。硬件電路中SMT32F103 與STM32F429 系列芯片作為主控芯片,分為上下兩層,STM32F429 為上層主控芯片,SMT32F103 為下層主控芯片。上層主要用于圖像處理以及處理超聲波、語音模塊、WIFI,作為平衡車的“大腦”;下層為控制小車的主控板,作為平衡車的行動支架。兩塊芯片采用串口方式進行通信,通過上層控制下層小車的運行,硬件連接如圖1 所示。
圖1 硬件連接圖
使用者通過語音控制模塊識別查詢天氣指令,將WIFI 模塊連接到服務器,通過服務器得到所處位置的相關氣象信息,并且將獲取的信息進行解碼和編譯,發(fā)送到語音模塊進行播放。
使用者還可以通過語音模塊控制平衡車的平衡和動作狀態(tài),通過語音控制平衡車處于休息或跟蹤追尋狀態(tài)。當進入休息狀態(tài)時,使用者可以隨時喚醒平衡車進入跟隨狀態(tài)。當進入跟隨狀態(tài)時,通過圖像識別和處理,可以實現(xiàn)平衡車實時跟蹤使用者所佩戴的具有紅外功能的手套,實現(xiàn)跟蹤追尋使用者的功能。
上層主控芯片通過語音識別模塊SYN7318 識別使用者的語音控制指令,攝像頭OV5640 用于采集圖像,通過識別算法計算出紅光的運動軌跡,進而判斷小車的運行軌跡,實現(xiàn)自動跟隨、巡查功能。WIFI模塊通過連接手機熱點,即可連接上服務器,并且可以查詢到當天某個地區(qū)的天氣情況。
硬件系統(tǒng)以STM32F429 與STM32F103 兩塊單片機作為核心控制芯片,兩個芯片之間的協(xié)調(diào)通信采用串口通信。STM32F429 連接OV5640 攝像頭、SYN7318 語音模塊、WIFI 模塊、超聲波模塊,作為平衡小車的核心“大腦”,攝像頭采集具有紅外功能的手套信息,并鎖定圖像信息,作為跟隨的指示信息。語音模塊隨時接收使用者的語音指令,對語音指令進行解析,并把解析結果傳輸?shù)狡胶庑≤嚨暮诵目刂菩酒?。WIFI 模塊主要負責實現(xiàn)與網(wǎng)絡的連接,用于查詢相關天氣信息和語音信息。超聲波模塊用于探測平衡小車周邊障礙物的信息,根據(jù)探測的信息來控制下層芯片,下層芯片根據(jù)小車反饋的周邊障礙物的距離信息來調(diào)整陀螺儀、電機的操作。STM32F103 連接MPU6050 陀螺儀,TB6612 電機驅(qū)動模塊控制整輛小車行駛的速度[11-12]。平衡小車通過5 000 mA,12 V 電池進行供電,經(jīng)過穩(wěn)壓電路來保證其供電穩(wěn)定,平衡小車的實物圖如圖2 所示。
圖2 平衡小車實物圖
STM32F429 是一款目前市場上主流的核心控制芯片,具有速度快、穩(wěn)定性高、存儲容量大等強大的功能[13]。該項目采用該芯片進行圖像存儲以及處理,能夠更好地提高整體小車跟蹤的靈敏度和準確性,其最小系統(tǒng)原理圖如圖3 所示。
圖3 STM32F429最小系統(tǒng)原理圖
STM32F系列是32位的ARM微控制器,內(nèi)核采用Cortex-M3,內(nèi)部集成了定時器、CAN、ADC、SPI 等多種外設功能,能夠滿足一些項目的需求。
OV5640 是一款500W 像素的高清攝像頭,采用一顆2 592*1 944 分辨率的傳感器,該模塊內(nèi)部集成了具有自動對焦功能的兩個功率為1 W 的高亮LED閃光燈,能夠?qū)崿F(xiàn)在暗光下拍攝的需求,具有較高的性價比[14]。設計時在攝像頭前裝置了一個濾光片,從而使攝像頭只拍攝到紅外光。經(jīng)過對圖片的處理,實現(xiàn)了對特征點的追尋,原理圖如圖4 所示。
圖4 OV5640攝像頭原理圖
SYN7318 語音模塊集成了語音識別、喚醒、播放等功能,通過串口通訊方式接受命令,擁有廣闊的應用領域和使用場景,可內(nèi)置客戶應用程序,廣泛應用于車載GPS 調(diào)度終端、插卡音箱、點讀機、智能儀表等領域。模塊的TXD、RXD 分別與STM32 主控芯片串口1 的RXD、TXD 相連,從而進行通信和傳輸數(shù)據(jù)。
MG90S 是一款通過PWM 進行控制的舵機,通過調(diào)整占空比的大小,可以實現(xiàn)對其旋轉(zhuǎn)角度的改變,采用5 V 電壓進行供電。設計所采用的舵機是金屬型舵機,能夠增加其穩(wěn)定性,相比于塑料舵機使用時間更長。平衡小車主要通過云臺搭載兩個舵機,從而實現(xiàn)對攝像頭拍攝角度的控制,使得小車在無光源的情況下順利找到光源。
MPU6050 是一款同時帶有陀螺儀和加速度傳感器的芯片[15],平衡小車使用一個MPU6050 芯片的模塊進行設計,該模塊主要通過IIC 總線進行通信,其內(nèi)部自帶了16 位的A/D 轉(zhuǎn)換器,能夠?qū)崿F(xiàn)對角度的高精度轉(zhuǎn)換,以滿足用戶需求;并且,由于該模塊可以快速準確追蹤角速度以及其工作電壓范圍廣的特點,因此可應用于不同的工作環(huán)境。平衡小車通過該模塊來獲取小車當前的傾斜角度以及加速度,對這兩個信息進行分析,再通過PID 算法來實現(xiàn)控制小車的平衡以及運動。
TB6612 電機驅(qū)動模塊是一款用于驅(qū)動電機轉(zhuǎn)動的模塊,其具有兩個通道輸出,可同時控制兩個電機,每個電機可輸出1.2 A 的電機驅(qū)動電流,啟動的峰值電流可達2 A/3.2 A,能夠滿足大部分電機的需求,并且可以實現(xiàn)正反轉(zhuǎn)以及制動的功能,具有低壓檢測電路和熱停機保護電路,能夠有效保護電源和電路[15]。電機驅(qū)動原理圖如圖5 所示。
圖5 TB6612電機驅(qū)動原理圖
減速直流電機主要是在普通直流電機的基礎上再配備了齒輪減速箱,其主要作用是提供較大的力矩和較低的轉(zhuǎn)速。該減速直流電機通過齒輪箱不同的減速比獲得不同的轉(zhuǎn)速和力矩,顯著擴大了直流電機的使用范圍[16]。文中選用減速直流電機控制整個小車的行走以及平衡,通過控制PWM 占空比實現(xiàn)對減速電機的控制,從而實現(xiàn)對小車的控制。
主程序流程圖包括上層板和下層板主程序流程圖,上層板主要為圖像識別,下層板主要接收上層板的指令,控制小車的平衡和行走。上層板主程序流程圖首先通過對各個模塊以及內(nèi)部資源進行初始化,控制云臺平躺,并且發(fā)送指令控制小車停止,接著進入主循環(huán),獲取光源。若有光源,則進入對準光源模式;若無,則進入尋光模式。上層板的主程序流程圖如圖6 所示。
圖6 上層板主程序流程圖
下層板首先對各個外設以及內(nèi)部資源進行初始化,控制小車保持直立的狀態(tài),接著進入主循環(huán),當接收到控制小車的指令后,小車將做出相應的動作。攝像頭捕捉到紅光后,還需將紅光校準至中心點,因此將此任務分為一個子函數(shù)。當確定捕捉到紅光后,先判斷紅光是否處于X、Y軸上,若是,則判斷處于X、Y軸的正負半軸,然后發(fā)送指令給下層小車控制板;若否,則獲取該紅光與中心軸的角度及所屬象限,再獲取超聲波距離,當前景條件滿足且需要前行時則發(fā)送指令給下層小車控制板。
由于小車開始可能與紅光的距離很遠,因此若要靠近紅光,則需要在運動的過程中同時考慮紅光的距離與小車的運行軌跡。首先按照程序設定采集兩次圖片,判斷是否有紅光,如果沒有,則控制云臺平躺,重新進入尋光函數(shù);如果有,則判斷其位于Y軸的正負方向,若為正方向則發(fā)送指令給小車繼續(xù)前行,再循環(huán)采集圖片;若為負方向,則控制云臺下躺5°~10°,并且記錄躺下度數(shù),以方便判斷云臺是否處于平躺的位置,進而判斷是否處于紅光正下方,且成功對準。
小車運行開始時無法判斷和鎖定紅光位置,通過控制小車轉(zhuǎn)彎及云臺的上仰和平躺操作實現(xiàn)對紅光位置的判斷和鎖定。進入尋光函數(shù)后,先采集兩次圖片,若首次采集圖片中有紅光,則采集結束并進入鎖定紅光階段,反之控制云臺攝像頭在20°~80°范圍內(nèi)進行上仰操作,以尋找紅光,直至鎖定紅光。若云臺上仰至80°后還沒有找到光源,則不再執(zhí)行攝像頭上仰操作,結束尋光操作。尋光流程圖如圖7 所示。
圖7 尋光流程圖
在完成了硬件、軟件各個模塊的設計制作后,對硬件電路各模塊進行測試,結果表明,硬件電路各個模塊功能正常;將軟件程序下載到芯片中,使得程序正常無誤,軟硬件適配。攝像頭模塊可以準確地采集到具有紅外功能的手套,并且在較為復雜的使用環(huán)境中識別出紅外手套,識別距離達到了最遠為5 m,最優(yōu)識別距離為1.4~2.6 m,識別率達到了99.4%。識別出平衡小車在喚醒模式下能實現(xiàn)自助跟隨功能。語音識別模塊可以識別出使用者的相關指令,根據(jù)指令完成平衡小車的喚醒、休眠、播報、交流等功能,各個模塊功能正常。小車自平衡狀態(tài)通過陀螺儀和電機共同完成,通過前后左右的推放測試,平衡小車都可以實現(xiàn)自平衡,自主修正狀態(tài),保持平衡。小車的平衡算法可靠穩(wěn)定,陀螺儀和電機驅(qū)動正常工作。舵機是保持攝像頭轉(zhuǎn)動尋找目標和鎖定目標的機構,舵機能根據(jù)下層芯片指令準確完成攝像頭和云臺的轉(zhuǎn)動,確保了攝像頭能及時采集和鎖定目標。由于手套具有紅外功能,因此為了避免造成程序沖突和混亂,避障模塊選用超聲波模塊來獲取平衡小車與周邊障礙物的距離信息,實現(xiàn)平衡小車的避障功能。WIFI 模塊能正常聯(lián)網(wǎng)查詢各種信息。測試中以查詢天氣為例,語音識別查詢天氣指令后,WIFI 模塊能準確查詢相關地域的天氣信息。
通過對基于STM32 的智能交互式平衡小車的應用研究,文中從設計的目標、思路、方法、硬件架構、軟件設計以及PID 算法等方面驗證了智能交互式平衡小車達到設計的參數(shù)要求。該設計采用了兩輪式的結構,與傳統(tǒng)的四輪結構式小車相比,具有體積小、轉(zhuǎn)向靈活、自主平衡調(diào)整、自動避障等功能,語音交互功能可使用戶更方便快捷地操作使用。平衡小車未來在消防勘察、無人巡查、自動跟隨購物車和行李箱領域具有較為廣泛的應用前景。