EASY-ROB - Program Language
www.easy-rob.com
1/8
EASY-ROB Program and Command Language
ERPL - EASY-ROB
Program
Language
Overview
Easy-Rob-Program-Language.pdf
(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.
Teach Window
Easy program generation with the
TeachWindow. No special knowledge
of any EASY-ROB Program Syntax is
necessary.
Single Step Simulation
Every single motion
command can be executed directly
from the TeachWindow, forward and
A click on the
button,
activates the
MotionCommands dialog.
A click on the
button,
activates the
ControlCommands dialog.
EASY-ROB - Program Language
www.easy-rob.com
2/8
ERCL - EASY-ROB
Command
Language
Robot Motion Commands
from the TeachWindow, forward and
backwards.
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 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.
EASY-ROB - Program Language
www.easy-rob.com
3/8
EASY-ROB Command Language
A click on the
button,
activates the dialog to insert
ERC commands.
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]
EASY-ROB - Program Language
www.easy-rob.com
4/8
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
EASY-ROB - Program Language
www.easy-rob.com
5/8
EASY-ROB Example Program
Mathematical and Trigonometric Functions
Y_DIRECTION] Value
// value is linewidth, or pointsize or approach length for direction setting
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
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
EASY-ROB - Program Language
www.easy-rob.com
6/8
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
EASY-ROB - Program Language
www.easy-rob.com
7/8
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.
EASY-ROB - Program Language
www.easy-rob.com
8/8
Last revised on JAN 2001
webmaster@easy-rob.com
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°