Patent Description:
A robotic bending cell may comprise a robot which may or may not travel along a rail, a press brake, an input station, such as an in-pallet, a conveyor belt or the like, from which a robot grips a sheet, such as a metal sheet to be bent, and an output station such as an out-pallet, a conveyor belt, a sack, a collecting vessel or the like, where the robot places the processed sheets. During the bending process the robot places the sheet to be bent in designated positions and orientations on the lower beam of a press brake for bending. A robotic bending cell typically comprises an orientation table that may be used at the beginning of processing a sheet for determining the exact location and orientation of the sheet in space. However, in some configurations, no orientation table may be present, and the robot may grip the sheet directly from the in-pallet or the conveyor belt, and move it to the press brake or to a regripping station. In other configurations, the orientation table may also be the input station. A robotic bending cell may also comprise a regripping station intended for placing a sheet such that the robot can grip it in a different location or angle for further bending.

Planning the processing of a particular design requires determining the gripping positions on the sheet and the trajectories of the robot, such that the robot can repeatedly grip a sheet, have it bent along the required lines by the press brake and output it.

The locations of the various components of the robotic cell are known. However, these locations are generally known to an insufficiently accurate level, and exact calibration may still need to be performed before starting to process sheets. Further calibration may also be required when any of the components is intentionally or unintentionally moved.

Calibrating a cell, i.e., measuring the exact positions in 3D space of all relevant surfaces, is a tedious job that requires high expertise and precision and may take a long time. Thus, this process may incur high costs that include the expert fees as well as the downtime of the machine. <CIT> discloses a vision system with automatic calibration.

The present disclosed subject matter will be understood and appreciated more fully from the following detailed description taken in conjunction with the drawings in which corresponding or like numerals or characters indicate corresponding or like components. Unless indicated otherwise, the drawings provide exemplary embodiments or aspects of the disclosure and do not limit the scope of the disclosure. In the drawings:.

One technical problem related to the disclosure is a need to calibrate a robotic cell in a fast and inexpensive manner, which does not require special expertise.

A robotic bending cell may comprise a robot which may or may not travel along a rail, a press brake, an input station, such as an in-pallet, a conveyor belt or the like, from which a robot grips a sheet, such as a metal sheet to be bent, and an output station such as an out-pallet, a conveyor belt, a sack, a collecting vessel or the like, where the robot places the processed sheets. During the bending process the robot places the sheet to be bent in designated positions and orientations on the lower beam of a press brake for bending. A robotic bending cell typically comprises an orientation table that may be used at the beginning of processing a sheet for determining the exact location and orientation of the sheet in space. However, in some configurations, no orientation table may be present, and the robot may grip the sheet directly from the in-pallet or the conveyor belt, and move it to the press brake or to a regripping station. In other configurations, the input station may also be the orientation table. A robotic bending cell may also comprise a regripping station intended for placing a sheet such that the robot can grip it in a different location or angle for further bending.

The robotic cell may also comprise a controller for receiving the current location and position of the robot, and for controlling the robot movement towards a target location or along a designed trajectory.

A robotic cell may comprise or be in communication with a pendant, also referred to as a robot teach pendant. A pendant is a handheld control and programming unit. A pendant may be used for manually sending the robot to a desired position or orientation, changing the speed or the like. A pendant may also be used for reading and displaying the robot position. A pendant may also be used for loading and running externally generated programs for the robot. A pendant may also comprise an emergency stop button.

A trajectory of the robot between two components, with or without a gripped sheet, may be learned, or planned by a processing unit such as a processor. The processing unit may be associated with the robotic cell or external thereto.

Planning the processing of a particular design comprises determining the relative locations of the components of the robotic cell, wherein each such location may be described as the location of a particular point of the component, such as the bottom corner of the orientation table, and the orientation of a particular surface of the component. Planning further comprises determining one or more trajectories the robot needs to travel, or position and orientation changes required for performing different bends, such that the robot can repeatedly grip a sheet and have it bent along the correct lines by the press brake.

