華文網

機器人程式設計常用的四大語言,先學哪一種才最明智!

很有機友很疑惑:

我究竟應該先學哪種程式設計語言?這是一個許多新入行的機器人工程師在他們職業生涯中至少會問一次的問題。不幸的是,這也是一個沒有簡單答案的問題。

也許更恰當的問題應該是先從哪種程式設計語言開始學起?但是,你仍然會得到不同的看法,但是許多機器人專家會同意從關鍵程式設計語言開始學。

如果你去問一屋子的機器人專家,“什麼是機器人學中最好程式設計語言?”,你永遠不會得到一個直接的答案。

電氣工程師會從工業機器人技術這個角度給出不同的答案。電腦視覺程式師給出的答案會跟認知機器人專家給出的不一樣。而且,每個人都會對什麼是最好的程式設計語言有自己的看法。最終,大多數人都會贊同的答案就是”這個取決於。。。“。

對於一個新入行正在試圖決定要先學哪種語言的機器人學者來說,這是一個相當無用的答案。即使這是最現實的回答——因為它的確取決於你想要開發的應用程式和你在使用的系統。

對於學習機器人程式設計的你來說,最重要的事情是開拓你的”程式設計思維”,而不是精通一種特定的程式設計語言。從很多方面來說,從哪種程式設計語言開始學習真的無關緊要。

你學習的每種語言提升了你的程式設計思維,擁有了這種思維,去學習一種新程式設計語言的時候會容易不少。

早期的機器人由於功能單一,動作簡單,可採用固定程式或者示教方式來控制機器人的運動。隨著機器人作業動作的多樣化和作業環境的複雜化,依靠固定的程式或示教方式已經滿足不了要求,必須依靠能適應作業和環境隨時變化的機器人語言程式設計來完成機器人工作。

下面就跟機哥來瞭解一下常見的機器人程式設計語言吧!

VAL語言

一、VAL語言及特點

VAL語言是美國Unimation公司於1979年推出的一種機器人程式設計語言,主要配置在PUMA和UNIMATION等型機器人上,是一種專用的動作類描述語言。VAL語言是在BASIC語言的基礎上發展起來的,

所以與BASIC語言的結構很相似。在VAL的基礎上Unimation公司推出了VALⅡ語言。

VAL語言可應用於上下兩級電腦控制的機器人系統。上位機為LSI-11/23,程式設計在上位機中進行,上位機進行系統的管理;下位機為6503微處理器,主要控制各關節的即時運動。程式設計時可以VAL語言和6503組合語言混合程式設計。

VAL語言命令簡單、清晰易懂,描述機器人作業動作及與上位機的通信均較方便,即時功能強;可以在線上和離線兩種狀態下程式設計,適用於多種電腦控制的機器人;能夠迅速地計算出不同坐標系下複雜運動的連續軌跡,能連續生成機器人的控制信號,可以與操作者交互地線上修改程式和生成程式;VAL語言包含有一些副程式庫,通過調用各種不同的副程式可很快組合成複雜操作控制;能與外部記憶體進行快速資料傳輸以保存程式和資料。

VAL語言系統包括文本編輯、系統命令和程式設計語言三個部分。

在文本編輯狀態下可以通過鍵盤輸入文本程式,也可通過示教盒在示教方式下輸入程式。在輸入過程中可修改、編輯、生成程式,最後保存到記憶體中。在此狀態下也可以調用已存在的程式。

系統命令包括位置定義、程式和資料清單、程式和資料存儲、系統狀態設置和控制、系統開關控制、系統診斷和修改。

程式設計語言把一條條程式語句轉換執行。

二、VAL語言的指令

VAL語言包括監控指令和程式指令兩種。其中監控指令有六類,分別為位置及姿態定義指令、程式編輯指令、清單指令、存儲指令、控制程式執行指令和系統狀態控制指令。

各類指令的具體形式及功能如下:

1.監控指令

1)位置及姿態定義指令

POINT指令:執行終端位置、姿態的齊次變換或以關節位置表示的精確點位賦值。

其格式有兩種:

POINT<變數>[=<變數2>…<變數n>]

或POINT<精確點>[=<精確點2>]

例如:

POINTPICK1=PICK2

指令的功能是置變數PICK1的值等於PICK2的值。

又如:

POINT#PARK

