several welding processes which have proven satisfactory in laboratory testing are unable to perform adequate welds in the field , as those taught in u . s . pat . nos . 5 , 773 , 779 and 5 , 877 , 468 which are incorporated by reference , because of a lack of adjustment and adaptability as provided by this gap welding process . it should also be understood that the invention here is applicable to robotic welding of any workpiece which is substantially immovable , however the principles are described with particular reference to rail welding . the prior art robotic calibration problem is a result of applying the typical method of robotic control such as one used in a manufacturing assembly line where work pieces are brought to a fixed welder . when the typical method of robotic control is used , which is one where the robotic welder is in a fixed location , the operator manually positions the robotic welder and pieces to be welded so the proper gap size is created . once the pieces are properly positioned , fixed stops are used so subsequent pieces to be welded can be positioned in the exact location as the original . when using a fixed robotic welder , pieces to be welded have identical weld face orientation which is accomplished by the use of precise cutting methods and the ability of the operator to manually position the pieces so that the faces to be welded are parallel to each other . when the robotic welder 30 is brought out into the field , each weld gap 32 encountered is unique from the next . to perform a weld , the robotic welder 30 needs to be moved to the next gap location and realigned . due to the immovable nature of the weld pieces , the gap welding process 10 must sense the location , orientation and origin position of the faces of the pieces that define the gap and make adjustments to weld coordinate data so it can accurately and completely fill in the weld gap 32 . a preferred embodiment of the gap welding process 10 of the present invention is shown in the flow diagram of fig1 . the gap welding process 10 includes three processes that are needed to accurately and completely fill the weld gap 32 between two pieces 51 to be welded . the three processes include the data transfer process 12 , the gap sensing process 14 , and the robotic welding process 16 . it will be understood that the problems are not necessarily unique to rail welding , as other on — site welds , such as in architectural construction , or ship - building , to name some examples , could also benefit from the teachings herein . the gap welding process 10 , which is made up of these several robotic control and sensing processes , is capable of welding a gap between two pieces of metal with variations in gap location , orientation and position . the advantages of the gap welding process 10 is the ability to locate the boundaries of the weld gap so the robotic control program 24 can continuously move the gas arc welding torch through the gap between the two pieces to be welded to properly produce a sound and accurate weld . the gap welding process 10 is initiated with the transfer of weld data , which is performed by the data transfer process 12 . the data transfer process 12 , best shown in the flow diagram of fig2 , allows predetermined welding position data which is stored as spreadsheet data 18 to be converted into weld program data 22 by the data conversion program 20 . the spreadsheet data 18 are stored information needed to instruct the robotic welder 30 . the operator has the option of choosing a preselected group of spreadsheets or can create a customized group by selecting individual spreadsheet data 18 . other spreadsheet data can be substituted depending on the dimensions of the pieces to be welded . once selected , the spreadsheet data 18 is converted by the data conversion program 20 to the weld program data 22 that can be used to position the robotic welder 30 . the weld program data 22 contains variables in the x - y - z − - w - p - r coordinate system that allows for three dimensional positioning and rotation of the robotic welder 30 . the stored weld program data 22 also includes , but is not limited to , point position , user frame to be used , weld schedule , seam tracking schedule , weave schedule , azimuth orientation , travel speed , weave time and digital output control data . the data transfer process 12 allows for instantaneous transfer of weld program data 22 needed by the robotic control program 24 to perform a complete weld . the robotic control program can easily and automatically manipulate information stored in the weld program data . the data conversion program 20 is a higher level programming language program , which transfers the weld program data 22 into a program data memory location within a robotic control program 24 . the weld program data 22 provides detailed information so the robotic control program 24 can accurately maneuver the robotic welder 30 in the weld gap 32 relative to the user frames that will be defined in the gap sensing process . the spreadsheet data 18 can be created or altered depending upon the object to be welded . spreadsheets can be selected by the operator , as needed depending on the complexity or simplicity of the weld subject matter . the data transfer process 12 does not provides enough information for the robotic control program 24 to manipulate within a gap , additional physical data is required so the robotic control program 24 can conform to a specific weld gap 32 . the process that provides the physical data is the gap sensing process 14 . the gap sensing process 14 , best shown in the flow diagram of fig3 , is designed to accurately measure the location , orientation and position of the gap 32 to be welded and store the acquired information as weld variance data 26 to be used by the robotic control program 24 . weld variance data 26 is made up of user frames 34 and offsets 36 . user frames 36 are stored weld gap 32 data for the different weld face configurations . one geometrical plane of the user frames 36 , determined by gap sensing , is formed by the face of the piece to be welded in relation to the coordinate position of the robotic welder 30 . offsets 36 are the measurements of the differences in actual dimension from the nominal dimension caused by manufacturing wear or handling , determined by the gap - sensing program 28 and used to make adjustments to weld program data . the gap sensing process 14 utilizes a gap sensing program 28 which is a “ high level programming language ” program to maneuver the robotic welder 30 to touch the pieces to be welded which form the weld gap 32 , to determine user frames 3 and 4 and offsets 36 . the gap - sensing program 28 determines user frames to define the boundaries of the gap 32 to be welded . the gap sensing process 14 , as shown in fig4 , is initiated by placing the robotic welder 38 to within ¼ inch spherical proximity of a location 50 that has a relationship to the gap 32 formed by the pieces to be welded . it will be readily observed that fig5 , 6 and 7 do not show this gap 32 to scale , being exaggerated for clarity . this orientation and location of the robot with respect to the gap 32 formed by the pieces to be welded is arbitrarily designated as user frame 1 . user frame 1 is a relatively gross orientation and location between the robot and the gap to be welded and is used as the coordinate system for the start of the gap sensing process . the arbitrary first user frame to be determined by the gap sensing program 28 is the geometrical face 52 of the piece to be welded , best shown in fig7 , which is closest to the robotic welder 30 and is arbitrarily designated as user frame 4 . to determine the geometrical plane of user frame 4 , and to determine orientation of the gap face within the plane , the gap sensing program 28 maneuvers the robotic welder 30 so the torch tip and / or weld wire 38 contacts the face 52 of the piece to be welded or the fixturing at several locations . the points of contact typically include the two bottom corner points 54 and 56 of the face , the top center point 58 along with other points , but many point combinations may be incorporated . the torch tip and / or weld wire 38 is electrically charged so when it comes into contact with the piece to be welded or fixturing , which is grounded , a circuit is completed . the gap - sensing program 28 senses the presence of a completed circuit and stops the robotic welder 30 and records its position in the x - y - z coordinate system . once contact takes place , the robotic weld &# 39 ; s 30 position is recorded and moved to the next location on the face until all needed points are gathered to determine user frame 4 . after collecting the points that make up user frame 4 , the robotic welder 30 is instructed by the gap sensing program 28 to determine the next user frame . this is the face that opposes user frame 4 and is arbitrarily designated as user frame 3 . to determine the geometrical plane of user frame 3 , and to determine orientation of the gap face within that plane , the gap sensing program 28 maneuvers the robotic welder 30 so the torch tip and / or welding wire 38 contacts the face 52 of the piece to be welded or fixturing at several locations . the points of contact typically include the two bottom corner points 65 and 66 of the face , the top center point 67 along with other points , but many point combinations may be incorporated . the operation of using the gap sensing program 28 to determine the geometrical plane of a user frame and orientation of the face of the piece to be welded within that plane is repeated until all necessary user frames have been defined and oriented . once the data points are gathered for all user frames , the robotic control program 24 calculates an arbitrarily chosen user frame 2 , which is an imaginary geometrical plane which has a certain orientation to previously determined user frames . user frame 2 gives the robotic control program 24 a plane of reference when performing welding functions that are not oriented to a gap face . after gathering the necessary user frame data , the robotic control program 24 determines the gap offsets 36 of the pieces to be welded by positioning the torch tip and / or welding wire 38 to touch the outside 60 , inside 62 and top 64 of the pieces to be welded to determine if any parts of the piece are offset in the x - y - z direction from the expected coordinates as represented in the weld program data 22 . offset determination is a crucial step in the gap welding process 10 because the weld program data 22 only provides the robotic control program 24 with the welding data for ideal weld gap conditions and does not compensate for dimensional variations in the pieces to be welded . when on - site welding , it is not uncommon to encounter material to be welded that has been deformed due to wear or other elemental factors such as manufacturing defects or damage due to improper handling . offsets 36 as well as user frames are needed so the robotic control program 24 can vary the weld program data 22 to accurately conform to the weld gap 32 . weld variance data 26 , which encompasses the user frames and offsets is used by the robotic control program 24 to determine whether the weld gap is within the allowable welding tolerance . if the weld gap 32 is larger or smaller than the acceptable tolerance limits , the robotic control program 24 will abort and no weld will be made . the variance data allows the gap welding process 10 to be adapted to each individual weld gap 32 . the gap sensing program 28 , which uses a higher level programming language , uses the data received by physically touching the pieces to be welded to initialize the weld variance data 26 . the initializing of the weld variance data 26 is when the gap sensing program 28 initializes the user frames to best fit the orientation of the weld gap 32 , faces 52 and edges 53 and sets the offsets 36 to be used in the robotic welding process 10 . the robotic welding process 16 , as shown in the flow diagram in fig4 , features the robotic control program 24 which receives input data in the form of weld variance data 26 , weld program data 22 and feedback data 44 . the robotic control program 24 uses the input data to determine where to position the robotic welder 30 . the robotic control program 24 can manipulate the weld variance data 26 and the weld program data 22 based on information received from the real time feedback data 44 such as position and amperage . the manipulated data may be used by the robotic control program 24 to transmit computer instructions directly to the “ robotic welding control software ” 46 or due to differences in programming language , an instruction translation may be required . if a computer instruction translation is required to transform the high level programming language instructions to low level programming language instruction , the robotic control program 24 can transmit the instructions to the lower level welding program 48 where the higher level welding program language instructions are converted into a format that can be understood by the robotic welding control software 46 . it has been determined that the programming language known as karel is a suitable programming language for the invention described herein . the lower level welding program 48 first receives instructions from the robot control program 24 and then the lower level welding program 48 written in a low level programming language is used as an instruction translating program . the converted instructions are then transmitted from the lower level welding program 48 to the robotic welding control software that instructs the robotic welder 30 to properly position the welding torch and perform the appropriate operations , which produce a sound and accurate weld in the weld gap 32 . various features of the invention have been particularly shown and described in connection with the illustrated embodiment of the invention , however , it must be understood that these particular arrangements merely illustrate , and that the invention is to be given its fullest interpretation .