Given the positions of the components of the robotic cell, it is still required to accurately calibrate the robotic cell. Further calibration may also be required when any of the components is intentionally or unintentionally moved.

Currently, such calibration may be a long and costly job, thus there is a need to provide an accurate as well as easy, fast and inexpensive manner for calibrating a robotic cell.

One technical solution comprises a calibration block having a planar member or area, and optionally one or more members or areas that enable placement on a press brake or another component of the robotic cell. The planar area may have at least one corner, such as a right angled corner. The planar area may comprise three designated positions marked by elements such as bores, etching or other graphic or physical method, the locations of which form a triangle. In some embodiments, the triangle may be a right-angled triangle. The element marking the right angle may be the closest to a corner of the calibration block. During the calibration process, the locations of the elements are determined by touching or otherwise interacting with, by a location pointer, also referred to as calibration pointer, calibration tool or the like. In further embodiments, other technologies may be used for indicating the locations, such as laser pointing, obtaining the location from an image taken by a camera, or the like.

The locations of the three marking elements relative to a fixed point of the calibration block, such as a corner thereof, as well as the parameters of the location pointer, e.g., length and tip radius, may be provided using the UI to the computing device, for executing the calculation module.

The solution further comprises executing by a computing device a module for calculating the position and orientation of a specific surface of a component of the robotic cell on which the calibration block is positioned, based on the locations of the elements. The solution may further comprise a user interface (UI), such as a Graphic User Interface (GUI) for entering parameters and measurements related to the calibration process.

In order to calibrate the cell, the calibration pointer needs to be mounted on the robotic arm, and the calibration block may then be placed in specific locations on the components of the robotic cell that need to be calibrated.

For example, the calibration block may be placed on the orientation table. The locations of the three marking elements may be taken as follows: the robotic arm with the mounted calibration pointer is moved using the teaching pendant to each of the three marking elements in a predefined order. The position that is displayed on the teaching pendant at each position, is provided to the system using the UI. From these locations, the position and orientation of the surface of the orientation table on which the calibration block is placed, in a specific coordinate system, for example a coordinate system of the robot, may be obtained.

A calibration block, which may be the same as the calibration block used for calibrating the orientation tale or a different one, may then be placed in a predetermined location and orientation on another member of the robotic cell, for example the press brake. The locations of the three marking elements may be taken using the calibration pointer, as described above. From the measurements, the absolute position and orientation of the press brake, in the same coordinate system of the robot may be obtained. A transition between the fixed points and orientations of the orientation table and the press brake (or any other two components of the robotic cell) can be obtained by applying transition and rotation transformations in the three-dimensional space.

One technical effect of the disclosure comprises the fast and efficient process for obtaining the actual position and orientation of the various components of the robotic cell. The process does not require special expertise and can take, for example, under one day or even under one hour, in contrast to prior art methods which may take laborious weeks or more of experts.

Additionally or alternatively, trajectories used by the robot for moving a sheet from one component of the cell to another may be automatically, semi-automatically or manually calculated or updated in accordance as the accurate positions and orientations of the cell components become available.

The required calibration block is simple and inexpensive to manufacture, and may be used for multiple calibrations of the robotic cell, for processing items of one or more types.

Although the disclosure focuses on bending robotic cells, it will be appreciated that it is merely an example, and the disclosure can be applied to any robot-based production environment, such as but not limited to milling, welding, painting, cutting, tapping, forming, stacking, or the like.

Referring now to <FIG>, showing an illustration of a calibration block, in accordance with some embodiments of the disclosure.

The calibration block, generally referenced <NUM> may comprise a planar area <NUM>, which may or may not be rectangular. The calibration block may comprise one or more gripping areas <NUM> and/or <NUM>. Gripping areas <NUM> and <NUM> may be used for attaching the calibration block to the clamping system of the press brake. Thus, each of gripping areas <NUM> and <NUM>, and possibly additional gripping areas, can be adjusted to a clamping system of a different standard.

