機器人編程
使機器人完成某種任務而設置的動作順序描述
機器人編程【robot programming】為使機器人完成某種任務而設置的動作順序描述。機器人運動和作業的指令都是由程序進行控制,常見的編製方法有兩種,示教編程方法和離線編程方法。其中示教編程方法包括示教、編輯和軌跡再現,可以通過示教盒示教和導引式示教兩種途徑實現。由於示教方式實用性強,操作簡便,因此大部分機器人都採用這種方式。離線編程方法是利用計算機圖形學成果,藉助圖形處理工具建立幾何模型,通過一些規劃演演算法來獲取作業規劃軌跡。與示教編程不同,離線編程不與機器人發生關係,在編程過程中機器人可以照常工作。
用EDIT指令進入編輯狀態后,可以用C、D、E、I、L、P、R、S、T等命令來進一步編輯。如:
C命令:改變編輯的程序,用一個新的程序代替。
D命令:刪除從當前行算起的n行程序,n預設時為刪除當前行。
E命令:退出編輯返回監控模式。
I命令:將當前指令下移一行,以便插入一條指令。
P命令:顯示從當前行往下n行的程序文本內容。
T命令:初始化關節插值程序示教模式,在該模式下,按一次示教盒上的“RECODE”按鈕就將MOVE指令插到程序中。
DIRECTORY指令:此指令的功能是顯示存儲器中的全部用戶程序名。
LISTL指令:功能是顯示任意個位置變數值。
LISTP指令:功能是顯示任意個用戶的全部程序。
FORMAT指令:執行磁碟格式化。
STOREP指令:功能是在指定的磁碟文件內存儲指定的程序。
STOREL指令:此指令存儲用戶程序中註明的全部位置變數名和變數值。
LISTF指令:指令的功能是顯示軟盤中當前輸入的文件目錄。
LOADP指令:功能是將文件中的程序送入內存。
LOADL指令:功能是將文件中指定的位置變數送入系統內存。
DELETE指令:此指令撤銷磁碟中指定的文件。
COMPRESS指令:只用來壓縮磁碟空間。
ERASE指令:擦除磁內容並初始化。
ABORT指令:執行此指令后緊急停止(急停)。
DO指令:執行單步指令。
EXECUTE指令:此指令執行用戶指定的程序n次,n可以從–32 768到 32 767,當n被省略時,程序執行一次。
NEXT指令:此命令控制程序在單步方式下執行。
PROCEED指令:此指令實現在某一步暫停、急停或運行錯誤后,自下一步起繼續執行程序。
RETRY指令:指令的功能是在某一步出現運行錯誤后,仍自那一步重新運行程序。
SPEED指令:指令的功能是指定程序控制下機器人的運動速度,其值從0.01到327.67,一般正常速度為100。
CALIB指令:此指令校準關節位置感測器。
STATUS指令:用來顯示用戶程序的狀態。
FREE指令:用來顯示當前未使用的存儲容量。
ENABL指令:用於開、關係統硬體。
ZERO指令:此指令的功能是清除全部用戶程序和定義的位置,重新初始化。
DONE:此指令停止監控程序,進入硬體調試狀態。
指令包括GO、MOVE、MOVEI、MOVES、DRAW、APPRO、APPROS、DEPART、DRIVE、READY、OPEN、OPENI、CLOSE、CLOSEI、RELAX、GRASP及DELAY等。
這些指令大部分具有使機器人按照特定的方式從一個位姿運動到另一個位姿的功能,部分指令表示機器人手爪的開合。例如:
MOVE #PICK!
表示機器人由關節插值運動到精確PICK所定義的位置。“!”表示位置變數已有自己的值。
MOVET <位置>,<手開度>
功能是生成關節插值運動使機器人到達位置變數所給定的位姿,運動中若手為伺服控制,則手由閉合改變到手開度變數給定的值。
又例如:
OPEN [<手開度>]
表示使機器人手爪打開到指定的開度。
這些指令包括RIGHTY、LEFTY、ABOVE、BELOW、FLIP及NOFLIP等。
賦值指令有SETI、TYPEI、HERE、SET、SHIFT、TOOL、INVERSE及FRAME。
控制指令有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(大於或等於)。
指令包括SPEED、COARSE、FINE、NONULL、NULL、INTOFF及INTON。
其他指令包括REMARK及TYPE。
SIGLA是一種僅用於直角坐標式SIGMA裝配型機器人運動控制時的一種編程語言,是20世紀70年代後期由義大利Olivetti公司研製的一種簡單的非文本語言。
這種語言主要用於裝配任務的控制,它可以把裝配任務劃分為一些裝配子任務,如取旋具,在螺釘上料器上取螺釘A,搬運螺釘A,定位螺釘A,裝入螺釘A,緊固螺釘等。編程時預先編製子程序,然後用子程序調用的方式來完成。
IML也是一種著眼於末端執行器的動作級語言,由日本九州大學開發而成。IML語言的特點是編程簡單,能人機對話,適合於現場操作,許多複雜動作可由簡單的指令來實現,易被操作者掌握。
IML用 直角坐標系描述機器人和目標物的位置和姿態。坐標系分兩種,一種是機座坐標系,一種是固連在機器人作業空間上的工作坐標系。語言以指令形式編程,可以表示 機器人的工作點、運動軌跡、目標物的位置及姿態等信息,從而可以直接編程。往返作業可不用循環語句描述,示教的軌跡能定義成指令插到語句中,還能完成某些 力的施加。
IML語言的主要指令有:運動指令MOVE、速度指令SPEED、停止指令STOP、手指開合指令OPEN及CLOSE、坐標系定義指令COORD、軌跡定義命令TRAJ、位置定義命令HERE、程序控制指令IF…THEN、FOR EACH語句、CASE語句及DEFINE等。
任務程序員能夠指揮機器人系統去完成的分立單一動作就是基本程序功能。例如,把工具移動至某一指定位置,操作末端執行裝置,或者從感測器或手調輸入裝置讀個數等。機器人工作站的系統程序員,他的責任是選用一套對作業程序員工作最有用的基本功能。這些基本功能包括運算、決策、通訊、機械手運動、工具指令以及感測器數據處理等。許多正在運行的機器人系統,只提供機械手運動和工具指令以及某些簡單的感測數據處理功能。
1. 運算
在作業過程中執行的規定運算能力是機器人控制系統最重要的能力之一。
如果機器人未裝有任何感測器,那麼就可能不需要對機器人程序規定什麼運算。沒有感測器的機器人只不過是一台適於編程的數控機器。
裝有感測器的機器人所進行的一些最有用的運算是解析幾何計算。這些運算結果能使機器人自行做出決定,在下一步把工具或夾手置於何處。
2. 決策
機器人系統能夠根據感測器輸入信息做出決策,而不必執行任何運算。按照未處理的感測器數據計算得到的結果,是做出下一步該幹什麼這類決策的基礎。這種決策能力使機器人控制系統的功能更強有力。
3. 通訊
機器人系統與操作人員之間的通訊能力,允許機器人要求操作人員提供信息、告訴操作者下一步該幹什麼,以及讓操作者知道機器人打算幹什麼。人和機器能夠通過許多不同方式進行通訊。
4. 機械手運動
可用許多不同方法來規定機械手的運動。最簡單的方法是向各關節伺服裝置提供一組關節位置,然後等待伺服裝置到達這些規定位置。比較複雜的方法是在機械手工作空間內插入一些中間位置。這種程序使所有關節同時開始運動和同時停止運動。用與機械手的形狀無關的坐標來表示工具位置是更先進的方法,而且(除X-Y-Z機械手外)需要用一台計算機對解答進行計算。在笛卡兒空間內插入工具位置能使工具端點沿著路徑跟隨軌跡平滑運動。引入一個參考坐標系,用以描述工具位置,然後讓該坐標系運動。這對許多情況是很方便的。
5.工具指令
一個工具控制指令通常是由閉合某個開關或繼電器而開始觸發的,而繼電器又可能把電源接通或斷開,以直接控制工具運動,或者送出一個小功率信號給電子控制器,讓後者去控制工具。直接控制是最簡單的方法,而且對控制系統的要求也較少。可以用感測器來感受工具運動及其功能的執行情況。
6. 感測數據處理
用於機械手控制的通用計算機只有與感測器連接起來,才能發揮其全部效用。我們已經知道,感測器具有多種形式。此外,我們按照功能,把感測器概括如下:
(1)內體感受器用於感受機械手或其它由計算機控制的關節式機構的位置。
(2)觸覺感測器用於感受工具與物體(工件)間的實際接觸。
(3)接近度或距離感測器用於感受工具至工件或障礙物的距離。
(4)力和力矩感測器用於感受裝配(如把銷釘插入孔內)時所產生的力和力矩。
(5)視覺感測器用於“看見”工作空間內的物體,確定物體的位置或(和)識別它們的形狀等。感測數據處理是許多機器人程序編製的十分重要而又複雜的組成部分。
於機器人專家來說,最重要的事情是開拓你的”編程思維”,而不是精通一種特定的編程語言。從很多方面來說,從哪種編程語言開始學習真的無關緊要。你學習的每種語言提升了你的編程思維,擁有了這種思維,去學習一種新編程語言的時候會容易不少。機器人編程中最流行的編程語言有BASIC/Pascal;工業機器人編程語言;LISP;硬體描述語言(HDLs);Assembly;MATLAB;C#.NET;Java;Python;C/C++。