胡碧康,張 丁,周麗紅,袁浥寧,左泓強(qiáng)
(武漢城市學(xué)院,湖北 武漢 430083)
通過(guò)對(duì)市面上大部分FDM 3D打印機(jī)進(jìn)行分析,可以看到普通3D打印機(jī)采用三軸結(jié)構(gòu)設(shè)計(jì),現(xiàn)有技術(shù)僅能在上一層材料的基礎(chǔ)上進(jìn)行堆疊,當(dāng)遇到懸臂結(jié)構(gòu)時(shí)必須打印額外的支撐結(jié)構(gòu)才能正常打印零件,且打印平臺(tái)面積較小,因此不適合大型復(fù)雜產(chǎn)品的生產(chǎn)。近年來(lái),多軸機(jī)械臂通過(guò)靈活的機(jī)動(dòng)性,可以實(shí)現(xiàn)噴涂、搬運(yùn)、加工等操作,在工業(yè)、醫(yī)療以至于軍事行業(yè)應(yīng)用越來(lái)越廣泛[1]。
開(kāi)發(fā)一款基于機(jī)械臂的六軸3D打印機(jī),把機(jī)械臂的機(jī)動(dòng)靈活與3D打印增材制造的特性融合起來(lái),突破3D打印對(duì)打印平臺(tái)、打印尺寸、打印結(jié)構(gòu)的限制。然而多角度打印時(shí),打印材料受力情況發(fā)生變化,不能沿用原3D打印機(jī)打印方法。
本文研究了機(jī)械臂在調(diào)整角度時(shí)的補(bǔ)償算法,通過(guò)改變擠出頭噴口方向從而給材料額外的力使其與上一層材料緊密結(jié)合,實(shí)現(xiàn)多角度打印。
噴頭在打印時(shí)將根據(jù)模型切片文件時(shí)規(guī)劃的路徑以及安裝在機(jī)械臂末端的各個(gè)傳感器所反饋出的數(shù)據(jù)進(jìn)行角度調(diào)整,因此其補(bǔ)償算法如下:
在某個(gè)時(shí)間點(diǎn)Tx上,電子羅盤(pán)值為YawCompassTx,陀螺儀值為YawGyroTx,融合后的數(shù)據(jù)為YawFuzeTx。
下一個(gè)時(shí)間點(diǎn)Tx+1,陀螺儀計(jì)算的角度變化為:
其中
K的取值范圍為[0.9,1),在T0時(shí)間點(diǎn)時(shí):
電子羅盤(pán):0°~360°的方位角,也稱(chēng)為yaw。角度為arctan2(y,x)。
這里我們引入兩個(gè)定義:
1)可達(dá)工作空間。至少?gòu)囊粋€(gè)方向可以到達(dá)的空間,可以放置末端執(zhí)行器的點(diǎn)的總位置。
2)靈巧工作空間。機(jī)器人末端執(zhí)行器能夠從各個(gè)方向到達(dá)的空間區(qū)域,在這個(gè)點(diǎn)上,可以以任意的姿態(tài)擺放機(jī)械臂。
如圖1所示,兩連桿的所有關(guān)節(jié)能旋轉(zhuǎn)360°,當(dāng)L1=L2時(shí),靈巧工作空間只有原點(diǎn)處單獨(dú)的一個(gè)點(diǎn),可達(dá)工作空間是半徑為L(zhǎng)1+L2的圓;當(dāng)L1≠L2時(shí)不存在靈巧工作空間,可達(dá)工作空間是外徑為L(zhǎng)1+L2,內(nèi)徑為|L1-L2|的圓環(huán)。因此靈巧工作空間是可達(dá)工作空間的子集。
圖1 兩軸機(jī)械臂
為了保證打印時(shí)材料堆疊點(diǎn)始終保持一致的同時(shí)減少因?yàn)楣ぷ鬏S旋轉(zhuǎn)帶來(lái)的誤差,在開(kāi)始打印前要對(duì)機(jī)械臂進(jìn)行工作空間轉(zhuǎn)換,即將坐標(biāo)從機(jī)械臂底座中心點(diǎn)轉(zhuǎn)移至噴口,由于機(jī)械臂的工具坐標(biāo)系原點(diǎn)默認(rèn)為A1軸法蘭盤(pán)中心,因此,首先要進(jìn)行工具坐標(biāo)系TCP的位置標(biāo)定。
控制工具末端點(diǎn)分別沿x方向和z方向移動(dòng)一定距離,工具末端點(diǎn)只在該方向上有移動(dòng),其他方向上無(wú)位移,同時(shí)固定初始姿態(tài)保持不變。實(shí)際操作上可以設(shè)置三個(gè)固定點(diǎn)(三個(gè)固定點(diǎn)滿(mǎn)足上述要求,點(diǎn)2和點(diǎn)3相對(duì)點(diǎn)1只有一個(gè)方向上的移動(dòng))如圖2所示,使工具末端點(diǎn)分別觸碰這三個(gè)點(diǎn)然后記錄下機(jī)械臂末端位姿。
圖2 TCP位置標(biāo)定
工具坐標(biāo)系{T}到基坐標(biāo)系{B}的位姿關(guān)系為:
標(biāo)定誤差為:
控制機(jī)械臂移動(dòng)工具從不同方位觸碰空間中某個(gè)固定點(diǎn),記錄N組數(shù)據(jù),其次進(jìn)行TCF姿態(tài)標(biāo)定,如圖3所示。
圖3 TCF位姿標(biāo)定
Xv為Z方向標(biāo)定點(diǎn)處工具坐標(biāo)系在+Z方向上的向量,Z軸相對(duì)于末端連桿坐標(biāo)系{E}的方向余弦為:
工具坐標(biāo)系{T}的Y軸相對(duì)于末端連桿坐標(biāo)系{E}的方向余弦為:
因x方向和z方向?yàn)槭窘桃苿?dòng)確定,無(wú)法保證兩個(gè)方向相互垂直,因此需要對(duì)其中一個(gè)軸(x或者z)進(jìn)行修正,確保坐標(biāo)系主矢量的正交性[2-4],此處調(diào)整z軸:
部分上位機(jī)及程序代碼如下:
Uint16 ServoPwmDuty[8]={1500,1500,1800,550,1500,1500,1600,1500};//PWM脈沖寬度
Uint16 ServoPwmDutySet[8]={1500,1500,1500,1500,1500,1500,1500,1500};//PWM脈沖寬度
float ServoPwmDutyInc[8];//為了速度控制,當(dāng)PWM脈寬發(fā)生變化時(shí)每2.5 ms或20 ms遞增的PWM脈寬
bool ServoPwmDutyHaveChange=FALSE;//脈寬有變化標(biāo)志位
uint16 ServoTime=2000;//舵機(jī)從當(dāng)前角度運(yùn)動(dòng)到指定角度的時(shí)間,也就是控制速度
Serve myservo[6];//create servo object to control a servo
void ServoSetPluseAndTime(uint8 id,uint16 p,uint16 time)
{
if(id>=0 && id<=7 && p>=500 && p<=2500)
{
if(time<20)
time=20;
if(time>30000)
time=30000;
ServoPwmDutySet[id]=p-ServoDeviation[id];
ServoPwmDutySet[id]=p;
ServoTime=time;
ServoPwmDutyHaveChange=TRUE;
}
}
按比例縮小制作了實(shí)物模型,如圖4、圖5所示。
圖4 六軸3D打印機(jī)模型
圖5 六軸3D打印機(jī)模型實(shí)物工作圖
通過(guò)研究多角度打印時(shí)機(jī)械臂末端角度調(diào)整補(bǔ)償算法,及機(jī)械臂末端打印噴頭的位置標(biāo)定方法,實(shí)現(xiàn)3D多角度打印。實(shí)驗(yàn)中通過(guò)調(diào)整噴頭溫度及擠出機(jī)速度,可以有效控制融化材料的凝固時(shí)間,實(shí)驗(yàn)結(jié)果表明非水平平面打印高溫材料凝固后與平面垂直打印材料凝固后并無(wú)區(qū)別。