The calibration block may comprise at least one edge <NUM> connecting corners <NUM> of a right angle of plane <NUM> and corner <NUM> of an opposite plane of gripping area <NUM> and/or <NUM>. One point of the calibration block, for example corner <NUM> may be selected as a reference point of the block. Edge <NUM> represents the height of the calibration block <NUM> at corner <NUM>. Corner <NUM> can serve as a reference point in a method for calibrating a robotic cell, as will be further elaborated herein below.

In general, a calibration block may comprise three marking elements, also referred to as elements, defining the corners of a triangle, for example a right-angled triangle, such that the element located on the right angle (or another predetermined angle) is the nearest of the elements to the reference point of the calibration block. The three elements are used to determine the surface of the plane of the component of the robotic cell on which the calibration block is placed, with respect to a predefined coordinate system. The elements may be implemented as bores, etching or other graphic, volumetric, or physical method. The bores may have the same structure and dimensions, e.g., a round opening having the same radius and the same depth.

It will be appreciated that a calibration block in accordance with the disclosure may comprise more than three elements, such that the elements form multiple triangles. In particular, two or more right angled triangles may be formed by different element triplets, with reference to the same reference point or to different reference points of the block. Thus, if corner <NUM> is selected as the reference corner, elements <NUM>,<NUM> and <NUM> define the corners of a right angled triangle as explained above, and may be used for the calibration process. If, in another example, corner <NUM> is selected as the reference corner, elements <NUM>, <NUM> and <NUM> define the corners of a right-angled triangle. Such plurality of options for triangles may provide for more convenient access to the elements when calibrating various components of one or more robotic cells.

The relative positions of these elements to the reference point of the calibration block, and the relative position of this corner to the reference point of the component, may be used to determine the location of this point in 3D space.

The calibration block may be made of sturdy material such as metal and therefore relatively heavy. However, to allow for better accuracy in the calculation of resulting measurement, the distances between the marking elements should be as large as possible, thus implying that the board should be made as large as possible. However, the board still needs to be supportable by the relevant component, which may limit its size.

The calibration block may be made of milled metal, which may ensure that the block with the marking elements and the gripping areas is manufactured accurately as designed.

Referring now to <FIG>, showing an illustration of a calibration pointer, in accordance with some embodiments of the disclosure. The calibration pointer may be mounted on the robot arm, and the robot arm may be moved to the marking elements of the calibration board when the calibration board is mounted on various components of the robotic cell. The locations of the marking elements may then be displayed on the teaching pendant. The position and the orientation of a surface of each such component may then be determined.

It will be appreciated that the calibration pointer needs to correspond to the marking elements. For example, when using bores as marking elements the calibration pointer needs to be easily insertable in a perpendicular position into any of the bores, but should not have significant movement freedom therein.

The calibration pointer, generally referenced <NUM> is designed to be mounted on a robot arm, and thus comprises an attachment base flange <NUM> configured for attachment to the robot arm, for example by being inserted and/or screwed into a corresponding sink or receiving bores of the robot arm. The pointer may further comprise a tang <NUM> extending from the base flange <NUM> in the direction of the robot, a body comprised of cylinders <NUM> and <NUM> extending from the base flange <NUM> in direction opposite to the robot, and an elongated bit <NUM> extending from the body <NUM>, and ending with a tip <NUM>, which may be substantially ball-shaped and of larger diameter than extension <NUM>.

It will be appreciated, however, that any other calibration pointer can be used as long as it can distinctly indicate a location on the calibration block. In some embodiments, a specific point of the robot or any of the tools used by the robot may be used as a calibration tool, rather than a dedicated tool. In further embodiments, the location may be obtained without touching the locations, for example by a pointing device such as a laser pointer, by analyzing an image, or the like.

Referring now to <FIG>, showing a calibration block <NUM> in which the elements, <NUM>, <NUM>, <NUM> and <NUM> are implemented as etched crosses, such that the location of each element is the center of the cross. The elements are arranged such that their locations create one or more right-angled triangles. Calibration block <NUM> may be flat and comprise no gripping elements. This embodiment may be particularly suitable for calibrating a regripping station.