是準備定義或修改精確點PARK。

DPOINT指令:刪除包括精確點或變數在內的任意數量的位置變數。

HERE指令:此指令使變數或精確點的值等於當前機器人的位置。

例如:

HEREPLACK

是定義變數PLACK等於當前機器人的位置。

WHERE指令:該指令用來顯示機器人在直角坐標空間中的當前位置和關節變數值。

BASE指令:用來設置參考坐標系,系統規定參考系原點在關節1和2軸線的交點處,方向沿固定軸的方向。

格式:

BASE[],[],[],[]

例如:

BASE300,–50,30

是重新定義基準坐標系的位置,它從初始位置向X方向移300,沿Z的負方向移50,再繞Z軸旋轉了30°。

TOOLI指令:此指令的功能是對工具終端相對工具支承面的位置和姿態賦值。

2)程式編輯指令

EDIT指令:此指令允許使用者建立或修改一個指定名字的程式,可以指定被編輯程式的起始行號。其格式為

EDIT[<程式名>],[<行號>]

如果沒有指定行號,則從程式的第一行開始編輯;如果沒有指定程式名,則上次最後編輯的程式被回應。

用EDIT指令進入編輯狀態後,可以用C、D、E、I、L、P、R、S、T等命令來進一步編輯。如:

C命令:改變編輯的程式,用一個新的程式代替。

D命令:刪除從當前行算起的n行程式,n缺省時為刪除當前行。

E命令:退出編輯返回監控模式。

I命令:將當前指令下移一行,以便插入一條指令。

P命令:顯示從當前行往下n行的程式文本內容。

T命令:初始化關節插值程式示教模式,在該模式下,按一次示教盒上的“RECODE”按鈕就將MOVE指令插到程式中。

3)清單指令

DIRECTORY指令:此指令的功能是顯示記憶體中的全部使用者程式名。

LISTL指令:功能是顯示任意個位置變數值。

LISTP指令:功能是顯示任意個使用者的全部程式。

4)存儲指令

FORMAT指令:執行磁片格式化。

SOREP指令:功能是在指定的磁片檔內存儲指定的程式。

STOREL指令:此指令存儲使用者程式中注明的全部位置變數名和變數值。

LISTF指令:指令的功能是顯示軟碟中當前輸入的檔目錄。

LOADP指令:功能是將檔中的程式送入記憶體。

LOADL指令:功能是將檔中指定的位置變數送入系統記憶體。

DELETE指令:此指令撤銷磁片中指定的檔。

COMPRESS指令:只用來壓縮磁碟空間。

ERASE指令:擦除磁內容並初始化。

5)控制程式執行指令

ABORT指令:執行此指令後緊急停止(緊停)。

DO指令:執行單步指令。

EXECUTE指令:此指令執行使用者指定的程式n次,n可以從–32768到32767,當n被省略時,程式執行一次。

NEXT指令:此命令控制程式在單步方式下執行。

PROCEED指令:此指令實現在某一步暫停、急停或運行錯誤後,自下一步起繼續執行程式。

RETRY指令:指令的功能是在某一步出現運行錯誤後,仍自那一步重新運行程式。

SPEED指令:指令的功能是指定程式控制下機器人的運動速度,其值從0.01到327.67,一般正常速度為100。

6)系統狀態控制指令

CALIB指令:此指令校準關節位置感測器。

STATUS指令:用來顯示使用者程式的狀態。

FREE指令:用來顯示當前未使用的存儲容量。

ENABL指令:用於開、關系統硬體。

ZERO指令:此指令的功能是清除全部使用者程式和定義的位置,重新初始化。

DONE:此指令停止監控程序,進入硬體調試狀態。

2.程式指令

1)運動指令

指令包括GO、MOVE、MOVEI、MOVES、DRAW、APPRO、APPROS、DEPART、DRIVE、READY、OPEN、OPENI、CLOSE、CLOSEI、RELAX、GRASP及DELAY等。

這些指令大部分具有使機器人按照特定的方式從一個位姿運動到另一個位元姿的功能,部分指令表示機器人手爪的開合。例如:

MOVE#PICK!

表示機器人由關節插值運動到精確PICK所定義的位置。“!”表示位置變數已有自己的值。

MOVET<位置>,<手開度>

