趙藝兵,王振豪,倪銀堂,溫秀蘭,宋愛國
(1.南京工程學院 工業中心,江蘇 南京 211167;2.南京工程學院 自動化學院,江蘇 南京 211167;3.東南大學, 江蘇 南京 211196)
工業機器人作為《中國制造2025》重點發展的十大領域之一,已成為工業4.0 的重要標志。由于其具有穩定可靠,能在高危環境下作業等優點,已被廣泛應用于汽車制造、激光焊接、激光切割以及航空航天等應用領域。由此迫切需要培養工業機器人方向的應用技術人才,以應對中國制造產業技術進步和產業升級帶來的對應用技術人才的大量需求。為此,很多高校也相應地增加了機器人實踐操作教學課程[1-2]。但是傳統機器人成本高、示教效率低,往往不能在短時間內使眾多學生完成機器人編程實踐操作任務。為了解決上述問題,迫切需要設計研發結構簡單、成本低、能夠實現快速編程的示教教學機器人,以培養學生的實踐動手能力和機器人駕馭能力[3]。文獻[4]介紹了一種基于按鍵和視頻監控的機器人示教器,該示教器在獲取按鍵輸入后會執行一個延時消抖機制,該機制會造成示教指令發送延時。針對輸入延時的問題,文獻[5]提出了一種基于以太網和嵌入式Windows CE 的機器人示教器方案,該方案使用Windows CE 作為操作系統獲取用戶輸入,使用Socket 協議傳輸數據,使得示教器的實時性得到了很大的提高,但是該示教器仍然使用示教點編程方式,還不能滿足需要快速編程的場合。還有一部分機器人采用離線編程方式,這種編程方式在電腦上搭建好虛擬模型環境后,可以實現機器人的快速編程[6],文獻[7]提出了一種基于Solidworks API 二次開發函數及VC++編程語言的機器人離線編程系統,使用Solidworks 可以實現快速的車間環境搭建,編程時可以使用VC++進行機器人界面控制和快速精確的軌跡規劃,但是這種編程方式需要專業的人員才能夠進行操作,無疑提高了生產成本。
為了解決機器人快速編程的問題,本文設計了一種拖動示教機器人系統,該系統在設置好相關參數后只需根據上位機操作界面提示拖動機械臂運動就可以對機器人進行快速編程。
該系統由三個水平自由度和一個旋轉自由度構成,機械結構部分如圖1 所示。

圖1 系統機械結構
水平自由度上實現拖動示教功能,每個水平自由度安裝一個步進電機驅動系統和一個位置采集系統。為了把每個自由度的轉動慣量控制在最低范圍,在綜合考慮加工難度后,本設計把每個自由度的驅動電機安放在上一個自由度的機械臂上面,把每個自由度的重心后移,從而在不增加機械制造難度的前提下實現了轉動慣量的降低。
旋轉自由度由上位機控制,可以根據實際情況變換旋轉角度,進而實現不同的功能。為了使機器人的末端執行器輕量化并且有更好的適應性,使用了3-D打印技術,只需要很少的時間就能制造出工程需要的末端執行器,可以大幅提高機器人針對不同工作場合的適應能力。
機器人硬件由ESP8266、超高精度位置傳感器、步進電機驅動器、步進電機和末端執行器等組成,硬件結構如圖2 所示。該機器人使用ESP8266 模組作為控制器,ESP8266 為超低功耗32 位RISC 處理器,內部集成一個8 位模數轉換器,系統時鐘速度最高達160 MHz,支持Wi-Fi 協議棧,可以滿足機器人的所有計算任務和無線數據傳輸任務。該系統采用不同型號的57 系列步進電機作為動作執行部件,配合使用改進版128 細分DM542 步進電機驅動器,可以保證步進電機運行時的振動噪聲在預期范圍以內,大幅提高控制精度。

