趙藝兵,王振豪,倪銀堂,溫秀蘭,宋愛(ài)國(guó)
(1.南京工程學(xué)院 工業(yè)中心,江蘇 南京 211167;2.南京工程學(xué)院 自動(dòng)化學(xué)院,江蘇 南京 211167;3.東南大學(xué), 江蘇 南京 211196)
工業(yè)機(jī)器人作為《中國(guó)制造2025》重點(diǎn)發(fā)展的十大領(lǐng)域之一,已成為工業(yè)4.0 的重要標(biāo)志。由于其具有穩(wěn)定可靠,能在高危環(huán)境下作業(yè)等優(yōu)點(diǎn),已被廣泛應(yīng)用于汽車制造、激光焊接、激光切割以及航空航天等應(yīng)用領(lǐng)域。由此迫切需要培養(yǎng)工業(yè)機(jī)器人方向的應(yīng)用技術(shù)人才,以應(yīng)對(duì)中國(guó)制造產(chǎn)業(yè)技術(shù)進(jìn)步和產(chǎn)業(yè)升級(jí)帶來(lái)的對(duì)應(yīng)用技術(shù)人才的大量需求。為此,很多高校也相應(yīng)地增加了機(jī)器人實(shí)踐操作教學(xué)課程[1-2]。但是傳統(tǒng)機(jī)器人成本高、示教效率低,往往不能在短時(shí)間內(nèi)使眾多學(xué)生完成機(jī)器人編程實(shí)踐操作任務(wù)。為了解決上述問(wèn)題,迫切需要設(shè)計(jì)研發(fā)結(jié)構(gòu)簡(jiǎn)單、成本低、能夠?qū)崿F(xiàn)快速編程的示教教學(xué)機(jī)器人,以培養(yǎng)學(xué)生的實(shí)踐動(dòng)手能力和機(jī)器人駕馭能力[3]。文獻(xiàn)[4]介紹了一種基于按鍵和視頻監(jiān)控的機(jī)器人示教器,該示教器在獲取按鍵輸入后會(huì)執(zhí)行一個(gè)延時(shí)消抖機(jī)制,該機(jī)制會(huì)造成示教指令發(fā)送延時(shí)。針對(duì)輸入延時(shí)的問(wèn)題,文獻(xiàn)[5]提出了一種基于以太網(wǎng)和嵌入式Windows CE 的機(jī)器人示教器方案,該方案使用Windows CE 作為操作系統(tǒng)獲取用戶輸入,使用Socket 協(xié)議傳輸數(shù)據(jù),使得示教器的實(shí)時(shí)性得到了很大的提高,但是該示教器仍然使用示教點(diǎn)編程方式,還不能滿足需要快速編程的場(chǎng)合。還有一部分機(jī)器人采用離線編程方式,這種編程方式在電腦上搭建好虛擬模型環(huán)境后,可以實(shí)現(xiàn)機(jī)器人的快速編程[6],文獻(xiàn)[7]提出了一種基于Solidworks API 二次開(kāi)發(fā)函數(shù)及VC++編程語(yǔ)言的機(jī)器人離線編程系統(tǒng),使用Solidworks 可以實(shí)現(xiàn)快速的車間環(huán)境搭建,編程時(shí)可以使用VC++進(jìn)行機(jī)器人界面控制和快速精確的軌跡規(guī)劃,但是這種編程方式需要專業(yè)的人員才能夠進(jìn)行操作,無(wú)疑提高了生產(chǎn)成本。
為了解決機(jī)器人快速編程的問(wèn)題,本文設(shè)計(jì)了一種拖動(dòng)示教機(jī)器人系統(tǒng),該系統(tǒng)在設(shè)置好相關(guān)參數(shù)后只需根據(jù)上位機(jī)操作界面提示拖動(dòng)機(jī)械臂運(yùn)動(dòng)就可以對(duì)機(jī)器人進(jìn)行快速編程。
該系統(tǒng)由三個(gè)水平自由度和一個(gè)旋轉(zhuǎn)自由度構(gòu)成,機(jī)械結(jié)構(gòu)部分如圖1 所示。
圖1 系統(tǒng)機(jī)械結(jié)構(gòu)
水平自由度上實(shí)現(xiàn)拖動(dòng)示教功能,每個(gè)水平自由度安裝一個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)系統(tǒng)和一個(gè)位置采集系統(tǒng)。為了把每個(gè)自由度的轉(zhuǎn)動(dòng)慣量控制在最低范圍,在綜合考慮加工難度后,本設(shè)計(jì)把每個(gè)自由度的驅(qū)動(dòng)電機(jī)安放在上一個(gè)自由度的機(jī)械臂上面,把每個(gè)自由度的重心后移,從而在不增加機(jī)械制造難度的前提下實(shí)現(xiàn)了轉(zhuǎn)動(dòng)慣量的降低。
旋轉(zhuǎn)自由度由上位機(jī)控制,可以根據(jù)實(shí)際情況變換旋轉(zhuǎn)角度,進(jìn)而實(shí)現(xiàn)不同的功能。為了使機(jī)器人的末端執(zhí)行器輕量化并且有更好的適應(yīng)性,使用了3-D打印技術(shù),只需要很少的時(shí)間就能制造出工程需要的末端執(zhí)行器,可以大幅提高機(jī)器人針對(duì)不同工作場(chǎng)合的適應(yīng)能力。
機(jī)器人硬件由ESP8266、超高精度位置傳感器、步進(jìn)電機(jī)驅(qū)動(dòng)器、步進(jìn)電機(jī)和末端執(zhí)行器等組成,硬件結(jié)構(gòu)如圖2 所示。該機(jī)器人使用ESP8266 模組作為控制器,ESP8266 為超低功耗32 位RISC 處理器,內(nèi)部集成一個(gè)8 位模數(shù)轉(zhuǎn)換器,系統(tǒng)時(shí)鐘速度最高達(dá)160 MHz,支持Wi-Fi 協(xié)議棧,可以滿足機(jī)器人的所有計(jì)算任務(wù)和無(wú)線數(shù)據(jù)傳輸任務(wù)。該系統(tǒng)采用不同型號(hào)的57 系列步進(jìn)電機(jī)作為動(dòng)作執(zhí)行部件,配合使用改進(jìn)版128 細(xì)分DM542 步進(jìn)電機(jī)驅(qū)動(dòng)器,可以保證步進(jìn)電機(jī)運(yùn)行時(shí)的振動(dòng)噪聲在預(yù)期范圍以內(nèi),大幅提高控制精度。
圖2 系統(tǒng)硬件結(jié)構(gòu)
該機(jī)器人拖動(dòng)示教系統(tǒng)的軟件分為上位機(jī)軟件和下位機(jī)控制軟件兩部分。上位機(jī)軟件主要實(shí)現(xiàn)機(jī)器人的工作狀態(tài)控制、過(guò)程控制和修改必要運(yùn)行參數(shù)的功能,采用Python 語(yǔ)言編寫(xiě),主要由操作界面程序、通訊程序、數(shù)據(jù)解析程序、數(shù)據(jù)存儲(chǔ)程序以及數(shù)據(jù)庫(kù)接口構(gòu)成。操作界面主要由位置控制模塊、程序編輯模塊、程序傳輸模塊、拖動(dòng)示教模塊和電源管理模塊組成,主要實(shí)現(xiàn)操作人員與內(nèi)部程序的交互,操作人員可以在操作界面上通過(guò)點(diǎn)擊按鈕調(diào)用回調(diào)函數(shù)發(fā)送相應(yīng)的數(shù)據(jù)包到下位機(jī),控制其實(shí)現(xiàn)不同的功能和修改運(yùn)行參數(shù),在示教結(jié)束后上位機(jī)首先通過(guò)數(shù)據(jù)解析程序解析機(jī)器人上傳數(shù)據(jù)包的信息,然后通過(guò)數(shù)據(jù)存儲(chǔ)程序精簡(jiǎn)數(shù)據(jù)結(jié)構(gòu)后調(diào)用數(shù)據(jù)庫(kù)接口把信息保存到數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。
下位機(jī)控制軟件采用MicroPython 語(yǔ)言編寫(xiě),主要分為示教程序和還原程序,上位機(jī)負(fù)責(zé)這兩種狀態(tài)之間的切換。在正常運(yùn)行時(shí)ESP8266 通過(guò)UDP 協(xié)議接收來(lái)自上位機(jī)的指令數(shù)據(jù)包,通過(guò)數(shù)據(jù)解析算法得到相應(yīng)執(zhí)行指令及其運(yùn)行參數(shù)。如果接收到執(zhí)行指令,ESP8266 會(huì)根據(jù)運(yùn)行參數(shù)使用控制算法控制步進(jìn)電機(jī)驅(qū)動(dòng)器,使步進(jìn)電機(jī)以一定的速度旋轉(zhuǎn)一定的角度;如果接收到示教指令,ESP8266 會(huì)通過(guò)A/D 轉(zhuǎn)換器得到位置傳感器的數(shù)據(jù)并使用位置混合數(shù)據(jù)濾波算法進(jìn)行預(yù)處理,然后保存到Flash 中,示教結(jié)束后會(huì)把示教結(jié)果上傳到上位機(jī)進(jìn)行處理并保存。
傳統(tǒng)滑動(dòng)平均濾波器[8]因在空間和時(shí)間的復(fù)雜度比較低,且能夠有效抑制連續(xù)的白噪聲信號(hào)而得到較多應(yīng)用[9],但是當(dāng)信號(hào)有突變時(shí)濾波效果不佳。為了解決采集數(shù)據(jù)波動(dòng)帶來(lái)的問(wèn)題,本文提出了一種基于平均值濾波器和滑動(dòng)平均濾波器相結(jié)合的混合濾波方法,實(shí)現(xiàn)思路是在采集某點(diǎn)數(shù)據(jù)時(shí)先采集該點(diǎn)的多組數(shù)據(jù),應(yīng)用平均值濾波器得到一個(gè)相對(duì)準(zhǔn)確的數(shù)據(jù)值,然后將這個(gè)數(shù)據(jù)值送入滑動(dòng)平均濾波器得到該點(diǎn)的最終數(shù)據(jù),其原理表示如下:
式中,y 為輸出信號(hào)值,x 為輸入信號(hào)值,i 為輸入數(shù)據(jù)下標(biāo),N 為采集數(shù)據(jù)總數(shù),n 為經(jīng)過(guò)平均濾波后的數(shù)據(jù)下標(biāo),k 為中間運(yùn)算變量,M 為滑動(dòng)數(shù)據(jù)窗口的寬度。
本設(shè)計(jì)由ESP8266 為步進(jìn)電機(jī)驅(qū)動(dòng)器提供三路驅(qū)動(dòng)脈沖、驅(qū)動(dòng)方向信號(hào)和使能控制信號(hào),控制三個(gè)自由度的機(jī)械臂同時(shí)運(yùn)動(dòng)。現(xiàn)階段控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的方法大部分是使用主控芯片的內(nèi)部定時(shí)中斷來(lái)產(chǎn)生驅(qū)動(dòng)脈沖信號(hào)[10-11],但是ESP8266 的定時(shí)中斷只有一個(gè),按照文獻(xiàn)[12]中的控制算法只能控制一個(gè)步進(jìn)電機(jī)的運(yùn)行,無(wú)法滿足本設(shè)計(jì)的控制要求,所以本文提出了一種基于系統(tǒng)運(yùn)行時(shí)間控制脈沖信號(hào)輸出的方法實(shí)現(xiàn)三路脈沖的同步輸出。
在還原示教動(dòng)作前,ESP8266 首先需要將三個(gè)自由度的示教數(shù)據(jù)加載到內(nèi)存,初始化每個(gè)自由度的數(shù)據(jù)寄存器、GPIO 引腳并計(jì)算第一次脈沖輸出時(shí)的系統(tǒng)時(shí)間,然后ESP8266 會(huì)進(jìn)入還原示教動(dòng)作的循環(huán)。為了在循環(huán)中提高動(dòng)作還原精度,該系統(tǒng)在動(dòng)作還原時(shí)使用ESP8266 內(nèi)部集成的一個(gè)8 位A/D 轉(zhuǎn)換器采集位置傳感器的實(shí)時(shí)數(shù)據(jù),并不斷比較控制偏差,構(gòu)成一個(gè)閉環(huán)控制系統(tǒng),控制系統(tǒng)結(jié)構(gòu)如圖3 所示。
圖3 控制系統(tǒng)結(jié)構(gòu)圖
在循環(huán)中ESP8266 會(huì)根據(jù)示教數(shù)據(jù)和控制偏差計(jì)算每個(gè)自由度下一次脈沖信號(hào)的輸出時(shí)間,隨著系統(tǒng)時(shí)間的增加,ESP8266 不斷輸出每個(gè)自由度步進(jìn)電機(jī)的控制信號(hào),直到完成示教動(dòng)作,程序流程如圖4 所示。
圖4 動(dòng)作還原程序流程圖
在實(shí)際應(yīng)用中,通常要通過(guò)上位機(jī)直接控制機(jī)械臂運(yùn)動(dòng)。為了避免機(jī)器人在啟動(dòng)和停止時(shí)產(chǎn)生機(jī)械振動(dòng),該系統(tǒng)采用基于系統(tǒng)時(shí)間實(shí)現(xiàn)的S 曲線來(lái)控制步進(jìn)電機(jī)的變速過(guò)程,實(shí)驗(yàn)表明S 曲線的加減速方法能夠保證速度、加速度的連續(xù),有效抑制步進(jìn)電機(jī)的失步和機(jī)械振動(dòng)。該控制方法沒(méi)有采用常用的分段控制方式[13],而是由式(2)生成的S 曲線控制。
式中, fout為輸出頻率,Exp 為指數(shù)函數(shù), fmax為最大運(yùn)行頻率,in、b 和a 分別為系統(tǒng)時(shí)間變量、時(shí)間系數(shù)和時(shí)間修正系數(shù)。當(dāng)in=0 時(shí),設(shè) f0是電機(jī)的初始運(yùn)行頻率,則有
由式(3)可以反推求出a 與 f0、 fmax之間的關(guān)系:
由式(4)即可根據(jù)初始運(yùn)行頻率和最大運(yùn)行頻率求出系統(tǒng)時(shí)間修正系數(shù)的值,最后由
可得到對(duì)應(yīng)時(shí)刻的脈沖輸出周期。
在步進(jìn)電機(jī)啟動(dòng)時(shí),先給步進(jìn)電機(jī)一個(gè)啟動(dòng)脈沖,同時(shí)記錄系統(tǒng)時(shí)間,然后根據(jù)脈沖周期曲線得出脈沖延時(shí)時(shí)間,加上第1 個(gè)脈沖的系統(tǒng)時(shí)間后得到下次脈沖輸出時(shí)的系統(tǒng)時(shí)間;當(dāng)發(fā)出第2 個(gè)脈沖時(shí),計(jì)算出下一次脈沖輸出的系統(tǒng)時(shí)間;這樣循環(huán)執(zhí)行,步進(jìn)電機(jī)就會(huì)根據(jù)脈沖周期曲線一直加速運(yùn)行到勻速階段。步進(jìn)電機(jī)減速階段的實(shí)現(xiàn)思路與加速階段類似,只需要逆向查詢脈沖周期曲線即可實(shí)現(xiàn)步進(jìn)電機(jī)的減速過(guò)程。
為了驗(yàn)證本設(shè)計(jì)的可行性,根據(jù)上述設(shè)計(jì)制作出了機(jī)器人原型系統(tǒng)平臺(tái)如圖5 所示,上位機(jī)界面如圖6所示。
圖5 機(jī)器人原型系統(tǒng)
圖6 上位機(jī)界面
上位機(jī)支持手動(dòng)示教和拖動(dòng)示教兩種編程方式,手動(dòng)示教用于完成示教點(diǎn)少的機(jī)器人高精度編程任務(wù),拖動(dòng)示教用于完成示教點(diǎn)多的復(fù)雜編程任務(wù)。在上位機(jī)界面中手動(dòng)示教單元由位置控制模塊、程序傳輸模塊和程序編輯模塊組成。在手動(dòng)示教時(shí),可以通過(guò)調(diào)節(jié)滑條上滑塊的位置來(lái)改變機(jī)器人的位姿;機(jī)器人位姿調(diào)整完成后可以通過(guò)點(diǎn)擊程序傳輸模塊的“記錄位置”按鈕把機(jī)器人目前的位姿直接插入到程序編輯窗口;本系統(tǒng)的示教程序格式統(tǒng)一為“指令:參數(shù)”格式,每條程序以分號(hào)結(jié)尾;示教過(guò)程結(jié)束后,可以通過(guò)點(diǎn)擊“執(zhí)行程序”按鈕讓機(jī)器人執(zhí)行程序編輯窗口中的示教程序。拖動(dòng)示教功能由拖動(dòng)示教模塊實(shí)現(xiàn),點(diǎn)擊“開(kāi)始示教”按鈕后,機(jī)器人開(kāi)始使用混合濾波器處理并記錄示教數(shù)據(jù);示教完成后通過(guò)點(diǎn)擊“停止示教”按鈕停止示教操作,接著可以點(diǎn)擊程序傳輸模塊的“上傳程序”按鈕把示教數(shù)據(jù)插入程序編輯窗口進(jìn)行相應(yīng)處理。對(duì)機(jī)器人原型系統(tǒng)采集數(shù)據(jù)的分析結(jié)果表明,采用上文提出的混合濾波方法可以準(zhǔn)確有效地記錄位置傳感器的數(shù)據(jù),數(shù)據(jù)曲線如圖7 所示,可以明顯看出采用混合濾波方法采集的數(shù)據(jù)非常接近預(yù)期數(shù)據(jù),即使在50 ms 處原始數(shù)據(jù)出現(xiàn)了較大的數(shù)值波動(dòng),相比平均滑動(dòng)濾波器,本文提出的混合濾波器的采集值更加穩(wěn)定,這使得機(jī)器人在拖動(dòng)示教時(shí)采集的示教數(shù)據(jù)更加精確。
圖7 位置采集曲線
通過(guò)點(diǎn)擊拖動(dòng)示教模塊的“動(dòng)作還原”按鈕,機(jī)器人會(huì)還原示教動(dòng)作,為了測(cè)定動(dòng)作還原精度,在實(shí)際測(cè)試中采集了步進(jìn)電機(jī)運(yùn)行還原程序時(shí)位置傳感器的實(shí)時(shí)數(shù)據(jù),并將其與示教數(shù)據(jù)進(jìn)行比較,結(jié)果如圖8 所示,可見(jiàn)實(shí)時(shí)位置曲線始終在示教曲線周圍上下波動(dòng),說(shuō)明在動(dòng)作還原時(shí)閉環(huán)控制系統(tǒng)一直在修正運(yùn)行偏差,使還原動(dòng)作更接近示教動(dòng)作;實(shí)時(shí)位置曲線與示教數(shù)據(jù)曲線重合,說(shuō)明動(dòng)作還原時(shí)機(jī)器人的動(dòng)作重現(xiàn)了示教動(dòng)作,驗(yàn)證了示教動(dòng)作還原算法的正確性。
圖8 動(dòng)作還原比較結(jié)果
針對(duì)現(xiàn)有教學(xué)機(jī)器人結(jié)構(gòu)復(fù)雜、成本高、編程示教復(fù)雜等問(wèn)題,本文設(shè)計(jì)完成了拖動(dòng)示教機(jī)器人機(jī)械結(jié)構(gòu)設(shè)計(jì)、硬件設(shè)計(jì)、上位機(jī)軟件和下位機(jī)控制軟件研發(fā)。為降低噪聲影響及使機(jī)器人運(yùn)動(dòng)更平穩(wěn),提出混合濾波方法、步進(jìn)電機(jī)位置還原算法及步進(jìn)電機(jī)S曲線控制算法,并應(yīng)用于該機(jī)器人控制程序中。經(jīng)機(jī)器人原型系統(tǒng)設(shè)計(jì)制造及實(shí)驗(yàn)研究,證實(shí)了使用該機(jī)器人上位機(jī)拖動(dòng)示教不僅大大簡(jiǎn)化了機(jī)器人編程的復(fù)雜度,提高了機(jī)器人編程效率,而且成本低廉,非常適于在自主創(chuàng)新實(shí)踐教學(xué)中推廣應(yīng)用。