Method and system for determining workpiece loading position in CNC machine having robotic arm

By installing a force sensor on the robot arm, sensing the contact position between the workpiece and the holding fixture, and automatically calculating the three-dimensional center point of the holding fixture, it solves the lengthy and error-prone problems of determining the orientation and loading position between the robot arm and the CNC machine tool holding fixture in the prior art, and realizes an efficient and reliable automatic loading process.

CN119585685APending Publication Date: 2025-03-07HURCO
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380039739.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-05-10
Filing Date
2023-05-10
Publication Date
2025-03-07

AI Technical Summary

Technical Problem

The prior art has lengthy, time-consuming and error-prone problems in determining the orientation and loading position between the robot arm and the CNC machine tool holder fixture, especially when the holder fixture position changes or the workpiece geometry changes, the manual teaching process needs to be repeated.

Method used

By installing a force sensor on the robot arm, the sensor is used to sense the contact position between the workpiece and the surface of the holding fixture, and the three-dimensional center point of the holding fixture is calculated, thereby automatically determining the loading position of the workpiece. The system includes activating the robot to clamp the workpiece, enabling free driving mode, sensing the contact position through the central position routine and calculating the load position.

Benefits of technology

It realizes automatic and reliable loading of workpieces into the holding fixture without the need for accurate and slow progression and positioning of the robot, reducing the time and error of manual operation, and improving productivity and flexibility.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119585685A_ABST
    Figure CN119585685A_ABST
Patent Text Reader

Abstract

There is provided a system for determining a loading position of a workpiece relative to a holding fixture, the system comprising: a robot comprising a sensor; and a controller coupled to the robot and configured to activate the robot to clamp the workpiece; enabling a free driving mode to allow an operator to move the clamped workpiece to a starting position; executing a center position routine, including causing the robot to: move in a first direction until the sensor senses contact with the first surface of the holding jig; moving in a second direction until the sensor senses contact with the second surface; moving in a third direction until the sensor senses contact with the third surface; and calculating a three-dimensional center point of the holding jig representing a loading position of the workpiece using the sensed first, second, and third contact positions.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to orienting a robotic arm, and more specifically to methods and systems for orienting a workpiece held by the robotic arm relative to a holding fixture of a machine tool to allow for automated, repeatable placement of workpieces and removal of finished parts. Background Art

[0002] It is known that a robotic arm is used to automatically "pick up and place" workpieces from a workpiece pallet into a holding fixture (e.g., a vise) in a machine tool (e.g., a CNC machine). This operation, known as robotic machine operation, requires accurately establishing the three-dimensional position and aligning the robot coordinate system with the fixture in the CNC machine to successfully load the part. The relative positions and orientations of the robot base coordinate system, the end-effector coordinate system, the CNC machine coordinate system, and the workpiece holding fixture position within the CNC are all related through three-dimensional coordinate system transformations.

[0003] Currently, there are several ways to handle robot arm positioning and alignment in industry. The most common method is to carefully teach the robot by slowly advancing it to the holding fixture position using a teacher. Alternatively, the operator may use indicators or other measuring devices to find the holding fixture position or center and program the robot, or they may have the robot grip the target workpiece and then slowly advance the robot to teach it the position for loading the workpiece into the holding fixture. In either case, the process is manual and requires the operator to set the position very carefully. This process is tedious because, for many parts, especially for CNC milling machines, the process will need to be repeated for each workpiece and holding fixture combination to be automated. Moreover, since the robot system and the CNC system are often independent devices, if the holding fixture is moved (positioned at different locations on the CNC table), the CNC axis position for exchanging parts is changed, the robot system is moved, or the gripper's position on the part is changed, the operator will need to repeat the process.

[0004] Additionally, when the robot includes a free-driving operation mode, where the operator can manually move the robot's gripper and the CNC machine's vise or chuck clamps the workpiece while the gripper holds it, the registered loading position is slightly affected. This is partly due to the robot arm's compliance, especially when the robot is significantly extended (i.e., in its most flexible state) to load the workpiece into the CNC machine. This compliance or flexibility may not be perfectly reflected by the joint encoder, and the stored loading position may not be accurate enough. In this case, an additional step is required: manually slowing the robot forward to center the workpiece. Furthermore, the workpiece may move relative to the gripper's fingers due to the force of the vise or chuck clamping it, resulting in additional positioning errors. In free-driving mode, the robot inevitably exerts some residual force when the workpiece is clamped by the vise or chuck. Moreover, there is a certain amount of resistance for small movements of the robot because the robot needs to detect and distinguish the human intention to move the robot during free-driving and the control system prevents movement to keep the joints stationary when it determines that the robot should not move. The robot may even sometimes deviate from its stationary position when no force is applied. All of these factors can lead to errors when recording the loading position, and the position needs to be slightly adjusted by a human slow-moving robot.

[0005] A vision system has been developed to help simplify the process. An example from Robotiq uses a locator plate as a 3D position and orientation marker. The 3D position and orientation of the marker are detected using a camera mounted on the robot, and then a transformation sequence is established as follows: camera transformation -> image processing -> marker position and orientation calculated relative to the camera -> a camera mounted at the end of the robot's arm uses joint position transformation to convert the position to the robot's base position.

[0006] This transformation sequence is used to calculate the transformation from the robot base to the marker. All robot positions are programmed relative to the marker. As long as the position of the holding gripper relative to the marker remains unchanged, any other changes will cause the robot movement to automatically compensate for the marker position and load the workpiece into the holding gripper without retraining the robot. However, if there are any changes to the holding gripper position relative to the marker position and orientation, or if the workpiece geometry itself changes, the robot will need to be retrained.

[0007] There are also mechanical variations of the aforementioned camera system available from Flexxbotics. These follow a similar principle, except that a special 3D gripper is mounted at a specific location on the robot's wrist, and a paired 3D marker is mounted to another object (e.g., near the holding gripper), much like how the camera system uses a locator plate as a marker. As the robot slowly approaches and mates with the 3D marker, the robot transformation is calculated using the robot's joint positions, similar to how camera transformations are calculated, to find the relative transformation between the marker and the robot base. All robot positions in the robot program are then updated relative to the 3D marker's position and orientation.

[0008] Conventional methods for accurately establishing three-dimensional position and aligning the robot coordinate system with the holding fixture in the CNC machine are flawed because they are time-consuming, redundant, expensive, error-prone, or limited in providing flexibility for new setup configurations. This disclosure eliminates the need for (1) establishing intermediate marker positions and orientations and (2) accurately slowing or moving the robot to teach the marker positions. Summary of the Invention

