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