This document introduces you to the Guidance Programming Language, GPL. GPL is a full-featured language designed to allow you to program and automatically operate motion controllers with machine vision and the mechanical mechanisms (“robots”) that are controlled by these devices.
GPL can be employed in a wide variety of applications including: general robotics; mechanical assembly; material handling and packaging; palletizing; carton loading or case packing; wafer handling or machine control in the semiconductor industry; life sciences equipment applications; or applications requiring conveyor tracking and/or vision guidance.
This language can be easily applied to a wide range of mechanisms ranging from simple, single axis linear and rotary devices, to complex robots that require all of their axes to be simultaneously moved in a coordinated Cartesian fashion, to systems that have multiple robots that operate either independently or cooperatively. The control hardware for such systems can reside in a single box or can be distributed in a networked control architecture. Independent of the physical control architecture, GPL makes use of its built-in networking ability and knowledge of robot geometries (kinematics) to allow mechanisms to be centrally programmed and easily controlled in Cartesian coordinates.
To support such a wide range of applications and mechanisms, GPL has extensive motion control facilities including: blending of joint and Cartesian interpolated motions (“continuous path”); s-curve profiles; base and tool offsets; built-in kinematic models for a variety of robots; mathematics for manipulating robot and part positions and orientations; and frames of reference including moving frames of references for conveyor tracking.
GPL has been targeted to execute on the Precise Guidance Controller, which supports a networked control architecture. This controller includes a web based operator interface, a unified configuration and parameter database, integrated data logging capabilities, Category 3 (CAT-3) safety circuitry, and a number of facilities that simplify both local and remote diagnostics and maintenance.
The Guidance Controller can in fact be programmed using three different methods: (1) a forms based teach-and-repeat technique that executes “MotionBlocks” in response to digital input signals; (2) GPL as described in this document; or (3) by any standard Windows PC language, which remotely controls the system via a TCP/IP connection. The MotionBlocks method is ideal for simple applications, especially those where a PLC is providing overall cell control, and is extremely easy-to-use since no programming language knowledge is required. GPL has the advantage of being embedded within the controller and allows more complex applications to be addressed while still permitting the controller to be operated in a standalone mode. The TCP/IP method allows programmers to leverage the capabilities of a PC (or other standard computing platforms) at runtime and to utilize the language of their choice.
In this document, we describe the features and syntax for the embedded system, the “Guidance Programming Language” (GPL).
GPL is a full-featured programming language. The fundamental syntax for GPL has been modeled after object-oriented forms of the Basic Language in order to provide a syntax and development environment that are familiar to many application developers. The Basic syntax has been extensively augmented with “classes” and “objects” that implement the motion control and vision capabilities. A Windows PC is required to develop and debug application programs but need not be connected when the controller is operating in automatic mode. Programmers who are familiar with Visual Basic .Net 2003 should be very comfortable with many of the computational and structural elements of GPL.
In the following sections, an introduction and overview of the GPL syntax is provided. Where it is important, we point out differences between GPL and the various variants of the Basic Language. These notes are highlighted by enclosing them within square brackets (“[]”). For more detailed information on individual instructions, objects and classes, methods, and properties, please see the GPL Dictionary document.