[0009] According to one embodiment, this disclosure provides a system for determining the loading position of a workpiece relative to a retaining fixture, the system comprising: a robot configured to grip the workpiece and including sensors; and a controller communicatively coupled to the robot, the controller having a memory including a plurality of instructions, the plurality of instructions, when executed by the controller, causing the controller to: activate the robot to grip the workpiece; enable a free-driving operation mode of the robot to allow an operator to move the workpiece to a starting position adjacent to the center of the retaining fixture; and respond to the operator's input by executing a center position routine; wherein, the center The center position routine includes: automatically moving the robot in a first direction until the sensor senses contact at a first contact position between the workpiece and a first surface of the retaining fixture; automatically moving the robot in a second direction until the sensor senses contact at a second contact position between the workpiece and a second surface of the retaining fixture; automatically moving the robot in a third direction until the sensor senses contact at a third contact position between the workpiece and a third surface of the retaining fixture; and calculating a three-dimensional center point of the retaining fixture representing the loading position of the workpiece using the first contact position, the second contact position, and the third contact position. In one aspect of this embodiment, the center position routine further includes: automatically moving the robot in a fourth direction until the sensor senses contact at a fourth contact position between the workpiece and a fourth surface of the retaining fixture, and calculating the three-dimensional center point of the retaining fixture using the first contact position, the second contact position, the third contact position, and the fourth contact position. In a variation of this aspect, the center position routine further includes: causing the robot to move automatically in a fifth direction until the sensor senses contact at a fifth contact position between the workpiece and the fifth surface of the holding fixture, and calculating the three-dimensional center point of the holding fixture using the first contact position, the second contact position, the third contact position, the fourth contact position, and the fifth contact position. In another aspect, the sensor is a force sensor attached to the end of the robot's arm. In yet another aspect, the plurality of instructions, when executed by the controller, also cause the controller to move the robot to a position within the machine. In yet another aspect, the plurality of instructions, when executed by the controller, also cause the controller to display an interface on the controller's display, the interface allowing the operator to select the permitted axis of movement when the robot is moving in free-driving mode. In a variation of this aspect, the interface also allows the operator to select which axis of rotation is permitted when the robot is moving in free-driving mode, provided an axis exists.In another aspect, the first surface is a first side surface of the first jaw of the retaining fixture, the second surface is a second side surface of the second jaw of the retaining fixture, and the third surface is the bottom surface of the retaining fixture. In yet another aspect of this embodiment, the second direction is opposite to the first direction, and the third direction is perpendicular to both the first and second directions. Another aspect also includes storing the calculated loading position in a job file, and retrieving and executing the job file to load additional workpieces into the retaining fixture without repeatedly enabling, generating, and calculating the steps. In another aspect, the center position routine further includes causing the robot to automatically move to a center position between the first contact position and the second contact position. In yet another aspect, the plurality of instructions, when executed by the controller, also cause the controller to execute the center position routine twice to calculate the loading position and the second loading position, and the center position routine further includes calculating a final loading position by averaging the loading position and the second loading position. In another aspect, when executed by the controller, the plurality of instructions also cause the controller to execute a part removal routine after the workpiece has been formed into a finished part. The part removal routine causes the controller to: enable the robot's free-driving mode to allow the operator to move the robot to a part pickup position; respond to the operator's input by commanding the robot to grip the finished part and commanding the retaining fixture to release the finished part; and move the robot to remove the finished part from the retaining fixture. In a variant of this aspect, the part removal routine also causes the controller to move the robot to a position within the machine.

[0010] In another embodiment, this disclosure provides a method for determining the loading position of a workpiece relative to a retaining fixture, the method comprising: activating a robot by a controller to grip the workpiece; enabling a free-driving operation mode of the robot by the controller to allow an operator to move the workpiece to a starting position adjacent to the center of the retaining fixture; causing the robot to move automatically in a first direction by the controller until a sensor coupled to the robot senses contact at a first contact position between the workpiece and a first surface of the retaining fixture; causing the robot to move automatically in a second direction by the controller until the sensor senses contact at a second contact position between the workpiece and a second surface of the retaining fixture; causing the robot to move automatically in a third direction by the controller until the sensor senses contact at a third contact position between the workpiece and a third surface of the retaining fixture; and calculating a three-dimensional center point of the retaining fixture representing the loading position of the workpiece using the first contact position, the second contact position, and the third contact position. One aspect of this embodiment further includes: causing the robot to move automatically in a fourth direction until the sensor senses contact at a fourth contact position between the workpiece and the fourth surface of the retaining fixture, and calculating the three-dimensional center point of the retaining fixture using the first contact position, the second contact position, the third contact position, and the fourth contact position. A variation of this aspect further includes: causing the robot to move automatically in a fifth direction until the sensor senses contact at a fifth contact position between the workpiece and the fifth surface of the retaining fixture, and calculating the three-dimensional center point of the retaining fixture using the first contact position, the second contact position, the third contact position, the fourth contact position, and the fifth contact position. In another aspect, the sensor is a force sensor coupled to the arm of the robot. Yet another aspect includes an interface presented by the controller on a display of the controller, the interface allowing the operator to select permitted axes of movement when the robot is moving in free-driving mode. In yet another aspect, the first surface is a first side surface of a first jaw of the retaining fixture, the second surface is a second side surface of a second jaw of the retaining fixture, and the third surface is the bottom surface of the retaining fixture. In another aspect, the second direction is opposite to the first direction, and the third direction is perpendicular to both the first and second directions.

[0011] In another embodiment, this disclosure provides a non-transitory computer-readable medium storing instructions that, when executed by a controller, cause the controller to: activate a robot to grip a workpiece; enable a free-driving operation mode of the robot to allow an operator to move the workpiece to a starting position adjacent to the center of a retaining fixture; cause the robot to move automatically in a first direction until a sensor coupled to the robot senses contact at a first contact position between the workpiece and a first surface of the retaining fixture; cause the robot to move automatically in a second direction until the sensor senses contact at a second contact position between the workpiece and a second surface of the retaining fixture; cause the robot to move automatically in a third direction until the sensor senses contact at a third contact position between the workpiece and a third surface of the retaining fixture; and calculate a three-dimensional center point of the retaining fixture representing the loading position of the workpiece using the first contact position, the second contact position, and the third contact position. In one aspect of this embodiment, the instructions further cause the controller to cause the robot to move automatically in a fourth direction until the sensor senses contact at a fourth contact position between the workpiece and the fourth surface of the retaining fixture, and calculate the three-dimensional center point of the retaining fixture using the first contact position, the second contact position, the third contact position, and the fourth contact position. In a variant of this aspect, the instructions further cause the controller to cause the robot to move automatically in a fifth direction until the sensor senses contact at a fifth contact position between the workpiece and the fifth surface of the retaining fixture, and calculate the three-dimensional center point of the retaining fixture using the first contact position, the second contact position, the third contact position, the fourth contact position, and the fifth contact position.