功能是生成關節插值運動使機器人到達位置變數所給定的位元姿,運動中若手為伺服控制,則手由閉合改變到手開度變數給定的值。

又例如:

OPEN[<手開度>]

表示使機器人手爪打開到指定的開度。

2)機器人位元姿控制指令

這些指令包括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實現程式的無條件轉移,而IF指令執行有條件轉移。IF指令的格式為

IF<整型變數1><關係式><整型變數2><關係式>THEN<識別字>

該指令比較兩個整型變數的值,如果關係狀態為真,程式轉到識別字指定的行去執行,否則接著下一行執行。關聯運算式有EQ(等於)、NE(不等於)、LT(小於)、GT(大於)、LE(小於或等於)及GE(大於或等於)。

5)開關量賦值指令

指令包括SPEED、COARSE、FINE、NONULL、NULL、INTOFF及INTON。

6)其他指令

其他指令包括REMARK及TYPE。

SIGLA語言

SIGLA是一種僅用於直角坐標式SIGMA裝配型機器人運動控制時的一種程式設計語言,是20世紀70年代後期由義大利Olivetti公司研製的一種簡單的非文本語言。

這種語言主要用於裝配任務的控制,它可以把裝配任務劃分為一些裝配子任務,如取旋具,在螺釘上料器上取螺釘A,搬運螺釘A,定位螺釘A,裝入螺釘A,緊固螺釘等。程式設計時預先編制副程式,然後用副程式調用的方式來完成。

IML語言

IML也是一種著眼於末端執行器的動作級語言,由日本九州大學開發而成。IML語言的特點是程式設計簡單,能人機對話,適合於現場操作,許多複雜動作可由簡單的指令來實現,易被操作者掌握。

IML用直角坐標系描述機器人和目標物的位置和姿態。坐標系分兩種,一種是機座坐標系,一種是固連在機器人作業空間上的工作坐標系。語言以指令形式程式設計,可以表示機器人的工作點、運動軌跡、目標物的位置及姿態等資訊,從而可以直接程式設計。往返作業可不用迴圈語句描述,示教的軌跡能定義成指令插到語句中,還能完成某些力的施加。

IML語言的主要指令有:運動指令MOVE、速度指令SPEED、停止指令STOP、手指開合指令OPEN及CLOSE、坐標系定義指令COORD、軌跡定義命令TRAJ、位置定義命令HERE、程式控制指令IF…THEN、FOREACH語句、CASE語句及DEFINE等。

AL語言

一、AL語言概述

AL語言是20世紀70年代中期美國斯坦福大學人工智慧研究所開發研製的一種機器人語言,它是在WAVE的基礎上開發出來的,也是一種動作級程式設計語言,但兼有物件級程式設計語言的某些特徵,使用於裝配作業。它的結構及特點類似於PASCAL語言,可以編譯成機器語言在即時控制機上運行,具有即時編譯語言的結構和特徵,如可以同步操作、條件操作等。AL語言設計的原始目的是用於具有感測器資訊回饋的多台機器人或機械手的並行或協調控制程式設計。

運行VA語言的系統硬體環境包括主、從兩級電腦控制,如圖所示。主機為PDP-10,主機內的管理器負責管理協調各部分的工作,編譯器負責對AL語言的指令進行編譯並檢查程式,即時介面負責主、從機之間的介面連接,裝載器負責分配程式。從機為PDP-11/45。

主機的功能是對AL語言進行編譯,對機器人的動作進行規劃;從機接受主機發出的動作規劃命令,進行軌跡及關節參數的即時計算,最後對機器人發出具體的動作指令。

二、AL語言的程式設計格式

(1)程式BEGIN開始,由END結束。

(2)語句與語句之間用分號隔開。

(3)變數先定義說明其類型,後使用。變數名以英文字母開頭,由字母、數位和下畫線組成,字母大、小寫不分。

(4)程式的注釋用大括弧括起來。

(5)變數設定陳述式中如所賦的內容為運算式,則先計算運算式的值,再把該值賦給等式左邊的變數。

三、AL語言中資料的類型

(1)標量(scalar)——可以是時間、距離、角度及力等,可以進行加、減、乘、除和指數運算,也可以進行三角函數、自然對數和指數換算。

(2)向量(vector)——與數學中的向量類似,可以由若干個量綱相同的標量來構造一個向量。

