(北京理工大學(xué)珠海學(xué)院,廣東 珠海 519088)
因為雙輪機(jī)器人的目標(biāo)點定位有誤差,且調(diào)整效率較低,需要到達(dá)目的地后再次調(diào)整方向,影響搬運效率的提升。所以,該文在嵌入式單片機(jī)(STM32)的基礎(chǔ)上設(shè)計出的全向移動機(jī)器人可以有效克服位置與角度的誤差,促進(jìn)搬運效率的提升,充分滿足當(dāng)前工業(yè)發(fā)展的新需求。
在微控制器的內(nèi)部設(shè)置TTL電平,將輸入門2.0 V~5.0 V設(shè)置為邏輯“1”,0.0 V~0.8 V設(shè)置為邏輯“0”;輸出門2.4 V~5.0 V和0.0 V~0.4 V分別設(shè)置為邏輯“1”和“0”。USB總線經(jīng)過D+與D-2個信號線實施通信,當(dāng)D+為高電平、D-為低電平時,就意味著總線為邏輯“1”,反之則為邏輯“0”。因此,當(dāng)微控器與計算機(jī)總線相連時,如果要開展串口通信、ISP固件下載等工序,則應(yīng)該利用串口模塊將計算機(jī)中SUB口信號轉(zhuǎn)變?yōu)槲⒖刂破髦С值腡TL串口電平,并將微控制器中的TTL電平轉(zhuǎn)變?yōu)榭勺R別的USB總線電平。利用USB總線中的轉(zhuǎn)接芯片CH340完成USB口向TTL串口的轉(zhuǎn)變。對于前者來說,它的作用主要體現(xiàn)在2個方面:1)將CH340芯片中RXD引腳微控制器的異步串口連起來,并與調(diào)試軟件相結(jié)合實現(xiàn)串口調(diào)試。2)將芯片中的RTS#、DTR引腳以及ISP電路連在一起,這樣就可以利用USB對微控制器固件程序進(jìn)行下載[1]。
超聲波頻率超出人耳的感知范圍,一般為2 000 Hz以上,且波長較短,帶有狹小的發(fā)射線束,并通過波束的形式廣泛傳播,方向性較為明確。壓電式發(fā)生器的應(yīng)用較為普遍,當(dāng)發(fā)射超聲波時,發(fā)生器應(yīng)該將電能轉(zhuǎn)變?yōu)槌曊饎?;?dāng)接收反射回波時,在傳感器的作用下可以將回波轉(zhuǎn)變?yōu)殡娦盘?,這就是壓電效應(yīng)[2]。在該文的研究中,機(jī)器人采用HC-SR04模塊進(jìn)行距離測量與障礙規(guī)避,其額定電壓值為DC5 V,頻率為40 kHz??梢詼y量4.0 m內(nèi)的障礙物,精準(zhǔn)度可以達(dá)到0.3 cm。
除電源之外,該模塊的接口還可以是TTL輸入引腳與回波輸出引腳。該模塊的應(yīng)用原理如圖1所示,主要包括觸發(fā)信號、發(fā)射信號與回波。具體傳輸原理:首先,在微控制器中發(fā)出信號,經(jīng)過該模塊的輸入引腳進(jìn)入發(fā)射電路;其次,利用超聲波對回波信號進(jìn)行輸出;最后,傳微控制器的額外定時器中。該控制器可以定時器中的輸出模式與傳輸引腳結(jié)合在一起,對電平信號進(jìn)行轉(zhuǎn)換,為該模塊提供一個超過10 μs的高電平信號,并發(fā)送8個頻率為40 kHz的脈沖信號。如果該信號遇到反射物體后進(jìn)入超聲波模塊,則接收器將接收到固定時段內(nèi)的信號?;夭ǖ某掷m(xù)時間與超聲波的往返時間相同,接收器將高電平信號輸入引腳,利用定時器對信號進(jìn)行采集,得出信號升降的時間,進(jìn)而計算出回波脈沖的寬度。
該模塊屬于上位機(jī)中的智能終端,與下位機(jī)的主控器進(jìn)行通信傳輸。在實際應(yīng)用中,智能終端可以借助內(nèi)部Wi-Fi模塊將軟件指令傳遞給主控器中的通信模塊。待主控器接收到傳遞信息后,USB攝像頭中采集的視頻信號也可以通過Wi-Fi模塊傳遞到智能終端。該模塊在Linux內(nèi)核的基礎(chǔ)上構(gòu)建操作系統(tǒng),并支持路由器開發(fā)。在OpenWrt系統(tǒng)中創(chuàng)建媒體服務(wù)器,就可以發(fā)揮實時視頻傳輸?shù)淖饔?。該系統(tǒng)可在多樣化嵌入式芯片中運行,除支持MIPS體系之外,還支持PowerPC與ARM等結(jié)構(gòu)。全向機(jī)器人中的Wi-Fi模塊內(nèi)置MT7620芯片,具有580 MHz主頻的特點。在通信模塊中配置32 MB內(nèi)存,當(dāng)通信接口與串口相連時,其額定電壓為DC5 V。
圖1 超聲波測距原理圖
在機(jī)器人運行的過程中,動力電機(jī)會為伺服電機(jī)提供相應(yīng)的控制信號,并結(jié)合控制指令執(zhí)行運動動作。動力電機(jī)與驅(qū)動器共同組成伺服系統(tǒng),也就是隨動系統(tǒng),該系統(tǒng)控制肌肉系統(tǒng)的作用[3]。該文采用型號為RMDS-106+的驅(qū)動器,其接口如圖2所示。將其作為主控芯片,為RS485通信模式提供支持,還可以與PC連接進(jìn)行驅(qū)動調(diào)試,為每個電機(jī)配置1個驅(qū)動器。在調(diào)試過程中,將232T、GND以及232R接口與PC相連,將額定電壓設(shè)置為24 V,采用串行方式與PC通信,為驅(qū)動器標(biāo)記唯一的號碼,以免出現(xiàn)混淆。主控設(shè)備可通過CANL信號線與驅(qū)動器連接,再通過總線通信將運動指令傳遞到總線。驅(qū)動器中的接口也可以通過并聯(lián)模式掛載到主控總線上,與驅(qū)動器監(jiān)聽的編號信息相結(jié)合,依靠定時器形成特定比例的PWM波形。在該波形中還需要增加功率放大電路,從MT1與MT2引腳輸出后,可對動力電機(jī)進(jìn)行驅(qū)動,使其滿足轉(zhuǎn)速運動的需求。
圖2 驅(qū)動器接口示意圖
控制電機(jī)轉(zhuǎn)速和方向的方法較多,當(dāng)前,應(yīng)用較為頻繁的1種是調(diào)節(jié)勵磁與電樞電壓的方法。勵磁線圈電感較大,動態(tài)響應(yīng)相對較弱,在低速狀態(tài)下很容易受到磁極飽和的影響,導(dǎo)致效果不夠理想。為了達(dá)到精準(zhǔn)可靠的目標(biāo),同時獲得較大的轉(zhuǎn)矩,與大多數(shù)機(jī)器人控制場景相同,該機(jī)器人也采用電樞控制模式進(jìn)行伺服電機(jī)操控,并在電樞上加入特定的直流電壓,電機(jī)就可以根據(jù)電壓值進(jìn)行相應(yīng)的旋轉(zhuǎn),當(dāng)電壓方向改變后,電機(jī)旋向也隨之改變。
在安卓系統(tǒng)中運行時,該機(jī)器人將智能終端作為上位機(jī),在Linux基礎(chǔ)上構(gòu)建移動操作系統(tǒng);底層程序庫利用C++語言編寫相關(guān)程序,其中,應(yīng)用程序均由Java語言編寫。Google企業(yè)為開發(fā)者專門打造了集成工具安卓Studio,并營造與之相對的開發(fā)環(huán)境。下位機(jī)是以STM32F103作為主控系統(tǒng),它的軟件是在MCU中運行的控制固件代碼,其集成嵌入式開發(fā)環(huán)境、構(gòu)建程序編譯工具鏈并將下機(jī)位作為ARM的開發(fā)平臺。在下機(jī)位內(nèi)部有指令模擬器,同時具備單機(jī)脫離硬件調(diào)試的能力。在不嵌入單片機(jī)硬件的條件下,就可以在模擬代碼中運行。該企業(yè)為微控制器開發(fā)了很多庫函數(shù),并對庫函數(shù)進(jìn)行合理地應(yīng)用,極大地縮短了軟件開發(fā)周期,主要流程如下:首先,創(chuàng)建相應(yīng)的工程項目,針對內(nèi)部參數(shù)進(jìn)行設(shè)置,例如晶振頻率、目標(biāo)芯片等;其次,在項目中編寫代碼,使軟件功能更加豐富完善,可以完成工程編譯、測試等操作;再次,當(dāng)發(fā)現(xiàn)錯誤后及時糾正代碼,對其進(jìn)行重新編譯直至準(zhǔn)確無誤;最后,再將其與硬件相結(jié)合進(jìn)行調(diào)試。
安卓端程序設(shè)計主要包括流媒體數(shù)據(jù)、App參數(shù)與控制指令等內(nèi)容。在啟動App后,先進(jìn)入?yún)?shù)設(shè)置界面,在該界面明確控制信號IP地質(zhì)以及流媒體服務(wù)器IP地址等。在控制指令中,可以利用圖片按鈕組件實現(xiàn)在App應(yīng)用中,對按下按鈕時的事件進(jìn)行監(jiān)測,如果監(jiān)測到按鍵被按下,就會將鍵值傳送到控制信號的IP地址中,由Wi-Fi模塊對控制信號進(jìn)行接收,再經(jīng)過串口傳遞給主控制器。對實時流媒體服務(wù)器中的IP地址進(jìn)行訪問,利用解析器對服務(wù)器中的視頻信息進(jìn)行播放,就可以達(dá)到遠(yuǎn)程監(jiān)控的效果[4]。
該軟件的主要作用是對上位機(jī)控制指令做出響應(yīng),并控制機(jī)器人運動,將采集的數(shù)據(jù)傳遞到App。串口通信程序設(shè)計包括數(shù)據(jù)發(fā)送和數(shù)據(jù)接收等程序。主控器接口可經(jīng)過RX數(shù)據(jù)、TX數(shù)據(jù)與Wi-Fi模塊相互連接。在兩者之間利用相同的通信協(xié)議進(jìn)行串口通信,每個數(shù)據(jù)包中帶有5 Byte,以O(shè)fxx作為包頭與包尾,可用的數(shù)據(jù)位還剩下3 Byte。當(dāng)通信程序檢驗到頭尾為Ofxx時,就意味數(shù)據(jù)是有價值的,可存入緩沖區(qū)域;反之,則說明數(shù)據(jù)無效,應(yīng)將其剔除。CAN總線可完成數(shù)據(jù)收發(fā)工作,在串口接收下重新編碼,將CAN指令傳遞到電機(jī)驅(qū)動器總線中,對驅(qū)動設(shè)備傳遞的信息進(jìn)行接收。在開啟通信端口前,應(yīng)該對串口能否成功開啟進(jìn)行檢驗,如果成功開啟,就可以對端口進(jìn)行初始化;反之則在出現(xiàn)錯誤信息后停止運行。在初始化啟動后,根據(jù)串口信號做出相應(yīng)決策,生成與之相對的數(shù)據(jù)幀。在電機(jī)驅(qū)動下根據(jù)信號對底盤電機(jī)進(jìn)行控制,也可以通過驅(qū)動器中的收發(fā)器傳遞給機(jī)器人。如果發(fā)現(xiàn)機(jī)器人的運動狀態(tài)達(dá)到預(yù)期目標(biāo),就停止操作;否則要重新讀取串口數(shù)據(jù),并重復(fù)上述流程。
電機(jī)利用較為典型的PID閉環(huán)控制算法,以STM32F103微控制器為主芯片,以伺服電機(jī)為執(zhí)行器,在反饋值與理想值的基礎(chǔ)上構(gòu)建PID控制系統(tǒng)。PID控制是積分、微分和比例的統(tǒng)稱,在伺服電機(jī)驅(qū)動器為動力電機(jī)傳輸信號后,其控制信號從零跳轉(zhuǎn)到給定值,使機(jī)器人運行更加穩(wěn)定,實現(xiàn)平滑控制的目標(biāo)。比例控制以反饋與理想值的誤差作為控制值。當(dāng)比例控制趨于穩(wěn)定時,就處于穩(wěn)定狀態(tài)。在取值范圍內(nèi),雖然控制增益與穩(wěn)態(tài)值成反比,后者隨著前者的增加而減少;但是也可能出現(xiàn)振蕩情況。為了減少該情況的出現(xiàn),可以利用積分控制實現(xiàn)比例控制。積分控制主要是控制信號與誤差信號的和,它可以把比例控制形成的穩(wěn)態(tài)誤差剔除,一般與微分控制聯(lián)合應(yīng)用[5]。PID原理,如圖3所示,與期望控制量進(jìn)行對比,如果超過該值就將比例、積分與微分控制結(jié)合起來,共同作用于伺服電機(jī),并且輸出實際控制量;如果沒有超過該值則在進(jìn)行反饋后,輸出實際控制量。
在運動控制方面,可以以運動控制中是否采用PID參數(shù)為根據(jù),將其分為開環(huán)與閉環(huán)2種控制模式。對于前者來說,可以直接設(shè)定伺服電機(jī)數(shù)值,不需要對反饋量進(jìn)行分析。在對動力電機(jī)進(jìn)行檢測時,可以優(yōu)先采用開環(huán)控制。通過伺服電機(jī)的電流控制,在狀態(tài)趨于穩(wěn)定后,使電機(jī)內(nèi)的電流達(dá)到恒定狀態(tài),并且讓力矩隨著時間的變化而不斷改變。電流值與電機(jī)加速度成正比,當(dāng)對電流值進(jìn)行控制時,電機(jī)速度也會隨之而變。在該模式下,可以確保電機(jī)長期運轉(zhuǎn)時電流值穩(wěn)定在科學(xué)可控的范圍,避免因為電機(jī)長期堵轉(zhuǎn)導(dǎo)致內(nèi)部電流激增,最終而造成電機(jī)過熱被毀。伺服電機(jī)長期保持特定的速度運轉(zhuǎn),被稱為速度環(huán)控制。當(dāng)速度環(huán)控制居于穩(wěn)定時,伺服電機(jī)速度與負(fù)載均受到直接影響??梢詰?yīng)用于多種需要電機(jī)保持恒定的場所。當(dāng)開環(huán)運行時,伺服電機(jī)轉(zhuǎn)速較快,受慣性作用影響,難以使其在短時間內(nèi)暫停運行。因此,速度環(huán)模式也可以用于控制運動體剎車,其反饋速度可以從光電編碼器中體現(xiàn)出來;在速度控制時,積分控制與比例參數(shù)基本相同。電流速度控制包括速度和電流2個方面,不但可以促進(jìn)直流伺服電機(jī)的穩(wěn)定運行,而且還可以輸出恒定力矩,在長期擁堵的狀態(tài)下避免因電流過熱而損壞設(shè)備。在控制參數(shù)中包括速度比例、電流積分參數(shù)和比例參數(shù)等。通常情況下,機(jī)器人采用電流速度控制,要求伺服電機(jī)按照特定速度轉(zhuǎn)動,電流值小于給定值。
圖3 PID控制原理圖
為了檢測控制系統(tǒng)是否穩(wěn)定可行,在STM32的基礎(chǔ)上構(gòu)建的全向機(jī)器人,可以利用無線通信為上位機(jī)傳送指令,借助串口將數(shù)據(jù)打包傳遞給開發(fā)板,并將融合數(shù)據(jù)反饋給上位機(jī);同時,對長短里程的精度指標(biāo)進(jìn)行分別測試。在里程精度測試中,以短距離為主,直線速度為0.5 m/s,角速度為0.5 rad/s,多次測試后匯總得出底層誤差,見表1。根據(jù)表中數(shù)據(jù)可知,橫軸與縱軸的距離均為998 m,自轉(zhuǎn)角度為360°;在誤差方面,縱軸誤差超過橫軸;那么,就可以接受自轉(zhuǎn)角度存在誤差。
表 1 里程誤差
對長距離的里程精度進(jìn)行測試,當(dāng)距離在220.000 m時,總轉(zhuǎn)角為1 980.0°;當(dāng)橫軸偏差為-2.680 m、縱軸偏差為-2.983 m時,角度偏差為13.7 °。因為考慮到機(jī)器人在運行中底部容易打滑,所以在進(jìn)行零半徑轉(zhuǎn)彎測試時,只要轉(zhuǎn)角值為7 200.0 °、差值為48.5 °、橫軸誤差在80 mm以內(nèi),縱軸誤差在100 mm以內(nèi),都符合相關(guān)規(guī)定的要求。
總的來說,首先,該文對移動機(jī)器人系統(tǒng)的軟件、硬件設(shè)計進(jìn)行分析,在STM32的基礎(chǔ)上使控制系統(tǒng)更加精準(zhǔn)靈活,通過人機(jī)交互系統(tǒng)實現(xiàn)無線視頻監(jiān)控,使PID控制算法得到優(yōu)化;其次,將其應(yīng)用到嵌入式軟件設(shè)計中,通過應(yīng)用安卓系統(tǒng)的上位機(jī)App進(jìn)行設(shè)計;最后,對機(jī)器人樣機(jī)進(jìn)行試驗測試,并將檢測結(jié)果進(jìn)行分析,從而有限驗證了機(jī)器人的可控性、穩(wěn)定性與可行性,實現(xiàn)理想的人機(jī)交互效果。在未來的研究中,還可以將多傳感器技術(shù)引入其中,為機(jī)器人路徑規(guī)劃與導(dǎo)航設(shè)計提供強(qiáng)有力的支持,使其擁有更高的自主移動能力,在各種復(fù)雜的環(huán)境中得到廣泛應(yīng)用。