圖2 系統硬件結構
該機器人拖動示教系統的軟件分為上位機軟件和下位機控制軟件兩部分。上位機軟件主要實現機器人的工作狀態控制、過程控制和修改必要運行參數的功能,采用Python 語言編寫,主要由操作界面程序、通訊程序、數據解析程序、數據存儲程序以及數據庫接口構成。操作界面主要由位置控制模塊、程序編輯模塊、程序傳輸模塊、拖動示教模塊和電源管理模塊組成,主要實現操作人員與內部程序的交互,操作人員可以在操作界面上通過點擊按鈕調用回調函數發送相應的數據包到下位機,控制其實現不同的功能和修改運行參數,在示教結束后上位機首先通過數據解析程序解析機器人上傳數據包的信息,然后通過數據存儲程序精簡數據結構后調用數據庫接口把信息保存到數據庫中,實現數據存儲。
下位機控制軟件采用MicroPython 語言編寫,主要分為示教程序和還原程序,上位機負責這兩種狀態之間的切換。在正常運行時ESP8266 通過UDP 協議接收來自上位機的指令數據包,通過數據解析算法得到相應執行指令及其運行參數。如果接收到執行指令,ESP8266 會根據運行參數使用控制算法控制步進電機驅動器,使步進電機以一定的速度旋轉一定的角度;如果接收到示教指令,ESP8266 會通過A/D 轉換器得到位置傳感器的數據并使用位置混合數據濾波算法進行預處理,然后保存到Flash 中,示教結束后會把示教結果上傳到上位機進行處理并保存。
傳統滑動平均濾波器[8]因在空間和時間的復雜度比較低,且能夠有效抑制連續的白噪聲信號而得到較多應用[9],但是當信號有突變時濾波效果不佳。為了解決采集數據波動帶來的問題,本文提出了一種基于平均值濾波器和滑動平均濾波器相結合的混合濾波方法,實現思路是在采集某點數據時先采集該點的多組數據,應用平均值濾波器得到一個相對準確的數據值,然后將這個數據值送入滑動平均濾波器得到該點的最終數據,其原理表示如下:

式中,y 為輸出信號值,x 為輸入信號值,i 為輸入數據下標,N 為采集數據總數,n 為經過平均濾波后的數據下標,k 為中間運算變量,M 為滑動數據窗口的寬度。
本設計由ESP8266 為步進電機驅動器提供三路驅動脈沖、驅動方向信號和使能控制信號,控制三個自由度的機械臂同時運動?,F階段控制步進電機轉動的方法大部分是使用主控芯片的內部定時中斷來產生驅動脈沖信號[10-11],但是ESP8266 的定時中斷只有一個,按照文獻[12]中的控制算法只能控制一個步進電機的運行,無法滿足本設計的控制要求,所以本文提出了一種基于系統運行時間控制脈沖信號輸出的方法實現三路脈沖的同步輸出。
在還原示教動作前,ESP8266 首先需要將三個自由度的示教數據加載到內存,初始化每個自由度的數據寄存器、GPIO 引腳并計算第一次脈沖輸出時的系統時間,然后ESP8266 會進入還原示教動作的循環。為了在循環中提高動作還原精度,該系統在動作還原時使用ESP8266 內部集成的一個8 位A/D 轉換器采集位置傳感器的實時數據,并不斷比較控制偏差,構成一個閉環控制系統,控制系統結構如圖3 所示。

圖3 控制系統結構圖
在循環中ESP8266 會根據示教數據和控制偏差計算每個自由度下一次脈沖信號的輸出時間,隨著系統時間的增加,ESP8266 不斷輸出每個自由度步進電機的控制信號,直到完成示教動作,程序流程如圖4 所示。

圖4 動作還原程序流程圖
在實際應用中,通常要通過上位機直接控制機械臂運動。為了避免機器人在啟動和停止時產生機械振動,該系統采用基于系統時間實現的S 曲線來控制步進電機的變速過程,實驗表明S 曲線的加減速方法能夠保證速度、加速度的連續,有效抑制步進電機的失步和機械振動。該控制方法沒有采用常用的分段控制方式[13],而是由式(2)生成的S 曲線控制。