(3)旋轉(rot)——用來描述一個軸的旋轉或繞某個軸的旋轉以表示姿態。用ROT變數表示旋轉變數時帶有兩個參數,一個代表旋轉軸的簡單向量,另一個表示旋轉角度。

(4)坐標系(frame)——用來建立坐標系,變數的值表示物體固連坐標系與空間作業的參考坐標系之間的相對位置與姿態。

(5)變換(trans)——用來進行座標變換,具有旋轉和向量兩個參數,執行時先旋轉再平移。

四、AL語言的語句介紹

1.MOVE語句

用來描述機器人手爪的運動,如手爪從一個位置運動到另一個位置。MOVE語句的格式為

MOVETO<目的地>

2.手爪控制語句

OPEN:手爪打開語句。

CLOSE:手爪閉合語句。

語句的格式為

OPENTO

CLOSETO

其中SVAL為開度距離值,在程式中已預先指定。

3.控制語句

與PASCAL語言類似,控制語句有下面幾種:

IF<條件>THEN<語句>ELSE<語句>

WHILE<條件>DO<語句>

CASE<語句>

DO<語句>UNTIL<條件>

FOR…STEP…UNTIL…

4.AFFIX和UNFIX語句

在裝配過程中經常出現將一個物體粘到另一個物體上或一個物體從另一個物體上剝離的操作。語句AFFIX為兩物體結合的操作,語句AFFIX為兩物體分離的操作。

例如:BEAM_BORE和BEAM分別為兩個坐標系,執行語句

AFFIXBEAM_BORETOBEAM

後兩個坐標系就附著在一起了,即一個坐標系的運動也將引起另一個坐標系的同樣運動。然後執行下面的語句

UNFIXBEAM_BOREFROMBEAM

兩坐標系的附著關係被解除。

5.力覺的處理

在MOVE語句中使用條件監控子語句可實現使用感測器資訊來完成一定的動作。

監控子語句如:

ON<條件>DO<動作>

例如:

MOVEBARMTO⊕-0.1*INCHESONFORCE(Z)>10*OUNCESDOSTOP

表示在當前位置沿Z軸向下移動0.1英寸,如果感覺Z軸方向的力超過10盎司,則立即命令機械手停止運動。

一般使用者接觸到的語言都是機器人公司自己開發的針對使用者的語言平臺,通俗易懂,在這一層次,每一個機器人公司都有自己語法規則和語言形式,這些都不重要,因為這層是給用戶示教程式設計使用的。

這個語言平臺之後是一種基於硬體相關的高階語言平臺,如c語言、C++語言、基於IEC61131標準語言等,這些語言是機器人公司做機器人系統開發時所使用的語言平臺,這一層次的語言平臺可以編寫翻譯解釋程式,針對使用者示教的語言平臺編寫的程式進行翻譯解釋成該層語言所能理解的指令,該層語言平臺主要進行運動學和控制方面的程式設計,再底層就是硬體語言,如基於Intel硬體的彙編指令等。

各家工業機器人公司的機器人程式設計語言都不相同,各家有各家自己的程式設計語言。但是,不論變化多大,其關鍵特性都很相似。比如Staubli 機器人的程式設計語言叫VAL3,風格和Basic相似;ABB的叫做RAPID,風格和C相似;還有Adept Robotics 的V+,Fanuc,KUKA,MOTOMAN都有專用的程式設計語言,但是大都是相似.而由於機器人的發明公司Unimation公司最開始的語言就是VAL,所以這些語言結構都有所相似。

即時功能強;可以在線上和離線兩種狀態下程式設計,適用於多種電腦控制的機器人;能夠迅速地計算出不同坐標系下複雜運動的連續軌跡,能連續生成機器人的控制信號,可以與操作者交互地線上修改程式和生成程式;VAL語言包含有一些副程式庫,通過調用各種不同的副程式可很快組合成複雜操作控制;能與外部記憶體進行快速資料傳輸以保存程式和資料。

VAL語言系統包括文本編輯、系統命令和程式設計語言三個部分。

在文本編輯狀態下可以通過鍵盤輸入文本程式,也可通過示教盒在示教方式下輸入程式。在輸入過程中可修改、編輯、生成程式,最後保存到記憶體中。在此狀態下也可以調用已存在的程式。

