黃 充,劉源杰,何玉靈,潘圓媛,匡江華
(1江西制造職業(yè)技術(shù)學(xué)院 江西 南昌 330095)
(2南昌工程學(xué)院江西省精密驅(qū)動(dòng)與控制重點(diǎn)實(shí)驗(yàn)室 江西 南昌 330099)
近年來(lái)科技在高速發(fā)展[1],隨著電子科技的逐漸完善和物聯(lián)網(wǎng)的普及,關(guān)于移動(dòng)機(jī)器人的研究朝著現(xiàn)代化、智能化、小型化的方向發(fā)展。而集成控制、通信、傳感技術(shù)于一體的輪式機(jī)器人作為機(jī)器人行業(yè)的典型代表,在汽車、機(jī)械、物流等行業(yè)有著大量應(yīng)用。由于人類涉足的范圍在不斷地?cái)U(kuò)大,有些地方人無(wú)法到達(dá),如深山、發(fā)生災(zāi)難的地下、坍塌的樓房等,這些地帶都有著極高的危險(xiǎn)性。傳統(tǒng)的移動(dòng)機(jī)器人大多受輪胎結(jié)構(gòu)的限制,移動(dòng)的靈活性降低,活動(dòng)范圍受限,難以滿足人們對(duì)智能移動(dòng)機(jī)器人的要求。本文設(shè)計(jì)的全向移動(dòng)機(jī)器人可通過(guò)PS2無(wú)線遙控手柄遠(yuǎn)程控制機(jī)器人進(jìn)行前后移動(dòng)、平移、斜移等多個(gè)方向運(yùn)動(dòng)以及移動(dòng)速度的設(shè)定,并且由霍爾編碼器測(cè)得的實(shí)際速度與給定速度進(jìn)行處理,結(jié)合增量式PID算法獲得四個(gè)電機(jī)輸出控制量,減少當(dāng)移動(dòng)機(jī)器人遇到不同的路況因地面摩擦力的不同導(dǎo)致行進(jìn)速度偏離預(yù)設(shè)速度的發(fā)生率。
本文設(shè)計(jì)的基于STM32的移動(dòng)機(jī)器人,主要實(shí)現(xiàn)全方位移動(dòng)、無(wú)線通信等功能,控制系統(tǒng)框圖如圖1所示。該系統(tǒng)主要由STM32單片機(jī)、電源模塊、PS2無(wú)線遙控手柄、按鍵模塊、電機(jī)驅(qū)動(dòng)模塊、直流減速電機(jī)、麥克納姆輪構(gòu)成。為了高效實(shí)現(xiàn)系統(tǒng)的功能,單片機(jī)需要完成與各個(gè)模塊之間的信號(hào)傳輸,對(duì)單片機(jī)在省電、處理速度等性能方面有較高要求[2],因此移動(dòng)機(jī)器人選擇型號(hào)為STM32F103ZET6作為主控芯片。電機(jī)選用裝有AB雙相霍爾式編碼器的大扭矩減速電機(jī),其中可承重60 kg、額定扭矩為2.5 N*m、額定轉(zhuǎn)速為350 rpm,與電機(jī)聯(lián)軸器相連的麥克納姆輪(輪子直徑127 mm)組成行進(jìn)機(jī)構(gòu)實(shí)現(xiàn)多方向運(yùn)動(dòng)。霍爾編碼器用于檢測(cè)機(jī)器人運(yùn)動(dòng)速度,選用WSDC2412D雙通道驅(qū)動(dòng)器作為驅(qū)動(dòng)模塊,采用增量式PID控制算法對(duì)給定速度和實(shí)際速度的值進(jìn)行處理,調(diào)整輸出PWM波實(shí)現(xiàn)穩(wěn)速控制,實(shí)際速度由霍爾編碼器測(cè)得反饋給STM32單片機(jī)從而實(shí)現(xiàn)閉環(huán)控制。

圖1 總體設(shè)計(jì)框圖
本文所設(shè)計(jì)的機(jī)器人底盤(pán)結(jié)構(gòu)由電機(jī)、麥克納姆輪以及鋁合金結(jié)構(gòu)件組成,四個(gè)大扭矩直流減速電機(jī)分別由兩個(gè)雙通道的驅(qū)動(dòng)器驅(qū)動(dòng),采用四輪驅(qū)動(dòng)的方式保證機(jī)器人在運(yùn)動(dòng)的過(guò)程中有更好的驅(qū)動(dòng)力以及更高的穩(wěn)定性和安全性。傳統(tǒng)的移動(dòng)機(jī)器人采用普通輪胎難以在不改變自身姿態(tài)的前提下完成多種運(yùn)動(dòng)方式,故四個(gè)輪子采用結(jié)構(gòu)緊湊、靈活性強(qiáng)的麥克納姆輪底盤(pán)示意圖如圖2所示,輪子的布局方式要以移動(dòng)機(jī)器人中心對(duì)稱的方式使其有三自由度運(yùn)動(dòng)能力實(shí)現(xiàn)全方向移動(dòng),以便在有限的活動(dòng)空間內(nèi)能夠靈活運(yùn)動(dòng),圖3為移動(dòng)機(jī)器人底盤(pán)結(jié)構(gòu)實(shí)物圖。