Referring now to <FIG> and <FIG>, showing two schematic views of a robotic cell, in which the calibration block and method may be used, in accordance with some exemplary embodiments of the disclosure. <FIG> shows view of a robotic cell utilizing a rail to further the reach of the robot, while <FIG> shows a view of another robotic cell which does not utilize such a rail.

A typical robotic cell, generally referenced <NUM>, may comprise an orientation table <NUM>. Orientation table <NUM> may comprise a planar area inclined in two planes, such that one corner <NUM> thereof is lower than all others, or another member for sliding a sheet placed on orientation table <NUM>, such as a ball-bearings or polymer strips. More specifically, orientation table <NUM> is angled relative to both a plane parallel to the ground supporting the robotic cell <NUM>, and to a plane perpendicular to ground. The lower edges of the planar area may be bounded by boundaries <NUM> and <NUM>. This structure enables the accurate and firm placing on orientation table <NUM> of a sheet to be processed, and also of the calibration block during calibration of robotic cell <NUM>.

Robotic cell <NUM> may comprise a robot <NUM>. Robotic cell <NUM> may or may not comprise rail <NUM> upon which robot <NUM> may move. Robot <NUM> may have attached thereto gripper <NUM> which may comprise vacuum cups, mechanical clamping lips, magnetic bodies or another attachment mechanism for gripping a sheet. Robot <NUM> may comprise multiple links, wherein two adjacent links may be connected by a joint. The joints may have <NUM> degrees of freedom: three degrees of freedom describing its x-y-z position in the three-dimensional space, and three degrees describing its orientation, described for example as yaw, roll and pitch.

Robotic cell <NUM> may comprise a press brake <NUM>, comprising a lower beam <NUM> and upper beam <NUM>. The processed sheet may be placed by robot <NUM> on lower beam <NUM>, and is bent after upper beam <NUM> descends toward it and is pressed there-against.

Robotic cell <NUM> may comprise an in-pallet <NUM> from which robot <NUM> may take a sheet to be processed, and may place it on orientation table <NUM>. However, in other configurations or other robotic cells, the orientation table and the in-pallet may be implemented as one component.

Robotic cell <NUM> may comprise an out-pallet <NUM> on which robot <NUM> may place the sheet after having gone through all required bending actions.

Robotic cell <NUM> may comprise a regripping station <NUM>. The processed sheet may be attached by robot <NUM> to regripping station <NUM>, such that robot <NUM> may grip it in a different manner, for example in a different area or from a different direction, to enable further bending thereof or outputting it to the out-pallet <NUM>. Regripping station <NUM> may have a regripping area defined by its width w <NUM> and depth h <NUM>.

Robot <NUM> having gripper <NUM> at its tip may be programmed to move with or without a sheet gripped by gripper <NUM> between the various components of robotic cell <NUM>.

For example, robot <NUM> may be programmed such that gripper <NUM> grips a sheet from in-pallet <NUM>, and places it on orientation table <NUM>. Due to the inclination of orientation table <NUM>, the sheet can slide downward until its lowest corner is at corner <NUM> and the sheet is accurately positioned. Robot <NUM> may then carry the sheet to press brake <NUM> and place it on lower beam <NUM>. Robot <NUM> may need to place the sheet on regripping station <NUM> before it can be placed on lower beam <NUM>. Once the sheet is bent, robot <NUM> may do any of the following: change the position of the processed sheet on lower beam <NUM>; change the gripping position of gripper <NUM> on the processed sheet; carry the sheet to regripping station <NUM> and then grip it again and carry it back to lower beam <NUM> or to out-pallet <NUM>; replace the gripper using a "gripper changing" station, replace tools on the machine using a "tool changing" station, or others.

Referring now to <FIG>, showing a flowchart of steps in a method to be performed by a user for calibrating a robotic cell, in accordance with some embodiments of the disclosure.

On step <NUM>, a user may define the calibration block <NUM>, e.g. associate a block name or another identifier with its parameters. The user may enter the parameters of the calibration block, including the X and Y locations of the three elements <NUM>, <NUM> and <NUM> relative to a reference point, such as reference point <NUM> of board <NUM>, and height <NUM> of the block at reference point <NUM>.