系統命令包括位置定義、程式和資料清單、程式和資料存儲、系統狀態設置和控制、系統開關控制、系統診斷和修改。

程式設計語言把一條條程式語句轉換執行。

二、VAL語言的指令

VAL語言包括監控指令和程式指令兩種。其中監控指令有六類,分別為位置及姿態定義指令、程式編輯指令、清單指令、存儲指令、控制程式執行指令和系統狀態控制指令。

各類指令的具體形式及功能如下:

1.監控指令

1)位置及姿態定義指令

POINT指令:執行終端位置、姿態的齊次變換或以關節位置表示的精確點位賦值。

其格式有兩種:

POINT<變數>[=<變數2>…<變數n>]

或POINT<精確點>[=<精確點2>]

例如:

POINTPICK1=PICK2

指令的功能是置變數PICK1的值等於PICK2的值。

又如:

POINT#PARK

是準備定義或修改精確點PARK。

DPOINT指令:刪除包括精確點或變數在內的任意數量的位置變數。

HERE指令:此指令使變數或精確點的值等於當前機器人的位置。

例如:

HEREPLACK

是定義變數PLACK等於當前機器人的位置。

WHERE指令:該指令用來顯示機器人在直角坐標空間中的當前位置和關節變數值。

BASE指令:用來設置參考坐標系,系統規定參考系原點在關節1和2軸線的交點處,方向沿固定軸的方向。

格式:

BASE[],[],[],[]

例如:

BASE300,–50,30

是重新定義基準坐標系的位置,它從初始位置向X方向移300,沿Z的負方向移50,再繞Z軸旋轉了30°。

TOOLI指令:此指令的功能是對工具終端相對工具支承面的位置和姿態賦值。

2)程式編輯指令

EDIT指令:此指令允許使用者建立或修改一個指定名字的程式,可以指定被編輯程式的起始行號。其格式為

EDIT[<程式名>],[<行號>]

如果沒有指定行號,則從程式的第一行開始編輯;如果沒有指定程式名,則上次最後編輯的程式被回應。

用EDIT指令進入編輯狀態後,可以用C、D、E、I、L、P、R、S、T等命令來進一步編輯。如:

C命令:改變編輯的程式,用一個新的程式代替。

D命令:刪除從當前行算起的n行程式,n缺省時為刪除當前行。

E命令:退出編輯返回監控模式。

I命令:將當前指令下移一行,以便插入一條指令。

P命令:顯示從當前行往下n行的程式文本內容。

T命令:初始化關節插值程式示教模式,在該模式下,按一次示教盒上的“RECODE”按鈕就將MOVE指令插到程式中。

3)清單指令

DIRECTORY指令:此指令的功能是顯示記憶體中的全部使用者程式名。

LISTL指令:功能是顯示任意個位置變數值。

LISTP指令:功能是顯示任意個使用者的全部程式。

4)存儲指令

FORMAT指令:執行磁片格式化。

SOREP指令:功能是在指定的磁片檔內存儲指定的程式。

STOREL指令:此指令存儲使用者程式中注明的全部位置變數名和變數值。

LISTF指令:指令的功能是顯示軟碟中當前輸入的檔目錄。

LOADP指令:功能是將檔中的程式送入記憶體。

LOADL指令:功能是將檔中指定的位置變數送入系統記憶體。

DELETE指令:此指令撤銷磁片中指定的檔。

COMPRESS指令:只用來壓縮磁碟空間。

ERASE指令:擦除磁內容並初始化。

5)控制程式執行指令

ABORT指令:執行此指令後緊急停止(緊停)。

DO指令:執行單步指令。

EXECUTE指令:此指令執行使用者指定的程式n次,n可以從–32768到32767,當n被省略時,程式執行一次。

NEXT指令:此命令控制程式在單步方式下執行。

PROCEED指令:此指令實現在某一步暫停、急停或運行錯誤後,自下一步起繼續執行程式。

RETRY指令:指令的功能是在某一步出現運行錯誤後,仍自那一步重新運行程式。

SPEED指令:指令的功能是指定程式控制下機器人的運動速度,其值從0.01到327.67,一般正常速度為100。

6)系統狀態控制指令

CALIB指令:此指令校準關節位置感測器。

STATUS指令:用來顯示使用者程式的狀態。

FREE指令:用來顯示當前未使用的存儲容量。

ENABL指令:用於開、關系統硬體。