圖2 移動(dòng)機(jī)器人底盤(pán)示意圖

圖3 移動(dòng)機(jī)器人底盤(pán)結(jié)構(gòu)實(shí)物圖
采用WSDC2412D雙通道電機(jī)驅(qū)動(dòng)模塊驅(qū)動(dòng)四個(gè)獨(dú)立的直流減速電機(jī)控制輪式機(jī)器人運(yùn)動(dòng)。驅(qū)動(dòng)模塊內(nèi)部含兩個(gè)高電壓大電流的全橋式驅(qū)動(dòng)器,兩個(gè)通道都能夠允許通過(guò)12 A的持續(xù)電流和峰值電流能夠達(dá)到70 A。驅(qū)動(dòng)器內(nèi)部各個(gè)器件模塊時(shí)序高度優(yōu)化,可調(diào)節(jié)的PWM范圍較大,PWM輸入脈寬可低至2 us[3]。板載過(guò)熱、過(guò)壓、欠壓保護(hù)電路,內(nèi)部結(jié)構(gòu)簡(jiǎn)圖如圖4所示,降低驅(qū)動(dòng)器在高溫高壓等異常工作情況下短路甚至燒毀的可能性,狀態(tài)指示燈實(shí)時(shí)顯示驅(qū)動(dòng)器運(yùn)行狀態(tài)。

圖4 驅(qū)動(dòng)器內(nèi)部結(jié)構(gòu)簡(jiǎn)圖
邏輯部分的控制信號(hào)均進(jìn)行電氣隔離,充分兼容單片機(jī)3~5 V的電壓輸入,顯著增強(qiáng)了單片機(jī)電路的安全性;驅(qū)動(dòng)模塊供電范圍Vs為6~28 V,功率電源電流最大值為24 A,支持7~24 V供電級(jí)別減速電機(jī)。INAx、INBx為邏輯輸入端,x對(duì)應(yīng)1或2兩個(gè)通道號(hào),引腳的輸入電平標(biāo)準(zhǔn)的邏輯級(jí)別,不受其他信號(hào)干擾。通過(guò)改變STM32單片機(jī)引腳輸出的邏輯,電平可控制電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)以及制動(dòng),輸入信號(hào)懸空時(shí)為高電平狀態(tài)。
麥克納姆輪由Mecanum AB公司的瑞典科學(xué)家Bengt Erland IIon于上世紀(jì)70年代發(fā)明,目前被廣泛應(yīng)用于物流倉(cāng)儲(chǔ)自動(dòng)化、自動(dòng)化工廠和智能泊車設(shè)備等。輪子主要由輪轂、輥?zhàn)雍洼佔(zhàn)虞S構(gòu)成[4],輪轂是支撐架,輥?zhàn)友嘏c輪轂夾角45°的方向平行排列,所有輪子均為主動(dòng)輪,當(dāng)輪轂沿同一方向轉(zhuǎn)動(dòng),輥?zhàn)优c地面產(chǎn)生的摩擦力與輪轂滾動(dòng)方向相反,阻礙輪轂的轉(zhuǎn)動(dòng)。
移動(dòng)機(jī)器人的工作狀態(tài),主要是由WSDC2412D雙通道驅(qū)動(dòng)模塊驅(qū)動(dòng)四個(gè)直流減速電機(jī)結(jié)合麥克納姆輪組合成的運(yùn)動(dòng)執(zhí)行機(jī)構(gòu)決定,根據(jù)對(duì)四個(gè)輪子的協(xié)調(diào)控制能夠?qū)崿F(xiàn)前進(jìn)后退、左右平移、斜移、順時(shí)針或逆時(shí)針自轉(zhuǎn)等多種運(yùn)動(dòng)方式。

