# RoboLogix

RoboLogix is a robotics simulator which uses a physics engine to emulate robotics applications. The advantages of using robotics simulation tools such as RoboLogix are that they save time in the design of robotics applications and they can also increase the level of safety associated with robotic equipment since various "what if" scenarios can be tried and tested before the system is activated. RoboLogix provides a platform to teach, test, run, and debug programs that have been written using a five-axis industrial robot in a range of applications and functions. These applications include pick-and-place, palletizing, welding, and painting.
RoboLogix was developed by Colin Simpson and John (Bud) Skinner. It is primarily intended as an educational resource, and is used by high schools, colleges, and universities to provide laboratory simulation of industrial robots. Some institutions, such as George Brown College use RoboLogix as part of an online robotics distance education program. The simulation software allows for verification of the robot's reaching ability, travel ranges and collisions. This type of simulation software provides an increased level of reliability in the planning process and program development as well as reducing the overall completion/commissioning time.
The ability to preview the behavior of a robotic system in a virtual world allows for a variety of mechanisms, devices, configurations and controllers to be tried and tested before being applied to a "real world" system. RoboLogix has the capacity of real-time simulation of the motion of an industrial robot using both geometric modeling and kinematics modeling.
RoboLogix enables programmers to write their own robot programs and use sensors such as video cameras, which are used for obtaining the desired position of the robot end effector. In addition, a teach pendant control panel is included with the simulator that allows the user to command the robot to pick up a tracked object and return it to a home location through jogged commands or pre-programmed positions.

## Control panel

The RoboLogix control panel consists of both robot control functions as well as environment control functions such as conveyor system controls, on-off hard-wired control, etc. The control panel allows the user to command the robot to pick up a tracked object and return it to a home location through jogged commands or pre-programmed positions. With robotic systems in general, angular position movements are commonly used for large (course) motion and linear position movements are often used for smaller (fine) increments. There are several command instructions on the control panel such as Reset, Home, Setup and Zero which are used to automatically set the robot to a specific position for calibration or realignment.

## Vision system

RoboLogix provides 12 viewpoints, or camera angles for a given robot work envelope. These viewpoints are accessed by the twelve CAM keys and allow for the viewing from a variety of angles and perspectives. By using these camera viewpoints, the user can move around in a 3D animated environment in much the same way they would in the real-world. One of the camera views is from the robot's end effector, which allows for the real-time visualization and positioning of the end effector (gripper) as it approaches the workpiece.

## Programming language

Like most robot programming languages, RoboLogix programs consist of data objects and program flow. The data objects reside in registers and the program flow represents the list of instructions, or instruction set, that is used to program the robot. RoboLogix program language is a type of scripting language that is used to control the software application.
Programming languages are generally designed for building data structures and algorithms from scratch, while scripting languages are intended more for connecting, or gluing, components and instructions together. Consequently, the RoboLogix instruction set is a streamlined list of program commands that are used to simplify the programming process and provide rapid application development.

## Instruction set

The RoboLogix instruction set contains 16 commands, which are usually written as a program on a line-by-line basis. These commands are used to instruct the robot to perform tasks such as moving to a specific location, picking up an object, executing a subroutine, waiting, etc. One of the more popular commands in the instruction set is the IF instruction, which compares numerical values located in two registers. If a register has a value that is greater than (>), less than (<), greater than/equal to (>=), less than/equal to (<=), equal to (=), or not equal to (<>) another register, it will execute the next line in the program if the condition is true. The IF command is often used with the JMP LBL instruction to control program execution.
All instruction set information is stored in registers, which are data locations capable of holding variable numeric values. There are two main types of registers used by RoboLogix: position registers and variable registers. Position registers contain both the linear and angular data point coordinates and include axis (joint) information for A1, A2, A3, etc. and for X, Y, Z linear, or Cartesian coordinates. There are also 32 variable registers which can be used for holding instruction set data such as position comparisons and time-delay information. In addition to position registers and variable registers, some robot software programs also have palletizing registers, which are used to manage the position of the stack point in palletizing applications.

## Palletizing

Palletizing is one of the more popular applications for robots, and is accomplished by combining a series of commands into a palletizing routine. A RoboLogix palletizing routine consists of five program instructions, or lines. The first instruction is the Palletize instruction, which is followed by a linear motion instruction to move to the stack point. The stack point is the top-center of the workpiece, and a group of stack points forms a stacking pattern, as shown in the adjacent image. The first stack point in a stacking pattern is located at (1,1,1) (row, column, layer) and is incremented each time the palletizing routine is executed.