版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
工業(yè)機(jī)器人編程語言:URScript(UniversalRobots):UR機(jī)器人編程:坐標(biāo)系與工具定義1工業(yè)機(jī)器人編程語言:URScript(UniversalRobots)1.1URScript簡介1.1.1URScript語言概述URScript是UniversalRobots(UR)公司為UR系列協(xié)作機(jī)器人開發(fā)的一種專用編程語言。它允許用戶直接在UR機(jī)器人的控制面板上編寫和執(zhí)行程序,無需額外的編程環(huán)境或軟件。URScript的設(shè)計(jì)理念是簡單易用,同時(shí)提供強(qiáng)大的功能,以滿足工業(yè)自動(dòng)化的需求。URScript支持多種編程結(jié)構(gòu),包括循環(huán)、條件語句和函數(shù)定義,使得編寫復(fù)雜的機(jī)器人任務(wù)成為可能。1.1.2UR機(jī)器人編程環(huán)境UR機(jī)器人的編程環(huán)境主要通過其控制面板上的“示教器”(TeachPendant)進(jìn)行操作。示教器上有一個(gè)名為“URControlPanel”的軟件,它提供了圖形化的用戶界面,用于創(chuàng)建和編輯URScript程序。此外,UR還提供了“UR+”平臺(tái),這是一個(gè)包含各種軟件包和插件的生態(tài)系統(tǒng),可以擴(kuò)展UR機(jī)器人的功能,使其能夠執(zhí)行更復(fù)雜和特定的任務(wù)。1.1.3URScript與工業(yè)自動(dòng)化URScript在工業(yè)自動(dòng)化中的應(yīng)用廣泛,從簡單的點(diǎn)到點(diǎn)移動(dòng)到復(fù)雜的路徑規(guī)劃和外部設(shè)備的集成,URScript都能提供解決方案。例如,使用URScript,機(jī)器人可以被編程來執(zhí)行精確的裝配任務(wù),處理生產(chǎn)線上的物料,或者在制造環(huán)境中進(jìn)行質(zhì)量檢查。URScript還支持與外部傳感器和機(jī)器的通信,使得機(jī)器人能夠根據(jù)實(shí)時(shí)數(shù)據(jù)調(diào)整其行為,從而提高生產(chǎn)效率和靈活性。1.2URScript編程基礎(chǔ)1.2.1變量與數(shù)據(jù)類型URScript支持多種數(shù)據(jù)類型,包括整數(shù)、浮點(diǎn)數(shù)、字符串和布爾值。變量的聲明和使用類似于其他編程語言,但URScript有一些特定的變量類型,如關(guān)節(jié)位置(jointpositions)和TCP姿勢(toolcenterpointposes)。1.2.1.1示例代碼#定義一個(gè)整數(shù)變量
intmyInt=10;
#定義一個(gè)浮點(diǎn)數(shù)變量
floatmyFloat=3.14;
#定義一個(gè)字符串變量
stringmyString="Hello,UR!";
#定義一個(gè)關(guān)節(jié)位置變量
jointtargetmyJoint=[0,-1.57,0,-1.57,0,0];
#定義一個(gè)TCP姿勢變量
robtargetmyPose=[0,0,0,0,0,0,0];1.2.2控制結(jié)構(gòu)URScript支持基本的控制結(jié)構(gòu),如if語句和for循環(huán),這使得編寫復(fù)雜的邏輯和重復(fù)任務(wù)變得容易。1.2.2.1示例代碼#使用if語句
ifmyInt>5then
set_digital_out(1,True);
else
set_digital_out(1,False);
endif;
#使用for循環(huán)
foriinrange(0,10)do
set_analog_out(0,i/10);
sleep(1);
end;1.3URScript中的坐標(biāo)系與工具定義1.3.1坐標(biāo)系UR機(jī)器人支持多種坐標(biāo)系,包括世界坐標(biāo)系、基坐標(biāo)系、工具坐標(biāo)系和工件坐標(biāo)系。這些坐標(biāo)系的定義和使用對于精確控制機(jī)器人的運(yùn)動(dòng)至關(guān)重要。1.3.1.1世界坐標(biāo)系這是機(jī)器人安裝環(huán)境的全局坐標(biāo)系,通常與機(jī)器人的基座對齊。1.3.1.2基坐標(biāo)系基坐標(biāo)系是相對于機(jī)器人基座的坐標(biāo)系,用于定義機(jī)器人的運(yùn)動(dòng)起點(diǎn)。1.3.1.3工具坐標(biāo)系工具坐標(biāo)系(TCP)是相對于機(jī)器人末端執(zhí)行器的坐標(biāo)系,用于定義工具的中心點(diǎn)和姿態(tài)。1.3.1.4工件坐標(biāo)系工件坐標(biāo)系是相對于工件或工作區(qū)域的坐標(biāo)系,用于在特定的工件上進(jìn)行精確操作。1.3.2工具定義在URScript中,工具的定義涉及到TCP的設(shè)置,這包括TCP的位置和姿態(tài)。TCP的正確設(shè)置對于確保機(jī)器人在執(zhí)行任務(wù)時(shí)的精度和重復(fù)性至關(guān)重要。1.3.2.1示例代碼#定義工具坐標(biāo)系
toolcenterpointmyTool=[0,0,0,0,0,0];
#設(shè)置TCP
set_tool(myTool);1.4URScript中的運(yùn)動(dòng)指令URScript提供了豐富的運(yùn)動(dòng)指令,用于控制機(jī)器人的運(yùn)動(dòng)。這些指令包括線性運(yùn)動(dòng)、圓弧運(yùn)動(dòng)和關(guān)節(jié)運(yùn)動(dòng)。1.4.1線性運(yùn)動(dòng)線性運(yùn)動(dòng)指令moveL用于控制機(jī)器人沿直線路徑移動(dòng)到指定的TCP位置。1.4.1.1示例代碼#線性運(yùn)動(dòng)到指定位置
moveL(myPose,a=0.1,v=0.1,t=0,r=0);1.4.2圓弧運(yùn)動(dòng)圓弧運(yùn)動(dòng)指令moveC用于控制機(jī)器人沿圓弧路徑移動(dòng),通常用于需要平滑過渡的運(yùn)動(dòng)場景。1.4.2.1示例代碼#圓弧運(yùn)動(dòng)到指定位置,通過中間點(diǎn)
moveC(myPose,midPose,a=0.1,v=0.1,t=0,r=0);1.4.3關(guān)節(jié)運(yùn)動(dòng)關(guān)節(jié)運(yùn)動(dòng)指令moveJ用于控制機(jī)器人通過關(guān)節(jié)角度的改變來移動(dòng)到指定位置,通常用于快速但不精確的運(yùn)動(dòng)。1.4.3.1示例代碼#關(guān)節(jié)運(yùn)動(dòng)到指定位置
moveJ(myJoint,a=0.1,v=0.1,t=0,r=0);1.5URScript中的外部設(shè)備集成URScript支持與外部設(shè)備的集成,如傳感器、PLC和其他機(jī)器人。這通過使用URScript中的通信指令實(shí)現(xiàn),如set_digital_out和get_digital_in,用于控制和讀取數(shù)字I/O信號(hào)。1.5.1讀取外部傳感器數(shù)據(jù)1.5.1.1示例代碼#讀取數(shù)字輸入信號(hào)
boolsensorValue=get_digital_in(1);
#根據(jù)傳感器值控制機(jī)器人動(dòng)作
ifsensorValuethen
moveL(sensorPose,a=0.1,v=0.1,t=0,r=0);
else
moveJ(homeJoint,a=0.1,v=0.1,t=0,r=0);
endif;1.5.2控制外部設(shè)備1.5.2.1示例代碼#控制外部設(shè)備的數(shù)字輸出
set_digital_out(1,True);
sleep(1);
set_digital_out(1,False);1.6URScript中的高級(jí)功能URScript還提供了一些高級(jí)功能,如路徑規(guī)劃、碰撞檢測和實(shí)時(shí)數(shù)據(jù)處理,這些功能對于實(shí)現(xiàn)更復(fù)雜的自動(dòng)化任務(wù)至關(guān)重要。1.6.1路徑規(guī)劃URScript中的路徑規(guī)劃功能允許機(jī)器人在執(zhí)行任務(wù)時(shí)自動(dòng)計(jì)算最優(yōu)路徑,避免障礙物,確保安全和效率。1.6.2碰撞檢測碰撞檢測功能可以實(shí)時(shí)監(jiān)測機(jī)器人與周圍環(huán)境的接觸,防止機(jī)器人在操作過程中損壞自身或外部設(shè)備。1.6.3實(shí)時(shí)數(shù)據(jù)處理URScript支持實(shí)時(shí)數(shù)據(jù)處理,機(jī)器人可以根據(jù)從傳感器接收到的數(shù)據(jù)動(dòng)態(tài)調(diào)整其行為,實(shí)現(xiàn)更智能的自動(dòng)化。1.7URScript編程實(shí)踐在實(shí)際應(yīng)用中,URScript編程通常涉及將上述概念和指令組合起來,以實(shí)現(xiàn)特定的工業(yè)自動(dòng)化任務(wù)。例如,一個(gè)典型的URScript程序可能包括讀取傳感器數(shù)據(jù),根據(jù)數(shù)據(jù)執(zhí)行特定的運(yùn)動(dòng)指令,然后控制外部設(shè)備的輸出。1.7.1示例代碼#定義關(guān)節(jié)位置和TCP姿勢
jointtargethomeJoint=[0,-1.57,0,-1.57,0,0];
robtargetworkPose=[0.2,0,0.1,0,0,0,0];
#初始化
set_digital_out(1,False);
moveJ(homeJoint,a=0.1,v=0.1,t=0,r=0);
#主循環(huán)
whileTruedo
#讀取傳感器數(shù)據(jù)
boolsensorValue=get_digital_in(1);
#根據(jù)傳感器值執(zhí)行任務(wù)
ifsensorValuethen
moveL(workPose,a=0.1,v=0.1,t=0,r=0);
set_digital_out(1,True);
sleep(2);
set_digital_out(1,False);
moveJ(homeJoint,a=0.1,v=0.1,t=0,r=0);
endif;
#等待
sleep(0.1);
end;這個(gè)示例程序展示了如何使用URScript控制機(jī)器人根據(jù)外部傳感器的信號(hào)執(zhí)行特定的運(yùn)動(dòng)和控制外部設(shè)備。機(jī)器人首先移動(dòng)到其“home”位置,然后進(jìn)入一個(gè)無限循環(huán),持續(xù)讀取數(shù)字輸入信號(hào)。當(dāng)信號(hào)為真時(shí),機(jī)器人移動(dòng)到工作位置,激活數(shù)字輸出信號(hào),執(zhí)行任務(wù),然后返回“home”位置。在每次循環(huán)之間,機(jī)器人會(huì)短暫休眠,以節(jié)省資源并避免不必要的運(yùn)動(dòng)。通過上述內(nèi)容,我們不僅了解了URScript的基本概念和指令,還深入探討了如何使用URScript進(jìn)行坐標(biāo)系與工具的定義,以及如何將URScript與外部設(shè)備集成,實(shí)現(xiàn)更復(fù)雜的工業(yè)自動(dòng)化任務(wù)。URScript的靈活性和強(qiáng)大功能使其成為工業(yè)機(jī)器人編程的首選語言之一,尤其適用于需要高精度和實(shí)時(shí)響應(yīng)的自動(dòng)化場景。2坐標(biāo)系基礎(chǔ)2.1笛卡爾坐標(biāo)系解釋在URScript編程中,笛卡爾坐標(biāo)系(CartesianCoordinateSystem)是描述機(jī)器人末端執(zhí)行器在三維空間中位置的一種方式。它基于三個(gè)相互垂直的軸:X、Y和Z軸,以及一個(gè)原點(diǎn)。X軸通常指向機(jī)器人的右側(cè),Y軸指向機(jī)器人的前方,而Z軸則指向機(jī)器人的上方。這種坐標(biāo)系允許我們以直角坐標(biāo)的形式指定目標(biāo)位置,使得機(jī)器人能夠精確地移動(dòng)到空間中的任意點(diǎn)。2.1.1示例代碼#將機(jī)器人移動(dòng)到笛卡爾坐標(biāo)系中的指定位置
#假設(shè)目標(biāo)位置為:X=0.3,Y=0.2,Z=0.15
#以及目標(biāo)姿態(tài)為:Rx=0,Ry=0,Rz=0(姿態(tài)角,單位為度)
movej(p[0.3,0.2,0.15,0,0,0],a=0.1,v=0.1,t=0,r=0)在上述代碼中,movej函數(shù)用于控制機(jī)器人關(guān)節(jié)以關(guān)節(jié)空間路徑移動(dòng)到指定的笛卡爾坐標(biāo)位置。參數(shù)p是一個(gè)包含六個(gè)元素的數(shù)組,前三個(gè)元素分別對應(yīng)X、Y、Z軸的位置,后三個(gè)元素對應(yīng)姿態(tài)角(繞X、Y、Z軸旋轉(zhuǎn)的角度)。2.2關(guān)節(jié)坐標(biāo)系理解關(guān)節(jié)坐標(biāo)系(JointCoordinateSystem)是描述機(jī)器人各關(guān)節(jié)角度的坐標(biāo)系。UR機(jī)器人有六個(gè)關(guān)節(jié),每個(gè)關(guān)節(jié)的角度決定了機(jī)器人的姿態(tài)。關(guān)節(jié)坐標(biāo)系對于理解機(jī)器人的運(yùn)動(dòng)范圍和限制至關(guān)重要,因?yàn)樗苯雨P(guān)聯(lián)到機(jī)器人的物理結(jié)構(gòu)。2.2.1示例代碼#將機(jī)器人移動(dòng)到關(guān)節(jié)坐標(biāo)系中的指定位置
#假設(shè)目標(biāo)關(guān)節(jié)角度為:J1=0,J2=-1.57,J3=1.57,J4=0,J5=0,J6=0(單位為弧度)
movej([0,-1.57,1.57,0,0,0],a=0.1,v=0.1,t=0,r=0)在URScript中,movej函數(shù)同樣可以用于關(guān)節(jié)坐標(biāo)系的移動(dòng)。此時(shí),函數(shù)參數(shù)是一個(gè)包含六個(gè)關(guān)節(jié)角度的數(shù)組,每個(gè)關(guān)節(jié)的角度以弧度為單位。2.3用戶坐標(biāo)系(UCS)定義用戶坐標(biāo)系(UserCoordinateSystem)是URScript中自定義的笛卡爾坐標(biāo)系,用于更直觀地描述機(jī)器人在工作環(huán)境中的位置。通過定義用戶坐標(biāo)系,可以將機(jī)器人的運(yùn)動(dòng)與工作臺(tái)、工件或其他固定參考點(diǎn)對齊,從而簡化編程過程。2.3.1定義用戶坐標(biāo)系#定義用戶坐標(biāo)系
#假設(shè)坐標(biāo)系原點(diǎn)在X=0.1,Y=0.1,Z=0.1
#以及坐標(biāo)系的姿態(tài)為:Rx=0,Ry=0,Rz=0
load_tooldata("tool0")
load_pose("base",p[0.1,0.1,0.1,0,0,0])在URScript中,定義用戶坐標(biāo)系通常涉及兩個(gè)步驟:首先,加載工具數(shù)據(jù)(load_tooldata),這通常是為了確保工具的正確姿態(tài)。然后,使用load_pose函數(shù)定義坐標(biāo)系的原點(diǎn)和姿態(tài)。base參數(shù)表示這是相對于機(jī)器人基座的坐標(biāo)系。2.3.2使用用戶坐標(biāo)系一旦定義了用戶坐標(biāo)系,就可以在后續(xù)的運(yùn)動(dòng)指令中使用它,以相對于該坐標(biāo)系的方式指定目標(biāo)位置。#使用用戶坐標(biāo)系移動(dòng)機(jī)器人
#假設(shè)目標(biāo)位置相對于用戶坐標(biāo)系為:X=0.2,Y=0.1,Z=0.1
movej(p[0.2,0.1,0.1,0,0,0],a=0.1,v=0.1,relative=True)在上述代碼中,relative=True參數(shù)表示目標(biāo)位置是相對于當(dāng)前坐標(biāo)系的增量位置,而不是絕對位置。這意味著,如果之前定義了用戶坐標(biāo)系,那么機(jī)器人將移動(dòng)到相對于用戶坐標(biāo)系原點(diǎn)的新位置。2.4工具坐標(biāo)系定義工具坐標(biāo)系(ToolCoordinateSystem)是描述機(jī)器人末端執(zhí)行器(如夾爪、焊槍等)相對于機(jī)器人最后一個(gè)關(guān)節(jié)的位置和姿態(tài)的坐標(biāo)系。定義工具坐標(biāo)系對于確保機(jī)器人在執(zhí)行任務(wù)時(shí)能夠精確地定位工具至關(guān)重要。2.4.1示例代碼#定義工具坐標(biāo)系
#假設(shè)工具相對于最后一個(gè)關(guān)節(jié)的位置為:X=0.05,Y=0,Z=0.1
#以及工具的姿態(tài)為:Rx=0,Ry=0,Rz=0
load_tooldata("tool0",wobj=p[0.05,0,0.1,0,0,0])在URScript中,load_tooldata函數(shù)用于加載工具數(shù)據(jù),其中wobj參數(shù)用于指定工具相對于最后一個(gè)關(guān)節(jié)的位置和姿態(tài)。這使得機(jī)器人在移動(dòng)時(shí)能夠考慮到工具的實(shí)際位置,從而實(shí)現(xiàn)更精確的定位。2.5總結(jié)通過理解笛卡爾坐標(biāo)系、關(guān)節(jié)坐標(biāo)系和用戶坐標(biāo)系,以及如何定義工具坐標(biāo)系,我們可以更有效地編程UR機(jī)器人,使其在工業(yè)環(huán)境中執(zhí)行復(fù)雜的任務(wù)。每種坐標(biāo)系都有其特定的應(yīng)用場景,選擇合適的坐標(biāo)系可以顯著提高編程效率和機(jī)器人操作的準(zhǔn)確性。請注意,上述示例代碼和數(shù)據(jù)樣例是基于URScript編程語言的語法和功能,旨在幫助理解不同坐標(biāo)系的定義和使用。在實(shí)際應(yīng)用中,應(yīng)根據(jù)具體機(jī)器人型號(hào)和URScript版本進(jìn)行適當(dāng)調(diào)整。3工具坐標(biāo)系(TCP)設(shè)置3.1TCP的概念與重要性在工業(yè)機(jī)器人編程中,工具中心點(diǎn)(ToolCenterPoint,簡稱TCP)是一個(gè)關(guān)鍵概念,它定義了機(jī)器人工具的參考點(diǎn)。TCP通常位于機(jī)器人末端執(zhí)行器的中心,用于精確控制工具在空間中的位置和姿態(tài)。設(shè)置正確的TCP對于確保機(jī)器人操作的精度和效率至關(guān)重要。3.1.1重要性精度控制:TCP的準(zhǔn)確設(shè)置確保機(jī)器人能夠精確地執(zhí)行任務(wù),如焊接、裝配或搬運(yùn)。路徑規(guī)劃:TCP的位置和姿態(tài)直接影響機(jī)器人的路徑規(guī)劃,確保工具能夠以最優(yōu)路徑到達(dá)目標(biāo)位置。工具更換:在需要更換工具的應(yīng)用中,TCP的設(shè)置使得更換后的工具能夠立即在正確的坐標(biāo)系下工作,無需重新編程。3.2使用UR控制面板設(shè)置TCPUR機(jī)器人提供了直觀的控制面板,用于手動(dòng)設(shè)置TCP。以下是通過UR控制面板設(shè)置TCP的步驟:進(jìn)入設(shè)置界面:在UR機(jī)器人的示教器上,選擇“設(shè)置”(Settings)菜單。選擇工具坐標(biāo)系:在設(shè)置菜單中,找到“工具坐標(biāo)系”(ToolCoordinateSystem)選項(xiàng)。手動(dòng)定義TCP:通過示教器上的箭頭鍵,手動(dòng)移動(dòng)機(jī)器人末端到TCP的期望位置。使用“設(shè)置TCP”(SetTCP)功能,記錄當(dāng)前位置和姿態(tài)作為新的TCP。保存設(shè)置:確認(rèn)TCP位置和姿態(tài)無誤后,保存設(shè)置。新的TCP將被應(yīng)用到所有后續(xù)的編程和操作中。3.3通過URScript編程定義TCP除了使用控制面板手動(dòng)設(shè)置TCP,URScript編程語言也提供了定義TCP的功能。這在自動(dòng)化設(shè)置或需要精確控制TCP的應(yīng)用中非常有用。3.3.1代碼示例#定義TCP偏移量
#假設(shè)我們有一個(gè)工具,其TCP相對于工具安裝點(diǎn)的偏移量為:
#x:100mm,y:0mm,z:200mm
#Rx:0deg,Ry:0deg,Rz:0deg
#創(chuàng)建TCP偏移量
tcp_offset=[100,0,200,0,0,0]
#設(shè)置TCP
set_tcp_offset(tcp_offset)
#讀取當(dāng)前TCP偏移量
current_tcp_offset=get_tcp_offset()
#打印當(dāng)前TCP偏移量
print("當(dāng)前TCP偏移量:",current_tcp_offset)3.3.2解釋set_tcp_offset:此函數(shù)用于設(shè)置TCP的偏移量。偏移量是一個(gè)包含六個(gè)元素的列表,前三個(gè)元素表示TCP相對于工具安裝點(diǎn)的x、y、z坐標(biāo)偏移,后三個(gè)元素表示繞x、y、z軸的旋轉(zhuǎn)角度。get_tcp_offset:此函數(shù)用于讀取當(dāng)前設(shè)置的TCP偏移量,返回一個(gè)與set_tcp_offset函數(shù)輸入格式相同的列表。print:用于輸出當(dāng)前TCP偏移量,便于檢查設(shè)置是否正確。3.3.3注意事項(xiàng)在編程定義TCP時(shí),確保輸入的偏移量與實(shí)際工具的幾何尺寸和安裝位置相匹配。使用set_tcp_offset函數(shù)后,所有基于TCP的運(yùn)動(dòng)指令(如movej、movel等)都將使用新的TCP偏移量。3.3.4實(shí)踐應(yīng)用假設(shè)你正在使用UR機(jī)器人進(jìn)行零件裝配,零件需要精確地安裝在特定位置。通過編程定義TCP,你可以確保機(jī)器人每次都能將工具(如夾具)放置在零件的正確位置,從而提高裝配的精度和效率。#定義裝配任務(wù)的TCP偏移量
assembly_tcp_offset=[50,0,150,0,0,0]
#設(shè)置TCP
set_tcp_offset(assembly_tcp_offset)
#執(zhí)行裝配任務(wù)
movel(pose_trans(get_forward_kin(),[0,0,-100,0,0,0]),a=1.0,v=0.1)
#讀取并打印當(dāng)前TCP偏移量
current_tcp_offset=get_tcp_offset()
print("當(dāng)前TCP偏移量:",current_tcp_offset)在這個(gè)例子中,pose_trans函數(shù)用于計(jì)算TCP相對于機(jī)器人基座的新位置,movel函數(shù)則根據(jù)新的TCP偏移量執(zhí)行線性運(yùn)動(dòng),確保零件被精確安裝。通過以上介紹和示例,你應(yīng)能理解TCP在UR機(jī)器人編程中的重要性,并掌握如何使用UR控制面板和URScript編程語言來設(shè)置和定義TCP。正確設(shè)置TCP是實(shí)現(xiàn)機(jī)器人高精度操作的基礎(chǔ),對于提高生產(chǎn)效率和產(chǎn)品質(zhì)量具有重要意義。4坐標(biāo)系變換4.1坐標(biāo)系變換原理在URScript編程中,坐標(biāo)系變換是實(shí)現(xiàn)機(jī)器人精確運(yùn)動(dòng)的關(guān)鍵技術(shù)之一。機(jī)器人在執(zhí)行任務(wù)時(shí),需要在不同的坐標(biāo)系之間進(jìn)行轉(zhuǎn)換,以確保其能夠準(zhǔn)確地到達(dá)目標(biāo)位置。坐標(biāo)系變換涉及到數(shù)學(xué)中的向量和矩陣運(yùn)算,特別是齊次坐標(biāo)和旋轉(zhuǎn)矩陣的使用。通過這些數(shù)學(xué)工具,可以實(shí)現(xiàn)從一個(gè)坐標(biāo)系到另一個(gè)坐標(biāo)系的平移和旋轉(zhuǎn)操作。4.1.1齊次坐標(biāo)齊次坐標(biāo)是一種在三維空間中表示點(diǎn)的坐標(biāo)系統(tǒng),它通過在點(diǎn)的坐標(biāo)上添加一個(gè)額外的維度來簡化坐標(biāo)變換的計(jì)算。在齊次坐標(biāo)中,一個(gè)三維點(diǎn)x,y,4.1.2旋轉(zhuǎn)矩陣旋轉(zhuǎn)矩陣用于描述一個(gè)坐標(biāo)系相對于另一個(gè)坐標(biāo)系的旋轉(zhuǎn)。一個(gè)3x3的旋轉(zhuǎn)矩陣可以表示繞三個(gè)軸的旋轉(zhuǎn),通過矩陣乘法,可以將一個(gè)點(diǎn)從一個(gè)坐標(biāo)系轉(zhuǎn)換到另一個(gè)旋轉(zhuǎn)后的坐標(biāo)系中。4.1.3平移矩陣平移矩陣用于描述坐標(biāo)系之間的平移。在齊次坐標(biāo)中,平移可以通過一個(gè)4x4的矩陣來表示,其中前3x3部分是單位矩陣,最后一列是平移向量。4.2URScript中的坐標(biāo)系變換函數(shù)URScript提供了多種函數(shù)來處理坐標(biāo)系變換,包括但不限于trans和rot函數(shù),以及pose_trans和pose_rot函數(shù),用于處理位置和姿態(tài)的變換。4.2.1trans函數(shù)trans函數(shù)用于計(jì)算平移變換。它接受一個(gè)位置向量和一個(gè)平移向量作為輸入,返回一個(gè)新的位置向量。4.2.2rot函數(shù)rot函數(shù)用于計(jì)算旋轉(zhuǎn)變換。它接受一個(gè)姿態(tài)向量和一個(gè)旋轉(zhuǎn)向量作為輸入,返回一個(gè)新的姿態(tài)向量。4.2.3pose_trans函數(shù)pose_trans函數(shù)用于計(jì)算位置和姿態(tài)的平移變換。它接受一個(gè)姿態(tài)向量和一個(gè)平移向量作為輸入,返回一個(gè)新的姿態(tài)向量,包含了位置和平移后的姿態(tài)信息。4.2.4pose_rot函數(shù)pose_rot函數(shù)用于計(jì)算位置和姿態(tài)的旋轉(zhuǎn)變換。它接受一個(gè)姿態(tài)向量和一個(gè)旋轉(zhuǎn)向量作為輸入,返回一個(gè)新的姿態(tài)向量,包含了位置和旋轉(zhuǎn)后的姿態(tài)信息。4.3示例:坐標(biāo)系變換應(yīng)用假設(shè)我們有一個(gè)UR機(jī)器人,需要從其基坐標(biāo)系移動(dòng)到一個(gè)工件坐標(biāo)系中。工件坐標(biāo)系相對于基坐標(biāo)系有一個(gè)已知的平移和旋轉(zhuǎn)。下面的示例代碼展示了如何使用URScript中的pose_trans和pose_rot函數(shù)來實(shí)現(xiàn)這一變換。#定義基坐標(biāo)系的位置和姿態(tài)
base_pose=[0,0,0,0,0,0]
#定義工件坐標(biāo)系相對于基坐標(biāo)系的平移和旋轉(zhuǎn)
offset_translation=[100,0,0]#平移100mm沿X軸
offset_rotation=[0,0,3.14]#旋轉(zhuǎn)180度繞Z軸
#使用pose_trans函數(shù)計(jì)算平移后的姿態(tài)
translated_pose=pose_trans(base_pose,offset_translation)
#使用pose_rot函數(shù)計(jì)算旋轉(zhuǎn)后的姿態(tài)
final_pose=pose_rot(translated_pose,offset_rotation)
#輸出最終的姿態(tài)
print(final_pose)4.3.1代碼解釋定義坐標(biāo)系:首先,我們定義了基坐標(biāo)系的位置和姿態(tài),這里假設(shè)基坐標(biāo)系的原點(diǎn)在機(jī)器人基座上,且沒有任何旋轉(zhuǎn)。定義平移和旋轉(zhuǎn):然后,我們定義了工件坐標(biāo)系相對于基坐標(biāo)系的平移和旋轉(zhuǎn)。在這個(gè)例子中,工件坐標(biāo)系沿X軸平移了100mm,并繞Z軸旋轉(zhuǎn)了180度。計(jì)算平移后的姿態(tài):使用pose_trans函數(shù),我們將基坐標(biāo)系的姿態(tài)向量和工件坐標(biāo)系的平移向量作為輸入,計(jì)算出平移后的姿態(tài)向量。計(jì)算旋轉(zhuǎn)后的姿態(tài):接著,使用pose_rot函數(shù),我們將平移后的姿態(tài)向量和工件坐標(biāo)系的旋轉(zhuǎn)向量作為輸入,計(jì)算出旋轉(zhuǎn)后的姿態(tài)向量,即工件坐標(biāo)系的完整姿態(tài)。輸出最終姿態(tài):最后,我們輸出了計(jì)算得到的最終姿態(tài)向量,這將用于指導(dǎo)機(jī)器人移動(dòng)到工件坐標(biāo)系中的正確位置。通過上述示例,我們可以看到URScript中的坐標(biāo)系變換函數(shù)如何幫助我們精確地控制機(jī)器人在不同坐標(biāo)系之間的運(yùn)動(dòng),這對于實(shí)現(xiàn)復(fù)雜的工業(yè)自動(dòng)化任務(wù)至關(guān)重要。5工具定義與管理5.1工具數(shù)據(jù)結(jié)構(gòu)在URScript中,工具數(shù)據(jù)結(jié)構(gòu)主要用于描述機(jī)器人末端執(zhí)行器的特性,包括其相對于機(jī)器人基座的位置和姿態(tài),以及工具的質(zhì)量、重心等物理屬性。工具數(shù)據(jù)結(jié)構(gòu)通常以tool_data類型表示,可以通過定義工具坐標(biāo)系和工具參數(shù)來創(chuàng)建。5.1.1工具坐標(biāo)系工具坐標(biāo)系(ToolCoordinateFrame,TCF)定義了工具相對于機(jī)器人第六軸的位置和姿態(tài)。在UR機(jī)器人中,可以通過以下方式定義工具坐標(biāo)系:tool_datatool_name=tool([x,y,z],[rx,ry,rz],[r11,r12,r13,r21,r22,r23,r31,r32,r33]);[x,y,z]:工具中心相對于第六軸的偏移量。[rx,ry,rz]:工具的旋轉(zhuǎn)角度,以度為單位。[r11,r12,r13,r21,r22,r23,r31,r32,r33]:工具的旋轉(zhuǎn)矩陣,描述工具的姿態(tài)。5.1.2工具參數(shù)工具參數(shù)包括工具的質(zhì)量、重心位置和轉(zhuǎn)動(dòng)慣量,這些參數(shù)對于機(jī)器人在運(yùn)動(dòng)規(guī)劃和力控制中非常重要。tool_datatool_name=tool([x,y,z],[rx,ry,rz],[r11,r12,r13,r21,r22,r23,r31,r32,r33],weight,cog,inertia);weight:工具的質(zhì)量,單位為千克。cog:工具的重心位置,相對于工具坐標(biāo)系的偏移量,單位為米。inertia:工具的轉(zhuǎn)動(dòng)慣量,是一個(gè)3x3的矩陣,單位為千克米^2。5.2工具的創(chuàng)建與編輯5.2.1創(chuàng)建工具創(chuàng)建工具時(shí),需要定義工具坐標(biāo)系和工具參數(shù)。以下是一個(gè)創(chuàng)建工具的例子:tool_datatool0=tool([0.1,0,0],[0,0,0],[0,0,1,0,1,0,1,0,0],5,[0,0,0.05],[1,0,0,0,1,0,0,0,1]);在這個(gè)例子中,tool0是一個(gè)工具數(shù)據(jù)結(jié)構(gòu),工具中心相對于第六軸的偏移量為(0.1,0,0),沒有旋轉(zhuǎn),工具的質(zhì)量為5千克,重心位于工具中心上方0.05米,轉(zhuǎn)動(dòng)慣量為單位矩陣。5.2.2編輯工具編輯工具通常涉及到修改工具坐標(biāo)系或工具參數(shù)。可以通過重新定義工具數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)編輯:tool_datatool0=tool([0.15,0,0],[0,0,0],[0,0,1,0,1,0,1,0,0],5,[0,0,0.05],[1,0,0,0,1,0,0,0,1]);在這個(gè)例子中,我們將tool0的工具中心偏移量從(0.1,0,0)修改為(0.15,0,0),其他參數(shù)保持不變。5.3工具在程序中的應(yīng)用在URScript程序中,工具數(shù)據(jù)結(jié)構(gòu)可以用于控制機(jī)器人在特定工具坐標(biāo)系下進(jìn)行運(yùn)動(dòng)。例如,使用movej或movel指令時(shí),可以指定工具坐標(biāo)系:movej(p1,a=1.0,v=0.5,t=0,r=0,tool=tool0);
movel(p2,a=1.0,v=0.5,t=0,r=0,tool=tool0);在上述代碼中,p1和p2是目標(biāo)位置,a和v分別表示加速度和速度,t和r分別表示時(shí)間限制和路徑限制,tool=tool0表示使用tool0工具坐標(biāo)系進(jìn)行運(yùn)動(dòng)。5.3.1工具坐標(biāo)系的切換在程序中,可以通過set_tool指令來切換當(dāng)前使用的工具坐標(biāo)系:set_tool(tool0);這將使機(jī)器人在后續(xù)的運(yùn)動(dòng)中使用tool0工具坐標(biāo)系。5.3.2工具坐標(biāo)系的保存與加載工具坐標(biāo)系可以保存在UR機(jī)器人的系統(tǒng)中,以便在不同的程序中重復(fù)使用。保存和加載工具坐標(biāo)系可以通過以下指令實(shí)現(xiàn):save_tool(tool0,"tool0.json");
load_tool("tool0.json");save_tool指令將tool0工具坐標(biāo)系保存為一個(gè)JSON文件,load_tool指令則從JSON文件中加載工具坐標(biāo)系。5.4總結(jié)通過定義工具數(shù)據(jù)結(jié)構(gòu),可以精確控制UR機(jī)器人在特定工具坐標(biāo)系下的運(yùn)動(dòng),這對于提高機(jī)器人操作的精度和效率至關(guān)重要。創(chuàng)建和編輯工具數(shù)據(jù)結(jié)構(gòu)時(shí),需要考慮工具的物理屬性,如質(zhì)量、重心和轉(zhuǎn)動(dòng)慣量,以及工具相對于機(jī)器人第六軸的位置和姿態(tài)。在程序中,通過指定工具數(shù)據(jù)結(jié)構(gòu),可以實(shí)現(xiàn)工具坐標(biāo)系的切換,從而在不同的操作中使用不同的工具坐標(biāo)系。此外,工具坐標(biāo)系的保存和加載功能,使得工具數(shù)據(jù)可以在多個(gè)程序中共享,減少了重復(fù)定義的需要,提高了編程效率。6編程實(shí)踐:坐標(biāo)系與工具定義6.1編寫URScript程序:移動(dòng)到特定坐標(biāo)在URScript中,移動(dòng)到特定坐標(biāo)是通過movej和movel命令實(shí)現(xiàn)的。movej用于關(guān)節(jié)空間的關(guān)節(jié)運(yùn)動(dòng),而movel用于笛卡爾空間的線性運(yùn)動(dòng)。下面將通過示例來展示如何使用這些命令。6.1.1示例:使用movej移動(dòng)到關(guān)節(jié)空間的特定位置#定義目標(biāo)關(guān)節(jié)位置
target_joint_positions=[0.2,-1.57,1.57,-1.57,-1.57,0]
#使用movej命令移動(dòng)到目標(biāo)位置
movej(target_joint_positions,a=1.0,v=0.5,t=0,r=0)在這個(gè)示例中,target_joint_positions定義了目標(biāo)的關(guān)節(jié)位置,movej命令將機(jī)器人移動(dòng)到這些位置。參數(shù)a和v分別控制加速度和速度,t和r用于指定時(shí)間或路徑半徑,但在關(guān)節(jié)運(yùn)動(dòng)中通常設(shè)置為0。6.1.2示例:使用movel移動(dòng)到笛卡爾空間的特定位置#定義目標(biāo)笛卡爾位置
target_pose=p[0.2,0.2,0.2,0,0,0]
#使用movel命令移動(dòng)到目標(biāo)位置
movel(target_pose,a=1.0,v=0.5,t=0,r=0.05)在這個(gè)示例中,target_pose定義了目標(biāo)的笛卡爾位置,movel命令將機(jī)器人以線性路徑移動(dòng)到這些位置。r參數(shù)用于定義路徑半徑,確保機(jī)器人在移動(dòng)過程中不會(huì)與周圍環(huán)境發(fā)生碰撞。6.2使用工具定義進(jìn)行精確操作在URScript中,工具定義允許你指定機(jī)器人末端執(zhí)行器的位置和姿態(tài),這對于精確操作至關(guān)重要。工具定義通過load命令加載,然后通過unload命令卸載。6.2.1示例:定義和使用工具#定義工具
tool_offset=[0.0,0.0,0.1,0.0,0.0,0.0]
#加載工具
loadtool_offset
#使用movel命令移動(dòng)到笛卡爾空間的特定位置
movel(p[0.2,0.2,0.2,0,0,0],a=1.0,v=0.5,t=0,r=0.05)
#卸載工具
unload()在這個(gè)示例中,tool_offset定義了工具相對于機(jī)器人末端的位置和姿態(tài)偏移。加載工具后,所有后續(xù)的movel命令都將考慮這個(gè)偏移,從而實(shí)現(xiàn)更精確的操作。卸載工具后,機(jī)器人將恢復(fù)到默認(rèn)的末端執(zhí)行器位置和姿態(tài)。6.3綜合案例:自動(dòng)化裝配線編程自動(dòng)化裝配線編程需要機(jī)器人能夠精確地移動(dòng)到不同的工作站,并執(zhí)行特定的任務(wù)。下面的示例展示了如何使用URScript編程來實(shí)現(xiàn)這一過程。6.3.1示例:自動(dòng)化裝配線編程#定義工作站1的坐標(biāo)
workstation1_pose=p[0.3,0.0,0.5,0,0,0]
#定義工作站2的坐標(biāo)
workstation2_pose=p[0.3,0.5,0.5,0,0,0]
#定義工具偏移
tool_offset=[0.0,0.0,0.1,0.0,0.0,0.0]
#加載工具
loadtool_offset
#移動(dòng)到工作站1
movel(workstation1_pose,a=1.0,v=0.5,t=0,r=0.05)
#執(zhí)行工作站1的任務(wù)
#假設(shè)任務(wù)是抓取零件
#這里使用一個(gè)虛擬的抓取命令
grab_part()
#移動(dòng)到工作站2
movel(workstation2_pose,a=1.0,v=0.5,t=0,r=0.05)
#執(zhí)行工作站2的任務(wù)
#假設(shè)任務(wù)是裝配零件
#這里使用一個(gè)虛擬的裝配命令
assemble_part()
#卸載工具
unload()在這個(gè)綜合案例中,機(jī)器人首先加載工具,然后移動(dòng)到工作站1執(zhí)行抓取零件的任務(wù)。接著,機(jī)器人移動(dòng)到工作站2執(zhí)行裝配零件的任務(wù)。每個(gè)工作站的坐標(biāo)都通過movel命令精確指定,工具的加載和卸載確保了操作的準(zhǔn)確性。通過以上示例,我們可以看到URScript如何通過坐標(biāo)系和工具定義來實(shí)現(xiàn)工業(yè)機(jī)器人的精確控制和自動(dòng)化操作。在實(shí)際應(yīng)用中,這些命令和定義將根據(jù)具體的工作環(huán)境和任務(wù)需求進(jìn)行調(diào)整。7高級(jí)主題:動(dòng)態(tài)坐標(biāo)系與工具調(diào)整7.1動(dòng)態(tài)坐標(biāo)系的概念在工業(yè)自動(dòng)化領(lǐng)域,機(jī)器人操作的靈活性和精度至關(guān)重要。動(dòng)態(tài)坐標(biāo)系的概念允許機(jī)器人在運(yùn)行過程中根據(jù)實(shí)時(shí)數(shù)據(jù)調(diào)整其坐標(biāo)系統(tǒng),從而實(shí)現(xiàn)更精確和適應(yīng)性強(qiáng)的運(yùn)動(dòng)控制。URScript,作為UniversalRobots的編程語言,提供了強(qiáng)大的工具來實(shí)現(xiàn)這一功能。7.1.1原理動(dòng)態(tài)坐標(biāo)系基于機(jī)器人的當(dāng)前狀態(tài)和外部傳感器數(shù)據(jù),如視覺傳感器、力傳感器等,來實(shí)時(shí)計(jì)算和更新機(jī)器人的坐標(biāo)系。這使得機(jī)器人能夠適應(yīng)不斷變化的環(huán)境,例如在裝配過程中調(diào)整其位置以匹配零件的微小變化,或在搬運(yùn)過程中根據(jù)負(fù)載的重量和形狀調(diào)整其抓取點(diǎn)。7.1.2實(shí)現(xiàn)在URScript中,可以使用set_tcp和set_payload函數(shù)來動(dòng)態(tài)調(diào)整工具中心點(diǎn)(TCP)和負(fù)載。此外,通過get_actual_tcp_pose函數(shù),可以獲取機(jī)器人當(dāng)前的TCP位置和姿態(tài),結(jié)合傳感器數(shù)據(jù)進(jìn)行實(shí)時(shí)計(jì)算和調(diào)整。7.1.2.1示例代碼#定義一個(gè)函數(shù),根據(jù)視覺傳感器數(shù)據(jù)調(diào)整TCP
defadjust_tcp(visual_data):
#從視覺數(shù)據(jù)中提取TCP位置和姿態(tài)的調(diào)整值
delta_pos=visual_data[0:3]#位置調(diào)整值
delta_rot=visual_data[3:6]#姿態(tài)調(diào)整值
#獲取機(jī)器人當(dāng)前的TCP位置和姿態(tài)
current_pose=get_actual_tcp_pose()
#計(jì)算新的TCP位置和姿態(tài)
new_pos=[current_pose[0]+delta_pos[0],
current_pose[1]+delta_pos[1],
current_pose[2]+delta_pos[2]]
new_rot=[current_pose[3]+delta_rot[0],
current_pose[4]+delta_rot[1],
current_pose[5]+delta_rot[2]]
#設(shè)置新的TCP位置和姿態(tài)
set_tcp(new_pos,new_rot)
#假設(shè)視覺傳感器數(shù)據(jù)為[0.01,0.005,0.0,0.1,0.2,0.0]
visual_data=[0.01,0.005,0.0,0.1,0.2,0.0]
adjust_tcp(visual_data)7.2實(shí)時(shí)調(diào)整工具位置與方向在某些應(yīng)用中,如焊接、噴涂或精密裝配,機(jī)器人工具的位置和方向需要根據(jù)工作對象的特性進(jìn)行微調(diào)。URScript提供了實(shí)時(shí)調(diào)整工具位置和方向的能力,以滿足這些高精度要求。7.2.1原理實(shí)時(shí)調(diào)整工具位置和方向通常涉及到工具坐標(biāo)系(TCP)的動(dòng)態(tài)更新。這可以通過在程序中嵌入傳感器反饋循環(huán)來實(shí)現(xiàn),其中傳感器數(shù)據(jù)用于計(jì)算TCP的微小變化,然后立即應(yīng)用這些變化。7.2.2實(shí)現(xiàn)使用set_tcp函數(shù)可以實(shí)時(shí)更新TCP。結(jié)合get_actual_tcp_pose函數(shù),可以創(chuàng)建一個(gè)閉環(huán)控制系統(tǒng),根據(jù)傳感器數(shù)據(jù)連續(xù)調(diào)整TCP。7.2.2.1示例代碼#定義一個(gè)閉環(huán)控制函數(shù),根據(jù)力傳感器數(shù)據(jù)調(diào)整TCP
defforce_control(force_data):
#從力傳感器數(shù)據(jù)中提取調(diào)整值
delta_pos=force_data[0:3]#位置調(diào)整值
delta_rot=force_data[3:6]#姿態(tài)調(diào)整值
#獲取當(dāng)前TCP位置和姿態(tài)
current_pose=get_actual_tcp_pose()
#計(jì)算新的TCP位置和姿態(tài)
new_pos=[current_pose[0]+delta_pos[0],
current_pose[1]+delta_pos[1],
current_pose[2]+delta_pos[2]]
new_rot=[current_pose[3]+delta_rot[0],
current_pose[4]+delta_rot[1],
current_pose[5]+delta_rot[2]]
#設(shè)置新的TCP位置和姿態(tài)
set_tcp(new_pos,new_rot)
#假設(shè)力傳感器數(shù)據(jù)為[0.001,0.002,0.0,0.05,0.1,0.0]
force_data=[0.001,0.002,0.0,0.05,0.1,0.0]
whileTrue:
force_control(force_data)
#這里可以添加代碼來讀取實(shí)時(shí)的力傳感器數(shù)據(jù)
#force_data=read_force_sensor_data()7.3高級(jí)編程技巧:動(dòng)態(tài)TCP應(yīng)用動(dòng)態(tài)TCP應(yīng)用不僅限于簡單的調(diào)整,還可以實(shí)現(xiàn)更復(fù)雜的操作,如在機(jī)器人運(yùn)動(dòng)過程中動(dòng)態(tài)改變TCP,以適應(yīng)不同的工作場景或優(yōu)化運(yùn)動(dòng)路徑。7.3.1原理動(dòng)態(tài)TCP應(yīng)用涉及到在機(jī)器人執(zhí)行任務(wù)的不同階段,根據(jù)特定的邏輯或算法,調(diào)整TCP的位置和姿態(tài)。這可以提高機(jī)器人在復(fù)雜環(huán)境下的適應(yīng)性和效率。7.3.2實(shí)現(xiàn)在URScript中,可以結(jié)合條件語句和循環(huán)結(jié)構(gòu),根據(jù)不同的工作條件動(dòng)態(tài)調(diào)整TCP。例如,在裝配過程中,機(jī)器人可以先使用一個(gè)TCP進(jìn)行粗定位,然后根據(jù)零件的精確位置調(diào)整TCP進(jìn)行細(xì)定位。7.3.2.1示例代碼#定義一個(gè)函數(shù),根據(jù)工作階段動(dòng)態(tài)調(diào)整TCP
defdynamic_tcp_application(stage):
ifstage=="coarse":
#粗定位TCP
set_tcp([0.0,0.0,0.0],[0.0,0.0,0.0])
elifstage=="fine":
#讀取零件精確位置
part_pose=read_part_pose()
#根據(jù)零件位置調(diào)整TCP
set_tcp([part_pose[0],part_pose[1],part_pose[2]],
[part_pose[3],part_pose[4],part_po
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鵪鶉松花皮蛋項(xiàng)目可行性研究報(bào)告
- 2025年銅頭紫竹笛項(xiàng)目可行性研究報(bào)告
- 2025年海南外國語職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 科技企業(yè)的新挑戰(zhàn)如何通過有效的跨部門合作推動(dòng)對公業(yè)務(wù)的增長與發(fā)展
- 2025年羅拉車壓輪項(xiàng)目可行性研究報(bào)告
- 結(jié)合時(shí)尚潮流的家居和服飾聯(lián)名產(chǎn)品設(shè)計(jì)研究
- 2025年全自動(dòng)豆芽機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年不銹鋼3支酒架項(xiàng)目可行性研究報(bào)告
- 2025至2030年鋼換軌器項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年頭孢氨芐注射液項(xiàng)目投資價(jià)值分析報(bào)告
- 新入職消防員考核試卷題庫(240道)
- 海員的營養(yǎng)-1315醫(yī)學(xué)營養(yǎng)霍建穎等講解
- 2023年廣東省招聘事業(yè)單位人員考試真題及答案
- 幼兒平衡車訓(xùn)練課程設(shè)計(jì)
- 創(chuàng)業(yè)計(jì)劃路演-美甲
- 梁山伯與祝英臺(tái)小提琴譜樂譜
- 我國全科醫(yī)生培訓(xùn)模式
- DBJ51-T 188-2022 預(yù)拌流態(tài)固化土工程應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 《長津湖》電影賞析PPT
- 多維閱讀第10級(jí) who is who 看看都是誰
- 滑雪運(yùn)動(dòng)介紹
評(píng)論
0/150
提交評(píng)論