[0012] While several embodiments have been disclosed, other embodiments of the invention will become apparent to those skilled in the art from the following detailed description of illustrative embodiments shown and described herein. Therefore, the drawings and detailed description should be considered illustrative in nature and not restrictive. Attached Figure Description

[0013] The above and other features of this disclosure, and the ways in which they are obtained, will become more apparent from the following description of embodiments thereof, taken in conjunction with the accompanying drawings, and the disclosure itself will be better understood, wherein:

[0014] Figure 1 is a schematic diagram of the machine tool system;

[0015] Figure 2 It is a high-level block diagram of the components of a robot system used in conjunction with a machine tool system;

[0016] Figure 3 This is a perspective view of a machine tool system, a worktable, and a robot system according to an embodiment of the present invention;

[0017] Figure 4 yes Figure 3 A three-dimensional view of the workpiece stage;

[0018] Figure 5 yes Figure 3 A 3D view of the robot system;

[0019] Figure 6 It is a 3D view of the workpiece holding fixture;

[0020] Figure 7 It is a 3D view of a robot that holds a workpiece in its position within the machine;

[0021] Figure 8 yes Figure 3 A screenshot of the robot system's interface;

[0022] Figure 9 and Figure 10 It is a 3D view of a robot that holds a workpiece in a starting position near the center of a holding fixture;

[0023] Figure 11 yes Figure 3 A screenshot of the robot system's interface;

[0024] Figure 12 It is a 3D view of the robot inside the machine;

[0025] Figure 13 It is a 3D view of a robot that holds a workpiece near the chuck of a machine tool system;

[0026] Figure 14A and Figure 14B It is a three-dimensional view depicting the adjustment of the robot's orientation to align with the mounting surface of the holding fixture;

[0027] Figure 15 It is a 3D view of the robot inside the machine;

[0028] Figure 16 and Figure 17 This is a flowchart describing a method for determining the loading position of a workpiece according to the present invention; and

[0029] Figure 18 This is a flowchart depicting a component removal routine according to this disclosure.

[0030] While this disclosure is open to various modifications and substitutions, specific embodiments are illustrated by way of example in the accompanying drawings and are described in detail below. However, the invention is not limited to the specific embodiments described. Rather, this disclosure is intended to cover all modifications, equivalents, and substitutions falling within the scope of the appended claims. Detailed Implementation

[0031] In general, the methods and systems disclosed herein use force sensors mounted on the robot or alternatively joint torque sensors commonly found on collaborative robots to sense and calculate the position of the holding fixture, so as to reliably and automatically load the workpiece into the holding fixture without requiring the robot to be manually taught the position for loading the workpiece through accurate slow-motion and positioning.

[0032] Referring now to Figure 1, a type of machine tool system 100 that can be used with this disclosure is shown, having a motion control system 200. Hereinafter, all variations of the machine tool system 100 discussed are generally referred to as "CNC machine 100". In this example, the CNC machine 100 includes a frame 102 having a first saddle 104 coupled thereto. The saddle 104 is translatable in directions 106 and 108. A second saddle 110 is supported by the first saddle 104. The saddle 110 is translatable relative to the saddle 104 in directions 112 and 114. A platform 120 is supported by the saddle 110 and is rotatable relative to the saddle 110 in directions 122 and 124. In one example, each of the saddle 104, saddle 110, and platform 120 can be moved by a motor (not shown) controlled by the motion control system 200.

[0033] Furthermore, the third saddle 126 is supported by the frame 102. The saddle 126 is translatable in directions 128 and 130. The saddle 126 supports a rotatable member 132. The rotatable member 132 is rotatable relative to the saddle 126 in directions 134 and 136. In one example, each of the saddle 126 and the rotatable member 132 can be moved by a motor (not shown) controlled by the motion control system 200.

[0034] The tool spindle 138 is supported by a rotatable member 132. As is known in the art, various tools 141 can be attached to the tool spindle 138 to perform various operations using the CNC machine 100. The tool spindle 138 can rotate about the tool spindle axis 139 to input rotation to the tools 141. In one example, multiple tools 141 are stored in a tool conveyor 144.

[0035] Movement of saddle 104 along direction 106 or direction 108 is illustrated as movement along y-axis 150. Movement of saddle 110 along direction 112 or direction 114 is illustrated as movement along x-axis 152. Movement of saddle 126 along directions 128 and 130 is illustrated as movement along z-axis 154. Rotation of rotatable member 132 along direction 134 or direction 136 is illustrated as movement about B-axis 156. Rotation of platform 120 along direction 122 or direction 124 is illustrated as movement about C-axis 158. CNC machine 100 is an exemplary 5-axis machine. In one example, one of B-axis 156 and C-axis 158 is replaced by A-axis, wherein platform 120 can tilt about one of x-axis 152 and y-axis 150.

[0036] By moving one or more of the five axes of the CNC machine 100, the tool 141 can be positioned relative to a part or workpiece to be machined, supported by the platform 120. The workpiece can be fixed to the platform 120 to maintain its position relative to the platform 120 using a retaining fixture (e.g., a bench vise), as described below.

[0037] Figure 2 This is a high-level block diagram of certain components of a robot system 300 configured according to this disclosure, which loads and unloads workpieces from a CNC machine 100. The robot system 300 generally includes a controller 310 and a robot 320. The controller 310 includes various components, such as processors and drivers not shown for simplicity. The controller 310 typically functions as a computer and includes a memory 311 storing multiple computer instructions 313 executed by the controller 310. The controller 310 also includes a teacher with a display 315, which can be used as a user interface. As further described below, the robot 320 includes several components that function as an automated arm for grasping and repositioning objects such as workpieces on a tray 312. The robot 320 is controlled by the controller 310 to move multiple movable components of the robot 320 using multiple electric motors 317 and associated hardware / software. As further described below, at least one sensor 392 of robot 320 is configured to detect contact between robot 320 and other objects, such as holding gripper 350 of CNC machine 100.

[0038] Now refer to Figure 3 A simplified version of a CNC machine 100, a robot system 300, and a workpiece stage 302 including a pallet 312 are shown. As illustrated, a fixture 350 is mounted on a platform 120 of the CNC machine 100. In this example, the robot system 300 is mounted to a bracket 306, which in turn is mounted to a base 308 of the workpiece stage 302. A controller 310 is also mounted on the bracket 306.