ZERO指令:此指令的功能是清除全部使用者程式和定義的位置,重新初始化。

DONE:此指令停止監控程序,進入硬體調試狀態。

2.程式指令

1)運動指令

指令包括GO、MOVE、MOVEI、MOVES、DRAW、APPRO、APPROS、DEPART、DRIVE、READY、OPEN、OPENI、CLOSE、CLOSEI、RELAX、GRASP及DELAY等。

這些指令大部分具有使機器人按照特定的方式從一個位姿運動到另一個位元姿的功能,部分指令表示機器人手爪的開合。例如:

MOVE#PICK!

表示機器人由關節插值運動到精確PICK所定義的位置。“!”表示位置變數已有自己的值。

MOVET<位置>,<手開度>

功能是生成關節插值運動使機器人到達位置變數所給定的位元姿,運動中若手為伺服控制,則手由閉合改變到手開度變數給定的值。

又例如:

OPEN[<手開度>]

表示使機器人手爪打開到指定的開度。

2)機器人位元姿控制指令

這些指令包括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實現程式的無條件轉移,而IF指令執行有條件轉移。IF指令的格式為

IF<整型變數1><關係式><整型變數2><關係式>THEN<識別字>

該指令比較兩個整型變數的值,如果關係狀態為真,程式轉到識別字指定的行去執行,否則接著下一行執行。關聯運算式有EQ(等於)、NE(不等於)、LT(小於)、GT(大於)、LE(小於或等於)及GE(大於或等於)。

5)開關量賦值指令

指令包括SPEED、COARSE、FINE、NONULL、NULL、INTOFF及INTON。

6)其他指令

其他指令包括REMARK及TYPE。

SIGLA語言

SIGLA是一種僅用於直角坐標式SIGMA裝配型機器人運動控制時的一種程式設計語言,是20世紀70年代後期由義大利Olivetti公司研製的一種簡單的非文本語言。

這種語言主要用於裝配任務的控制,它可以把裝配任務劃分為一些裝配子任務,如取旋具,在螺釘上料器上取螺釘A,搬運螺釘A,定位螺釘A,裝入螺釘A,緊固螺釘等。程式設計時預先編制副程式,然後用副程式調用的方式來完成。

IML語言

IML也是一種著眼於末端執行器的動作級語言,由日本九州大學開發而成。IML語言的特點是程式設計簡單,能人機對話,適合於現場操作,許多複雜動作可由簡單的指令來實現,易被操作者掌握。

IML用直角坐標系描述機器人和目標物的位置和姿態。坐標系分兩種,一種是機座坐標系,一種是固連在機器人作業空間上的工作坐標系。語言以指令形式程式設計,可以表示機器人的工作點、運動軌跡、目標物的位置及姿態等資訊,從而可以直接程式設計。往返作業可不用迴圈語句描述,示教的軌跡能定義成指令插到語句中,還能完成某些力的施加。

IML語言的主要指令有:運動指令MOVE、速度指令SPEED、停止指令STOP、手指開合指令OPEN及CLOSE、坐標系定義指令COORD、軌跡定義命令TRAJ、位置定義命令HERE、程式控制指令IF…THEN、FOREACH語句、CASE語句及DEFINE等。

AL語言

一、AL語言概述

AL語言是20世紀70年代中期美國斯坦福大學人工智慧研究所開發研製的一種機器人語言,它是在WAVE的基礎上開發出來的,也是一種動作級程式設計語言,但兼有物件級程式設計語言的某些特徵,使用於裝配作業。它的結構及特點類似於PASCAL語言,可以編譯成機器語言在即時控制機上運行,具有即時編譯語言的結構和特徵,如可以同步操作、條件操作等。AL語言設計的原始目的是用於具有感測器資訊回饋的多台機器人或機械手的並行或協調控制程式設計。

運行VA語言的系統硬體環境包括主、從兩級電腦控制,如圖所示。主機為PDP-10,主機內的管理器負責管理協調各部分的工作,編譯器負責對AL語言的指令進行編譯並檢查程式,即時介面負責主、從機之間的介面連接,裝載器負責分配程式。從機為PDP-11/45。

主機的功能是對AL語言進行編譯,對機器人的動作進行規劃;從機接受主機發出的動作規劃命令,進行軌跡及關節參數的即時計算,最後對機器人發出具體的動作指令。

