EASY-ROB - Program Language
EASY-ROB Program and Command Language Easy-Rob-Program-Language.pdf
Overview
(70KB)
ERPL
EASY-ROB Program Language Covers all necessary motion commands, such as speed_cp, to set the speed for cp motion LIN x y z A B C, to move the robots TCP to this locaton in CP linear mode
ERCL
EASY-ROB Command Language Extension of ERPL, to automate all user interaction
Example Program
Example Program: "arc.prg" from Workcel file "arc.cel" in folder ./proj/
MATH
Mathematical and Trigonomic Functions The Parser for algebraic expressions allows to use formulars. Useful for mathematical dependences for passive robot joints for example, as well when you enter a number in every dialog.
ERPL - EASY-ROB Program Language Teach Window Easy program generation with the TeachWindow. No special knowledge of any EASY-ROB Program Syntax is necessary.
A click on the button, activates the MotionCommands dialog.
A click on the button, activates the ControlCommands dialog.
Single Step Simulation Every single motion command can be executed directly from the TeachWindow, forward and
www.easy-rob.com
1/8
EASY-ROB - Program Language
from the TeachWindow, forward and backwards. Robot Motion Commands OV_PRO x [%] SPEED_CP dx dxe[m/s] SPEED_PTP v ve[m,deg] CONFIG n [] TOOL X Y Z A B C [m,deg] TOOL tagname EXT_TCP X Y Z A B C [m,deg] EXT_TCP tagname BASE X Y Z A B C [m,deg] BASE tagname BASE_REL X Y Z A B C [m,deg] BASE_PRG X Y Z A B C [m,deg] BASE_PRG_REL X Y Z A B C [m,deg] HOME n [] PTP X Y Z A B C [m,deg] PTP_AX q1 .. qn [m,deg] PTP_AX_REL q1 .. qn [m,deg] PTP_REL dX dY dZ dA dB dC [m,deg] PTP tagname LIN_ORI VARIABLE, FIX, TANGENTIAL, AUX, VARIABLE2, QUATERNION LIN X Y Z A B C [m,deg] LIN_REL dX dY Dz dA dB dC [m,deg] LIN TagName CIRC_ORI VARIABLE, FIX, TANGENTIAL, AUX, VARIABLE2, QUATERNION VIA_POS X Y Z A B C [m,deg] VIA_POS_REL dX dY dZ dA dB dC [m,deg] VIA_POS TagName CIRC X Y Z A B C [X2 Y2 Z2] [m,deg] [X2 Y2 Z2] via point CIRC_REL dX dY dZ dA dB dC [dX2 dY2 dZ2] [m,deg] [dX2 dY2 dZ2] via point CIRC TagName [TagName2] [TagName2] via point MSG "" WAIT x [sec] CALL fct_name() FCT fct_name() ENDFCT CALL FILE filename
ERCL - EASY-ROB Command Language ERCL is an extension of the standard ERPL available in the BASIC Modul and is useful to create more advanced and effective simulations. The goal with ERCL is to automate all user interaction, such as enable the TCP track, enable collision detection, set the simulation and interpolation step size, render bodies to flat, wire or invisible, move bodies absolute or relative, change colors, etc.
www.easy-rob.com
2/8
EASY-ROB - Program Language
A click on the button, activates the dialog to insert ERC commands.
EASY-ROB Command Language
ERC SET_DEFAULTS ERC SIM_STEP x [sec] ERC CNTRL_STEP x [sec] ERC SYSTEM_STEP x [sec] ERC IPO_STEP x [sec] ERC IPO_LEAD_TIME x [sec] ERC IPO_LAG_TIME x [sec] ERC TRACK ON,OFF ERC DYNAMICS ON,OFF ERC STOP_SWE ON,OFF ERC COLLISION ON,OFF ERC STOP_COLLISION ON,OFF ERC ROBOTJOINTS ON,OFF ERC ROBOTPOSITIONS ON,OFF ERC PRG_WIN ON,OFF ERC FLOOR ON,OFF ERC FLOOR_RENDER ON,OFF ERC EXT_TCP ON,OFF ERC ORTHOGRAFIC ON,OFF ERC DISPLAY_ROBOT ON,OFF ERC DISPLAY_ROBOT_COORSYS ON,OFF ERC DISPLAY_TOOL ON,OFF ERC DISPLAY_BODYS ON,OFF ERC TCP_COORSYS ON,OFF ERC BASE_COORSYS ON/OFF ERC CREATE_TARGET_TAGS ON/OFF ERC RESET_ALL_POSITIONS_JOINTS ON/OFF ERC NO_DECEL ON/OFF ERC GRAFIC_UPDATE ON/OFF ERC DISPLAY_TAGS ON/OFF ERC STATUS_OUTPUT ON/OFF [1-at simstep,2-at target pose] [flnname] [fct# 0-12] ERC RENDER FLAT ERC RENDER WIRE ERC RENDER BBOX ON,OFF ERC RENDER BODY [ROBOT,TOOL] bodyname WIRE [FLAT,BBOXWIRE,BBOXFLAT,INVISIBLE] ERC RENDER BODY_GRP [ROBOT_GRP,TOOL_GRP] WIRE [FLAT,BBOXWIRE,BBOXFLAT,INVISIBLE]
www.easy-rob.com
3/8
EASY-ROB - Program Language
ERC COLOR BODY [ROBOT,TOOL] bodyname color ERC COLOR BODY_GRP [ROBOT_GRP,TOOL_GRP] color ERC COLOR TRACK [TRACK_DYN] color ERC COLOR TAG color color = [BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE] ERC STOP ERC RESET JOINTPOSITION ERC SAVE JOINTPOSITION ERC LOAD TOOL fln ERC LOAD VIEW fln ERC LOAD ROBOT fln ERC LOAD BODY fln ERC LOAD RECORDING fln ERC LOAD ENVIRONMENT fln | DEFAULT ERC SHOW_IMAGE er_image.bat "" ERC ESSI ON,OFF [speed scale value] [size scale value] ERC EAI ON,OFF [speed scale value] [size scale value] ERC RUN_RECORDING [recordingfile.rec] ERC MOVE BODY bodyname XYZ ABC [m,deg] ERC MOVE BODY bodyname TagName ERC MOVE TOOL bodyname XYZ ABC [m,deg] ERC MOVE TOOL bodyname TagName ERC MOVE ROBOT bodyname XYZ ABC [m,deg] ERC MOVE ROBOT bodyname TagName ERC MOVE_REL BODY bodyname dXdYdZ dAdBdC [m,deg] ERC MOVE_REL TOOL bodyname dXdYdZ dAdBdC [m,deg] ERC MOVE_REL ROBOT bodyname dXdYdZ dAdBdC [m,deg] ERC MOVE_REL BODY_GRP bodyname dXdYdZ dAdBdC [m,deg] ERC MOVE_REL TOOL_GRP bodyname dXdYdZ dAdBdC [m,deg] ERC MOVE_REL ROBOT_GRP bodyname dXdYdZ dAdBdC [m,deg] ERC MOVE_REL LIST listname dXdYdZ dAdBdC [m,deg] ERC BASE BODY bodyname ERC BASE TCP ERC VIEW steps n ERC VIEW hither x ERC VIEW yonder x ERC VIEW screen x ERC VIEW zweight x ERC VIEW zoom x ERC VIEW zoom_in x ERC VIEW zoom_out x ERC VIEW tcp_rot_tcp ABC ERC VIEW tcp_rot_world ABC ERC VIEW world_rot_base ABC ERC VIEW world_rot_world ABC ERC GRAB BODY ’bodyname’ ERC GRAB BODY_GRP ERC RELEASE BODY ’bodyname’ ERC RELEASE BODY_GRP ERC ROBOT_BASE XYZ ABC [m,deg] ERC ROBOT_BASE tagname ERC ROBOT_BASE_REL XYZ ABC [m,deg] ERC LIST NEW listname [bodyname] ERC LIST DELETE listname ERC LIST ADD listname bodyname ERC LIST REMOVE listname bodyname ERC JOINT_WEIGHT 0 or 1 for number of joints ERC MASK_VECTOR [0,1] for X Y Z A B C ERC SWE_NEG swe1 ... swen negative software endswitches [m,deg] ERC SWE_POS swe1 ... swen positive software endswitches [m,deg] ERC_CMD: ERC TAGS PREFIX prefixname !ERC_CMD: ERC TAGS DELETE tagname ERC_CMD: ERC TAGS DELETE ALL ERC TRACK_TYPE LINE [POINT, LINE_Z_DIRECTION, Z_DIRECTION, X_DIRECTION, Y_DIRECTION] Value
www.easy-rob.com
4/8
EASY-ROB - Program Language
Y_DIRECTION] Value // value is linewidth, or pointsize or approach length for direction setting
EASY-ROB Example Program Program: arc.cel PROGRAMFILE ! prgfln ..\proj\my_proj\arc.prg Config 1 base_prg 0 0 0 0 0 0 base 0 0 0 0 0 0 speed_ptp 90.0 PTP 0.8800 -0.4750 0.3000 -0.0004 180.0000 60.00 PTP 0.8800 -0.4750 0.3000 180.0000 0.0000 55.00 PTP 0.7741 -0.9853 0.7619 97.0490 -11.65 -127.45 PTP 0.5000 0.0000 0.4600 180.0000 0.0000 -90.0000 wait 1.0 speed_cp 0.05 base 0 0 0.2275 0 0 0 LIN 0.5000 0.0000 0.10 180.0000 0.0000 -90.0000 LIN 0.9000 -0.5000 0.10 180.0000 0.0000 -90.0000 LIN 1.0 -0.5000 0.0 180.0000 0.0000 -90.0000 speed_cp 0.1 LIN 1.0 0.2000 0.0 180.0000 0.0000 -90.0000 LIN 1.0 0.3000 0.0 0.0000 180.0000 45.0000 LIN 1.0 0.3000 0.0 10.0000 170.0000 45.0000 speed_cp 0.05 LIN 1.0 0.3000 0.1 10.0000 170.0000 45.0000 ! backside LIN 1.0 0.3000 0.1 170.0000 -10.0000 45.0000 LIN 1.0 0.3000 -0.0275 170.0000 -10.0000 45.0000 LIN 1.0 0.3000 0.1 170.0000 -10.0000 45.0000 LIN 1.02 0.3000 0.1 10.0000 170.0000 45.0000 LIN 1.0 0.3000 0.1 10.0000 170.0000 45.0000 LIN 1.0 0.3200 0.1 10.0000 170.0000 45.0000 LIN 1.0 0.3000 0.1 10.0000 170.0000 45.0000 LIN 1.0 0.3000 0.0 10.0000 170.0000 45.0000 speed_cp 0.1 LIN 0.5000 0.3000 0.0 10.0000 180.0000 0.0000 wait 2.0 LIN 0.5000 0.200 0.1 0.0000 180.0000 0.0000 wait 1.0 ENDPROGRAMFILE
Mathematical and Trigonometric Functions Important: - All expressions starts with an ’=’ equal sign. - Nesting of functions and white spaces are allowed - All argument have to be in bracket ’(’ ’)’ - Upper and lower cases will be converted into upper cases
www.easy-rob.com
5/8
EASY-ROB - Program Language
Value Input Dialog: Result X= 0.405= 0.880-0.475 Trigonometric Functions Example: =sin((45/3+15)*rad()) result: 0.5 sin cos tan asin acos atn atan Mathematical Functions Example: =exp(1) result: 2.7183 =log(exp(1)) result: 1 exp log int sqr sqrt abs rnd fact EASY-ROB Functions DOF (Degree of Freedom) - Functions return the current joint value for the current loaded robot The DOF Functions are very usefull to define mathematical dependencies between passive- and active joints. Supposed the robot kinmatic is described based on UNIV- or DH-notation Examples: =dof(1) returns the desired joint value from robot axis number 1 =dof(4) returns the desired joint value from robot axis number 4 =dof1(0) returns the desired (nominal) joint value from robot axis number 1 =dof1(1) returns the dynamic joint value from robot axis number 1 (If dynamic is disabled ’OFF’, dof1(0) is equal dof1(1)) dof dof1 dof2 dof3 dof4 dof5 dof6 dof7 dof8 dof9 dof10 dof11 dof12 The TCP Functions return the current TCP location for the current loaded robot with respect to the robot base ’b’ and the world ’i’ coorsys frame. base: ’b’ => bTCPw = inq_bTw(); world: ’i’ => iTCPw = inq_iTb() * inq_bTw(); Examples: =tcpx(0) returns the desired TCP location in X direction w.r.t. ’b’ =tcpx(1) returns the dynamic TCP location in X direction w.r.t. ’b’ =tcpix(0) returns the desired TCP location in X direction w.r.t. ’i’ =tcpix(1) returns the dynamic TCP location in X direction w.r.t. ’i’ (If dynamic is disabled ’OFF’, tcp?(0) is equal tcp?(1)) tcpx tcpy
www.easy-rob.com
6/8
EASY-ROB - Program Language
tcpy tcpz tcpix tcpiy tcpiz The ROBB Functions return the Robots Base position for the current loaded robot with respect to the world coorsys frame ’i’ => iROBBb = inq_iTb(); Examples: =robbx() returns the Robot base position in X direction w.r.t. ’i’ =robby() returns the Robot base position in y direction w.r.t. ’i’ robbx robby robbz The Robot Joint-Offset und Joint-Sign - Functions return the offset value for each joint and the sign/direction. The JointSign is always +1 or-1. Examples: =jntoff(1) returns joint offset from robot axis number 1 =jntsign(3) returns joint sign from robot axis number 3 jntoff jntsign Access Functions to the lengths of the passive joints Examples: =lp0x(2) returns length (X component) from passiv joint #2 from the last joint = inq_kin_achs_T0_passiv(1)->p[0]; =lp0y(1) returns length (Y component) from passiv joint #1 from the last joint = inq_kin_achs_T0_passiv(0)->p[1]; =lp0z(4) returns length (Z component) from passiv joint #4 from the last joint = inq_kin_achs_T0_passiv(3)->p[2]; =lpx(2) returns length (X component) from passiv joint #2 to the next joint = inq_kin_achs_T_passiv(1)->p[0]; =lpy(1) returns length (Y component) from passiv joint #1 to the next joint = inq_kin_achs_T_passiv(0)->p[1]; =lpz(4) returns length (Z component) from passiv joint #4 to the next joint = inq_kin_achs_T_passiv(3)->p[2]; Zero (0) is returned if the number of passive robot joints is less than specified. /************************ Conversation Functions ************************/ To convert units, etc. Examples: =pi() result: 3.1415926 =deg() result: 57.3 =rad() result: 0.01745 pi deg rad /************************ Parameter and Triangle Functions **************/ Argument-Parameter Functions ’P’, to store a value ’x’ as an argument for the triangle functions. pa(x) - 1st argument pb(x) - 2nd argument pc(x) - 3rd argument pd(x) - 4th argument pe(x) - 5th argument The Triangle Functions allows to calculate miscellaneous angle and side length of a triangle. A triangle a completely defined with three values.
www.easy-rob.com
7/8
EASY-ROB - Program Language
assa() Input: pa=gamma pb=B pc=C Output: alfa Usage: pa=gamma= 45°, pb=B= 1, pc=C= 1 alfa =assa(pa(45*rad())+pb(1)+pc(1))*DEG() Result: alfa = 90° assa2() Input: pa=gamma pb=B pc=C Output: beta Usage: pa=gamma= 45°, pb=B= 1, pc=C= 1 beta =assa2(pa(45*rad())+pb(1)+pc(1))*DEG() Result: beta = 45° asss() Input: pa=gamma pb=B pc=C Output: A Usage: pa=gamma= 45°, pb=B= 1, pc=C= 1 A=asss(pa(45*rad())+pb(1)+pc(1)) Result: A = 1.41421 = sqrt(2) A = sqrt(3) = asss(pa(30*rad())+pb(1)+pc(1)) sssa() Input: pa=A pb=B pc=C Output: alfa, opposite angle from A Usage: pa=A=sqrt(3), pb=B= 1, pc=C= 1 alfa=sssa(pa(sqrt(3))+pb(1)+pc(1))*DEG() Result: alfa = 120°
sasssa() Input: pa=A pb=delta pc=B pd=C pe=D Output: alfa, opposite angle from A Usage: pa=A=1, pb=delta=90°, pc=B=1, pd=C= 1, pe=D= 1.5 alfa=sasssa(pa(1)+pb(90*rad())+pc(1)+pd(1)+pe(1.5))*DEG() Result: alfa = 119.62°
Last revised on JAN 2001
[email protected]
www.easy-rob.com
8/8