[0039] like Figure 4 As shown more clearly, the worktable 302 includes a tray 312 mounted on the upper part of the base 308. The tray 312 includes a plurality of workpiece recesses 314 precisely spaced apart on the tray 312. In this example, a plurality of raw workpieces 316 are loaded into the recesses 314 such that the corners of each workpiece 316 are aligned and in contact with the corners of the corresponding recesses 314. In this way, by determining the position of an individual workpiece 316 in an individual recess 314, the position of the workpiece 316 can be programmed into the robot system 300 during setup. Also as shown, when machining is complete, the finished part 318 formed by the workpieces 316 of the CNC machine 100 is placed back into the corresponding recesses 314 by the robot system 300.

[0040] Now refer to Figure 5 An enlarged view of the robot system 300 is shown. As described above, the robot system 300 generally includes a controller 310 and a robot 320. The robot 320 includes a base 322 mounted on a support 306, a lifter 324 mounted on the base 322 that allows the robot 320 to rotate about the z-axis of the robot coordinate system 326 at joint J1, an extension 328 connected to the lifter 324 for rotation at joint J2, a first arm segment 330 connected to the extension 328, a second arm segment 334 connected to the first arm segment 330 at joint J3, a third arm segment 336 connected to the second arm segment 334 at joint J4, a fourth arm segment 338 connected to the third arm segment 336 at joint J5, an arm end 342 connected to the fourth arm segment 340 at joint J6, and a pair of grippers 344 connected to the arm end 342. Each gripper 344 includes a pair of opposing fingers 346 configured to grip a workpiece 316. As shown, the arm end coordinate system 348 is associated with the position and orientation of each gripper 344. It should be understood that the principles of this disclosure can be applied to a variety of robot configurations. Robot 320 is simply described as an example.

[0041] Figure 6An example of a retaining clamp 350 that can be used in conjunction with the teachings of this disclosure is depicted. In this example, the retaining clamp 350 is a pneumatic bench vise having a base 352 and a pair of opposing jaws 354 that, when closed (as shown), form an opening 356 (a bag in this example). The base 352 is mounted to a CNC machine 100 using a plurality of bolts 353, which are screwed into corresponding openings (not shown) formed in the mounting structure. The opening 356 includes a bottom surface 358, two side surfaces 360 (one on each jaw 354), and two end surfaces 362. Approximately half of each end surface 362 is formed on one jaw 354, and the other half is formed on the other jaw. In some embodiments, the jaws 354 are actuated via pneumatic tubes 364 under the control of a controller 310. In other embodiments, the jaws 354 are controlled by a motion control system 200 or an external PLC.

[0042] It should be understood that, according to the teachings of the present invention, various different holding clamps 350 can be used in different machining apparatuses. As described below, for example, the jaws of a chuck can be used to hold the workpiece on a lathe. Furthermore, other types of bench vises can be used, such as… Figure 9 and Figure 10 The bench vise shown provides an opening between the side surface of the jaw and a single end surface.

[0043] As described below, the methods and systems of this disclosure use at least one force sensor 392 (or a joint torque sensor typically found on collaborative robots) mounted to robot 320 to sense and calculate the position of retaining fixture 350 to reliably and automatically load workpiece 316 into retaining fixture 350 without requiring precise slow-motion and positioning of robot 320 to manually teach it the position of the loaded workpiece 316. It should be understood that the term "force sensor 392" as used herein refers to any device that provides feedback to controller 310 indicating that robot 320 has made contact with another surface, including but not limited to one or more force sensors, one or more joint torque sensors, one or more electric motor monitors indicating the torque output of an electric motor, or other devices.

[0044] After the robot 320 is positioned near the CNC machine 100, it is taught, in a manner known to those skilled in the art, the position of the workpiece 316 in the pallet 312 and the route or path of movement from the workpiece 316 to the "in-machine" position inside the CNC machine 100. Following this setup, the robot 320 is initiated to pick up the workpiece 316 to be loaded into the holding fixture 350. The robot 320 then moves the workpiece 316 to the pre-taught in-machine position. This position does not need to be precise. Rather, the initial position only needs to avoid collisions with any objects, such as the machine housing and / or the spindle 138.

[0045] Figure 7 The gripper 344 of the robot 320 is shown, which holds the original workpiece 316 between its fingers 346 above and near a retaining fixture 350 mounted on the table or saddle 110 of the CNC machine 100. In other words, Figure 7 The image shows robot 320 holding workpiece 316 in a pre-taught position within the machine.

[0046] Next, the controller 310 executes instruction 313 from memory 311 to enable the robot 320's free-driving mode and instructs the operator to move the robot 320's gripper 344 (and therefore the workpiece 316) to near the center of the holding fixture 350 (hereinafter referred to as the "starting position"). This manual operation does not need to be precise because the starting position is not the final posture of the robot 320 with the workpiece 316 loaded. To assist in the execution of this manual operation, the controller 310 presents the operator with options to prohibit certain directional and rotational movements of the robot 320 in free-driving mode, as further described below.

[0047] For example, Figure 8 An interface 366, presented by the controller 310 to the operator on the display 315, is depicted, in which the operator can select, by clicking boxes 368, 370, and 372 respectively in the Move to Visor window 374, to allow manual free-driving movement of the robot 320 along each of the x, y, and z axes of the robot base or gripper coordinate system. As shown, the operator does not have the ability to manually move the robot 320 around these axes (i.e., there are no selection boxes 376, 378, and 380). Thus, when the robot 320 is in free-driving mode, the controller 310 will prohibit movement of the robot 320 around the x, y, and z axes (i.e., the orientation of the gripper 344 and therefore the orientation of the workpiece 316 cannot be manually changed). In this way, the workpiece 316 is held in the holder 344 such that it remains coplanar with the holding fixture 350 and with the XY plane of the CNC machine 100, so that the holder 344 (and the workpiece 316) can be easily positioned near the center of the holding fixture 350.

[0048] Figure 9 and Figure 10A gripper 344 is shown holding a workpiece 316 between fingers 346 after the operator manually moves it to a starting position near the center of the holding clamp 350. More specifically, the workpiece 316 is partially positioned in an opening 356 defined between side surfaces 360 of the jaw 354, slightly above the bottom surface 358 of the opening 356, and spaced apart from each of the side surfaces 360 and the end surface 362. In this example, the workpiece 316 is a cuboid including an upper surface 382, ​​a lower surface 384 parallel to the upper surface 382, ​​a first side surface 384, a second side surface 386 parallel to the first side surface 384, a first end surface 388, and a second end surface 390 parallel to the first end surface 388.

