The objective of this tutorial is to introduce a series of non-motion related operations that can be used in conjunction with robot pathing. As they are rather simple they will presented in rapid succession.
Digital/Analog Output Signals and Groups
Every Robot Task represent a procedure which is typically a forward or inverse kinematics path. There are two additional parameters that can be set for motions paths that can be used to specify additional operation before the motion path begins executing and/or right after it completes. The signals operations contain some typical use cases for setting, clearing or inverting signals.
Signal Clear sets a particular digital output signal, passed by name, to LOW which corresponds the the SetDO SignalName, 0; instruction in the ABB Rapid language (see figure above). Signal Set encapsulates more functionality but in the base case it just the opposite of clear whereby it sets a particular digital output signal, also passed by name, to HIGH (see figure below). The instruction related to this is SetDO SignalName, 1;
But wait there is more. If the Value passed as a parameter to the Signal Set component is a real number, rather than an integer, then the component will assume that it must be an analog rather than digital output signal. As such it will emit the SetAO SignalName, Value; instruction in the machine code generation phase (see below).
Finally, if the Value passed to the Signal Set component is a string then it will be interpreted as an assignment of a variable which for some machines can be signal mapped group. In the sample below the VariableOrGroup is assigned with the Value as defined by the text box contents connected without any modification. Note that as the variable was not declared prior to its first use in this example and will result to a compile-time error because the ABB Rapid language requires formal declarations (the Pythonesque language of Universal Robots for instance if ok).
The final signaling operation is Bit Invert whereby the digital output signal passed by name is toggled from its current state to the exact opposite. The associated instruction for this robot’s language is InvertDO SignalName; This operation is particularly useful for pick and place applications where the gripper is constantly opening and closing.
Motion Speed Control and Path Approximation
The following page in the Robot Task component contains instructions for modifying motion timings. The most commonly used operation is for setting the actual motion speed. The ABB robot understands positional and rotational velocities which are relevant to inverse and forward kinematic paths respectively. The associated instruction for setting speeds is StdSpeed which is Jeneratiff shortcut procedure. The first parameter is the linear velocity in (mm/sec), the second parameter is the angular velocity in (deg/sec) and the last parameter is the approximation tolerance in (mm).
If the path approximation tolerance, named as blend radius, is zero then the robot will be forced to pass through exactly every plane defined in the motion task. This often results to jerky motion because the trapezoidal profile or acceleration → desired speed reached → deceleration is performed for each segment of the poly-plane path. By setting up a blending radius of a few millimeters, the robot will try to retain the desired speed but it will also miss the interim planes up to the specified distance / tolerance. This option is irrelevant for pick and place applications but very critical to get right for machining as it may induce vibration artifacts or reduce resolution of the workpiece produced.
Waiting and Pausing the Program
The Wait operation adds a timed delay in (sec) before the next instruction is executed. This is a very common instruction when using external motors or pneumatics as the physical response is not instantaneous; there is lag between the time of triggering a digital output and the time it takes for a motor to reach desired speed or a jaw to open/close. The Pause operation is temporarily stopping the robot’s program execution until the user proceeds or cancels the program though the teaching pendant. The intended use of this operation is debugging whereby instead of clicking the step through button of the pendant continuously it is possible add break points using the Pause operation in between long runs of code.
Syntax operations include: (a) Inserting comments into the machine code for presumably annotation purposes; (b) Emitting text messages to the robot’s log for debugging purposes; and (c) Injecting ABB Rapid instructions directly into the code stream. Code injection is particularly useful as Jeneratiff does not cover 100% of the idioms and API of any particular robot programming language.
There are two task-wide modification operations available: drop and merge. Dropping a motion path is applicable only to inverse kinematics paths whereby they are transformed to joint paths. This operation is particularly useful when the robot misbehaves and it is not clear if it is a problem with the pathing logic or the coding logic. By forcing the path to joints it becomes immediately unambiguous and bypasses subtitles of inverse kinematics and interpolations such as singularities etc.
Merge combines multiple tasks into one. The reason for this modification is primarily code compaction as overheads of individual procedure declarations are eliminated from the emitted code and execution appears linear.