The user may also enter the elements parameters, such as the diameter and depth of bores.

On step <NUM>, the user may define the calibration pointer <NUM>, i.e. associate a pointer name or another identifier with its parameters. The user may enter the parameters of the calibration pointer, including its length L, measured for example from the end of base <NUM>, at the border with attachment portion <NUM>, to the center of tip <NUM>, and the tip's diameter d.

It will be appreciated that multiple calibration blocks and corresponding calibration pointers, associated with various sets of parameters, may be defined.

On step <NUM>, the various components of the robotic cell may be calibrated. Calibration of each component may be performed using one of the defined calibration blocks <NUM>, wherein different blocks <NUM> may be used for calibrating different components of the same robotic cell <NUM>.

Steps <NUM> detailed below describe the general calibration process of each of the robotic cell components.

Thus, calibrating each component may comprise step <NUM> of selecting from a user interface the calibration block <NUM> and calibration pointer <NUM> to be used for calibrating the specific component. The calibration block and calibration pointer may be selected using a drop-down list of a graphic user interface, the list containing the blocks <NUM> and pointers <NUM> defined in the system.

Calibration of a component may further comprise step <NUM> of placing the block <NUM> at a predetermined position on the component, and step <NUM> for entering the distance from the block's reference point, such as corner <NUM>, to the component reference point into the system via the UI.

Calibration of a component may further comprise step <NUM> of determining the locations of the marking elements of the calibration block <NUM> when the block <NUM> is positioned on the component. Determining may be performed using a pendant receiving readings from robot <NUM>. The coordinates of the marking elements should be provided in the same order as when the calibration block was defined, such that each marking elements is associated with the corresponding coordinates.

Calibration of a component may further comprise step <NUM> of testing the component calibration. Testing may comprise planning and executing one or more tests, wherein the desired result of any test, is that robot <NUM> gets to the target location or locations.

A possible test is a program-to-point test in which it is tested whether the robot can reach an arbitrary point. Thus, the user can enter specific coordinates or graphically select a point from an image of the component using a pointing device, and a direction of robot <NUM>. A test program can then be generated for robot <NUM> to get to that point. The system can then run the program and check whether robot <NUM> indeed arrived at the correct location and at the correct direction. This test, which may be performed without the calibration block, checks whether the calibration has indeed placed the component in a correct place in the coordinate system.

It will be appreciated that steps <NUM>, <NUM>, <NUM>, <NUM> and <NUM> detailed above are performed for calibrating each required component of the robotic cell, as detailed below. However, for some components some of the steps may be omitted.

On step <NUM>, the orientation table <NUM> may be calibrated. Calibration may comprise selecting (<NUM>) calibration block <NUM> and pointer <NUM>, placing (<NUM>) calibration block <NUM> on table <NUM>, with reference point <NUM> at corner <NUM> of the orientation table <NUM>, such that the block <NUM> is stably and repeatably located on the orientation table <NUM>. In some embodiments, it may be recommended to use a dedicated block <NUM> for calibrating orientation table <NUM>. The distance of the block reference point from the component reference point may be determined (<NUM>) as height <NUM> of the block. The positions of the marking elements may then be determined (<NUM>) using calibration pointer <NUM> mounted on robot <NUM> and reading the coordinates from the pendant, and the calibration of orientation table <NUM> may be tested (<NUM>).

On step <NUM>, the press brake <NUM> may be calibrated. Calibration may comprise selecting (<NUM>) calibration block <NUM> and pointer <NUM>, placing (<NUM>) calibration block <NUM> on lower beam <NUM> of press brake <NUM>. The distances of block reference point <NUM> from the top of the machines clamping system and the machine's center may be determined (<NUM>). The positions of the marking elements may then be measured (<NUM>) using the calibration pointer <NUM> mounted on robot <NUM> and the pendant, and calibration of the press brake <NUM> may be tested (<NUM>).