二、AL語言的程式設計格式

(1)程式BEGIN開始,由END結束。

(2)語句與語句之間用分號隔開。

(3)變數先定義說明其類型,後使用。變數名以英文字母開頭,由字母、數位和下畫線組成,字母大、小寫不分。

(4)程式的注釋用大括弧括起來。

(5)變數設定陳述式中如所賦的內容為運算式,則先計算運算式的值,再把該值賦給等式左邊的變數。

三、AL語言中資料的類型

(1)標量(scalar)——可以是時間、距離、角度及力等,可以進行加、減、乘、除和指數運算,也可以進行三角函數、自然對數和指數換算。

(2)向量(vector)——與數學中的向量類似,可以由若干個量綱相同的標量來構造一個向量。

(3)旋轉(rot)——用來描述一個軸的旋轉或繞某個軸的旋轉以表示姿態。用ROT變數表示旋轉變數時帶有兩個參數,一個代表旋轉軸的簡單向量,另一個表示旋轉角度。

(4)坐標系(frame)——用來建立坐標系,變數的值表示物體固連坐標系與空間作業的參考坐標系之間的相對位置與姿態。

(5)變換(trans)——用來進行座標變換,具有旋轉和向量兩個參數,執行時先旋轉再平移。

四、AL語言的語句介紹

1.MOVE語句

用來描述機器人手爪的運動,如手爪從一個位置運動到另一個位置。MOVE語句的格式為

MOVETO<目的地>

2.手爪控制語句

OPEN:手爪打開語句。

CLOSE:手爪閉合語句。

語句的格式為

OPENTO

CLOSETO

其中SVAL為開度距離值,在程式中已預先指定。

3.控制語句

與PASCAL語言類似,控制語句有下面幾種:

IF<條件>THEN<語句>ELSE<語句>

WHILE<條件>DO<語句>

CASE<語句>

DO<語句>UNTIL<條件>

FOR…STEP…UNTIL…

4.AFFIX和UNFIX語句

在裝配過程中經常出現將一個物體粘到另一個物體上或一個物體從另一個物體上剝離的操作。語句AFFIX為兩物體結合的操作,語句AFFIX為兩物體分離的操作。

例如:BEAM_BORE和BEAM分別為兩個坐標系,執行語句

AFFIXBEAM_BORETOBEAM

後兩個坐標系就附著在一起了,即一個坐標系的運動也將引起另一個坐標系的同樣運動。然後執行下面的語句

UNFIXBEAM_BOREFROMBEAM

兩坐標系的附著關係被解除。

5.力覺的處理

在MOVE語句中使用條件監控子語句可實現使用感測器資訊來完成一定的動作。

監控子語句如:

ON<條件>DO<動作>

例如:

MOVEBARMTO⊕-0.1*INCHESONFORCE(Z)>10*OUNCESDOSTOP

表示在當前位置沿Z軸向下移動0.1英寸,如果感覺Z軸方向的力超過10盎司,則立即命令機械手停止運動。

一般使用者接觸到的語言都是機器人公司自己開發的針對使用者的語言平臺,通俗易懂,在這一層次,每一個機器人公司都有自己語法規則和語言形式,這些都不重要,因為這層是給用戶示教程式設計使用的。

這個語言平臺之後是一種基於硬體相關的高階語言平臺,如c語言、C++語言、基於IEC61131標準語言等,這些語言是機器人公司做機器人系統開發時所使用的語言平臺,這一層次的語言平臺可以編寫翻譯解釋程式,針對使用者示教的語言平臺編寫的程式進行翻譯解釋成該層語言所能理解的指令,該層語言平臺主要進行運動學和控制方面的程式設計,再底層就是硬體語言,如基於Intel硬體的彙編指令等。

各家工業機器人公司的機器人程式設計語言都不相同,各家有各家自己的程式設計語言。但是,不論變化多大,其關鍵特性都很相似。比如Staubli 機器人的程式設計語言叫VAL3,風格和Basic相似;ABB的叫做RAPID,風格和C相似;還有Adept Robotics 的V+,Fanuc,KUKA,MOTOMAN都有專用的程式設計語言,但是大都是相似.而由於機器人的發明公司Unimation公司最開始的語言就是VAL,所以這些語言結構都有所相似。