式中, fout為輸出頻率,Exp 為指數函數, fmax為最大運行頻率,in、b 和a 分別為系統時間變量、時間系數和時間修正系數。當in=0 時,設 f0是電機的初始運行頻率,則有

由式(3)可以反推求出a 與 f0、 fmax之間的關系:

由式(4)即可根據初始運行頻率和最大運行頻率求出系統時間修正系數的值,最后由

可得到對應時刻的脈沖輸出周期。
在步進電機啟動時,先給步進電機一個啟動脈沖,同時記錄系統時間,然后根據脈沖周期曲線得出脈沖延時時間,加上第1 個脈沖的系統時間后得到下次脈沖輸出時的系統時間;當發出第2 個脈沖時,計算出下一次脈沖輸出的系統時間;這樣循環執行,步進電機就會根據脈沖周期曲線一直加速運行到勻速階段。步進電機減速階段的實現思路與加速階段類似,只需要逆向查詢脈沖周期曲線即可實現步進電機的減速過程。
為了驗證本設計的可行性,根據上述設計制作出了機器人原型系統平臺如圖5 所示,上位機界面如圖6所示。

圖5 機器人原型系統

圖6 上位機界面
上位機支持手動示教和拖動示教兩種編程方式,手動示教用于完成示教點少的機器人高精度編程任務,拖動示教用于完成示教點多的復雜編程任務。在上位機界面中手動示教單元由位置控制模塊、程序傳輸模塊和程序編輯模塊組成。在手動示教時,可以通過調節滑條上滑塊的位置來改變機器人的位姿;機器人位姿調整完成后可以通過點擊程序傳輸模塊的“記錄位置”按鈕把機器人目前的位姿直接插入到程序編輯窗口;本系統的示教程序格式統一為“指令:參數”格式,每條程序以分號結尾;示教過程結束后,可以通過點擊“執行程序”按鈕讓機器人執行程序編輯窗口中的示教程序。拖動示教功能由拖動示教模塊實現,點擊“開始示教”按鈕后,機器人開始使用混合濾波器處理并記錄示教數據;示教完成后通過點擊“停止示教”按鈕停止示教操作,接著可以點擊程序傳輸模塊的“上傳程序”按鈕把示教數據插入程序編輯窗口進行相應處理。對機器人原型系統采集數據的分析結果表明,采用上文提出的混合濾波方法可以準確有效地記錄位置傳感器的數據,數據曲線如圖7 所示,可以明顯看出采用混合濾波方法采集的數據非常接近預期數據,即使在50 ms 處原始數據出現了較大的數值波動,相比平均滑動濾波器,本文提出的混合濾波器的采集值更加穩定,這使得機器人在拖動示教時采集的示教數據更加精確。

圖7 位置采集曲線
通過點擊拖動示教模塊的“動作還原”按鈕,機器人會還原示教動作,為了測定動作還原精度,在實際測試中采集了步進電機運行還原程序時位置傳感器的實時數據,并將其與示教數據進行比較,結果如圖8 所示,可見實時位置曲線始終在示教曲線周圍上下波動,說明在動作還原時閉環控制系統一直在修正運行偏差,使還原動作更接近示教動作;實時位置曲線與示教數據曲線重合,說明動作還原時機器人的動作重現了示教動作,驗證了示教動作還原算法的正確性。

圖8 動作還原比較結果
針對現有教學機器人結構復雜、成本高、編程示教復雜等問題,本文設計完成了拖動示教機器人機械結構設計、硬件設計、上位機軟件和下位機控制軟件研發。為降低噪聲影響及使機器人運動更平穩,提出混合濾波方法、步進電機位置還原算法及步進電機S曲線控制算法,并應用于該機器人控制程序中。經機器人原型系統設計制造及實驗研究,證實了使用該機器人上位機拖動示教不僅大大簡化了機器人編程的復雜度,提高了機器人編程效率,而且成本低廉,非常適于在自主創新實踐教學中推廣應用。