On step <NUM>, the regripping station <NUM> may be calibrated. Calibration may comprise selecting (<NUM>) calibration block <NUM> and pointer <NUM>. In some embodiments, it may be recommended to use a dedicated block <NUM> for calibrating regripping station <NUM>, wherein block <NUM> may be large enough to be placed securely on regripping station <NUM>. Generally, the calibration block should be as large as possible, wherein the size and positioning on the regripping station may be determined mostly by the size and geometry of the station, including the type of the attachment mechanism.

The calibration block may be placed (<NUM>) on regripping station <NUM>. The distances of the block reference point <NUM> from the center of the regripping area of regripping station <NUM> may be determined (<NUM>). The positions of the marking elements may then be measured (<NUM>) using the calibration pointer <NUM> mounted on robot <NUM> and the pendant.

On step <NUM> the in-pallet <NUM> may be calibrated and on step <NUM> the out-pallet <NUM> may be calibrated, however, steps <NUM> and <NUM> may be omitted in some situations. When required, calibration of the in-pallet <NUM> and the out-pallet <NUM> may comprise selecting (<NUM>) the calibration block <NUM> and pointer <NUM>, placing (<NUM>) calibration block <NUM> on the respective pallet, determining (<NUM>) the distance of block reference point <NUM> from a reference point of the pallet, and measuring (<NUM>) the positions of the marking elements using calibration pointer <NUM> mounted on robot <NUM>.

Additional cell components, such as a gripper replacement station, may be calibrated in a similar manner.

The steps above indicate actions performed by a user calibrating the robotic cell <NUM>.

Reference is now made to <FIG>, showing a flowchart of steps for calibrating a robotic cell <NUM>, in some embodiments of the disclosure.

On step <NUM>, the parameters of one or more calibration blocks <NUM> may be received and stored, including the locations of the three marking elements relative to a reference point, and the radius and depth of the marking elements.

On step <NUM>, the parameters of one or more calibration pointers <NUM> may be received and stored, such as the length and radius.

Calibration process <NUM> may be performed during the calibration of each component of the robotic cell <NUM> that is being calibrated.

On step <NUM>, a calibration block <NUM> may be selected, and the location of the reference point of calibration block <NUM> relative to a reference point of the component may be received from a user via the UI.

On step <NUM>, the coordinates of three marking elements of the block may be received. The coordinates may be received directly from a pendant, e.g. through a communication channel connecting the robot controller and a processor executing the calibration, as detailed in association with <FIG> below, or by the user using a user interface for entering the coordinates as displayed by the pendant.

On step <NUM>, the position of the reference point of the component, and orientation of the referenced surface of the component may be determined using the calibration block and pointer parameters, the measured locations of the three marking elements, and the position of the reference point of calibration block <NUM> relative to the position of the component. It will be appreciated that determining the orientation of the reference surface of the component is enabled also by knowing the relative orientation of this surface, and the planar area comprising the marking elements of the calibration block. For example, when calibrating the orientation table, calibration block <NUM> is parallel to the orientation table; when calibrating press brake <NUM>, calibration block <NUM> may be parallel to the top surface of lower beam <NUM>, etc. The position and orientation of the component may be determined using standard three-dimensional geometric calculation, such as translation and rotation.

On step <NUM>, coordinates of a point, and a direction from which the robot <NUM> has to reach the point may be received from a user through a user interface, and a test program may be generated and stored. The test may be a program-to-point test. The test may be performed by using the robot to run the generated program.

On step <NUM>, after the user has run the test, the test results, including the position and direction of robot <NUM> may be received and analyzed, for example whether robot <NUM> has reached the surrounding of the intended point and at what accuracy.

It will be appreciated that defining and checking the results of the test may involve additional parameters, such as direction, velocity, acceleration, or the like.

Reference is now made to <FIG>, showing a block diagram of a system for calibrating a robotic cell <NUM>, in some embodiments of the disclosure.