圖5 輪式機(jī)器人示意圖
圖5為輪式機(jī)器人示意圖,輪的滾動(dòng)帶動(dòng)機(jī)器人移動(dòng)規(guī)則如下:
當(dāng)四個(gè)輪均向正向轉(zhuǎn)動(dòng)時(shí),機(jī)器人將向前移動(dòng);
當(dāng)四個(gè)輪均向反向轉(zhuǎn)動(dòng)時(shí),機(jī)器人將向后移動(dòng);
當(dāng)左前輪1、右后輪4反向轉(zhuǎn)動(dòng),右前輪2、左后輪3正向轉(zhuǎn)動(dòng),機(jī)器人將向左移;
當(dāng)右前輪2、左后輪3反向轉(zhuǎn)動(dòng),左前輪1、右后輪4正向轉(zhuǎn)動(dòng),機(jī)器人將向右移;
當(dāng)左前輪1、左后輪3反向轉(zhuǎn)動(dòng),右前輪2、右后輪4正向轉(zhuǎn)動(dòng),機(jī)器人將逆時(shí)針自轉(zhuǎn);
當(dāng)右前輪2、右后輪4反向轉(zhuǎn)動(dòng),左前輪1、左后輪3正向轉(zhuǎn)動(dòng),機(jī)器人將順時(shí)針自轉(zhuǎn);
當(dāng)左前輪1、右后輪4正向轉(zhuǎn)動(dòng),右前輪2、左后輪3不動(dòng)時(shí),機(jī)器人將向右上移動(dòng);
當(dāng)左前輪1、右后輪4反向轉(zhuǎn)動(dòng),右前輪2、左后輪3不動(dòng)時(shí),機(jī)器人將向左下移動(dòng);
當(dāng)右前輪2、左后輪3正向轉(zhuǎn)動(dòng),左前輪1、右后輪4不動(dòng)時(shí),機(jī)器人將向左上移動(dòng);
當(dāng)右前輪2、左后輪3反向轉(zhuǎn)動(dòng),左前輪1、右后輪4不動(dòng)時(shí),機(jī)器人將向右下移動(dòng)。
機(jī)器人要完成多種運(yùn)動(dòng)方式以及速度控制主要通過(guò)讀取PS2手柄發(fā)送的按鍵信息或者遙控信息,如無(wú)線手柄負(fù)責(zé)傳輸按鍵信息,無(wú)線接收器與STM32單片機(jī)相連,用于接收手柄的信息;當(dāng)單片機(jī)接收到手柄信息后將發(fā)送設(shè)定的控制信息至電機(jī)驅(qū)動(dòng)器,從而驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)帶動(dòng)麥克納姆輪實(shí)現(xiàn)機(jī)器人的多方位運(yùn)動(dòng)。
PS2的信號(hào)接收器一共有9個(gè)引腳,對(duì)照實(shí)物圖引腳分配從左往右依次為DI/DAT、DO/CMD、空端口、GND、VDD、CS/SEL、CLK、空端口和ACK。DI/DAT和DO/CMD引腳分別是手柄到單片機(jī)、單片機(jī)到手柄的流向端口,屬于全雙工通信模式。CS/SEL引腳提供手柄觸發(fā)信號(hào),在正常通信過(guò)程中置于低電平。
PS2通信具體流程:在CS觸發(fā)信號(hào)發(fā)生時(shí),手柄開(kāi)始進(jìn)入通信狀態(tài),CS拉低電平,在完整8 bit數(shù)據(jù)通信完成之后轉(zhuǎn)高電平。CLK時(shí)鐘信號(hào)為下降沿是進(jìn)行數(shù)據(jù)收發(fā),上升沿DI/DO數(shù)據(jù)存在交叉現(xiàn)象,數(shù)據(jù)不穩(wěn)定。當(dāng)STM32讀取手柄的按鍵信息時(shí),首先將CS的電平置為低電平并發(fā)送“0x01”命令,手柄將發(fā)送相應(yīng)ID信息即“0x41為綠燈模式,0x73為紅燈模式”;同時(shí),控制板將發(fā)送“0x42”的請(qǐng)求數(shù)據(jù)的命令,隨后手柄發(fā)送“0X5A”[5]作為應(yīng)答信號(hào),此時(shí)單片機(jī)開(kāi)始接收數(shù)據(jù),本系統(tǒng)可以分別通過(guò)按鍵和遙桿對(duì)移動(dòng)機(jī)器人的運(yùn)動(dòng)方式、運(yùn)動(dòng)的速度進(jìn)行控制。
由于全向移動(dòng)機(jī)器人需要實(shí)現(xiàn)工作的環(huán)境和條件復(fù)雜多變,在運(yùn)動(dòng)的過(guò)程中電機(jī)轉(zhuǎn)速控制顯得尤為重要,誤差分析和優(yōu)化處理必不可少。本文采用PID調(diào)節(jié)方式來(lái)對(duì)機(jī)器人運(yùn)動(dòng)狀態(tài)調(diào)整,傳統(tǒng)的PID算法結(jié)構(gòu)框如圖6所示,PID算法精確能夠滿足相當(dāng)多的工業(yè)對(duì)象控制要求,尤其適用于可建立精確模型的確定性系統(tǒng),該算法操作簡(jiǎn)單、魯棒性強(qiáng)、可靠性高、實(shí)用性強(qiáng)。PID控制器用于范圍廣泛的問(wèn)題:過(guò)程控制、電機(jī)驅(qū)動(dòng)、磁性和光學(xué)記憶、汽車、飛行控制、儀器儀表、控制器等有多種不同的形式。

