Email:
[email protected]
Login
Register
English
Deutsch
Español
Français
Português
Home
Add new document
Sign In
Create An Account
A knowledge-based approach to programming welding robots
HOME
A knowledge-based approach to programming welding robots
A knowledge-based approach to programming welding robots
GI G2I J XA YA G3I J XA YA G4F GST GgT G20XAZA r.~~ G21VAF A Knowledge.Based Approach to Programming Welding Robots / / 7 Eric C. Sullivan and Na...
Download PDF
2MB Sizes
0 Downloads
55 Views
Report
Recommend Documents
A programming approach to mathematics
SmartWeld: A knowledge-based approach to welding
A Python framework for programming autonomous robots using a declarative approach
Reconfigurable industrial robots: A stochastic programming approach for designing and assembling robotic arms
A mathematical programming approach to school finance
A message passing approach to robot programming
A message passing approach to robot programming
A stochastic programming approach to network planning
A submodular approach to discrete dynamic programming
A constraint programming approach to cutset problems
A dynamic programming approach to constrained portfolios
A message passing approach to robot programming
PDF Reader
Full Text
GI> G2I
J
XA<#> YA<#> G3I
J
XA<#> YA<#> G4F
GST
GgT
G20XA<#>ZA<#> r.~<#>~<#> G21VA<#>F<#>
A Knowledge.Based Approach to Programming Welding Robots
/
/
7
Eric C. Sullivan and Navaratna S. Rajaram University of Houston
The article describes ROBOEDIT, a Imowled~=based programming assistant that has been developed to fac~itate the modification and the fine tuning o f robot programs on the production floor. In particular, ROBOEDIT is defined jbr use with the Advanced Robotics Cyro 5+2 arc welding robo~ The system is written in LISP and runs on a microcomputer under MSDOS. It employs several knowledge-engineering principles to improve produc~'on floor edin'ng efficiencies and to simuhaneously reduce robot programming skill requirements. The latter goal is accomplished largely via a user interface that features an £ngiish-like j~rmat. Parsing techniques based upon context-flee grammars are used to translate robot programs between the user interface and the robot language rsntax. An indexed database design is erup t e d to build representations of the inj~rmation contained in the programs and to encode important relationships. Finally, production s~stem formalisms and robot-speclfic knowledge about klnematics and program-
ming rules are combined to c r e an integrated environment that assists the user during editing sessions and check edited programs jbr correctness of syntax. A sample session with ROBOEDIT is described and discusseeL ate
INTRODUC~0N Robots are currently being used for a wide range ofmanufactufig, g applications chosen for reasons of economy, safety, predictability and other benefits. For all of their advantages, the integration of robots into production operations presents several major obstacles that are not widely appreciated. One of these is the production floor fine tuning of the programs. This article describes a system that incorporates artificial intelligence technology and is used in the fine tuning of prograr~,s for a specific class of robot applica-
tions: arc wdding. The approach, however, can be generalized to include other classes of robot applications. In common with all robot applications, arc welding robot programs, whether generated on-line or off-line, must be modified and fine tuned on the production floor. The modifications can be either positional, to adjust for difo ferences between robots, between simub-tors and robots, or between part lots, or they can be structural, to correct deficiencies in the program's internal model, or any combination of these. In all cases, the changes are typically made during on-line sessions by a welding technician skilled in the use of the robot programming language. On-line modification entails two basic problems. First, the robot has to be taken out of production during the editing session, thereby disrupting production flow. Second, it re-
Knowledge-en~neering principles can be employed to create a knowledge-based software environment that provides for increased editing efficiency and reduces the programming skill level requirements.
ISSN 0019-0578/92J02/0115/19/$2.50 © ISA 1992
VOLUME 31 ® NUMBER 2 • 1992
t tS
ARTIFICIALINTELLIGENCE
quires that a welding technician with robot programming skills be available on-site. Thus, it is useful to consider technology alternatives that reduce programming skill requirements and robot downtime. Artificial intelligence methods provide one approach for meeting these objectives. In particular, knowledge-engineering D~i~ciples can be employed to :rea.~e a know!edge-based software el,vironment that'provides for in-
program segments identified via database searches greatly simplities the addition, the shifting, and the reordering of weld passes, any of which may be required on the floor to correct conditions not anticipated during programming. Finally, translating the program into English and ensuring its syntactical correctness at all stages significantly reduces the programming skill level required of the technician.
Knowledge-based systems are models designed to embody human expertise and reasoning in a specified domain for the purpose of providing assistance in solving problems within the domain. creased editing efficiency and reKnowledge-based systems are duces the programming skill level models that are designed to emrequirements. This is the ap- body human expertise and reasonproach underlying ROBOEDIT. ing in a specified domain for the At the start of a typical produc- purpose of providing assistance in tion floor session, ROBOEDIT solving problems within the dotranslates the commands in a des- main. Typically, such systems ignated robot program into an En- consist of four interrelated modglish-like format and incorporates ules: them into a database. It modifies (1) Knowledge BaseBKnowlthe database as needed to ensure edge pertinent to the probthat the code complies with the lem is typically represented programming rules for the robot in rules contained in the language. Then, through a series of menus, the technician can inknowledge base. teract with the system to plot (2) Working MemorymThe torch paths and orientations, to state of the problem is repformulate database queries, to list resented in a data structure or label program segments, or to referred to as the working perform editing changes. The memory or the global range of modifications that can be database. The working made practically and simply on memory is modified by the production floor is extended rules selected from the with these utilities because of the knowledge base and apknowledge-based design of the plied by the control system. system. The included kinematic relationships, for example, reduce In some systems the amount of reteaching that is (ROBOEDIT, for examrequired when workpiece orientaple), the working memory tions are changed. The labeling of is the product of a session. 116
ISA TRANSACTIONS
(3) Control SystemwRules are selected from the knowledge base and applied to the working memory by the control system. It is designed to do so in a way that advances the problem state towards some defined goal state or solution. (4) User InterfacewCommunication between the user and the system is handled by the user interface. It is included for the purpose of interactively establishing a user's goal and converting it into executable system commands. Several of these principles have been applied in the design of ROBOEDIT. They include the following: (1) i n f o r m a t i o n about the robot, such as its kinematic relationships and its programming language, are incorporated into the knowledge base to enable the editor to perform a wider range of tasks. The information, which is encoded in algorithms and production rules, is used to perform tasks such as locating and correcting syntax errors, providing assistance in dealing with the semantics of interdependent commands (incremental position and loop statements), and handling transformations that would normally require that portions of a program be retaught. (2) An indexed database structure is used to represent in working memory the information contained in robot programs. In this ap-
A KNOWLEDGE-BASED APPROACH TO PROGRAMMING WELDING ROBOTS
proach, a database record ing their constituent state- ture a graphics capability for simconsists of fidds for each of ments into an English-like ulating the relative placement and the command/parameter format. movement of the various workcell sets contained in a line of components. In some cases, interTaken together, these features the program. A separate serve as a knowledge-based pro- faces are provided for importing index is maintained for all gramming assistant that enables geometric information about the of the commands used in users with welding expertise and workpieces and the cell from the program to reference limited programming skill to edit CAD databases. In others, the inthe records in which they robot programs off-line on the formation must be furnished eiappear. Added utilities for production floor. A productivity ther via the keyboard or through a modifying and searching gain is demonstrated in the exam- specially formatted file. Usually, the database and for plot- ple described under "Examples the user defines the program command sequences either directly in ting and labeling program and Performance." the robot language or in a universegments extend its usefulsal system language that is transmess. lated into the target robot's (3) Rules describing the pro- CURRENTPRODUCTIONFLOOR language. The product is a program syntax requirements EDITINGTECHNIQUES gram that is ready to be fine tuned and the robot kinematics and executed on the production are organized into proce- Practice floor. dural nets. The nets associated w i t h a particular The development of welding editing action are then tra- robot programs is typically acversed to trigger the appro- complished in four phases and is Requirements priate tests and actions. routinely done on-line using the For example, the NC lan- workcell. In the first pb,se, torch Part-to-part variations, defiguage requirement, which points and orientations along the ciencies in off-line-generated prostates that each program intended path are defined in a grams, and differences between must have a single END process called teaching in which robots are among the most comcommand and that it must the robot is jogged into position mon reasons that production floor appear in last place, can be and the axes coordinates are re- adjustments to robot programs are represented along with the corded. The functions to be per- necessary. In welding, production corrective actions in the formed at each of the knot points floor editing serves an additional following rules: are added during the second purpose; it provides an environTEST 1:IF
ditionals and loops are ment is required in situations in T H E N
ELSE
and the test-execution and edit ses- ler cannot adaptively deal with de
sions. These adjustments are al- viations from its internal model. TEST 2:IF
part of rob0t progr,~mming. They minimize shrinkage, and modifiT H E N
create the bottlenecks described in axes positions to optimize weld ELSE
"
VOLUME 31 • NUMBER 2= 1992
1117
ARTIFICIALINTELLIGENCE
the system is useful and efficient. belong to the first group. As will be seen, ROBOEDIT encomThey are: passes features of both. (1) a user interface with graphCurrently, AI technology works ics utilities to provide for best in narrowly specified problem efficient user-robot comdomains. For this reason, munication; ROBOEDIT targets a specific (2) file-handling utilities to re- class of problems; viz., arc welding trieve and produce robot with a specific robot. Extension program files; of ROBOEDIT to other domains (3) a robot language inter- can be accomplished by modifypreter to speed the edit-test ing the knowledge base, which cycle; consists of robot-specific know!(4) robot language debugging edge about: facilities to assist in identi(1) language commands and fying and correcting syntax syntax and errors; and (2) kinematics. (5) intelligent editing utilities Some of this knowledge is ento reduce the programming coded in production rules, as is skill and robot-specific the case with most expert systems. knowledge required of the But ROBOEDIT has an addiuser. tional feature. It uses linguistic parsing techniques to translate English-like user statements into ANALTERNATEAPPROACH programming language syntax. BASEDON ARTIFICIAL This is made straightforward by INTELLIGENCE the fact that the programming Since the task involved, i.e., language is a context-free gramrobot programming, is largely mar. Thus, in addition to procognitive in nature, artificial intel- duction rules, ROBOEDIT also ligence (AI) offers the most poten- uses features commonly found in tial. AI has been used successfully natural language systems. for two types of problems. First, The English-like user interface
AI technology works best in narrowly specified problem domains. it has been beneficial in representing and formalizing human problem-solving and decision-making processes. This has led to expert or knowledge-based systems. Second, AI has given rise to intelligent communication technologies such as language translation, speech recognition and understanding, and vision. Most AI applications being explored today 118
ISA TRANSACTIONS
and the syntax correction facility simplify on-site editing. In addition, representing the program being edited in a database format and providing labeling, retrieval, and sorting utilities enable the user to selc:~:groups of commands and to change them efficiently. Also, kinematic relationships included in the knowledge base permit positional changes to be made
that would otherwise involve reteaching the robot. Finally, by incorporating provisions for maintaining the absolute value of position-related commands, lines can be moved quickly without concern about interdependencies or side effects.
ImplementationMedium Because of its flexibility, a version of LISP was chosen as the implementation language. Features of LISP particularly useful for AI applications include the following: (1) Uniform handling of data and programs--In LISP, programs can be manipulated as ordinary data structures. (2) Capability for defining specialized data types--For instance, conversion of robot program code into a database format, which is quite straightforward in LISP, would be extremdy awkward in many other languages. (3) Symbol m a n i p u l a t i o n n Symbols and not just numbers can be manipulated in LISP without having to declare data types. This is particularly useful in building user interfaces like the one provided with ROBOEDIT.
ROBOEDITSYSTEM DESCRIPTIONAND IMPLEMENTATIONDETAILS Roboedit was designed to be used by on-site personnel in the development and fine tuning of robot programs for arc welding applications. Because knowledge-
....
A KNOWLEDGE-BASED APPROACH TO PROGRAMMING WELDING ROBOTS
based methods work best in narrow domains, a robot-specific and application-specific approach was taken, i.e., the Advanced Robotics Corporation(ARC) Cyro welding robot and programming language were selected. Even so, the approach is significant in a more general sense and can be extended to other robots and to applications beyond arc welding.
To facilitate the representation appear in the database. Compleof an input program by the sys- mentary loop instructions, for extem, a data structure was needed ample, delimit sections of a robot into which the command and pa- procedure that are to be repeated. rameter information could be Since both commands must be mapped and efficiently retrieved considered when certain modifiandlor changed. An indexed cations are made to either, it is database design was chosen for the necessary to identify the link bepurpose. Each program line must tween them. For dimensioning be parsed, translated into an En- mode commands, order estabglish-like format, attached to a lishes absolute position. Here, system-generated reference line again, the combined effects must number, and then added as a re- be determined when position Syntax and Semantics cord to the database. Lists of the changes are made. Abstractions, various commands and their asso- however, about command order Since R O B O E D I T was de- ciated record numbers must be are deferred by the system until a signed to both accept and produce maintained in a companion index modification is requested by the NC-style programs in robot exe- file to speed the data retrieval pro- user. The relationships are not represented explicitly in the cutable form, it was essential to CesS. Extracting the command infor- database. incorporate rules and procedures In configuring ROBOEDIT to for assembling and disassembling mation from the input data statements in accordance with the stream and translating it into an interpret NC robot programs and rules of grammar for the robot English-like format requires a to prepare useful data structures, language. This was accomplished parsing algorithm. The approach emphasis has been placed on creby exploiting the fact that the selected uses a bottom-up, con- ating system design features that robot language is a context-free text-free parser. It produces deri- provide for accurate representagrammar and by designing a vation trees by first segmenting tions of the program syntax and parser with the appropriate re- the stream into alphabetic and nu- semantics. The approach selected write rules with which to map it meric words and then parsing involves an indexed database deinto a structured English-like for- these to form NC words. An asso- sign and a bottom-up, contextciation list in the form of a transi- free parser. Inferences concerning mat. Every ARC robot program con- tion network provides the the significance of command sists of an ordered set of lines or syntactical patterns and the NC- order in the database are formed .o.,,a during ' . . .neeaea . by -,~,- nec~sary and .~,~...... blocks, each comprised of one or to-Englishtransiauons editing. more NC words. Each NC word the parsing routine. The same alincludes a command and, when gorithm is used in reverse order to applicable, associated parameters generate the NC code from either combined in accordance with cer- the user input or the English-like SoftwareEnvironmentfor tain syntactic rules (see included statements. ManipulatingPrograms Semantical information belist and the Appendix). The NC language conforms to the descrip- yond that of the NC word translaThe extent and usefulness of tion of a context-free grammar [1, tions is represented by the the assistance made available to sequence in which the commands 3] with rules as follows: the user has been a key consideration in configuring the environ=
(I)
ment. As a result, much of the =
(2)
knowledge incorporated into =
(3)
ROBOEDIT about the robot lan= type (4)
guage and its kinematics is applied =
(5)
through user assistance utilities. =
(6) and
The following four types of pro= number or nil (7)
visions are included: . . . . . . . .
VOLUME 31 • NUMBER 2 • 1992
t 1~
ARTIFICIALINTELLIGENCE
(1) English-like system lan- SystemOrganization guage (2) Information utilities (3) Editing utilities (4) Syntax/semantics utilities Although R O B O E D I T is a robot-specific implementation, the system language is intended to be more universal. An abbreviated English-like format is used both for the system commands and as the target language for the translated robot programs. This approach has the dual benefit of improving program readability and of reducing the programming proficiency required of the user. The advantages of a "universal" language would be even more significant for a more expansive system, one designed to deal with several different robot languages. Information utilities, such as the listing or the labeling of robot program segments or the plotting of torch paths, are accomplished through the extraction and manipulation of the command and execution sequence information from the database and index files. These files can be sorted, ~br example, on various attributes, including command names and parameters. The list of record numbers that is typically produced can be used in several ways. The referenced records can be retrieved and displayed textually or graphically, or a label can be assigned and referenced in subsequent transactions. In the case of a graphical or torch path display, pointing device input can be used to construct a new list. In all cases, the utilities are intended to provide the user with a means of querying the database for information about the robot program and representing it in useful ways. t 20
ISA TRANSACTIONS
ROBOEDIT is organized to accept NC robo: programs and to provide an environment in which a user can easily modify them without first acquiring extensive robot-specific skills.
System Requirements The system as noted consists of four u n i t s n a user interface, an input/output module, a plotter module, and an editor. All are written in Microsoft Common LISP (Version 5.1) and can be executed using a microcomputer operating unde~ Microsoft M S - D O S TM. Typically, 512 kilobytes of RAM are required to load the entire executable file; however, with a penalty to execution speed, it can be made to operate with less by using the read-select utility in LISP to load the user interface. Doing so reduces the environment to only those function definitions needed for groups of tasks. The definitions for all others are maintained in disk files and are retrieved as the need arises and discarded as it passes.
User Interface Module The user interface, also named ROBOEDIT, provides interactive assistance in the syntactical formulation of commands through a series of hierarchically organized menus. The commands, which are designed to access a database created from a robot program, are either routed for execution to the appropriate module (IOPUT, PLOT or EDIT) or are retained and executed by ROBOEDIT itself. The latter includes several of the database ut:lities such as those needed for listing, sorting, and la-
beling. The interface's relationship with the rest of the system is depicted in Figure 1. The function definitions, the variable values, and the LISP interpreter that comprise the entire four-module environment are normally restored from a memory image file by typing ROBOEDIT after the DOS prompt. Following a title panel, the user is asked for configuration information and then offered opt;ons by the toplevel menu function. The menu function is typical of those used throughout ROBOEDIT; it clears the screen and displays a menu, calls the subordinate function selected from the action list, and, unless QUIT is chosen, repeats the cycle. For the top-level menu, the action list includes the following: (1) I/O (2) LIST (3) LABEL (4) EDIT (5) PLOT (6) QUIT
Options in the UserInterface T h e I / O o p t i o n , the first choice, permits access to the input/output module, IOPUT, via two functions, one each for reading and writing files. The second choice, LIST, is designed to accept ~;ne number lists or labels and to retrieve and display the appropriate lines of the robot program. It can be accessed from the top-level, editing, and labeling menus, and it contains a provision for returning a line number list. The database sort utility, the description for which follows, is also available from LIST and can be used to assist in
A KNOWLEDGE-BASED APPROACH TO PROGRAMMING WELDING ROBOTS
EDIT
!
PLOT gwqmm i n ~ . n ' l ~
~7
/ ~ATA]AS[
RO]3OEDIT ~
~
IlIllt~AIE)
/
ND~4F)
(
N I PUT /~
QRllr~mJI1~
Figure 1-System Organization preparing input and tailoring output. Program lines are catalogued in the database under the reference line numbers assigned by ROBOEDIT. In the associated index, the line numbers themselves are catalogued under the various robot commands that appear in them in the program. These numbers are used as arguments by the system in file manipulation and modification but ~1e
not easily remembered by the user. IJkBEL, the third choice, is designed to allow the user to select English-like names with which to refer to the lines. It also contains the functions used by the system ;n maintaining the names and numbers throughout the editing session. The label files are stored on disk and are read and written along with the related program files by IOPUT.
The database sorting utility permits the compilation of line number lists from the program fde that meet user-selected criteria. Both conjunctive constraints, those formed by grouping several criteria for a single-pass search, and disjunctive constraints, those formed by uniting lists resulting from sequential searches, are allowed. For timing occurrences of the robot command portion of each search clause, a match operator is used. Numerical comparators (<, <=, =, >=, >) are available for sorting the parameter portion of each command. ROBOEDIT, IOPUT, PLOT, and EDIT can all access and retrieve information from the robot program database, but only EDIT can modify it. The parameter lists needed to specify a change are compiled when the fourth option, EDIT, is selected. Through EDIT and its subordinate functions the user has the opportunity to select the editing actions, the command lists, the target lines, and the source lines. Since the editing actions are themsdves EDIT module functions, the evaluation of the parameter list transfers control to the EDIT module for execution. Between two top-level editing functions, eight options are offered. They are: (1) ADD, (2) C H A N G E TORCH ESO(change electricalstick-out), (3) C H A N G E TATE/TILT RECALC, (4) C H A N G E ERAL,
ROWITH BY, GEN-
(5) CHANGE TO, (6) COPY, VOLUME 31 ®NUMBER 2 ® 1992
t 21
ARTIFICIALINTELLIGENCE
(7) DELETE, and (8) MOVE. The user's pick is advanced to another function where the remainder of the parameter list is generated. When PLOT, the fifth choice, is selected, a function is called that prepares an updated version of the plot file. Since no other arguments are needed, the P L O T module is entered; after the user exercises several display options, the torch path/orientation is displayed. ROBOEDIT is the user interface through which commands are compiled and from which the three remaining modules are acceded.
Input~Output Module The i n p u t / o u t p u t module, IOPUT, functions as an interface between R O B O E D I T and the disk-stored robot program and label files. At the beginning of a session, it retrieves both files and converts the N C program code into a LISP data structure upon which other LISP functions can act and modify during editing sessions. At the end of a session, IOPUT generates NC robot code from the modified data structure and writes it along with the associated label file to disk. Label files contain English-like names by which a program line or a group of lines can be referenced during a ~ession. I O P U T retrieves the label file, if one exists, whenever a robot program is being read. R O B O E D I T contains a provision for assisting the user in assigning and maintaining the labels. As the robot program is read from disk, the code in the data stream is segmented into its nu-
1'"22
ISA TRANSACTIONS
meric and alphabetic components. Lists, each representing a line of the program, are formed from the elements between the "new-line pairs." For example, "N5XC360F1001" becomes "(hi 5 XC 360 F 100)." The line lists are then incorporated into a larger one that represents the entire program file. Two association lists or a-lists are formed from the file. In the first, reference line number~ assigned by the system and Englishstyle translations for each line list make up the association pairs. The tran~!ations are made with the help of a pattern matcherlparser and a command-syntax list for the robot language. The parser reviews the segmented line list. If the first element is a legitimate robot command, it retrieves the pattern list from the commandsyntax list. The pattern list contains a t r a n s l a t i o n and the parameters that are expected to follow the command. The parser continues to try to match the elements of the line list with those in the parameter list. When the parameter list is exhausted, a new command list is started. Comments and any unrecognized commands are included as "OTHER" statements. When the line list is depleted, a reference number is assigned and a new line is begun. For the sample line list mentioned previously, the pattern list returned for the first element, "N," would be "(N (BLK-NO (#)))." Since it shows that a numeric character (#) is expected, the second line list element, "5," qualifies and is added. The command list becomes "(BLK-NO . 5)" since the third element, "XC," is not contained in the expected element list for "N." The process is repeated for the remainder of the
list and is followed by the addition of a reference number. The result is "(5 (BLK-NO. 5) (ROTATEPOS. 360) (F-RATE. 100))." The second a-list is an index of all of the commands used in the program and the reference line numbers in which they appear. As an element in the index, "(ROTATE-POS (5 10))" indicates that rotate-positioner commands can be found in lines 5 and 10. An inverse of the described interpreter is used to translate the modified database back into N C robot code. It steps through the database, and, for every Englishlike command encountered, finds the appropriate N C counterpart in an a-list and makes the substitution. When the transformation is complete, the database is compressed, a line at a time, and written to the disk file. The disk label file is updated to complete the session. IOPUT converts NC code into a data structure in LISP upon which other LISP functions can act and modify. The data structure is then translated back into executable N C program code by IOPUT. Thus, IOPUT is the interface between the extern~ world of the robot and the internal world of,he ROBOEDIT knowledge base.
Plotter Module The plotter module, PLOT, is a graphical utility that provides the user with a means of viewing either two- or three-space representations of the programmed torch path and orientation. Included mouse support software permits the user to select plotted program segments for the purpose of assigning labels or editing. When a menu item is selected that involves a call to PLOT, a
A KNOWLEDGE-BASED APPROACH TO PROGRAMMING WELDING ROBOTS
function is invoked first to pre(2) The working copies of the pare a plot data table from the database and index files are robot program database. The created. table consists of line reference (3) The editorial changes are numbers, welding arc modes, and made to the working copabsolute torch tip positions for ies. those lines containing axis move (4) The modified databases are commands. All entries are absoscanned for syntax errors lute position conversions based and corrected as necessary. upon the measurement mode statements, the incremental and (5) The original database and absolute move commands, and index files are updated. the encoder preloads that appear in the program. Welding arc mode is inferred from the welding Syntax Checks voltage; it is considered to be Following its introduction but ARC-ON if the welding voltage is prior to the first editing operation, greater than zero and ARC-OFF if the robot program databases are it is equal to zero. syntactically checked and corThe specifications for the plotrected through the execution of ted path display are gathered infive subordinate routines, each deteractively through a series of signed to ensure conformance to menus, and, on the basis of the one of five rules. Brief descripresponses, the plot is configured tions of the routines are as follows: and displayed. (1) BY-SELF-CHK? reviews PLOT allows the user to view the database to identify two- or three-space representacommands that violate the tions of the torch path and orienprogramming rule that retation. In addition, it provides via quires that they appear in mouse support, a means of identilines by themselves. The fying portions of the path for use function issues the editing in other modules. commands to make the corrections.
Edit Module
The editing module, EDIT, is a collection of functions that embodies the production rules and procedures by which robot program databases are modified and syntactically checked and corrected. The checks are condacted when a database is first introduced and again after each modif~,:ation is processed by EDIT. A typical procedure might be as follows:
(2) TORCH/BURN/ENDCHK? prompts the user for or moves burn-back parameters and torch definitions, as necessary, so that at !cast one of each appears it, the program prior to the fir,~t axis-move command. Also, END commands are moved, deleted, or added so that one appears in the last line of the program.
(1) The database and index files, configured from a robot program, are checked for syntax errors and corrected as necessary.
(3) LOOP-BALANCE? adds or deletes loop commands, as necessary, so that for every LOOP-START commznd in the program, a
matching LOOP-END command follows. (4) OSC-CHK? moves OSCO N commands, as necessary, so that only one command appears in any line. It also adds or moves OSC-OFF commands so that no more than two axes are oscillated simultaneously and deletes them, as necessary, so that the command does not appear for a nonoscillating axis. (5) VOLT/AMP-CHIO modifies welding voltages, as necessary, so that they are either zero or are between thirty and eighty half volts. It also modifies wire-feed speeds so that they are either zero or are between one hundred fifty and five hundred fifty in./min. Upon completion of the initial checks, the original database and index are updated to match the working copies. Subsequent syntax checks are performed as the last step of each editing change. The checks consist of six routines, the five described previously and an additional one for ensuring consistency of dimensioning modes. As before, any corrections are applied to the working copies of the database and index. The originals are updated upon completion. (6) DIM-MODE-CHK? catalogues and dimensionally corrects the axes, oscillation, torch definition, encoder prdoad and feed rate commands explicitly named in editing changes and those affected indirectly by changes involving certain modal commands. Its purpose is to preserve VOLUME 31 • NUMBER 2 ,, 1992
t 2S
ARTIFICIALINTELLIGENCE
the absolute value of programmed points during editing.
Modi~ing the Database Two database files, a program file and an index, are created by IOPUT from the N C robot program. The interpreted versions of each line of code are catalogued in the program file by the line numbers in which they appear. The index is derived from the program file by sorting on the various commands used in the robot program. All modifications made during editing are made to working copies of the two files.
Editing Commands EDIT accepts eight editing commands. The user is prompted in the user interface, ROBOEDIT, to interactively select the commands and arguments. T h e syntactically complete command is then passed to EDIT for exccution. A list of the commands, along with a brief description of each, is included. In each case, the final step involves the updating of the original database and index. (1) ADD accepts a command list, a target line number list, and, for redundant additions, a ditto flag. The commands are formatted and added to the file ADDLST. Any numeric parameters required d u r i n g formatting are requested from the user and assumed to be in absolute English units. The working database copies are updated from ADD-LST. The syntax check follows.
t24
ISATRANSACTIONS
(2) C H A N G E - E S O - B Y accepts an amount by which the welding torch length is to be altered and a list of the line numbers that are to be affected. The appropriate torch definitions are either revised or created in accordance with kinematic torch relationships and added to ADD-LST. The working databases are updated. No syntax check is performed. (3) CHANGE-ROT/TILT-BY accepts amounts by which the rotation and tilt are to be altered and either start and finish line numbers or a line number list. It uses the homogeneous transformation equations developed for E D I T and recalculates the absolute robot and positioner points required for the changes. The function makes the corrections necessary to the w o r k i n g copies of the database. No syntax check is needed. (4) C H A N G E - B Y accepts a command list, a line number list, and, for redundant changes, a ditto flag. The function prompts the user for the numeric change amounts and places the new commands in ADDLST. The working copies of the database are then updated. No syntax check is required. (5) C H A N G E - T O accepts a command list, a line number list, and, for redundant changes, a ditto flag. The function prompts the user for absolute command values and places the com-
mands, afi'~~-formatting, in ADD-LST. The information is transferred to the copies o f the w o r k i n g database. T h e syntax checks and corrections are performed. (6) COPY accepts a command list, a target line number list, and a source line number list. It modifies the working database copies by d u p l i c a t i n g the n a m e d commands in the specified lines and then calls for the syntax checks and corrections. (7) DELETE accepts a command list and a source line number list. It modifies the working database copies by diminating the prescribed commands in the specified lines and then performs the syntax checks and corrections. (8) M O V E accepts a command list, a target line number list, and a source line number list. It modities the working copies of the databases by adding the prescribed commands to the target area and deleting them from the source area. It also calls for the execution of the syntax checks and corrections. EDIT accepts and processes user-specified robot program database modification requests. Further, it checks the databases for conformance to a set of syntactical rules and makes corrections to ensure compliance.
EXAMPLESAND PERFORMANCE ROBOEDIT was used to syntactically check and correct a sam-
A KNOWLEDGE-BASEDAPPROACHTO PROGRAMMINGWELDING ROBOTS
pie N C robot p r o g r a m B Demo.Pgm. Then, to demonstrate some of the other system features, ROBOEDIT was used to make five modifications to the program. System performance was evaluated by comparing the session time with that needed by a skilled technician to make the same changes using the robot line editing and reteach facilities.
Examples Syntax Check Demo.Pgm was written for the Advanced Robotics Cyro (ARC) welding robot. It provided for the air-carbon arc gouging (AAC) and gas-metal arc welding (GMAW) of a "U-shaped" groove across the 8-inch square face of a 1-inch thick steel plate. The weld was to be completed in two steps, each involving the forming and filling of a groove extending from the center of the plate to its edge. The execution sequence, beginning from the home position, was as follows: (1) Insert a gouging electrode in the holder.
(2) Move to the gouging position. (3) Gouge the groove. (4) Move to the welding position. (5) Weld the groove. (6) Rotate the plate 180 degrees to the next groove site. (7) Repeat steps 1 through 7. (8) Return to the home position. Each line of the initial program was translated by ROBOEDIT, and the information was included in a database. The database was scanned for syntactical errors; D e m o . P g m contained eight. They were corrected as follows: (1) A BURN-BACK command (G21) was added since one must appear prior to the first position command in line NS. (2) The first TORCH-DEFN command (G20) in line N20 was moved since one must appear prior to the first position command in line N5. (3) A LOOP-END command (G99) was added since one
must appear after the LOOP-START command ((;98) in line N165. (4) An END command (M2) was added since one must appear after line N170. (5) A HALT command (M1) in line N30 was moved since it must appear in a line by itself. (6) An OSC-OFF command (G31) for the X axis in line N35 was deleted since it can appear only if an OSCO N command (G30) for the same axis precedes it. (7) An ENCODER-PRELOAD-ON command (G92) in line N100 was moved to the following line since it must appear in a line by itself. (8) T h e V O L T S command (VA) in line N125 was changc*J to increase the numeric value from 20 to 30 since it must either be equal 0 or be in the 30-to80 welding half volts range. Both the initial and corrected programs are included. The corrections are shown in bold print.
VOLUME 31 • NUMBER2 • 1992
1 9_~
ARTIFICIALINTELLIGENCE
Initial
Program
N5XC360FI00 NIOG98XA7 N I 5 ; * * I N S E R T A A C E L E C T R O D E ** N20G20XA24.90ZA-.01AA-40.29CA-5.56 N25G73G8TIGgTIYA26ZA37AA-9YC90CA0
Corrected
Program
G21V15F1 G20XA24.9ZA-0.01 1~1.-40.29C~-5.56 N5XC360FI00 NIOG98XA7 NI5;** INSERT AAC ELECTRODE
N25G73GSTIGgTIYA26ZA37 AA-9YCg0CA0 N30MI03ZA38F50 N30MI03ZA38MIF50 MI N35MI43 N35MI43G31XA N 4 0 ; * * M O V E T O G O U G E ** N 4 0 ; * * M O V E T O G O U G E ** N45G8TIGgTIXA25YAI3AA6ZA46FIS0 N45GSTIGgTIXA25YAI3AA6ZA46FIS0 N 5 0 ; * * G O U G E G R O O V E ** N S 0 ; * * G O U G E G R O O V E ** N55MII0XA27ZA50F5 N55MII0XA27ZA50F5 N60MIS0XA25ZA41FI00 N60MI50XA25ZA41FI00 N65XA22¥A25ZA31YC70FIS0 N65XA22YA25ZA31YC70FI50 N 7 0 ; * * M O V E T O W E L D ** N 7 0 ; * * M O V E T O W E L D ** N75G73GSTIG9TIXA7YAI3 N75G73G8TIGgTIXA7YAI3AA-8CAI80YC0 AA-8CAI80YC0 N 8 0 G 2 0 X A 2 6 . 9 1 Z A - . 0 1 A A = 9 7 . 5 "~-=~-~.~.== N S O G 2 0 Y . % 2 6 . 9 1 Z A - 0 . 0 1 AA-97.58CA-5.56 N85G8TIG9TIXA40YAI4ZA27AA-67FI50 N85GSTIGgTIXA40YAI4ZA27 AA-67FI50 N90G92XCIS0 Ng0G92XCISO N95XCOFI000 N95XCOFI000 NI00G92XA49ZA26FSO NIOOF50 Gg2x~4gzA26 N I 0 5 ; * * W E L D G R O O V E ** N I 0 5 ; * * W E L D G R O O V E ** NIIOM65XA50ZA27AA-68 NIIOM65XA50ZA27AA-68 NIISWA400VA64 NII5WA400VA64 NI20GglXA-4AA30F5 NI20GglXA-4AA30F5 NI25WA200VA20XAI NI25WA200V~30XAI NI30G30YAOFI00HILI NI30G30YAOFI00HILI NI35G4FI NI35G4FI NI40G31YA NI40G31YA NI45WAOVA0 NI45WAOVA0 NISOGg0G8TIGgTIXA40FI00 NI50G90G8TIG9TIXA40FIO0 NI55G99X2 NI55G99X2 N I 6 0 ; * * G O H O M E ** N I 6 0 ; * * GO H O M E ** NI65G98G93G73GgTIXA27YASCA45FIS0 NI65G98G93G73GgTIXA27YA5CA45FIS0 GggxI NI70G61 NI70G61 M2
'l~
ISATRANSACTIONS
A KNOWLEDGE-BASED APPROACH TO PROGRAMMINGWELDII'~G ROBOTS
Moa~fications
N165 from metric to English units to match the In the first modification, a target area, C M E T E R - M O D E command (3) moving the LOOP-END (G71) was inserted between lines command (G99) in the N155 and N160. The system source area to the target menus were used to compile and area to preserve the loop issue the appropriate editing compattern, and mands. In executing the change, (4) adding an X-POS comother lines affected by the change (the position and feed commands mand 0Ok7) to line N25 to preserve the absolute posiin line N165) required conversion from English to metric units. tion inherited from N10 In the second editing step, the prior to the move. block of lines (N160, N165, and The third editing step consisted N170) associated with the label of increasing by five all X-POS GO-HOME was moved from its commands with values equal to or original position (the source') fol- greater than 40. The system's lowing line N155 to before the database sorting routine was used segment labeled INSERT-AAC- to identify the lines of interest. ELECTRODE (N15, N25, N30, The affected lines included N85, and N35), the target. The change Nl10, and N150. consisted off In step four, one and two degrees, respectively, were added to (1) moving the lines, (2) converting the position the ROTATE-POS(XC) and the and feed commands in TILT-POS(YC) commands in the block labeled WELD-GROOVE
(lines N105-N150). In making the change, kinematic relationships for the robot were used to recalculate, for each knot point, the axes positions. The recalculation was necessary to maintain both the torch position and orientation wkh respect to the workpiece. The fifth editing step consisted of adding two inches to the dectrode length of the AAC gouging torch. To do so, the system established the new tool transformation and then modi~.'d the existing TORCH-DEFN command (G20) in the line preceding N5 accordingly. Both the. length 0Ok) and the yaw (AA) portions of the torch definition were affected by the change sir~ce the torch axis does not pass through the yaw axis centerline. Tile final version of the edited program is listed.
VOLUME 31 • NUMBER 2 = 1992
lil
ARTIFICIALINTELLIGENCE
Edited P r o g r a m
G21VI5FI G20X~26.87AA-3%.49ZA-O.01CA-5.56 N5XC360FI00 NIOG98XA7 NI60;** GO HOME * * N165Gg8Gg3G73GgTlXI~26.ggYA4.ggc&45PI49o98 Gggx1 NI70G61 NI5;** INSERT AAC E L E C T R O D E ** N25G73G8TIG9TIYA26ZA37AA-gYcg0CAOFI00XA7 N30MI03ZA38F50 M1 N35MI43 N40;** M O V E TO GOUGE ** N45G8TIGgTIXA25YAI3AA6ZA46FI50 N50;** G O U G E GROOVE ** N55MII0XA27ZASOF5 N60MI50XA25ZA41FI00 N65XA22YA25ZA31¥C70FI50 N70;*~ H O V E TO W ~ L D ** N75G73G8TIGgTIXA7YAI3AA-8CAI80¥C0 N80G20XA26.91ZA-0.01AA-97.58CA-5.56 N85G8TIG9TIXA45¥AI4ZA27AA-67FI50 Ng0G92XCIS0 N95XCOFI000 NI00FS0 G92XA49ZA26 NI05;** W E L D GROOVE ** NIIOM65XAS4,25ZA26.gsAA-66YAI4.03CAI81XClYC2 NII5WA400VA64 NI20Ggl]h%-4~%A30FSYA0-O.07ZA-O.03 NI25WA200VA80~J%IYA0.02ZA-0.03 NI30G30YAOFI00HILI NI35G4FI NI40G31YA NI45WAOVA0 NI50G90G8TIG9TIXA44.25FI00YAI3.86ZA27.3 NI55G99X2 G?I M2
t~
ISA TRANSACTIONS
A KNOWLEDGE-BASED APPROACHTO PROGRAMMINGWELDING ROI3Olb
Performance The entire ROBOEDIT session was completed in less than ten minutes. Approximately seventy minutes were needed by a skilled technician to make editing changes 1 through 5 using the robot line editing and reteach facilities. Reteaching the robot positions in steps 4 and 5 accounted for about one half of the seventy minutes. The remaining changes were easily handled in thirty-five minutes by the technician. In summary, a performance advantage over standard practice is realized when structural program changes are made with ROBOEDIT. When only "touch-up" changes are made, the advantage is diminished, in large part, because of the user interface. Consequently, the advantages of ROBOEDIT become more noticeable as the editing becomes more involved.
CONCLUSIONSANDREMARKS A knowledge-based welding robot programming assistant, ROBOEDIT, has been developed for use w!~h Advanced Robotics Cyro 5+2 robot programs. It has been demonstrated that, by incorporating principles of artificial intelligence, it is possible to provide useful assistance in the production floor modification of programs. Conclusions and remarks are as follows: (1) A knowledge-based welding robot programming assistant, implemented on a microcomputer, is technicaUy feasible and provides for improved productivity in some instances over online techniques. It permits program modifications and
fine tuning to be done by someone skilled in welding but not necessarily in programming. (2) Parsing techniques based on context-free grammars are suitable for use in translating the NC robot programs to and from an English-like format. The format provides for improved program readability and potentially forms the basis of a universal system language. In addition, parsing facilitates the building of LISP-compatible data structures for representing the information contained in the programs.
convenient means for representing the interdependencies of certain types of program statements - - incremental positions, for example.
(6) The individual adjustment of knot points is probably most accurately and efficiently handled in an online session with the robot. In cases where a series of points are to be either edited or affected by an edit, a tilt change in a coordinated robotlpositioner move (for example, recalculating the robot coordinates off-line using ROBOEDIT) is an efficient alternative to reteaching the entire segment on-line.
(3) Production system formalisms are useful for representing certain robotspecific knowledge about the kinematics and the programming language, for REFERENCES providing assistance to the 1. Barr, Avron, and programmer, and for synFeigenbaum, Edward A., tactically checking the edThe Handbook of Artificial ited program. Intelligence, Volumes 1, 2, (4) The flexibility of LISP and 3, 1981. makes it a convenient sys2. Bonner, Susan, and Shin tern language. Its symbol Kang G., "A Comparative manipulation capabilities Study of Robot Lanprovide for straightforward guages", Computer, pages manipulation of the 82-96, Volume 15, No. 12, database and index during December 1982. editing. Its uniform treatment of data and programs 3. Charniak, Eugene, and McDermott, Drew, Introducfacilitates the compilation tion to Artificial Intelligence, of system commands. Reading, Massachusetts: (5) The graphing, sorting, and Addison-Wesley Publishing labeling utilities included Co., 1985. in ROBOEDIT are made practical through the use of 4. Craig, John J., Introduction to Robotics Mechanics & the database/index design Control, Reading, Massaused to represent the inforchusetts: Addison-Wesley mation contained in the Publishing Company, robot programs. The 1986. database also providcs a VOLUME 31 * NUMBER 2 • 1992
t
ARTIFICIAL INTELLIGENCE
'"
5. Doff, Richard C., Robotics
13. Tanimoto, Steven L., The
and Automated Manufacturing, Reston, Virginia:
Elements ofArtiflcial Intelligence, Computer Science
Reston Publishing Co., !983.
Press, 1987.
6. Groover, Mikell P., Chapter 8 in Automation, Pro-
14. Cyro 750 Robot User Manual Advanced Robotics Corp. 1984.
duction Systems, and Computer-Aided Manufac- APPENDIX-- PROGRAMMING turing, Englewood Cliffs, New Jersey: Prentice-Hall, Inc., 1980. 7. Kerth, William J., Jr., "Knowledge-Based Expert Welding," Robots 9: Conference Proceedings, Detroit, Mich., June 1985, pp 98110. 8.
Lozano-Perez, Tomas, "Robot Programming,"
Proceedings of the IEEE, Volume 71, No. 7, July 1983, pp 821-841. 9. Paul, Richard P., Robot
Manipulators: Mathematics, Programming, and Contro~ Cambridge, Massachusetts: The MIT Press, 1981. 10. Rajaram, N. S., "Artificial Intelligence - - The Achilles Heel of Robotics and Manufacturing," Robotics Engineering, Volume 8, No. 1, January 1986, pp 10-15. 11. Rajaram, N. S., "Expert Systems: The Cutting Edge of Artificial Intelligence," Robotics Engineering, Volume 8, No. 5, May 1986, pp 16-20. 12. Rajaram, N. S., "Expert Systems and Related Technology for Automating Knowledge Intensive Tasks," NASA Contract NASg- 17010, September 1986. 1 ~1~
ISA TRANSACTIONS
THE ADVANCEDROBOTICS CYROROBOT
The Advanced Robotics Corp. (ARC) Cyro 5+2 welding robot is a seven-axis CNC machine. It consists of four principal components: a controller, a manipulator, a positioner, and a welding power supply. The manipulzaor, shown in Figure 2, provides five axes (three prismatic and two revolute) through which a welding torch can be positioned and oriented. The positioner provides two additional axes (both revolute) for handling a workpiece. Programs for the robot are written using NC-style statements in word-address format. Each line or block of the program is an instruction and is formed by combining NC words in accordance with the syntactical rules listed. (1) Commands must conform to the formats specified in ARCs Cyro 750 UserMan-
ual (2) Embedded spaces must not appear in any line. (3) Certain commands, the ones shown, must appear alone in program lines. Others may be combined in single lines. Operator Message CW Circular Interpolation CC'W Circular Interpolation Dwell
Torch Definition Burn-back Parameters Oscillation ON Oscillation OFF Ramp Weld without Delay Weld Level Pulsing Preload Encoder Pos. Registers Repeat N/C Program Section Program STOP Program END
(4) Burn-back parameters and a torch definition must appear in each program prior to the first position command.
(5) The last line in each program must be an end command.
(6) For every loop-start command, a matching loopend command must follow. (7) An oscillation-on com-
mand may be issued for only one axis in any one line. At most, two axes may be oscillated simultaneously. Off commands are permitted only for oscillating axes.
(8) Welding voltages must be zero or be between fifteen and forty volts. Wire-feed speeds must be zero or be between one hundred fifty and five hundred fifty ipm. The NC words are composed of an alphabetic or alphanumerictype code followed, when appropriate, by associated parameters. The letter at the beginning of each type code is the family designation for the NC word. The designations in the ARC language include "N" for sequencing, "G" for preparatory, "M" for miscellaneous,
A KNOWLEDGE-BASED APPROACH TO PROGRAMMING WELDING ROBOTS ............. _
. . . . . . . . . . . . . .
---
,Y AXIS
e
~ ~ , . ,
..,., L..,-.,, ,..
~'-,,L "-,: ,".,',:,... ,~~,~-...~ ""-'/~'. -%
_":.-'.;..':~i<;
.
. |
~', • ~
Mirdpulator
................
"F" for feed rate, "W" or W" for welding, and "X," "Y," "Z," "C," or "A" for coordinates. As an example, t h e i n s t r u c t i o n "NIOOXAIS/" can be interpreted to mean a block n u m b e r I O0 and a move along the X axis to a position of 15 units. A more complete listing of the type codes and formats used in ARC programs is shown in the Table A-I.
.*
• "~,".-~,,~',.'..,.%...'.~ 1 ,J~ "~" "C'°,":~''~'~" "i ";. F..,,~., ur..,~,~p,.v
"-
I ii I
"
*".*"
~
KIS .4,
,.*.
4 fI* 14 " "~' . ~#" i°"#j,~
~1~.
r,~,.,.,~',~,',,,4~,,,.,,
_ __LI
/B!/ 4C AXIS
-
A AXIS .
.
.
.
.
:_
LL
"'"
Figure 2-Diagrams of the ARC Robot
VOLUME 31 • NUMBER 2 • 1992
t31
m
ARTIFICIALINTELLIGENCE
TYPE-CODE
FUNCTION
SEQUENCING: 1. N Block Number PREPARATORY: 2. G1 Operator Message 3. G2 CW Circular Interpolation
4.
5. 6. 7. 8.
G3
G4 G8 G9 G20
CCW Circular Interpolation
Dwell Acceleration Deceleration Torch Definition
N<#>
GI> G2I
J
XA<#> YA<#> G3I
J
XA<#> YA<#> G4F
G8T
GgT
G2OXA<#>ZA<#> CA<#>AA<#>
9. G21 i0° G30
Burn back parameters Oscillation ON
ii. G31 12. G32 13. G40
Oscillation OFF Ramp Weld Level Weld Level Pulsing
14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Home English Programming Metric Programming Enable Linear Interpolation Disable Linear Interpolation Absolute Dimension Input Incremental Dimension Input Prel. Encoder Pos. Registers Set Zero to Home Position Rep. NC Prog. Section, Start Rep. NC Prog. Section, End
G21VA<#>F<#> G30
<#>F<#> H
L
G31
G32VA<#>T
G40VA<#> H
L
G61 G70 G71 G72 G73 Gg0 G91 G92
<#> G93 G98 G99X
Feed rate
F<#>
G61 G70 G71 G72 G73 Ggo G91 G92 G93 G98 G99
FEED RATE: 25. F
Tab~ A-1-NCLanguageCommands~r ARCCyro5+2Robot t 32
FORMAT
ISATRANSACTIONS
A KNOWLEDGE-BASED APPROACH TO PROGRAMMINGWELD!NG ROBOTS
TYPE-CODE
FUNCTION
FORMAT
MISCELLANEOUS: 26. M1 P r o g r a m Stop 27. M2 End of Program 28. M3 M a n u a l Hold 29. M65 Shielding Gas ON 30. M75 Shielding Gas OFF 31. MI02 A i r - L a n c e ON 32. MI03 A A C Electrode Gripper ON 33. MI09 E l e c t r o d e Cutoff Saw ON 34. MII0 A A C Gouging M a c h i n e ON 35. M142 A i r - L a n c e OFF 36. M143 A A C Electrode G r i p p e r OFF 37. M149 Electrode Cutoff Saw OFF 38. MIS0 AAC Gouging M a c h i n e OFF
M1 M2 M3 M65 M75 MI02 MI03 MI09 MII0 M142 M143 M149 MIS0
WELDING, 39. VA 40. WA
VA<#> WA< # •
M A N I P U L A T O R "A": W e l d i n g Voltage W e l d i n g Wire-feed speed
COORDINATE, 41. XA 42. YA 43. ZA 44. CA 45. AA
MANIPULATOR X Axis Y Axis Z Axis Roll Axis Yaw Axis
COORDINATE, P O S I T I O N E R 46. XC R o t a t e Axis 47. YC T i l t Axis
"A": XA<#> YA<#> ZA<#> CA< # > AA<#>
"C" : xc<#> ¥C<#>
Table A.1 (contlnued)-NCLanguageCommandsfor ARCCyro5+2 Robot VOLUME 31 • NUMBER 2 • 1992
t 33'
×
Report "A knowledge-based approach to programming welding robots"
Your name
Email
Reason
-Select Reason-
Pornographic
Defamatory
Illegal/Unlawful
Spam
Other Terms Of Service Violation
File a copyright complaint
Description
Our partners will collect data and use cookies for ad personalization and measurement.
Learn how we and our ad partner Google, collect and use data
.
Agree & close