The system may comprise one or more computing platform <NUM>. In some embodiments, Computing platform <NUM> may be a server, a desktop computer, a laptop computer, or the like. Additionally, or alternatively, computing platform <NUM> may be a part of a controller or a processor of robotic cell <NUM>, such that the components detailed below are implemented as part of the controller or processor.

Computing platform <NUM> may communicate with other computing platforms via any communication channel, such as a Wide Area Network, a Local Area Network, intranet, Internet, transfer of memory storage device, or the like.

Computing platform <NUM> may comprise a processor <NUM> which may be one or more Central Processing Units (CPU), a microprocessor, an electronic circuit, an Integrated Circuit (IC) or the like. Processor <NUM> may be configured to provide the required functionality, for example by loading to memory and activating the modules stored on storage device <NUM> detailed below.

It will be appreciated that computing platform <NUM> may be implemented as one or more computing platforms which may be operatively connected to each other. It will also be appreciated that processor <NUM> may be implemented as one or more processors, whether located on the same platform or not.

Computing platform <NUM> may comprise Input/Output (I/O) device <NUM> such as a display, a speakerphone, a headset, a pointing device, a keyboard, a touch screen, or the like. I/O device <NUM> may be utilized to receive input from and provide output to a user, for example receive or display marking elements coordinates or other measures.

Computing Platform <NUM> may comprise a storage device <NUM>, such as a hard disk drive, a Flash disk, a Random Access Memory (RAM), a memory chip, or the like. In some exemplary embodiments, storage device <NUM> may retain program code operative to cause processor <NUM> to perform acts associated with any of the modules listed below, or steps of the methods of <FIG> above. The program code may comprise one or more executable units, such as functions, libraries, standalone programs or the like, adapted to execute instructions as detailed below.

Storage device <NUM> may comprise user interface (UI) <NUM>, for example a graphic user interface (GUI) for receiving from the user definitions, values or measurements, such as calibration block identifier, marking elements locations, calibration pointer definitions, or the like. UI <NUM> may also be used for displaying to a user data or information, such as positions and orientations of a component, whether a test has passed or failed, or the like.

Storage device <NUM> may comprise component position and orientation determining module <NUM>, for determining the position and orientation of a component of robotic cell <NUM>, based on the calibration block marking elements distances from the block reference point, the reported locations of the marking elements, and the position of the block reference point relative to the component reference point.

Storage device <NUM> may comprise test generation module <NUM> for generating a program-to-point test, in which robot <NUM> has to arrive to a given point and in a given attitude.

Storage device <NUM> may comprise test results analysis module <NUM>, for receiving test results, e.g., the actual points to which robot <NUM> has arrived at when it was supposed to arrive at a destination point, and determining whether the test has passed or failed.

It will be appreciated that the module description above is exemplary only, that the modules may be arranged differently, and that the division of tasks between the modules may be different.

Claim 1:
A system comprising:
a calibration block (<NUM>, <NUM>) having a planar area, the planar area comprising at least three marking elements (<NUM>, <NUM>, <NUM>), located at three corners of at least one triangle; and
a computing platform (<NUM>) comprising a processor (<NUM>) used for calibrating a robot-based production environment (<NUM>) comprising at least a first component,
wherein the processor (<NUM>) is adapted to:
receive (<NUM>) parameters of the calibration block (<NUM>, <NUM>), being locations of the marking elements (<NUM>, <NUM>, <NUM>) relative to a reference point (<NUM>) of the calibration block;
receive (<NUM>) a position of the calibration block reference point (<NUM>) relative to a component reference point (<NUM>) of a first component of the robot-based production environment on which the calibration block (<NUM>, <NUM>) is placed at a predetermined position;
receive (<NUM>) a set of locations of the at least three marking elements of the calibration block taken when the calibration block (<NUM>, <NUM>) is positioned on the first component, the set of locations taken by a calibration tool (<NUM>) being placed on the at least three marking elements (<NUM>, <NUM>, <NUM>) in a predefined order and in a coordinate system of the robot-based production environment (<NUM>); and
based on the parameters, the position and the set of locations, determine (<NUM>) a position and orientation of the first component in a coordinate system of the robot-based production environment.