[0049] After the operator completes the task of manually positioning the workpiece 316 to a starting position near the center of the holding fixture 350, the operator activates the center position routine on the controller 310, which continues to monitor the precise position of the holding fixture 350. Still referring to... Figure 9 and Figure 10 In one embodiment, the procedure causes the robot 320 to be positioned relative to its base 322. Figure 9 The gripper moves in the y-direction of the coordinate system shown until it detects contact between the first side surface 384 of the workpiece 316 and the side surface 360 ​​of the jaw 354. The contact is determined by force sensor 392. Figure 5 In this case, force sensor 392 is mounted within the arm end 342 of robot 320. However, it should be understood that the initial movement of robot 320 can be in any direction, as long as the movement is toward the holding surface of retaining gripper 350. The procedure then moves robot 320 in the opposite y-direction until force sensor 392 detects contact between the second side surface 386 of workpiece 316 and the side surface 360 ​​of the other jaw 354 of retaining gripper 350. Controller 310 calculates the center (in the jaw 354) based on the detected position of the side surface 360 ​​of jaw 354. Figure 10(represented as C). Next, the controller 310 moves the robot 320 along the x-direction until the force sensor 392 detects contact between the end surface 388 of the workpiece 316 and the end surface 362 of the jaw 354. Upon detection of contact, the controller 310 moves the robot 320 slightly along the opposite x-direction and then downward along the z-direction until the force sensor 392 detects contact between the lower surface 384 of the workpiece 316 and the bottom surface 358 of the opening 356. The controller 310 then moves the robot 320 slightly upward in the z-direction. Based on the detected positions of the side surface 360 ​​of the jaw 354, the bottom surface 358 of the opening 356, and the end surface 362 of the jaw 354, the controller 310 calculates the three-dimensional center point (i.e., the loading position) of the holding fixture 350 and repeats this process to average the results to improve accuracy. The center point position is stored by the controller 310 as the loading position of the workpiece 316 / holding fixture 350 combination.

[0050] Once the loading position calculation is complete, the robot 320 loads the workpiece 316, the clamping fixture 350 is held onto the workpiece 316, and the robot 320 exits the CNC machine 100. Then, the operator activates the CNC machine 100 to process the workpiece 316 to form the first finished part 318.

[0051] Next, the operator activates the part removal routine on the controller 310. Specifically, the operator activates the controller 310 to cause the robot 320 to enter the CNC machine 100 and take the aforementioned in-machine position. Then, the controller 310 places the robot 320 into free-driving mode to allow the operator to move the gripper 344 to the part pickup position. The controller 310 then presents an interface 366 to the operator on the display 315, where, as shown... Figure 11 The activated component acquisition window 394 is shown. (Refer to the above.) Figure 8 The operator can select whether to allow manual free-driving movement of the robot 320 on each of the x, y, and z axes by clicking boxes 396, 398, and 400 respectively. As shown, the operator does not have the ability to manually move the robot 320 around these axes (i.e., there are no selection boxes 402, 404, and 406). Thus, when the robot 320 is in free-driving mode (i.e., the orientation of the gripper 344 cannot be manually changed), the controller 310 will prohibit the robot 320 from moving around the x, y, and z axes. In this way, the gripper 344 remains coplanar with the holding fixture 350 and the XY plane of the CNC machine 100, making it easier to position the robot 320 onto the finished part 318.

[0052] The operator then commands the controller 310 to instruct the robot 320 to clamp the finished part 318 between the fingers 346, which causes the robot 320 to automatically center itself on the finished part 318 while it remains in free-driving mode. The operator then commands the holding gripper 350 to release the finished part 318. The controller 310 then commands the robot 320 to remove the finished part 318 from the holding gripper 350 and place the finished part 318 into the recess 314. Figure 4 In this process, the workpiece is removed from the recess 314 when it is in its original state. At this time, the robot 320 is fully programmed to load the workpiece 316 into the holding fixture 350 and unload the part 318 from the holding fixture 350.

[0053] The software of controller 310 also allows the operator to specify which directions should be measured during the determination of the loading position. In some cases (such as...) Figure 12 As shown, for the center position, it may only be necessary to measure the center between the open jaws 354 of the holding clamp 350 (i.e., only contact needs to be sensed in directions 408, 410) and not the center in the opposite direction. In this case, the robot 320 can load the workpiece 316 and use the force sensor 392 to find the positive stop surface to push against, while keeping the clamp 350 locked on the workpiece 316.

[0054] In other applications of this invention, robot 320 may need to find, for example... Figure 13 The center of the three-jaw chuck is shown. As illustrated, the chuck 412 comprises three jaws 414 (only two are shown), which are arranged radially around the central axis 416 of the chuck 412 and spaced 120 degrees apart from each other. The process for finding the center point of the chuck 412 is essentially the same as described above, except that the gripper 344 moves in a plane perpendicular to the central axis 416 and in three directions (towards each jaw 414) to sense contact. To achieve this movement, the chuck 412 must be rotated and oriented at a specific angle, which must be programmed into the controller 310.

[0055] For a 5-axis machine tool 100, the robot 320 may need to load the workpiece 316 into a holding fixture 350 that is not aligned with the XY plane of the coordinate system 326 of the robot 320's base 322 or the XY plane of the machine tool 100's coordinate system. This could be due to clearance issues within the machine tool 100 or limitations in the reachability of the robot 320's arm. For example, in Figure 14A and Figure 14BIn this configuration, the gripper 344 of robot 320 must extend further from base 326 to align with the orientation of trunnion 418, maintaining the gripper (not shown) mounted on trunnion 418. As shown, when trunnion 418 rotates about axis A (arrow 1), gripper 344 must be rotated to remain perpendicular to the surface of trunnion 418 (arrow 2). For this purpose, fourth arm segment 340 must rotate about second joint 336 (arrow 3), which also requires second arm segment 334 to rotate about first joint 332 (arrow 4) and first arm segment 330 to rotate about extension 328 (arrow 5). These joint movements cause gripper 344 to be positioned away from base 326, thereby extending the range of robot 320. (Refer to above...) Figure 8 and Figure 11 The software of controller 310, as discussed, allows the operator to select the direction in which robot 320 can be manually moved during free-driving mode, and can accordingly disable robot movement using local functions common in robot controllers such as controller 310. For oriented workpiece 316 (e.g., workpiece 316 that needs to be moved out of the XY plane to align with holding fixture 350), additional rotational directions are permitted (i.e., by clicking). Figure 8 The frames 376, 378, and 380 allow the operator to orient the workpiece 316 to match the orientation of the retaining fixture 350.

