機(jī)器人語(yǔ)言(robotlanguage):通過(guò)符號(hào)來(lái)描述機(jī)器人動(dòng)作的方法。通過(guò)使用機(jī)器人語(yǔ)言,操作者對(duì)動(dòng)作進(jìn)行描述,進(jìn)而完成各種操作意圖。按照語(yǔ)言智能程度的高低,計(jì)算機(jī)語(yǔ)言可分為三類:執(zhí)行級(jí)、協(xié)調(diào)級(jí)和決策級(jí)語(yǔ)言。其中執(zhí)行級(jí)是指用命令來(lái)描述機(jī)器人的動(dòng)作,又稱為動(dòng)作級(jí)語(yǔ)言;協(xié)調(diào)級(jí)是指著眼于對(duì)象物的狀態(tài)變化的程序,稱之為結(jié)構(gòu)化編程語(yǔ)言;決策級(jí)又稱為目標(biāo)級(jí)語(yǔ)言,只給出工作的目的,自動(dòng)生成可實(shí)現(xiàn)的程序,與自然語(yǔ)言非常相近,而且使用方便,但決策級(jí)語(yǔ)言未進(jìn)入實(shí)用階段。
常用的機(jī)器人編程語(yǔ)言
一、VAL語(yǔ)言及特點(diǎn)
VAL語(yǔ)言是美國(guó)Unimation公司于1979年推出的一種機(jī)器人編程語(yǔ)言,主要配置在PUMA和UNIMATION等型機(jī)器人上,是一種專用的動(dòng)作類描述語(yǔ)言。VAL語(yǔ)言是在BASIC語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的,所以與BASIC語(yǔ)言的結(jié)構(gòu)很相似。在VAL的基礎(chǔ)上Unimation公司推出了VALⅡ語(yǔ)言。
VAL語(yǔ)言可應(yīng)用于上下兩級(jí)計(jì)算機(jī)控制的機(jī)器人系統(tǒng)。上位機(jī)為L(zhǎng)SI-11/23,編程在上位機(jī)中進(jìn)行,上位機(jī)進(jìn)行系統(tǒng)的管理;下位機(jī)為6503微處理器,主要控制各關(guān)節(jié)的實(shí)時(shí)運(yùn)動(dòng)。編程時(shí)可以VAL語(yǔ)言和6503匯編語(yǔ)言混合編程。
VAL語(yǔ)言命令簡(jiǎn)單、清晰易懂,描述機(jī)器人作業(yè)動(dòng)作及與上位機(jī)的通信均較方便,實(shí)時(shí)功能強(qiáng);可以在在線和離線兩種狀態(tài)下編程,適用于多種計(jì)算機(jī)控制的機(jī)器人;能夠迅速地計(jì)算出不同坐標(biāo)系下復(fù)雜運(yùn)動(dòng)的連續(xù)軌跡,能連續(xù)生成機(jī)器人的控制信號(hào),可以與操作者交互地在線修改程序和生成程序;VAL語(yǔ)言包含有一些子程序庫(kù),通過(guò)調(diào)用各種不同的子程序可很快組合成復(fù)雜操作控制;能與外部存儲(chǔ)器進(jìn)行快速數(shù)據(jù)傳輸以保存程序和數(shù)據(jù)。
VAL語(yǔ)言系統(tǒng)包括文本編輯、系統(tǒng)命令和編程語(yǔ)言三個(gè)部分。
在文本編輯狀態(tài)下可以通過(guò)鍵盤輸入文本程序,也可通過(guò)示教盒在示教方式下輸入程序。在輸入過(guò)程中可修改、編輯、生成程序,最后保存到存儲(chǔ)器中。在此狀態(tài)下也可以調(diào)用已存在的程序。
系統(tǒng)命令包括位置定義、程序和數(shù)據(jù)列表、程序和數(shù)據(jù)存儲(chǔ)、系統(tǒng)狀態(tài)設(shè)置和控制、系統(tǒng)開(kāi)關(guān)控制、系統(tǒng)診斷和修改。
編程語(yǔ)言把一條條程序語(yǔ)句轉(zhuǎn)換執(zhí)行。
二、VAL語(yǔ)言的指令
VAL語(yǔ)言包括監(jiān)控指令和程序指令兩種。其中監(jiān)控指令有六類,分別為位置及姿態(tài)定義指令、程序編輯指令、列表指令、存儲(chǔ)指令、控制程序執(zhí)行指令和系統(tǒng)狀態(tài)控制指令。各類指令的具體形式及功能如下:
1.監(jiān)控指令
1)位置及姿態(tài)定義指令
POINT指令:執(zhí)行終端位置、姿態(tài)的齊次變換或以關(guān)節(jié)位置表示的精確點(diǎn)位賦值。
其格式有兩種:
POINT<變量>[=<變量2>…<變量n>]
或POINT<精確點(diǎn)>[=<精確點(diǎn)2>]
例如:
POINTPICK1=PICK2
指令的功能是置變量PICK1的值等于PICK2的值。
又如:
POINT#PARK
是準(zhǔn)備定義或修改精確點(diǎn)PARK。
DPOINT指令:刪除包括精確點(diǎn)或變量在內(nèi)的任意數(shù)量的位置變量。
HERE指令:此指令使變量或精確點(diǎn)的值等于當(dāng)前機(jī)器人的位置。
例如:
HEREPLACK
是定義變量PLACK等于當(dāng)前機(jī)器人的位置。
WHERE指令:該指令用來(lái)顯示機(jī)器人在直角坐標(biāo)空間中的當(dāng)前位置和關(guān)節(jié)變量值。
BASE指令:用來(lái)設(shè)置參考坐標(biāo)系,系統(tǒng)規(guī)定參考系原點(diǎn)在關(guān)節(jié)1和2軸線的交點(diǎn)處,方向沿固定軸的方向。
格式:
BASE[<dX>],[<dY>],[<dZ>],[<Z向旋轉(zhuǎn)方向>]
例如:
BASE300,–50,30
是重新定義基準(zhǔn)坐標(biāo)系的位置,它從初始位置向X方向移300,沿Z的負(fù)方向移50,再繞Z軸旋轉(zhuǎn)了30°。
TOOLI指令:此指令的功能是對(duì)工具終端相對(duì)工具支承面的位置和姿態(tài)賦值。
2)程序編輯指令
EDIT指令:此指令允許用戶建立或修改一個(gè)指定名字的程序,可以指定被編輯程序的起始行號(hào)。其格式為
EDIT[<程序名>],[<行號(hào)>]
如果沒(méi)有指定行號(hào),則從程序的第一行開(kāi)始編輯;如果沒(méi)有指定程序名,則上次最后編輯的程序被響應(yīng)。
用EDIT指令進(jìn)入編輯狀態(tài)后,可以用C、D、E、I、L、P、R、S、T等命令來(lái)進(jìn)一步編輯。如:
C命令:改變編輯的程序,用一個(gè)新的程序代替。
D命令:刪除從當(dāng)前行算起的n行程序,n缺省時(shí)為刪除當(dāng)前行。
E命令:退出編輯返回監(jiān)控模式。
I命令:將當(dāng)前指令下移一行,以便插入一條指令。
P命令:顯示從當(dāng)前行往下n行的程序文本內(nèi)容。
T命令:初始化關(guān)節(jié)插值程序示教模式,在該模式下,按一次示教盒上的“RECODE”按鈕就將MOVE指令插到程序中。
3)列表指令
DIRECTORY指令:此指令的功能是顯示存儲(chǔ)器中的全部用戶程序名。
LISTL指令:功能是顯示任意個(gè)位置變量值。
LISTP指令:功能是顯示任意個(gè)用戶的全部程序。
4)存儲(chǔ)指令
FORMAT指令:執(zhí)行磁盤格式化。
STOREP指令:功能是在指定的磁盤文件內(nèi)存儲(chǔ)指定的程序。
STOREL指令:此指令存儲(chǔ)用戶程序中注明的全部位置變量名和變量值。
LISTF指令:指令的功能是顯示軟盤中當(dāng)前輸入的文件目錄。
LOADP指令:功能是將文件中的程序送入內(nèi)存。
LOADL指令:功能是將文件中指定的位置變量送入系統(tǒng)內(nèi)存。
DELETE指令:此指令撤銷磁盤中指定的文件。
COMPRESS指令:只用來(lái)壓縮磁盤空間。
ERASE指令:擦除磁內(nèi)容并初始化。
5)控制程序執(zhí)行指令
ABORT指令:執(zhí)行此指令后緊急停止(緊停)。
DO指令:執(zhí)行單步指令。
EXECUTE指令:此指令執(zhí)行用戶指定的程序n次,n可以從–32768到32767,當(dāng)n被省略時(shí),程序執(zhí)行一次。
NEXT指令:此命令控制程序在單步方式下執(zhí)行。
PROCEED指令:此指令實(shí)現(xiàn)在某一步暫停、急停或運(yùn)行錯(cuò)誤后,自下一步起繼續(xù)執(zhí)行程序。
RETRY指令:指令的功能是在某一步出現(xiàn)運(yùn)行錯(cuò)誤后,仍自那一步重新運(yùn)行程序。
SPEED指令:指令的功能是指定程序控制下機(jī)器人的運(yùn)動(dòng)速度,其值從0.01到327.67,一般正常速度為100。
6)系統(tǒng)狀態(tài)控制指令
CALIB指令:此指令校準(zhǔn)關(guān)節(jié)位置傳感器。
STATUS指令:用來(lái)顯示用戶程序的狀態(tài)。
FREE指令:用來(lái)顯示當(dāng)前未使用的存儲(chǔ)容量。
ENABL指令:用于開(kāi)、關(guān)系統(tǒng)硬件。
ZERO指令:此指令的功能是清除全部用戶程序和定義的位置,重新初始化。
DONE:此指令停止監(jiān)控程序,進(jìn)入硬件調(diào)試狀態(tài)。
2.程序指令
1)運(yùn)動(dòng)指令
指令包括GO、MOVE、MOVEI、MOVES、DRAW、APPRO、APPROS、DEPART、DRIVE、READY、OPEN、OPENI、CLOSE、CLOSEI、RELAX、GRASP及DELAY等。
這些指令大部分具有使機(jī)器人按照特定的方式從一個(gè)位姿運(yùn)動(dòng)到另一個(gè)位姿的功能,部分指令表示機(jī)器人手爪的開(kāi)合。例如:
MOVE#PICK!
表示機(jī)器人由關(guān)節(jié)插值運(yùn)動(dòng)到精確PICK所定義的位置。“!”表示位置變量已有自己的值。
MOVET<位置>,<手開(kāi)度>
功能是生成關(guān)節(jié)插值運(yùn)動(dòng)使機(jī)器人到達(dá)位置變量所給定的位姿,運(yùn)動(dòng)中若手為伺服控制,則手由閉合改變到手開(kāi)度變量給定的值。
又例如:
OPEN[<手開(kāi)度>]
表示使機(jī)器人手爪打開(kāi)到指定的開(kāi)度。
2)機(jī)器人位姿控制指令
這些指令包括RIGHTY、LEFTY、ABOVE、BELOW、FLIP及NOFLIP等。
3)賦值指令
賦值指令有SETI、TYPEI、HERE、SET、SHIFT、TOOL、INVERSE及FRAME。
4)控制指令
控制指令有GOTO、GOSUB、RETURN、IF、IFSIG、REACT、REACTI、IGNORE、SIGNAL、WAIT、PAUSE及STOP。
其中GOTO、GOSUB實(shí)現(xiàn)程序的無(wú)條件轉(zhuǎn)移,而IF指令執(zhí)行有條件轉(zhuǎn)移。IF指令的格式為
IF<整型變量1><關(guān)系式><整型變量2><關(guān)系式>THEN<標(biāo)識(shí)符>
該指令比較兩個(gè)整型變量的值,如果關(guān)系狀態(tài)為真,程序轉(zhuǎn)到標(biāo)識(shí)符指定的行去執(zhí)行,否則接著下一行執(zhí)行。關(guān)系表達(dá)式有EQ(等于)、NE(不等于)、LT(小于)、GT(大于)、LE(小于或等于)及GE(大于或等于)。
5)開(kāi)關(guān)量賦值指令
指令包括SPEED、COARSE、FINE、NONULL、NULL、INTOFF及INTON。
6)其他指令
其他指令包括REMARK及TYPE。
SIGLA語(yǔ)言
SIGLA是一種僅用于直角坐標(biāo)式SIGMA裝配型機(jī)器人運(yùn)動(dòng)控制時(shí)的一種編程語(yǔ)言,是20世紀(jì)70年代后期由意大利Olivetti公司研制的一種簡(jiǎn)單的非文本語(yǔ)言。
這種語(yǔ)言主要用于裝配任務(wù)的控制,它可以把裝配任務(wù)劃分為一些裝配子任務(wù),如取旋具,在螺釘上料器上取螺釘A,搬運(yùn)螺釘A,定位螺釘A,裝入螺釘A,緊固螺釘?shù)?。編程時(shí)預(yù)先編制子程序,然后用子程序調(diào)用的方式來(lái)完成。
IML語(yǔ)言
IML也是一種著眼于末端執(zhí)行器的動(dòng)作級(jí)語(yǔ)言,由日本九州大學(xué)開(kāi)發(fā)而成。IML語(yǔ)言的特點(diǎn)是編程簡(jiǎn)單,能人機(jī)對(duì)話,適合于現(xiàn)場(chǎng)操作,許多復(fù)雜動(dòng)作可由簡(jiǎn)單的指令來(lái)實(shí)現(xiàn),易被操作者掌握。
IML用直角坐標(biāo)系描述機(jī)器人和目標(biāo)物的位置和姿態(tài)。坐標(biāo)系分兩種,一種是機(jī)座坐標(biāo)系,一種是固連在機(jī)器人作業(yè)空間上的工作坐標(biāo)系。語(yǔ)言以指令形式編程,可以表示機(jī)器人的工作點(diǎn)、運(yùn)動(dòng)軌跡、目標(biāo)物的位置及姿態(tài)等信息,從而可以直接編程。往返作業(yè)可不用循環(huán)語(yǔ)句描述,示教的軌跡能定義成指令插到語(yǔ)句中,還能完成某些力的施加。
IML語(yǔ)言的主要指令有:運(yùn)動(dòng)指令MOVE、速度指令SPEED、停止指令STOP、手指開(kāi)合指令OPEN及CLOSE、坐標(biāo)系定義指令COORD、軌跡定義命令TRAJ、位置定義命令HERE、程序控制指令I(lǐng)F…THEN、FOREACH語(yǔ)句、CASE語(yǔ)句及DEFINE等。
AL語(yǔ)言
一、AL語(yǔ)言概述
AL語(yǔ)言是20世紀(jì)70年代中期美國(guó)斯坦福大學(xué)人工智能研究所開(kāi)發(fā)研制的一種機(jī)器人語(yǔ)言,它是在WAVE的基礎(chǔ)上開(kāi)發(fā)出來(lái)的,也是一種動(dòng)作級(jí)編程語(yǔ)言,但兼有對(duì)象級(jí)編程語(yǔ)言的某些特征,使用于裝配作業(yè)。它的結(jié)構(gòu)及特點(diǎn)類似于PASCAL語(yǔ)言,可以編譯成機(jī)器語(yǔ)言在實(shí)時(shí)控制機(jī)上運(yùn)行,具有實(shí)時(shí)編譯語(yǔ)言的結(jié)構(gòu)和特征,如可以同步操作、條件操作等。AL語(yǔ)言設(shè)計(jì)的原始目的是用于具有傳感器信息反饋的多臺(tái)機(jī)器人或機(jī)械手的并行或協(xié)調(diào)控制編程。
運(yùn)行VA語(yǔ)言的系統(tǒng)硬件環(huán)境包括主、從兩級(jí)計(jì)算機(jī)控制,如圖所示。主機(jī)為PDP-10,主機(jī)內(nèi)的管理器負(fù)責(zé)管理協(xié)調(diào)各部分的工作,編譯器負(fù)責(zé)對(duì)AL語(yǔ)言的指令進(jìn)行編譯并檢查程序,實(shí)時(shí)接口負(fù)責(zé)主、從機(jī)之間的接口連接,裝載器負(fù)責(zé)分配程序。從機(jī)為PDP-11/45。
主機(jī)的功能是對(duì)AL語(yǔ)言進(jìn)行編譯,對(duì)機(jī)器人的動(dòng)作進(jìn)行規(guī)劃;從機(jī)接受主機(jī)發(fā)出的動(dòng)作規(guī)劃命令,進(jìn)行軌跡及關(guān)節(jié)參數(shù)的實(shí)時(shí)計(jì)算,最后對(duì)機(jī)器人發(fā)出具體的動(dòng)作指令。
二、AL語(yǔ)言的編程格式
(1)程序BEGIN開(kāi)始,由END結(jié)束。
(2)語(yǔ)句與語(yǔ)句之間用分號(hào)隔開(kāi)。
(3)變量先定義說(shuō)明其類型,后使用。變量名以英文字母開(kāi)頭,由字母、數(shù)字和下畫(huà)線組成,字母大、小寫(xiě)不分。
圖AL語(yǔ)言運(yùn)行的硬件環(huán)境
(4)程序的注釋用大括號(hào)括起來(lái)。
(5)變量賦值語(yǔ)句中如所賦的內(nèi)容為表達(dá)式,則先計(jì)算表達(dá)式的值,再把該值賦給等式左邊的變量。
三、AL語(yǔ)言中數(shù)據(jù)的類型
(1)標(biāo)量(scalar)——可以是時(shí)間、距離、角度及力等,可以進(jìn)行加、減、乘、除和指數(shù)運(yùn)算,也可以進(jìn)行三角函數(shù)、自然對(duì)數(shù)和指數(shù)換算。
(2)向量(vector)——與數(shù)學(xué)中的向量類似,可以由若干個(gè)量綱相同的標(biāo)量來(lái)構(gòu)造一個(gè)向量。
(3)旋轉(zhuǎn)(rot)——用來(lái)描述一個(gè)軸的旋轉(zhuǎn)或繞某個(gè)軸的旋轉(zhuǎn)以表示姿態(tài)。用ROT變量表示旋轉(zhuǎn)變量時(shí)帶有兩個(gè)參數(shù),一個(gè)代表旋轉(zhuǎn)軸的簡(jiǎn)單矢量,另一個(gè)表示旋轉(zhuǎn)角度。
(4)坐標(biāo)系(frame)——用來(lái)建立坐標(biāo)系,變量的值表示物體固連坐標(biāo)系與空間作業(yè)的參考坐標(biāo)系之間的相對(duì)位置與姿態(tài)。
(5)變換(trans)——用來(lái)進(jìn)行坐標(biāo)變換,具有旋轉(zhuǎn)和向量?jī)蓚€(gè)參數(shù),執(zhí)行時(shí)先旋轉(zhuǎn)再平移。
四、AL語(yǔ)言的語(yǔ)句介紹
1.MOVE語(yǔ)句
用來(lái)描述機(jī)器人手爪的運(yùn)動(dòng),如手爪從一個(gè)位置運(yùn)動(dòng)到另一個(gè)位置。MOVE語(yǔ)句的格式為
MOVE<HAND>TO<目的地>
2.手爪控制語(yǔ)句
OPEN:手爪打開(kāi)語(yǔ)句。
CLOSE:手爪閉合語(yǔ)句。
語(yǔ)句的格式為
OPEN<HAND>TO<SVAL>
CLOSE<HAND>TO<SVAL>
其中SVAL為開(kāi)度距離值,在程序中已預(yù)先指定。
3.控制語(yǔ)句
與PASCAL語(yǔ)言類似,控制語(yǔ)句有下面幾種:
IF<條件>THEN<語(yǔ)句>ELSE<語(yǔ)句>
WHILE<條件>DO<語(yǔ)句>
CASE<語(yǔ)句>
DO<語(yǔ)句>UNTIL<條件>
FOR…STEP…UNTIL…
4.AFFIX和UNFIX語(yǔ)句
在裝配過(guò)程中經(jīng)常出現(xiàn)將一個(gè)物體粘到另一個(gè)物體上或一個(gè)物體從另一個(gè)物體上剝離的操作。語(yǔ)句AFFIX為兩物體結(jié)合的操作,語(yǔ)句AFFIX為兩物體分離的操作。
例如:BEAM_BORE和BEAM分別為兩個(gè)坐標(biāo)系,執(zhí)行語(yǔ)句
AFFIXBEAM_BORETOBEAM
后兩個(gè)坐標(biāo)系就附著在一起了,即一個(gè)坐標(biāo)系的運(yùn)動(dòng)也將引起另一個(gè)坐標(biāo)系的同樣運(yùn)動(dòng)。然后執(zhí)行下面的語(yǔ)句
UNFIXBEAM_BOREFROMBEAM
兩坐標(biāo)系的附著關(guān)系被解除。
5.力覺(jué)的處理
在MOVE語(yǔ)句中使用條件監(jiān)控子語(yǔ)句可實(shí)現(xiàn)使用傳感器信息來(lái)完成一定的動(dòng)作。
監(jiān)控子語(yǔ)句如:
ON<條件>DO<動(dòng)作>
例如:
MOVEBARMTO⊕-0.1*INCHESONFORCE(Z)>10*OUNCESDOSTOP
表示在當(dāng)前位置沿Z軸向下移動(dòng)0.1英寸,如果感覺(jué)Z軸方向的力超過(guò)10盎司,則立即命令機(jī)械手停止運(yùn)動(dòng)。
內(nèi)容來(lái)自百科網(wǎng)