圖6 傳統(tǒng)PID算法框圖
采用增量式PID控制算法相較于位置式PID算法主要是因?yàn)闆](méi)有誤差累積現(xiàn)象,控制增量ΔU(k)與本次采樣值、上兩次采樣值均相關(guān)。由于控制增量ΔU(k)只和三次采樣相關(guān),可以縮短故障點(diǎn)范圍。在控制過(guò)程中存在手動(dòng)與自動(dòng)相互切換時(shí)對(duì)應(yīng)沖擊小,基本上可以做到無(wú)干擾切換。
在實(shí)現(xiàn)閉環(huán)轉(zhuǎn)速控制過(guò)程中,主要使用增量式PID算法對(duì)給定速度與編碼器測(cè)得的實(shí)際速度值進(jìn)行處理,得出控制量,有著高效、響應(yīng)快、誤差小的特性。轉(zhuǎn)速控制PID算法控制流程為預(yù)設(shè)的目標(biāo)轉(zhuǎn)速值與通過(guò)霍爾編碼器測(cè)得的實(shí)際轉(zhuǎn)速進(jìn)行比較,計(jì)算出誤差e(k)。根據(jù)增量式PID運(yùn)算公式計(jì)算出控制增量ΔU(k),再和U(k)相加得出控制輸出量,控制算法如下式[6]:

式(1)中:e(k)代表本次偏差;e(k-1)代表上次偏差;e(k-2)代表上上次偏差;Kp代表比例系數(shù),Ki代表積分系數(shù);Kd代表微分系數(shù)。
系統(tǒng)程序采用模塊化編程思想,將初始化配置、電機(jī)驅(qū)動(dòng)、無(wú)線遙控等程序進(jìn)行封裝,在編寫(xiě)程序過(guò)程中只需調(diào)用即可,便于測(cè)試過(guò)程中能夠高效地解決問(wèn)題且移植性能好,可縮短開(kāi)發(fā)周期。
系統(tǒng)上電后,STM32單片機(jī)初始化,串口中斷以及定時(shí)器初始化,電機(jī)驅(qū)動(dòng)子程序、無(wú)線遙控子程序完成初始化,圖7為系統(tǒng)主程序設(shè)計(jì)。移動(dòng)機(jī)器人有按鍵和遙桿兩種模式,遙控手柄啟動(dòng)后與接收器信號(hào)相通,默認(rèn)配置為按鍵模式。每個(gè)按鍵鍵值傳輸給單片機(jī)處理后發(fā)送到電機(jī)驅(qū)動(dòng)模塊,電機(jī)驅(qū)動(dòng)模塊驅(qū)動(dòng)電機(jī)實(shí)現(xiàn)不同的正反轉(zhuǎn)狀態(tài),組成多種運(yùn)動(dòng)模式。

圖7 系統(tǒng)主程序流程圖
電機(jī)子程序初始化完成后,根據(jù)給定的轉(zhuǎn)速輸出對(duì)應(yīng)的PWM波以及通過(guò)改變電機(jī)驅(qū)動(dòng)模塊對(duì)應(yīng)引腳的邏輯電平來(lái)實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)。采用霍爾式編碼器測(cè)速,程序內(nèi)部開(kāi)啟定時(shí)計(jì)數(shù)器在設(shè)定的時(shí)間內(nèi)捕獲輸出有效脈沖信號(hào)個(gè)數(shù)計(jì)算出電機(jī)轉(zhuǎn)動(dòng)速度,并通過(guò)增量式PID算法,將速度偏移量進(jìn)行補(bǔ)償形成閉環(huán)控制,圖8為電機(jī)驅(qū)動(dòng)電路子程序流程圖。

圖8 電機(jī)驅(qū)動(dòng)電路子程序流程圖
本文設(shè)計(jì)的以麥克納姆輪為驅(qū)動(dòng)輪的全向移動(dòng)機(jī)器人,可完成一般移動(dòng)機(jī)器人不能進(jìn)行的平移、斜移以及原地自轉(zhuǎn)等運(yùn)動(dòng),并且結(jié)合增量式PID控制算法保證了在運(yùn)動(dòng)過(guò)程中速度的穩(wěn)定。同時(shí),采用PS2無(wú)線遙控手柄發(fā)送指令進(jìn)行遠(yuǎn)程控制,機(jī)器人能夠在活動(dòng)范圍較窄、空間存在較多障礙物以及需要頻繁變換運(yùn)動(dòng)方向的工作場(chǎng)景中提高工作效率、降低時(shí)間成本。