何高清,賈辰昊,彭良霖
(合肥工業(yè)大學(xué) 機(jī)械工程學(xué)院,合肥 230009)
搬運(yùn)機(jī)器人是可以替代工人進(jìn)行自動(dòng)化搬運(yùn)的工業(yè)機(jī)器人,服務(wù)于各個(gè)行業(yè)的自動(dòng)化生產(chǎn)線。隨著各個(gè)行業(yè)的發(fā)展,搬運(yùn)機(jī)器人的需求日益增多,對(duì)其性能的靈活性和穩(wěn)定性也提出了越來(lái)越多的要求。所以設(shè)計(jì)一款兼?zhèn)溲b載量和運(yùn)載穩(wěn)定性的搬運(yùn)機(jī)器人,使搬運(yùn)機(jī)器人在裝載大容量貨物時(shí)有著優(yōu)良的穩(wěn)定性,對(duì)于提高搬運(yùn)效率、減輕工人勞作強(qiáng)度、減少生產(chǎn)成本有著重要的意義[1]。本文設(shè)計(jì)一個(gè)以STM32系列單片機(jī)作為主控芯片的搬運(yùn)機(jī)器人,遵循FreeRTOS 操作系統(tǒng)優(yōu)化任務(wù)調(diào)度算法,以CANopen協(xié)議基礎(chǔ)實(shí)現(xiàn)伺服通信,完善整個(gè)桶裝水系列生產(chǎn)線自動(dòng)化水平。
桶裝水搬運(yùn)機(jī)器人控制系統(tǒng)由多個(gè)硬件模塊組成,包括主控芯片模塊、電源模塊、存儲(chǔ)模塊、CAN通信模塊、RS485通信模塊、輸入和輸出模塊[2]。
主控芯片采用STM32F405RGT6,主要負(fù)責(zé)處理數(shù)據(jù),執(zhí)行控制程序;電源模塊外接24 V直流電源,根據(jù)模塊不同需求,對(duì)各模塊進(jìn)行供電;存儲(chǔ)模塊通過(guò)外部Flash進(jìn)行系統(tǒng)參數(shù)的讀取和保存;CAN通信模塊實(shí)現(xiàn)控制器與伺服驅(qū)動(dòng)器的通信,通過(guò)報(bào)文的傳輸進(jìn)而控制伺服電動(dòng)機(jī)的運(yùn)轉(zhuǎn);RS485通信模塊實(shí)現(xiàn)控制器與觸摸屏的通信,實(shí)現(xiàn)人機(jī)交互;輸入模塊負(fù)責(zé)接收開(kāi)關(guān)、行程按鈕、模式按鈕信號(hào),傳輸給主控芯片,實(shí)現(xiàn)功能的調(diào)度;輸出模塊通過(guò)控制繼電器的關(guān)斷實(shí)現(xiàn)氣缸的伸縮,系統(tǒng)正常運(yùn)行時(shí),控制運(yùn)行燈閃爍,產(chǎn)生報(bào)警故障時(shí),閃爍故障燈來(lái)提醒操作人員。系統(tǒng)總體硬件設(shè)計(jì)如圖1所示。
圖1 總硬件設(shè)計(jì)結(jié)構(gòu)圖
桶裝水搬運(yùn)機(jī)器人控制系統(tǒng)軟件部分主要由FreeRTOS操作系統(tǒng)、驅(qū)動(dòng)器驅(qū)動(dòng)程序及系統(tǒng)應(yīng)用程序組成。系統(tǒng)開(kāi)始運(yùn)行,首先進(jìn)行系統(tǒng)初始化,從外部存儲(chǔ)器讀取保存的參數(shù),并檢查系統(tǒng)是否出現(xiàn)故障;當(dāng)選擇自動(dòng)模式時(shí),機(jī)構(gòu)按照預(yù)設(shè)程序進(jìn)行搬運(yùn)工作;選擇手動(dòng)模式時(shí),可自行控制機(jī)構(gòu)運(yùn)行;對(duì)于重新輸入的系統(tǒng)參數(shù),系統(tǒng)也會(huì)自動(dòng)保存[3]。相應(yīng)程序流程如圖2所示。
圖2 系統(tǒng)總體軟件設(shè)計(jì)
FreeRTOS是實(shí)時(shí)型操作系統(tǒng),相較于傳統(tǒng)裸機(jī)控制,它把控制系統(tǒng)的各種功能轉(zhuǎn)化為任務(wù)的形式,當(dāng)系統(tǒng)需要執(zhí)行某種功能時(shí),則進(jìn)行任務(wù)調(diào)度,合理的任務(wù)調(diào)度規(guī)劃可使控制系統(tǒng)的執(zhí)行效率更高、安全性更好[4]。
FreeRTOS對(duì)于同一優(yōu)先級(jí)任務(wù)的調(diào)用會(huì)提供一個(gè)固定的時(shí)間片,為了保證系統(tǒng)的實(shí)時(shí)性,所設(shè)時(shí)間片通常都小于1 ms,通常無(wú)法滿足任務(wù)處理所需的時(shí)間,系統(tǒng)對(duì)任務(wù)進(jìn)行頻繁切換。當(dāng)同優(yōu)先級(jí)的任務(wù)數(shù)量較多時(shí),會(huì)造成系統(tǒng)的處理效率降低[5]。
為了彌補(bǔ)同優(yōu)先級(jí)任務(wù)調(diào)度的不足,引進(jìn)了最短時(shí)間任務(wù)調(diào)度算法,其核心算法思想是對(duì)于同優(yōu)先級(jí)任務(wù),任務(wù)執(zhí)行時(shí)間長(zhǎng)短決定任務(wù)的調(diào)用順序,時(shí)間越短的任務(wù)優(yōu)先調(diào)用。短任務(wù)優(yōu)先調(diào)用減少了系統(tǒng)任務(wù)的平均周轉(zhuǎn)時(shí)間,在相同的時(shí)間內(nèi)系統(tǒng)可以處理更多的任務(wù),提高執(zhí)行效率。同時(shí),最短時(shí)間任務(wù)調(diào)度算法也有相應(yīng)缺點(diǎn),同優(yōu)先級(jí)的長(zhǎng)任務(wù)會(huì)一直得不到CPU資源,被“餓死”[6]。
為了彌補(bǔ)不足,對(duì)調(diào)度算法做了改進(jìn),不同優(yōu)先級(jí)仍采用優(yōu)先級(jí)搶占調(diào)度算法,對(duì)于相同優(yōu)先級(jí)任務(wù),在原有基礎(chǔ)上,引入“最短時(shí)間閾值”概念,該變量為同優(yōu)先級(jí)短時(shí)間任務(wù)獨(dú)有,每當(dāng)短時(shí)間任務(wù)調(diào)度完成,會(huì)對(duì)該值加1,每當(dāng)長(zhǎng)時(shí)間任務(wù)調(diào)度完成,會(huì)對(duì)短時(shí)間任務(wù)閾值減2,當(dāng)短時(shí)間任務(wù)閾值到達(dá)一定值,會(huì)提醒CPU優(yōu)先執(zhí)行長(zhǎng)時(shí)間任務(wù),這樣長(zhǎng)時(shí)間任務(wù)也會(huì)得到合理的CPU資源。把改進(jìn)后的算法稱為最短時(shí)間閾值任務(wù)調(diào)度算法。最短時(shí)間閾值任務(wù)調(diào)度算法流程如圖3所示。
圖3 最短時(shí)間閾值任務(wù)調(diào)度算法時(shí)序圖
系統(tǒng)應(yīng)用程序由多任務(wù)組成,包括LED工作燈任務(wù)、系統(tǒng)參數(shù)的讀取和輸入任務(wù)、機(jī)構(gòu)控制任務(wù)、人機(jī)交互界面通信任務(wù)、伺服驅(qū)動(dòng)器CAN通信、I/O輸入檢測(cè)、軌跡規(guī)劃任務(wù)及傳感器檢測(cè)任務(wù)等,根據(jù)任務(wù)調(diào)用頻率和重要性,劃分不同優(yōu)先級(jí)[7]。具體任務(wù)優(yōu)先級(jí)和功能介紹如表1所示。
表1 搬運(yùn)機(jī)器人程序任務(wù)分配
搬運(yùn)機(jī)器人是一個(gè)直角坐標(biāo)機(jī)器人,具體結(jié)構(gòu)如圖4所示。以搬運(yùn)小車(chē)移動(dòng)方向?yàn)閄軸,以縱梁沿移動(dòng)小車(chē)上下移動(dòng)方向?yàn)閅軸,以?shī)A爪沿縱梁移動(dòng)方向?yàn)閆軸。
圖4 搬運(yùn)機(jī)器人結(jié)構(gòu)圖
在搬運(yùn)碼垛過(guò)程中,工人會(huì)按照一定方式進(jìn)行桶裝水碼垛,保證堆放的桶裝水不會(huì)傾斜掉落,本文采取桶裝水碼垛方式如圖5所示。從圖5可以看出,第1層桶裝水列與列之間交錯(cuò)堆放,且桶和桶之間緊密相連;通過(guò)第1層桶裝水的交錯(cuò)排列,桶口之間形成了一個(gè)三角空間,第2層的桶裝水則依次放置其中。這樣從里到外、從上到下地裝載,既保證了堆放結(jié)構(gòu)的穩(wěn)定性,也大大節(jié)省空間,盡可能多放桶裝水[8]。
圖5 桶裝水碼垛
圖6為桶裝水搬運(yùn)路徑規(guī)劃,圖6(a)中搬運(yùn)機(jī)器人的位置為起始位置,起始點(diǎn)的X軸位置與從輸送線取桶裝水的位置相同,并且?jiàn)A具在Y軸方向上的最低面要高于桶裝水的最高面。
圖6 搬運(yùn)路徑規(guī)劃
從初始位置沿著Y軸方向向下移動(dòng),使得夾爪到達(dá)可夾取位置,通過(guò)氣缸夾緊桶裝水,如圖6(b)所示。從輸送線上夾取到桶裝水后,沿著Y軸方向向上移動(dòng),使得桶裝水桶底的底面高于輸送線,如圖6(c)所示。再根據(jù)所需碼垛的層數(shù)調(diào)整Y軸方向的高度,沿橫梁X軸運(yùn)送到指定位置,如圖6(d)所示。
常見(jiàn)軌跡規(guī)劃算法包括梯形速度曲線、三次多項(xiàng)式曲線和五次多項(xiàng)式曲線等,通過(guò)比較速度和加速度曲線的平滑度、對(duì)末端執(zhí)行機(jī)構(gòu)的沖擊等,本文選用五次多項(xiàng)式曲線[9]。
位移計(jì)算公式為
對(duì)位移公式進(jìn)行求導(dǎo)可以得到速度公式為
對(duì)速度公式進(jìn)行求導(dǎo)可以得到加速度公式為
已知初始位置和速度和加速度、目標(biāo)位置和速度和加速度,有S(t0)=S0,S(tn)=Sn,V(t0)=V0,V(tn)=Vn,a(t0)=a0,a(tn)=an六個(gè)條件。取t0=0,tn=3,S0=0,Sn=100,V0=Vn=0,a0=an=0,分別計(jì)算出三次多項(xiàng)式的位移、速度、加速度方程:
通過(guò)MATLAB進(jìn)行曲線仿真繪制,得到的曲線如圖7所示,圖7(b)中當(dāng)速度達(dá)到峰值時(shí),圖7(c)加速度等于0,并在之后開(kāi)始減速,直至終點(diǎn)速度將為0,且圖7(c)中加速度曲線為連續(xù)曲線,沒(méi)有突變問(wèn)題,減少了搬運(yùn)機(jī)器人運(yùn)行時(shí)的沖擊振動(dòng),改善了其動(dòng)力學(xué)性能,符合其軌跡要求。
圖7 五次多項(xiàng)式曲線
設(shè)計(jì)搭建好控制系統(tǒng),調(diào)試運(yùn)動(dòng)控制器,檢測(cè)機(jī)構(gòu)運(yùn)行狀況及其誤差度。在已搭建好控制平臺(tái)的基礎(chǔ)上,用戶無(wú)需了解底層硬件的運(yùn)行,只需要通過(guò)觸摸屏進(jìn)行參數(shù)設(shè)置和模式選擇完成相應(yīng)的工作配置[10],即可實(shí)現(xiàn)對(duì)桶裝水搬運(yùn)機(jī)器人的控制。系統(tǒng)控制界面和工業(yè)參數(shù)界面如圖8所示,搬運(yùn)機(jī)器人實(shí)物如圖9所示,實(shí)驗(yàn)平臺(tái)如圖10所示。
圖8 控制主頁(yè)面和系統(tǒng)參數(shù)
圖9 搬運(yùn)機(jī)器人實(shí)物圖
圖10 實(shí)驗(yàn)平臺(tái)
為了進(jìn)一步驗(yàn)證系統(tǒng)的穩(wěn)定性和準(zhǔn)確性,在搬運(yùn)機(jī)器人平臺(tái)進(jìn)行測(cè)試,設(shè)定搬運(yùn)機(jī)器人起始坐標(biāo)為(0,0,0),目標(biāo)坐標(biāo)為(300,200,100),單位為cm。通過(guò)CAN分析儀截取運(yùn)行報(bào)文進(jìn)行分析,如圖11所示。
階段1,系統(tǒng)運(yùn)行模式默認(rèn)設(shè)為速度模式,處于使能狀態(tài),3個(gè)電動(dòng)機(jī)的當(dāng)前位置皆為零點(diǎn)。通過(guò)觸摸屏設(shè)置系統(tǒng)運(yùn)行模式為手動(dòng)模式,并設(shè)置目標(biāo)位置(300,200,100)。
階段2為插補(bǔ)模式運(yùn)行階段,圖中ID號(hào)為0×0201、0×0202、0×0203的報(bào)文分別代表三軸的數(shù)據(jù)報(bào)文,分析可得,數(shù)據(jù)位前兩個(gè)字節(jié)為當(dāng)前電動(dòng)機(jī)運(yùn)行位置,其值分別為0×55F0、0×3621、0×2114。
階段3為電動(dòng)機(jī)到達(dá)目標(biāo)位置階段,根據(jù)圖中ID號(hào)為0×0181、0×0182、0×0183的報(bào)文,分析可得,當(dāng)前三軸位置為0×0493E0、0×030D40、0×0186A0,十進(jìn)制轉(zhuǎn)換后為300000、200000、100000。轉(zhuǎn)換當(dāng)前位置為300、200、100 cm,由此可知電動(dòng)機(jī)已到達(dá)指定位置。
本文驗(yàn)證了自主研發(fā)的桶裝水搬運(yùn)機(jī)器人系統(tǒng),硬件采用模塊化結(jié)構(gòu),安全高效,具有較高的擴(kuò)展性,其上層應(yīng)用控制程序和底層通信程序的設(shè)計(jì)結(jié)構(gòu)層次分明,通過(guò)優(yōu)化的調(diào)度算法合理高效地調(diào)度應(yīng)用任務(wù),保證了程序的高效性和可靠性。在搬運(yùn)測(cè)試中,通過(guò)系統(tǒng)控制,搬運(yùn)機(jī)器人可以準(zhǔn)確到達(dá)設(shè)定的目標(biāo)位置,完成搬運(yùn)任務(wù),為工業(yè)搬運(yùn)機(jī)器人系統(tǒng)開(kāi)發(fā)提供了一種可靠、高效的參考依據(jù)。