[0056] exist Figure 15 In the example shown, the gripper 344 is shown rotated about the x-axis 152 of the gripper coordinate system such that it is perpendicular to the bottom of the retaining clamp 350. In this example, the trunnion 418 on which the retaining clamp 350 is mounted has been slightly rotated about the x-axis 152. Therefore, in the process of moving the gripper 344 to near the center of the retaining clamp 350, the gripper 344 needs to have a degree of freedom of rotation about the x-axis 152 (i.e., when entering free-driving mode, Figure 8 The box 376 shown needs to be checked.

[0057] Now refer to Figure 16 and Figure 17 The method for determining the loading position of workpiece 316 according to the present invention is illustrated in flowchart form. As shown, the initial step 420 represents registering robot 320 to pallet 312 as described above. Figure 4The process of positioning workpiece 316 in the machine. In step 422, the operator activates controller 310 to cause robot 320 to pick up workpiece 316. In step 424, controller 310 causes robot 320 to move workpiece 316 to the position inside the machine as described above. After robot 320 moves to the position inside the machine, controller 310 activates the free-driving mode described above and instructs the operator to move the robot's gripper 344 (and therefore workpiece 316) to near the center of holding gripper 350 (i.e., the starting position). In step 428, controller 310 presents interface 366 on display 315, which allows the operator to select / deactivate when robot 320 is in the position described above. Figure 8 and Figure 11 The free-driving mode allows movement along the axes of motion and around these axes. In step 430, the operator moves the gripper 344 and the workpiece 316 to the starting position. In step 432, the operator activates the center position routine on the controller 310.

[0058] In the depicted example, the center position routine causes robot 320 to move along the x, y, and z axes relative to the gripper coordinate system (or, in some embodiments, the base coordinate system) until force sensor 392 senses contact with the surface of retaining gripper 350 in the manner described above. In step 434, controller 310 moves robot 320 in a first direction (e.g., along the y-axis). In step 436, controller 310 determines whether force sensor 392 senses contact with a first surface of retaining gripper 350 (e.g., the side surface 360 ​​of a jaw 354). If not, the process checks in step 437 whether robot 320 has moved less than a maximum distance (i.e., a safety limit such as 10 mm), and if this maximum distance is exceeded, the program is terminated (step 439). If controller 310 determines that force sensor 392 has not sensed contact and the maximum distance has not been exceeded, the process returns to step 434, and controller 310 continues to move robot 320 in the first direction. If contact is detected by force sensor 392, in step 438, controller 310 stops movement in the first direction and stores the first contact position in memory 311. In step 440, controller 310 moves robot 320 in a second direction (e.g., the direction opposite to the first direction). In step 442, controller 310 determines whether force sensor 392 has detected contact with a second surface of holding gripper 350 (e.g., the side surface 360 ​​of the other jaw 354). If not, the process checks in step 443 whether robot 320 has moved less than a maximum distance (i.e., a safety limit such as 10 mm), and if this maximum distance is exceeded, the program aborts (step 445). If controller 310 determines that force sensor 392 has not detected contact and the maximum distance has not been exceeded, the process returns to step 440, and controller 310 continues to move robot 320 in the second direction. If contact is detected by force sensor 392, in step 444, controller 310 stops movement in the second direction and stores the second contact position in memory 311. In step 446, the controller 310 uses the stored first contact position and the stored second contact position to calculate the center position between the first and second surfaces of the holding fixture 350.

[0059] Next, in step 447, controller 310 moves robot 320 to the calculated center position. Then, in step 448, controller 310 moves robot 320 in a third direction (e.g., along the x-axis). In step 450, controller 310 determines whether force sensor 392 senses contact with a third surface of holding gripper 350 (e.g., end surface 362 of jaw 354). If not, the process checks in step 451 whether robot 320 has moved less than a maximum distance (i.e., a safety limit such as 10 mm), and if this maximum distance is exceeded, the program is terminated (step 453). If controller 310 determines that force sensor 392 did not sense contact and the maximum distance has not been exceeded, the process returns to step 448, and controller 310 continues to move robot 320 in the third direction. If contact is sensed by force sensor 392, in step 452, controller 310 stops moving in the third direction and stores the third contact position in memory 311.

[0060] In step 455, the controller 310 determines whether the retaining clamp 350 has another positive stop in a fourth direction, which in some embodiments is opposite to a third direction. This information will be programmed into the controller 310 during setup. For example, in... Figure 7 , Figure 9 , Figure 10 and 12 In the configuration of the holding clamp 350 shown, the holding clamp 350 includes only one end surface 362 or one positive stop along the x-axis. Figure 16 The central location routine continues to step 456. In other constructions, for example... Figure 6 The retaining clamp 350 depicted forms a pocket when the jaw 354 is closed, providing two end surfaces 362 along the x-axis. The controller 310 will be programmed to measure the two end surfaces 362 (i.e., there is more than one positive stop along the x-axis). Thus, the center position routine advances to... Figure 17In step 448B, the controller 310 moves the robot 320 in a fourth direction (e.g., along the x-axis opposite to the third direction). In step 450B, the controller 310 determines whether the force sensor 392 senses contact with a fourth surface of the holding gripper 350 (e.g., the second end surface 362 of the jaw 354). If not, the process checks in step 451B whether the robot 320 has moved less than a maximum distance (i.e., a safety limit such as 10 mm), and if this maximum distance is exceeded, the program aborts (step 453B). If the controller 310 determines that the force sensor 392 has not sensed contact and the maximum distance has not been exceeded, the process returns to step 448B, and the controller 310 continues to move the robot 320 in the third direction. If contact is sensed by the force sensor 392, in step 452B, the controller 310 stops movement in the fourth direction and stores the fourth contact position in memory 311. In step 446B, the controller 310 uses the stored third contact position and the stored fourth contact position to calculate the center position between the third and fourth surfaces of the holding fixture 350. Next, in step 447B, the controller 310 moves the robot 320 to the calculated center position, and the process returns to... Figure 16 .

[0061] In step 456, controller 310 moves robot 320 in the fifth direction (e.g., along the z-axis toward the bottom of holding gripper 350). In step 458, controller 310 determines whether force sensor 392 senses contact with the fifth surface of holding gripper 350 (e.g., the bottom surface 358 of holding gripper 350). If not, the process checks in step 459 whether robot 320 has moved less than a maximum distance (i.e., a safety limit such as 10 mm). If this maximum distance is exceeded, the program is terminated (step 461). If controller 310 determines that force sensor 392 did not sense contact and the maximum distance has not been exceeded, the process returns to step 456 and controller 310 continues to move robot 320 in the fifth direction. If contact is sensed by force sensor 392, in step 460, controller 310 stops moving in the fifth direction and stores the fifth contact position in memory 311. In step 462, the controller 310 uses the stored first contact position, second contact position, third contact position, fourth contact position (if applicable) and fifth contact position to calculate the three-dimensional center point (i.e., the loading position) of the holding fixture 350.

[0062] In step 464, controller 310 determines whether the loading position has been calculated twice. However, it should be understood that the number of measurements and calculations of the loading position can be less than or more than two, and can be configured by the operator. If not, the process returns to step 434 to repeat the steps of sensing and holding the contact of the first, second, third, fourth (if applicable), and fifth surfaces of the fixture 350 as described above. In this example, when the positioning position has been calculated twice, controller 310 calculates the average of the two results in step 466 to establish the final loading position. As described above, when the loading position calculation is complete, controller 310 instructs the robot to load workpiece 316 onto the holding fixture 350, commands the holding fixture 350 to lock onto workpiece 316, and causes robot 320 to exit CNC machine 100.

[0063] It should be understood that Figure 16 and Figure 17 Some steps of the method described herein may be optional, and these steps may be performed in different orders in some embodiments. For example, in one embodiment, the steps associated with detecting the fourth contact position (i.e., steps 448B, 450B, 452B, 451B, 453B, 446B, and 447B) may be omitted. In other embodiments where the retaining clamp 350 is configured to have no positive stop in the x-direction as depicted in FIG. 14, the steps associated with detecting the third and fourth contact positions (i.e., steps 448, 450, 452, 451, 453, 455, 448B, 450B, 452B, 451B, 453B, 446B, and 447B) may be omitted. As another example, the steps of determining whether the loading position is calculated twice (step 464) and averaging the results (step 466) may be omitted or added. Other variations are contemplated in this disclosure.

[0064] After the operator activates the CNC machine 100 to process workpiece 316 to form the first finished part 318, the operator initiates the part removal routine on the controller 310 as described above. Figure 18The part removal routine is illustrated in flowchart form. As shown, in step 468, controller 310 causes robot 320 to re-enter CNC machine 100 and move to the aforementioned machine position. Then, in step 470, controller 310 places robot 320 into free-driving mode. In step 472, controller 310 presents interface 366 to the operator, allowing the operator to select / deactivate robot 320's movement while in free-driving mode. After selecting / deactivating robot 320's movement, in step 474, the operator manually moves robot 320's gripper 344 to the part pickup position. Next, in step 476, controller 310 commands robot 320 to grip finished part 318 between fingers 346, causing robot 320 to automatically align itself with finished part 318 while remaining in free-driving mode. After the operator commands the holding fixture 350 to release the finished part 318 in step 478, the controller 310 commands the robot 320 to remove the finished part 318 from the holding fixture 350 and place it onto the tray 312 in step 480, as described above. After completing the part removal routine, the robot 320 is fully programmed to load the workpiece 316 into the holding fixture 318 and unload the finished part 318.

[0065] After the robot 320 is fully programmed as described above, the calculated loading position and finished part removal position can be stored in a job file, which includes the CNC program and the robot job program. If the construction of the robot 320 and the holding fixture 350 remains unchanged, this job file can be obtained for future re-running of another workpiece 316. In this way, the operator does not need to repeat the steps described above for determining the loading position and finished part removal position.

[0066] Those skilled in the art will recognize that the provided implementations can be implemented in hardware, software, firmware, and / or combinations thereof. For example, the controller disclosed herein can form part of a processing subsystem that includes one or more computing devices having memory, processing, and communication hardware. The controller can be a single device or distributed devices, and the functionality of the controller can be executed by hardware and / or as computer instructions on a non-transitory computer-readable storage medium. For example, the computer instructions or program code in the controller can be implemented in any feasible programming language, such as C, C++, C#, Python, JAVA, or any other feasible high-level programming language, or a combination of high-level and low-level programming languages.

[0067] As used herein, the modifier “about” when used with a quantity includes the value and has a meaning defined by the context (e.g., it includes at least the degree of error associated with the measurement of a particular quantity). When used in the context of a range, the modifier “about” should also be considered to disclose a range defined by the absolute values ​​of its two endpoints. For example, a range of “about 2 to about 4” also discloses a range of “2 to 4”.

[0068] It should be understood that the connecting lines shown in the various figures included herein are intended to represent exemplary functional relationships and / or physical connections between the various elements. It should be noted that many alternative or additional functional relationships or physical connections may exist in a real system. However, benefits, advantages, solutions to problems, and any elements that cause any benefit, advantage, or solution to occur or become more significant should not be construed as critical, essential, or essential features or elements. Therefore, the scope of the invention is limited only by the appended claims, wherein, unless expressly stated, the singular form of an element does not mean "one and only one," but rather "one or more." Furthermore, where phrases like "at least one of A, B, or C" are used in the claims, it is intended that such phrases be interpreted as meaning that A may exist alone in one embodiment, B may exist alone in one embodiment, C may exist alone in one embodiment, or any combination of elements A, B, or C may exist in a single embodiment; for example, A and B, A and C, B and C, or A and B and C.

[0069] In the detailed description herein, references to "one embodiment," "implementation," "exemplary embodiment," etc., indicate that the described embodiment may include a particular feature, structure, or characteristic, but each embodiment may not necessarily include that particular feature, structure, or characteristic. Furthermore, these phrases do not necessarily refer to the same embodiment. Additionally, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is assumed that, whether explicitly described or not, its influence in conjunction with other embodiments affects such feature, structure, or characteristic within the knowledge of those skilled in the art to which this disclosure pertains. After reading this specification, those skilled in the art will understand how to implement the invention in alternative embodiments.

[0070] Furthermore, the elements, components, or method steps in this disclosure are not intended to be exclusive to the public, regardless of whether they are expressly recited in the claims. Under 35 U.S.SC §112(f), no element of the claims herein is interpreted unless it is expressly stated using the phrase “means for…”. As used herein, the terms “comprising,” “including,” or any other variation thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but may also include other elements not expressly listed or inherent to such process, method, article, or apparatus.

[0071] Various modifications and additions may be made to the exemplary embodiments discussed without departing from the scope of this disclosure. For example, while the above embodiments relate to specific features, the scope of this disclosure also includes embodiments with different combinations of features and embodiments that do not include all of the stated features. Therefore, the scope of this disclosure is intended to include all such substitutions, modifications, and variations falling within the scope of the claims, as well as all their equivalents.

Claims

1. A system for determining a loading position of a workpiece relative to a holding fixture, the system comprising: a robot configured to grip a workpiece and comprising a sensor; and a controller communicatively coupled to the robot, the controller having a memory, the memory including a plurality of instructions that, when executed by the controller, cause the controller to: activating the robot to grip the workpiece; enabling a free-drive mode of operation of the robot to allow an operator to move the workpiece to a starting position proximate a center of the holding fixture; as well as responding to the operator input by executing a center position routine; Wherein, the center position routine includes: causing the robot to automatically move in a first direction until the sensor senses contact at a first contact location between the workpiece and a first surface of the holding fixture; causing the robot to automatically move in a second direction until the sensor senses contact at a second contact location between the workpiece and a second surface of the holding fixture; causing the robot to automatically move in a third direction until the sensor senses contact at a third contact position between the workpiece and a third surface of the holding fixture; and A three-dimensional center point of the holding jig representing the loading position of the workpiece is calculated using the first contact position, the second contact position, and the third contact position.

2. The system according to claim 1, wherein: The center position routine also includes: automatically moving the robot in a fourth direction until the sensor senses contact at a fourth contact position between the workpiece and a fourth surface of the holding fixture, and calculating the three-dimensional center point of the holding fixture using the first contact position, the second contact position, the third contact position, and the fourth contact position.

3. The system according to claim 2, wherein: The center position routine also includes: automatically moving the robot in a fifth direction until the sensor senses contact at a fifth contact position between the workpiece and a fifth surface of the holding fixture, and calculating the three-dimensional center point of the holding fixture using the first contact position, the second contact position, the third contact position, the fourth contact position, and the fifth contact position.

4. The system according to claim 1, wherein: The sensor is a force sensor coupled to an arm of the robot.

5. The system according to claim 1, wherein: The plurality of instructions, when executed by the controller, further cause the controller to cause the robot to move the workpiece to an in-machine location.

6. The system according to claim 1, wherein: The plurality of instructions, when executed by the controller, further cause the controller to present an interface on a display of the controller that allows the operator to select an allowed axis of movement when the robot is moving in a free drive mode.

7. The system according to claim 6, wherein: The interface also allows the operator to select which axis, if any, rotation is allowed about when the robot is moving in free drive mode.

8. The system according to claim 1, wherein: The first surface is a first side surface of a first jaw of the holding fixture, the second surface is a second side surface of a second jaw of the holding fixture, and the third surface is a bottom surface of the holding fixture.

9. The system according to claim 1, wherein: The second direction is opposite to the first direction, and the third direction is perpendicular to the first direction and the second direction.

10. The system according to claim 1, wherein: The center position routine also includes automatically moving the robot to a center position between the first contact position and the second contact position.

11. The system according to claim 1, wherein: The plurality of instructions, when executed by the controller, further cause the controller to execute the center position routine twice to calculate the loading position and a second loading position, and the center position routine further includes calculating a final loading position by averaging the loading position and the second loading position.

12. The system of claim 1, wherein: The plurality of instructions, when executed by the controller, further cause the controller to perform a component removal routine after the workpiece has been formed into a finished component, the component removal routine causing the controller to: enabling the free drive mode of the robot to allow the operator to move the robot to a part pickup position; responding to the operator input by commanding the robot to grip the finished part and commanding the holding fixture to release the finished part; and The robot is moved to remove the finished part from the holding fixture.

13. The system according to claim 12, wherein: The part removal routine also causes the controller to move the robot to an in-machine location.

14. A method of determining a loading position of a workpiece relative to a holding fixture, the method comprising: activating the robot by a controller to grip the workpiece; enabling, by the controller, a free-drive mode of operation of the robot to allow an operator to move the workpiece to a starting position proximate a center of the holding fixture; causing the robot to automatically move in a first direction by the controller until a sensor coupled to the robot senses contact at a first contact location between the workpiece and a first surface of the holding fixture; causing, by the controller, the robot to automatically move in a second direction until the sensor senses contact at a second contact position between the workpiece and a second surface of the holding fixture; causing the robot to automatically move in a third direction by the controller until the sensor senses contact at a third contact position between the workpiece and a third surface of the holding fixture; as well as A three-dimensional center point of the holding jig representing the loading position of the workpiece is calculated by the controller using the first contact position, the second contact position, and the third contact position.

15. The method according to claim 14, further comprising: The robot is caused to move automatically in a fourth direction until the sensor senses contact at a fourth contact position between the workpiece and a fourth surface of the holding fixture, and calculating the three-dimensional center point of the holding fixture includes using the first contact position, the second contact position, the third contact position and the fourth contact position.

16. The method according to claim 15, further comprising: The robot is caused to move automatically in a fifth direction until the sensor senses contact at a fifth contact position between the workpiece and the fifth surface of the holding fixture, and calculating the three-dimensional center point of the holding fixture includes using the first contact position, the second contact position, the third contact position, the fourth contact position and the fifth contact position.

17. The method according to claim 14, wherein: The sensor is a force sensor coupled to the end of the robot's arm.

18. The method of claim 14, further comprising presenting, by the controller, an interface on a display of the controller, the interface allowing the operator to select an allowed axis of movement when the robot is moving in free drive mode.

19. The method according to claim 14, wherein: The first surface is a first side surface of a first jaw of the holding fixture, the second surface is a second side surface of a second jaw of the holding fixture, and the third surface is a bottom surface of the holding fixture.

20. The method according to claim 14, wherein: The second direction is opposite to the first direction, and the third direction is perpendicular to the first direction and the second direction.

21. The method of claim 14, further comprising storing the calculated loading position in a job file and retrieving and executing the job file to load additional workpieces in the holding fixture without repeating the enabling, creating, and calculating steps.

22. A non-transitory computer readable medium storing instructions that, when executed by a controller, cause the controller to: Activate the robot to grip the workpiece; enabling a free-drive mode of operation of the robot to allow an operator to move the workpiece to a starting position proximate a center of a holding fixture; causing the robot to automatically move in a first direction until a sensor coupled to the robot senses contact at a first contact location between the workpiece and a first surface of the holding fixture; causing the robot to automatically move in a second direction until the sensor senses contact at a second contact location between the workpiece and a second surface of the holding fixture; causing the robot to automatically move in a third direction until the sensor senses contact at a third contact position between the workpiece and a third surface of the holding fixture; as well as A three-dimensional center point of the holding jig indicating a loading position of the workpiece is calculated using the first contact position, the second contact position, and the third contact position.

23. The non-transitory computer readable medium of claim 22, wherein: The instructions also cause the controller to cause the robot to move automatically in a fourth direction until the sensor senses contact at a fourth contact position between the workpiece and a fourth surface of the holding fixture, and calculate the three-dimensional center point of the holding fixture using the first contact position, the second contact position, the third contact position, and the fourth contact position.

24. The non-transitory computer readable medium of claim 23, wherein: The instructions also cause the controller to cause the robot to move automatically in a fifth direction until the sensor senses contact at a fifth contact position between the workpiece and the fifth surface of the holding fixture, and calculate the three-dimensional center point of the holding fixture using the first contact position, the second contact position, the third contact position, the fourth contact position, and the fifth contact position.