EP4690113A1 - Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung - Google Patents

Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung

Info

Publication number
EP4690113A1
EP4690113A1 EP24712464.7A EP24712464A EP4690113A1 EP 4690113 A1 EP4690113 A1 EP 4690113A1 EP 24712464 A EP24712464 A EP 24712464A EP 4690113 A1 EP4690113 A1 EP 4690113A1
Authority
EP
European Patent Office
Prior art keywords
camera
code arrangement
straight line
grid
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP24712464.7A
Other languages
English (en)
French (fr)
Inventor
Joachim Frangen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of EP4690113A1 publication Critical patent/EP4690113A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/80Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30204Marker
    • G06T2207/30208Marker matrix
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose

Definitions

  • the invention relates to a method for determining at least one degree of freedom of a camera relative to a code arrangement in the camera image of the camera according to claim 1.
  • the invention also relates to a computer program, a machine-readable storage medium with the computer program and an electronic control unit or an automation arrangement with the electronic control unit.
  • sensors such as displacement sensors, coded positions that are read out, etc. All existing sensors have specific advantages for the respective application, which can be based on accuracy, simplicity, cost-effective integration, robustness or other properties.
  • Disclosure of the invention A method for determining at least one degree of freedom of a camera relative to a code arrangement from a camera image of the camera with the features of claim 1, an electronic control unit or an automation arrangement with the electronic control unit, a computer program and a machine-readable storage medium with the features of the independent claims are proposed. Preferred or advantageous embodiments of the invention emerge from the subclaims, the following description and the attached figures.
  • the method according to the invention serves to determine at least one degree of freedom of a camera relative to a code arrangement from a camera image of the camera. The method is based on the method of the publication DE 102016216221 A1 and/or the application of the publication DE 102016216196 A1, the disclosure of which is integrated into the present disclosure via referencing.
  • the camera comprises in particular an optical sensor unit (also referred to as an imaging sensor element, camera chip or image sensor) for recording the camera image and an imaging optic.
  • the camera is designed as a color camera or as a black and white camera.
  • the optical sensor unit is designed to provide a single camera image of a section of the code arrangement and/or a sequence of camera images, for example in the form of a video.
  • the camera has an image sensor as the optical sensor unit.
  • the camera can have a lens R.405034 - 3 - include, wherein the lens is preferably designed as a wide-angle lens.
  • the camera implements an escape perspective and/or a central perspective.
  • optical axis 5 The imaging optics is ideally a rotationally symmetrical optical system, wherein the axis of symmetry is the optical axis. It is characterized by the fact that a light beam along the optical axis does not experience any deflection when passing through the optics.
  • image center 7 The intersection point of the optical axis 5 with the optical sensor unit 12 is referred to as the image center 7. This can, but does not necessarily have to, coincide with the geometric center of the optical sensor unit 12.
  • the camera image is designed in particular as a matrix, which has image points at the matrix points, such as 8-bit grayscale points or color points.
  • Definition of code arrangement The code arrangement can be imaged in particular by the camera, whereby the absolute position of a machine or a machine part can be measured in one to six degrees of freedom on the basis of the camera image.
  • the code arrangement is designed to be detected by the camera by non-contact reading, whereby a multi-dimensional actual position determination can be carried out by the non-contact detection by the camera.
  • the two-dimensional code arrangement can preferably be used in a production and/or testing system in which workpieces and/or testing and/or work equipment must be positioned.
  • the two-dimensional code arrangement comprises basic symbols, wherein the basic symbols are arranged on a surface and the basic symbols on the surface form a two-dimensional periodic grid, a dot grid.
  • the basic symbols are preferably geometric figures, such as circles, squares, triangles or lines.
  • the basic symbols are particularly preferably designed as circles.
  • the basic symbols are also referred to as dots. They preferably represent digits of a number system.
  • the two-dimensional code arrangement comprises at least two different basic symbols.
  • the two-dimensional periodic grid comprises empty spaces at grid locations and/or grid locations that are not occupied by basic symbols, as parcel symbols.
  • the basic symbols are arranged on the surface, wherein the surface can be a curved or non-curved surface.
  • the surface is the floor of a production and/or testing facility.
  • the base symbols are arranged in the area to form a two-dimensional grid, with the area centroids of the base symbols preferably forming grid points in the dot grid.
  • dot grid of the code arrangement The grid points are also referred to below as grid locations and/or grid locations.
  • the two-dimensional periodic dot grid forms a two-dimensional grid.
  • plot The area is preferably divided into similar, regularly arranged plots, with the plots having, for example, a square, rectangular, triangular or hexagonal basic shape.
  • each plot comprises n base symbols.
  • the plots comprise in particular an integer number of base symbols and in particular an even number of base symbols.
  • the plots comprise more than ten base symbols, in particular more than twenty base symbols and in particular more than forty base symbols.
  • the number of base symbols in a plot is preferably less than one hundred.
  • the base symbols R.405034 - 5 - The plots formed can be visually displayed in the code arrangement, such as by a border, or not visually displayed and only form a conceptual and/or logical unit. Definition of plot area: The plots have at least a first and a second plot area.
  • An X plot area comprises the first plot area and a Y plot area comprises the second plot area.
  • each plot area occupies a contiguous area or several distributed, non-contiguous sub-areas within the plot.
  • Each plot area comprises several basic symbols.
  • the X plot area and the Y plot area comprise the same number of basic symbols.
  • the at least two plot areas are arranged in the plot in such a way that they have a p-fold rotational symmetry in relation to the center of the plot as the pivot point, wherein the p-fold rotational symmetry is, for example, a two-fold, three-fold or four-fold rotational symmetry.
  • Definition of parcel symbol The parcels each have at least one parcel symbol, which represents a fixed reference point within each parcel.
  • the parcel symbol enables the reading and/or decoding of the basic symbols in a fixed order.
  • the parcel symbols are in particular arranged regularly and/or periodically in the two-dimensional periodic grid of the basic symbols.
  • the parcel symbols can be located on or next to the grid points.
  • the parcel symbols are in particular each arranged at the same position within a parcel, such as in the center of a parcel.
  • the parcel symbols are, for example, other graphic elements than the basic symbols, such as triangles, hexagons or lines.
  • the parcel symbols are represented by omitting one or more basic symbols in a parcel.
  • the parcel symbol forms the point of symmetry of the p-fold rotational symmetry of the parcel.
  • the reading direction and/or decoding order i.e.
  • the order in which the basic symbols must be read within the X-parcel area and/or within the Y-parcel area is specified.
  • Definition of coding In the X-parcel area, an X-coordinate value is encoded by the basic symbols and a Y-coordinate value is encoded in the Y-parcel area by the basic symbols.
  • the X-coordinate value and the Y-coordinate value are the coordinates of a basic symbol in the parcel, the coordinate being specified in a Cartesian coordinate system of the area spanned by the basic symbols.
  • the X-coordinate value and the Y-coordinate value can also specify a position within the area as coordinates in another coordinate system, such as an oblique coordinate system, in cylindrical coordinates or spherical coordinates.
  • the two-dimensional periodic grid is a rectangular grid, the plots also being rectangular.
  • the rectangular grids and the rectangular plots are square grids and/or square plots.
  • the distance between the base symbols along a length and width axis of the rectangular grid is the same.
  • the number of base symbols in the X and Y directions of the two-dimensional periodic grid is the same.
  • the X plot area and the Y plot area each consist of two spatially separated, rectangular partial areas within a plot, wherein the partial areas have a longitudinal extension.
  • the longitudinal extension of the partial areas of the X plot area is preferably perpendicular to the longitudinal extension of the partial areas of the Y plot area.
  • the area occupied by the X plot area can be converted into the area occupied by the Y plot area by a 90° rotation.
  • the periodic grid has a grid length and a grid width. The grid length extends in the X direction of a Cartesian coordinate system, the R.405034 - 7 - Grid width in the Y direction.
  • the coordinate system thus formed assigns a uniquely determined position vector (X, Y) to each point of the coding area.
  • a number of g consecutive basic symbols forms in particular an overall sequence.
  • the overall sequence is entered into the X-plot areas, in particular in several plots adjacent in the X direction.
  • the basic symbols are entered into the X-plot areas in particular according to their order in the overall sequence, preferably in ascending X direction of the plots, within each plot in a previously determined reading and/or decoding order.
  • the number g is sufficiently large so that the X-plot areas of all plots adjacent in the X direction can be completely filled.
  • g is greater than fifty, in particular greater than a thousand and especially greater than a million.
  • a section of t consecutive base symbols in the overall sequence forms a partial sequence.
  • each section of t consecutive base symbols of the overall sequence forms a partial sequence, the consecutive base symbols following one another in decoding and/or reading order.
  • the overall sequence is designed such that each partial sequence of t consecutive base symbols read forwards is only included once in the overall sequence and each partial sequence read backwards is not included in the overall sequence read forwards.
  • a partial sequence comprises at least five consecutive base symbols, in particular at least twenty consecutive base symbols and in particular at least thirty base symbols.
  • the partial sequence preferably comprises fewer than fifty base symbols and in particular fewer than thirty base symbols.
  • the base symbols are designed to encode digits to a number base b.
  • the number base b is preferably the base of a place value system.
  • the number base b 10 and forms the base of a decimal system, where the decimal system includes the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9.
  • the number base b 16, R.405034 - 8 - the base of a hexadecimal system, the hexadecimal system comprising the digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E and F.
  • the number base b can be selected arbitrarily, the digits of the number base comprising the elements 0, 1, ... b - 1.
  • the number base b is the base of an additive number system, such as the Roman numeral.
  • two different base symbols encode the digits 0 and 1 of the binary system.
  • the two different basic symbols are formed by two circles, a first circle with a radius R1 and a second circle with a radius R2.
  • the radius R1 is chosen to be smaller than the radius R2.
  • the ratio of radius R2 to radius R1 is greater than the square root of 2.
  • the radius R2 is chosen so that it is smaller than half the grid size of the code grid, so that two adjacent circles with R2 in the periodic grid do not touch each other.
  • the overall sequence is designed so that a checksum of a partial sequence is less than half the maximum possible checksum of a partial sequence.
  • the checksum for any partial sequence selected from the overall sequence is less than half the maximum possible checksum of a partial sequence.
  • the cross sum of each partial sequence with length t for a number system with base b is less than t ⁇ (b – 1)/2.
  • the two-dimensional code arrangement comprises an inverted overall sequence.
  • the inverted overall sequence preferably represents an inversion of the overall sequence.
  • the inverted overall sequence is preferably entered into the Y-plot areas of several plots adjacent in the Y direction.
  • the entry of the base symbols is carried out in particular according to their order in the R.405034 - 9 - inverted overall sequence preferably in ascending Y direction of the plots, within each plot in the previously determined reading and/or decoding order into the Y plot areas.
  • the number g is sufficiently large so that the Y plot areas of all plots adjacent in the Y direction can be completely filled.
  • the contents of the Y plot areas of plots adjacent in the X direction are identical.
  • the section particularly preferably comprises a reference point.
  • the reference point is, for example, the intersection point of the optical axis of the camera with the plane in which the code arrangement lies.
  • the method is preferably designed to determine the position of the camera in relation to the work area on the basis of the image recorded by the sensor unit, such as the X coordinate (rx) and the Y coordinate (ry) of the reference point in a coordinate system which is spanned by the work area and/or the basic symbols and/or the code arrangement.
  • the X coordinate (rx) and the Y coordinate (ry) of the reference point in a coordinate system which is spanned by the work area and/or the basic symbols and/or the code arrangement Firstly, within the scope of the method, only the rough position in the form of the coded X coordinate and the coded Y coordinate is determined as two degrees of freedom. The rough position alone results in a reliable and usable position for the rough positioning of the camera. By determining the X coordinate and the Y coordinate in the code arrangement as a rough position, the relative position of the camera in relation to the code arrangement can be deduced.
  • the position of the camera can be deduced by knowing the course of the optical axis of the camera.
  • a quasi-exact position of the camera is obtained by making the reference point equal to the coded position and the R.405034 - 10 - Angle of the optical axis to the code arrangement is known.
  • the simplest case is that the optical axis is aligned perpendicular to the code arrangement. Definition of degrees of freedom: In a particularly preferred embodiment of the invention, the method is designed to determine the position and/or the location of the work module with respect to the work area in up to six degrees of freedom.
  • the degrees of freedom are in particular: rx: location coordinate in the coordinate system of the code arrangement (as coarse position and/or fine position). ry: location coordinate in the coordinate system of the code arrangement (as coarse position and/or fine position).
  • rx and ry refer to the reference point, in particular the point at which the optical axis passes through the code arrangement.
  • rz distance from the reference point to the camera along the optical axis.
  • phiz Z-angle of rotation of the camera around the optical axis.
  • phix first pitch angle of the optical axis to the code arrangement, in particular with respect to the first main direction.
  • phiy second pitch angle of the optical axis to the code arrangement, in particular with respect to the second main direction.
  • the six degrees of freedom of the position and/or orientation of the camera in relation to the work area include the coordinates X and Y with respect to the Cartesian coordinate system spanned by the base symbols, in particular in a coordinate system (XC, YC) of the code arrangement in the plane of the code arrangement.
  • Definition of distance between the reference point and the optical center of the camera (rz) includes the distance Z or rz of the camera to the reference point along the optical axis, where the distance denotes, for example, the distance between the reference point and, for example, the optical center of the camera lens.
  • the coordinate system (X, Y, Z) of the camera has its origin in the optical center of the camera lens, with the negative Z direction coinciding with the optical axis of the camera.
  • Generalization While the coordinate systems with regard to the origin and orientation are specified as examples, equivalent coordinate systems can also be used.
  • Definition of the method In some variants, the method is characterized in that the X coordinate value and the Y coordinate value are decoded and/or determined on the basis of the camera image recorded by the camera. In a possible further development of the method, the orientation of the section with respect to three coordinate axes is determined on the basis of the section of the code arrangement recorded in the image.
  • the orientation of the section recorded in the image with respect to the X axis and the Y axis of the Cartesian coordinate system which is determined by the R.405034 - 12 - basic symbols.
  • the coordinates of the position of the reference point in the code arrangement are determined by decoding the section of the code arrangement contained in the image.
  • the position of the work module in relation to the work area is determined in the method in up to six degrees of freedom.
  • the position of the camera in the work area is determined in three Cartesian coordinates X, Y, Z, where X and Y are the coordinates of the coordinate system spanned by the basic symbols and Z is the distance of the work module from the work area.
  • the method determines, for example, the three Euler angles of the camera.
  • the two-dimensional code arrangement is used in areas outside of automation technology, for example for monitoring movement sequences in nature and the environment, biology and medicine, architecture, entertainment electronics and/or sensor technology.
  • the general advantages of the invention are, depending on the variant:
  • the method processes image data provided by an imaging measurement system, for example a camera.
  • a smartphone can also be used, for example, to capture images and determine the position using the method according to the invention, with the method being implemented as an algorithm in an application that is executed by the smartphone's embedded computer or in the cloud.
  • the camera detects a two-dimensional code arrangement that is connected to the object to be localized.
  • the method according to the invention offers the following properties depending on the variant: R.405034 - 13 - - Up to full 6D position information: Translation (X,Y,Z) and rotation ( ⁇ _X, ⁇ _Y, ⁇ _Z) - Absolute position information (not incremental), i.e.
  • a camera for example in a hand-held device, captures two objects in one image, each of which is equipped with a point code.
  • the proposed method allows the localization of both objects in relation to the common camera coordinate system.
  • the relative position of the two objects to each other can be determined by forming a vectorial difference.
  • the position of the camera is eliminated mathematically, i.e. the process is largely independent of the camera position.
  • a localization network e.g. in a production hall, to localize several stationary or moving objects relative to each other or relative to a hall coordinate system.
  • the code arrangement has a dot grid with a plurality of basic symbols, with a rough position of the basic symbols being encoded in the code arrangement.
  • the basic symbols define a first and an independent second main direction along the dot grid.
  • the two independent main directions in the camera image are aligned perpendicularly or at an oblique angle to each other.
  • a reference point is arranged in the camera image.
  • the reference point is formed as an intersection point of the optical axis with the image sensor and/or with the camera image.
  • the reference point is thus specified in the coordinate system of the camera and/or in the camera image by the camera.
  • the point grid in the camera image is particularly distorted in perspective, so that although the rows and columns of the point grid are each formed in a straight line, the rows and columns are not perpendicular to each other in the perspective distortion, but are arranged at an oblique angle to each other.
  • the following values are determined from the camera image in the reference point as characteristic values:
  • a rotation angle Phiz - also called the Z rotation angle - of the camera around the optical axis of the camera is determined.
  • at least one local grid dimension of the point grid in the camera image is determined.
  • the local grid dimension indicates the distance between two adjacent straight lines of the dot grid in the camera image.
  • the dot grid in the code arrangement is regular and/or formed with a regular grid dimension.
  • the grid dimension is distorted, so that the grid dimension changes across the camera image.
  • the local grid dimension at the reference point is understood to be the value of the grid dimension at the reference point.
  • at least a first and a second local angular divergence of the dot grid in the camera image is determined.
  • the straight lines in the dot grid in the code arrangement are arranged parallel to one another.
  • the dot grid is distorted, so that the straight lines each take on a difference angle not equal to 0 between two adjacent straight lines.
  • the local angular divergence of the dot grid in the camera image is the difference angle between two adjacent R.405034 - 16 - Straight lines of the dot grid at the reference point. This involves a first local angular divergence for the first main direction and a second local angular divergence for the second main direction.
  • the mentioned characteristic values describe - from a physical point of view - completely three degrees of freedom of the camera relative to the code arrangement, namely a distance rz between the code arrangement and the camera at the reference point and/or along the optical axis and two pitch angles phix and phy, which describe an intermediate angle of the optical axis and the plane of the code arrangement in the first and second main directions.
  • the mentioned characteristic values are therefore sufficient to determine the three degrees of freedom mentioned. It is one of the ideas behind the invention that the mentioned characteristic values can be determined in a simple manner from the camera image. In addition to a "manual" determination of the characteristic values in the camera image, it is also possible to derive them using digital image processing methods. Knowing the characteristic values allows conclusions to be drawn about the three degrees of freedom mentioned.
  • the mentioned characteristic values are used in an imaging model that describes the optical imaging of the code arrangement on the image sensor, taking into account the position and orientation of the camera relative to the code arrangement.
  • the model describes the physical and thus analytical relationship between the mentioned characteristic values as input values and the three mentioned degrees of freedom as output values. This relationship thus leads to the determination of the three degrees of freedom.
  • three equations are determined for the three degrees of freedom, which form a system of equations.
  • the equation for determining the first pitch angle phix is in particular a function of the first local angle divergence dalphac0, the distance rz between the code arrangement and the camera and the second pitch angle phiy.
  • the equation for determining the second pitch angle phiy is in particular a function of the second local angle divergence dalphac1, the distance rz between the code arrangement and the camera and the first pitch angle phix.
  • the second pitch angle is determined using the following equation:
  • the equation for the distance rz between the code array and the camera is in particular a function as follows: Alt.
  • the system of equations can be solved analytically.
  • the system of equations comprising the three equations, is solved iteratively. Initial values are initially specified and then the degrees of freedom are determined in iterative steps in an optimization routine.
  • a basic symbol matrix in particular a two-dimensional one, is determined from the camera image, with each grid point of the code arrangement being assigned an entry in the basic symbol matrix and with the center position of the basic symbols in the camera image being entered in the basic symbol matrix.
  • An entry in the basic symbol matrix thus refers to the position of the basic symbol in the assigned grid point, in particular in a coordinate system of the image sensor and/or in a coordinate system of the camera image.
  • the point grid in the camera image is in particular distorted in perspective, so that although the rows and columns of the point grid are each straight, the rows and columns are generally arranged at an oblique angle to one another in the perspective distortion.
  • optical distortion can occur, which can optionally be compensated by rectification.
  • a first straight line function is calculated in a coordinate system of the camera image for a first straight line with a first R.405034 - 19 - Function argument.
  • the first straight line is always parallel to the first main direction of the dot grid, regardless of the first function argument, if the first straight line is mentally transferred to the coordinate system of the code arrangement.
  • the first straight line is moved parallel in the second main direction in the coordinate system of the code arrangement.
  • the straight line can be placed on a row of the dot grid, for example, both in the coordinate system of the code arrangement and in the coordinate system of the camera image.
  • this can be implemented as follows: Initial situation: a) The centers of the basic symbols form a two-dimensional dot grid in the code plane with regularly arranged straight rows and columns b) The camera images the code plane on the image sensor with a distorted perspective.
  • the rows In the camera image, the rows generally appear as fanned-out lines that have a common vanishing point. The same applies to the columns.
  • the rows and columns in the camera image appear as curved lines.
  • b) Linear interpolation is used to adjust straight lines to the rows and number them according to their sequence using an integer index as a function argument. They form a first bundle of straight lines. The columns are treated in the same way, they form a second bundle of straight lines.
  • Each straight line is described by a straight line angle and an intercept value.
  • the straight line angles of a bundle form a sequence of numbers that is approximated by quadratic interpolation.
  • the integer straight line index serves as the function argument.
  • the polynomial has three interpolation parameters.
  • the intercept value is used in the same way. R.405034 - 20 - procedure, which results in three further interpolation parameters.
  • Each bundle of straight lines is thus described completely and compactly by six interpolation parameters.
  • d) By inserting rational function values into the interpolation function, straight lines that lie between two rows or columns can also be calculated.
  • a second straight line function is determined on the basis of the basic symbol matrix in a coordinate system of the camera image for a second straight line with a second function argument.
  • the second straight line is always parallel to the second main direction of the dot grid, regardless of the second function argument, when the second straight line is transferred to the coordinate system of the code arrangement.
  • the second straight line is shifted parallel in the first main direction in the coordinate system of the code arrangement.
  • the straight line can be placed on a row of the dot grid, for example, both in the coordinate system of the code arrangement and in the coordinate system of the camera image.
  • row and column are only used for naming purposes and do not mean a specific orientation of the dot grid.
  • the local angle divergence and/or the local grid dimension can be determined from the straight line functions.
  • the amount of data should be reduced on the way from the camera image to the at least one degree of freedom in order to enable a faster and/or more efficient calculation of the at least one degree of freedom. While the camera image, for example with an image size of 200 x 200 pixels, still has 40,000 values, the basic symbol matrix is already reduced to the position and accordingly has a section of the camera image, e.g. with an edge length of the dot grid R.405034 - 21 - of 15 basic symbols, only 225 values for the positions are recorded. By deriving the at least one linear function, the amount of data is reduced to the parameters of the linear function.
  • a further advantage of the implementation is that the rows and columns of the basic symbol matrix in the code arrangement are arranged parallel to one another and at regular intervals, so that the derivation of the linear function in the camera image also carries out a type of averaging over the basic symbol matrix, with the linear functions describing an averaged information of the basic symbol matrix.
  • the straight line functions compress the information while simultaneously improving the information content.
  • the method according to the invention thus allows a computationally efficient implementation of the method for determining at least one degree of freedom of the camera relative to the code arrangement from the camera image. From an application point of view, the determination can be carried out, for example, on a microcontroller, which can determine the at least one degree of freedom at least 100 times per second. In this way, it is possible to carry out real-time applications with the method, for example in production.
  • the first straight line function is determined on the basis of at least two rows, preferably more than two rows, in particular on the basis of all rows of the basic symbol matrix.
  • the second straight line function is determined on the basis of at least two columns, preferably more than two columns and in particular on the basis of all columns of the basic symbol matrix.
  • a first regression line is formed for each row along the first main directions.
  • the first straight line function is formed on the basis of a plurality of the first regression lines. Because a first regression line is formed by a row, this first regression line can be adapted to the course of the row, so that the first regression line already forms an averaged and/or condensed information of the underlying row.
  • the first straight line function is formed on the basis of a plurality of the first regression lines, with a second averaging or condensing taking place here, so that the first straight line function is formed by a double averaging of the original information.
  • a second regression line is formed for each column along the second main directions.
  • the second straight line function is formed on the basis of a plurality of the second regression lines. Because a second best fit line is formed by a column, this second best fit line can be adapted to the course of the column, so that the second best fit line already forms an averaged and/or condensed information of the underlying column.
  • the second straight line function is formed on the basis of a plurality of the second best fit lines, whereby a second averaging or condensing takes place here, so that the second straight line function is formed by a double averaging of the original information.
  • the first function argument is designed as an integer first count value of the rows and/or the second function argument is designed as an integer second count value of the columns.
  • the first straight line thus corresponds to a first best fit line.
  • the second straight line corresponds to one of the columns of the basic symbol matrix.
  • the first line and/or the second line is not exactly the first best-fit line or the second best-fit line, since the line function has undergone the second averaging/condensation, so that it is R.405034 - 23 - is a corrected first best-fit line or a corrected second best-fit line.
  • the best-fit lines are described by a straight line angle as the intersection angle and at least one axis intersection point with one or the coordinate system of the image sensor and/or the camera image.
  • the straight line angle and the axis intersection point of at least or exactly one coordinate axis of the coordinate system are sufficient to clearly determine the best-fit line in the coordinate system.
  • This implementation reduces the positions of the best-fit lines in the point grid of the associated row or column to two values.
  • the straight line function is formed by a combination of a straight line angle function of the straight line angle depending on the function argument of the straight line function and an axis intersection point function of the axis intersection point depending on the function argument of the straight line function.
  • the straight line function is thus also determined by the straight line angle and at least one axis intersection point. It is preferred that the straight line angle function is designed as a second degree polynomial and/or the axis intersection function is designed as a second degree polynomial, the polynomials having the function argument of the respective straight line function as the function argument. This ensures that the straight line angle and/or the axis intersection can be determined depending on the function argument. By choosing a second degree polynomial, the approximation can be carried out particularly easily, so that the computation efficiency is further increased.
  • the axis intersection of the coordinate axis of the coordinate system is selected which leads to a smaller intermediate angle to a perpendicular to the respective coordinate axis.
  • a data item is assigned to the straight line function, R.405034 - 24 - which encodes the selected coordinate axis. It is considered that only the axis intersection of a single coordinate axis is necessary to describe the straight line, but not the axis intersections with both coordinate axes. In order to achieve the greatest possible information, the axis intersection is selected whose associated crossing angle is more perpendicular to the crossed coordinate axis.
  • the rough position of at least one of the basic symbols in the code arrangement is determined on the basis of the basic symbols of the basic symbol matrix or a subset thereof.
  • a reading field is defined in the camera image and/or the flat dot matrix and a corresponding basic symbol matrix is formed, with each point in the reading field being assigned an entry in the basic symbol matrix, with the position and the in particular standardized area or the date of the basic symbols being entered in the basic symbol matrix, with the rough position of the coordinate system of the dot matrix and/or of at least one basic symbol in the code arrangement being determined as the two degrees of freedom on the basis of the basic symbol matrix.
  • a first axis intersection function is preferably formed in the coordinate system of the camera image from a first straight line.
  • the first straight line is aligned parallel to the first main direction of the dot matrix in the coordinate system of the code arrangement.
  • the axis intersection function has a first function argument, with the first straight line in the coordinate system of the code arrangement being shifted parallel in the second main direction by changing the first function argument.
  • the first axis intersection function defines, depending on the first function argument, a first axis intersection along a first axis of the coordinate system of the camera image, with the first axis running through the reference point.
  • a second axis intersection function in the coordinate system of the camera image is preferably formed by a second straight line.
  • the second straight line is aligned in the coordinate system of the code arrangement parallel to the second main direction of the dot matrix.
  • the axis intersection function has a second function argument, whereby by changing the second function argument the second straight line in the coordinate system of the code arrangement is shifted parallel in the second main direction.
  • the second axis intersection function defines a second axis intersection along a second axis of the coordinate system of the camera image depending on the second function argument, whereby the second axis runs through the reference point.
  • the second straight line in the coordinate system of the camera and/or the camera image is thus shifted - perspectively distorted - in such a way that the axis intersection moves along the second axis.
  • the first and second function arguments are determined in such a way that the reference point forms the first and second axis intersection.
  • the first function argument is varied until the first straight line in the coordinate system of the camera and/or the camera image runs through the reference point and/or the first axis intersection lies on the reference point.
  • the second function argument is varied until the second straight line in the coordinate system of the camera and/or the camera image runs through the reference point and/or the second axis intersection lies on the reference point.
  • the fine position of the reference point in the coordinate system of the code arrangement in the plane of the code arrangement is determined as a further degree of freedom.
  • the coarse position of the base symbol in the coordinate system of the code arrangement is first determined and then a shift of the base symbol to the reference point is determined based on the function arguments.
  • R.405034 - 26 - The method has the advantage that the rough position of the base symbol can be determined by decoding the code arrangement.
  • the displacement up to the reference point is then calculated on the basis of the axis intersection functions, whereby the calculation can be carried out with few calculation values and thus computationally efficiently by using the axis intersection functions.
  • the first function argument is designed as a count value of the rows and/or the second function argument as a count value of the columns in the dot grid.
  • the reference point is particularly preferably designed as an intersection point of the optical axis of the camera with the image sensor.
  • the reference point is thus defined as a constructive position in the coordinate system of the camera and/or the camera image.
  • the axis intersection point function is designed as a straight line function to describe the straight line, in particular as described above.
  • the axis intersection point function includes a complete mathematical description of the straight line depending on the respective function arguments.
  • a straight line function is used, in particular as described above, which is determined by a combination of a straight line angle function of the straight line angle as the angle of intersection of the straight line with one of the axes of the coordinate system of the camera image depending on the R.405034 - 27 - function argument and the axis intersection function.
  • the line is thus completely described by an axis intersection and by a line angle.
  • This division has the advantage that only the axis intersection function has to be determined and/or evaluated to determine the fine position, without any information about the line angle. This design further increases the efficiency of the method.
  • the fine position can then be determined on the basis of the function arguments and a known grid size of the dot grid.
  • the fine position is determined in such a way that, for example, starting from the position of the base symbol with the known coarse position, a fraction of a grid size in the first main direction and a fraction of the grid size in the second main direction must be walked in order to get to the reference point in the coordinate system of the code arrangement.
  • This representation is particularly computationally efficient. It is preferably proposed that the first and/or the second function argument of the straight line function is determined such that the first and second straight lines intersect the reference point. For example, the first and second straight lines are shifted by varying the function argument such that they intersect the reference point.
  • a rotation angle Phiz of the camera about the optical axis is derived as a degree of freedom of the camera relative to the code arrangement on the basis of the first and/or the second straight lines that intersect the reference point.
  • the derivation is possible because the straight line functions are defined in the camera image. It is thus possible to determine the rotation angle Phiz as a straight line angle in the coordinate system of the camera and/or the camera image.
  • Theoretical considerations have shown that the straight line angle in the coordinate system of the camera and/or the camera image corresponds to the rotation angle Phiz of the camera about the swivel axis, without a transformation of the coordinate systems from the coordinate system of the camera and/or the camera image to the coordinate system of the code arrangement having to be carried out.
  • the basic symbol matrix is determined from the camera image, with the position of the basic symbols in the camera image being entered in the basic symbol matrix.
  • a position in the basic symbol matrix thus refers to the position of the basic symbol in the point grid, in particular in a coordinate system of the image sensor and/or in a coordinate system of the camera image.
  • the first and/or the second straight line function is preferably determined on the basis of the basic symbol matrix.
  • a straight line function is used which is formed by a combination of a straight line angle function of the straight line angle as the angle of intersection of the straight line with one of the axes of the coordinate system of the camera image depending on the function argument and an axis intersection function.
  • the axis intersection function defines an axis intersection along an axis of the coordinate system of the camera image depending on the first function argument, the axis running through the reference point.
  • the straight line By shifting the straight line by changing the first function argument in the coordinate system of the code arrangement, the straight line is shifted - distorted in perspective - in the coordinate system of the camera and/or the camera image in such a way that the axis intersection moves along the axis.
  • One straight line function or combination of straight line angle function and axis intersection function is assigned to the first main direction and the other straight line function or combination of straight line angle function is assigned to the second main direction.
  • the advantage of the division is that the function argument can be determined using the axis intersection function and the angle of rotation Phiz can then be read out from the straight line angle function based on the determined function argument.
  • R.405034 - 29 - a first value for the angle of rotation Phiz is determined from the first straight line function and a second value for the angle of rotation Phiz is determined from the second straight line function, and the angle of rotation Phiz is then determined as the mean of the two values. Because the angle of rotation Phiz can be determined independently from both straight line functions, two independent values result, which can then be averaged to determine the angle of rotation Phiz in order to improve the measurement accuracy.
  • a start field is determined as part of the method.
  • the start field has at least three, preferably adjacent, basic symbols that are arranged at an angle to one another.
  • the connecting lines between the basic symbols of the start field define two independent main directions along the dot grid in the camera image. In the event that the start field has exactly three basic symbols, these are arranged at an angle to one another, for example. They define a coordinate system of the flat point grid, with one of the at least three basic symbols forming the origin of the coordinate system.
  • the starting field has nine basic symbols which are arranged in a square and/or rectangular manner.
  • the starting field has an edge length with three basic symbols.
  • the basic symbols of the starting field are valid basic symbols.
  • Valid basic symbols are understood to mean in particular the basic symbols which are optionally defined as valid within the scope of the method or classified as valid basic symbols based on image features and/or set as valid by finding the basic symbols and successfully processing the basic symbols with a usable processing result. Image structures which are not classified as valid basic symbols are interpreted as image interference and excluded from further processing.
  • a search step starting from at least one valid basic symbol, further particularly valid basic symbols are searched for along the main directions. R.405034 - 30 - If the search is successful, in particular if additional basic symbols are found, the additional basic symbols are marked as valid basic symbols. It is intended that the search step is carried out several times.
  • the search step is carried out either from the basic symbol of the start field or from the newly found, valid basic symbols. In this way, the dot grid is gradually supplemented with additional valid basic symbols starting from the start field with valid basic symbols.
  • the search step is repeated until a sufficient number of valid basic symbols have been found, in particular so that decoding can take place.
  • the rough position of at least one of the basic symbols in the code arrangement is determined as two degrees of freedom of the camera relative to the code arrangement.
  • the valid basic symbols or a subset thereof are decoded, whereby at least one degree of freedom of the camera relative to the code arrangement is determined from the decoded rough position and optionally additional rough orientation of the coordinate system of the point grid in the camera image.
  • the basic symbols in the code arrangement and/or in the camera image can be searched for and found, for example, using area-based functions of image processing.
  • finding basic symbols for example using blob analysis or pattern-based search (pattern matching), requires frequent access to the pixels of the camera image and thus leads to complex image processing.
  • the a priori knowledge about the structure R.405034 - 31 - of the dot matrix can be used so that the search is not area-oriented but line-oriented along the main directions. In practical terms, it is sufficient to search for another base symbol in the main direction along a line, starting from a valid base symbol. It is obvious that by reducing an area search to a line search, the number of pixel accesses and/or the effort required for image processing is significantly reduced. The method according to the invention thus enables the method to be implemented very efficiently.
  • the respective center position in particular the center of gravity position of the base symbol in the camera image, is determined for the base symbols. This determines a large number of intersection points in the dot matrix based on the valid base symbols. It is intended that the search step is carried out starting from the center position of the respective valid base symbol, in particular a line-oriented search in a predetermined search direction, in particular along one of the main directions. While finding a base symbol initially only allows an approximate determination of the position of the base symbol in the dot grid and/or camera image, the exact position in the dot grid and/or camera image is determined by detecting the center position and thus the dot grid is specified.
  • connection vectors are determined in the two independent main directions along the dot grid in the camera image on the basis of the start field and/or on the basis of other valid base symbols. By determining the connection vectors, the position of the nearest and/or neighboring base symbol being sought can be estimated by extrapolation based on the known valid base symbol within the framework of a linear combination of the connection vectors.
  • the center position of a base symbol is particularly preferably determined in such a way that a starting point in the base symbols is moved over several intermediate steps to a center position along the main directions until the position in which the center position is located centrally in the base symbol in the main directions is found as the center position. Because the starting position is moved to the center position in such a way that it is always located centrally in the main directions, it is only necessary to search for the boundary of the base symbol in the main directions for each shifting step and then to move the starting position to the center between the boundaries.
  • the boundary of the base symbol is searched for by linear search in a first main direction of the camera image, then the boundary of the base symbol is searched for in the negative first main direction. Averaging the boundaries leads to a more accurate position estimate.
  • This step is repeated analogously for the second main direction, then again for the first main direction. In this way, the shift from the starting position to the center position is carried out computationally efficiently through a sequence of line evaluations along the main directions.
  • the area of the base symbols in the camera image is determined, with the area forming a datum for the coding of the code arrangement. In particular, the area is used to classify the base symbol.
  • the datum can be a 0 or a 1 in the binary system, for example, with the base symbols being circular areas of different sizes, for example.
  • the area of the base symbol can be easily determined using these values. In this way, the center position in the point grid and then the area of the base symbol are determined very computationally efficiently.
  • R.405034 - 33 - The area of the base symbol in the camera image is strongly influenced by the perspective distortion. For example, the area decreases with increasing distance of the camera from the base symbol and with increasing tilt angle of the camera (elliptical distortion).
  • the standardized area of the base symbol is preferably used to classify the base symbol.
  • a reference area is determined that is subject to approximately the same perspective distortions as the base symbol.
  • a parallelogram is used as the reference area, which is spanned by the two vectors from the grid position of the base symbol to the grid positions adjacent in the main axis direction.
  • the reference area is the amount of the cross product of both vectors.
  • the standardized area of the base symbol is calculated in particular as the quotient of the area of the base symbol and the reference area.
  • a reading field is defined in the camera image and/or in the flat dot matrix and a corresponding two-dimensional basic symbol matrix, in particular a dot matrix, is formed, with each point in the reading field being assigned an entry in the basic symbol matrix and with the position and the area and/or the date of the basic symbols being entered in the basic symbol matrix.
  • the rough position and optionally additional orientation of the coordinate system of the dot matrix can be decoded from the data in the basic symbol matrix and/or the rough position of at least one basic symbol in the code arrangement can be determined as the two degrees of freedom.
  • at least one start position is determined in a preliminary step for creating the start field. The start position is determined arbitrarily.
  • the start position is preferably located near or adjacent to the reference point. In the event that the start position happens to be within a basic symbol, the start position is used as R.405034 - 34 - Initial position for a starting base symbol is taken. In the event that the starting position is outside a base symbol, a neighboring base symbol is searched for as a starting base symbol along search rays starting from the starting position. In the preliminary step, no computationally intensive area-oriented image processing takes place either; instead, a base symbol is searched for along the search rays starting from the starting position. The boundary of the base symbol can be detected, for example, by a contrast change along the search direction in the camera image.
  • the method can use at least or exactly 8 or 16 search rays, which start in the starting position and are arranged in regular angular steps over 360°.
  • a minimum radius can be defined for the search rays, from which a further base symbol is searched.
  • a maximum search radius can be specified, whereby if the maximum search radius is reached without finding a neighboring base symbol, the starting position is discarded and an alternative starting position is selected.
  • a neighboring base symbol is searched for as the first auxiliary starting base symbol along further search beams.
  • the search for the first auxiliary starting base symbol can be carried out with the same distribution of search beams as previously described.
  • a second auxiliary starting base symbol is searched for in a direction that is angled to the connection (and/or along a first main direction) between the starting base symbol and the first auxiliary starting base symbol.
  • search beams can be used than before, which are distributed in particular over a smaller angular range, so that the search is accelerated. This takes advantage of the fact that the first three base symbols should be arranged at an angle to one another, so that there is a priori knowledge of the direction in which the second auxiliary starting base symbol is being searched for.
  • connection vectors and/or main directions can be derived from the first three base symbols found. These form a two-dimensional coordinate system of the point grid.
  • the center positions can be determined in order to define the connection vectors as precisely as possible.
  • the result is a starting field with 3 x 3 valid base symbols.
  • neighboring base symbols are searched for starting from the starting field and/or from the other valid base symbols that were found in an earlier search step.
  • the method preferably searches for basic symbols at raster points that have at least two valid neighbors in the main directions or in the diagonal directions. All neighbors of a raster point provide independent position estimates through extrapolation, which lead to a more accurate position estimate of the raster point through averaging.
  • the condition that only raster points and/or with at least two valid basic symbols are searched for as neighbors also promotes a planar expansion of the recorded area and avoids linear expansion in the form of lances, dendrites or tips.
  • the planar expansion is more robust and more tolerant of disturbances in the image than the linear expansion.
  • the basic symbol matrix in particular of the reading field, is determined on the basis of the valid basic symbols.
  • the method can provide that a camera image is first recorded by the camera, then at least one degree of freedom of the camera is determined relative to the code arrangement and then, for example, an actuator of the automation arrangement is controlled.
  • the at least one degree of freedom can be output on an optical output device, such as a display.
  • the R.405034 - 36 - at least one degree of freedom can be used for position control and/or regulation of the actuator of the automation arrangement by using this as an actual value.
  • a robot with the sensor unit of the automation arrangement can, for example, determine its absolute position relative to the code arrangement and output this as actual information or move to a predeterminable further position, with the robot continuing to orient itself on the code arrangement with regard to its actual position.
  • a further subject of the invention relates to a control unit and/or an automation arrangement with the control unit, wherein this is designed to carry out the method as described above.
  • the control unit comprises the camera and/or is connected to it for data purposes.
  • a further subject of the invention relates to a computer program which is designed to carry out the method described above when the computer program is executed on a digital data processing device and/or on the control unit.
  • a further subject of the invention relates to a machine-readable storage medium with the computer program.
  • FIG. 8 a schematic illustration of the coordinate system for the imaging model; Fig. 9 the imaging model in Fig. 8 with a tilted code plane; Fig. 10 an illustration of the code arrangement; Fig. 11 a further illustration of the code arrangement; R.405034 - 37 - Fig.12 a dot matrix of a code arrangement with two reading fields drawn in as examples; Fig.13 different angular positions of the reading field; Fig.14 an example of a reading field; Fig.15 an example structure of a parcel in the code arrangement; Fig.16 further example structures of a parcel in the code arrangement; Fig.17 flow chart of a validity check; Fig.18 details of the validity check; Fig.19 an example of a camera image with an identified starting base and the reading field; Fig.20 an example of a base symbol matrix with the date of the area entered; Fig.21 a flow chart for determining the starting base; Fig.22 several predefined starting positions in the image field of the camera; Fig.23 illustration of the
  • a method is disclosed as an implementation of an algorithm for precisely determining the absolute 6D position of a camera 1 in relation to a planar code arrangement 2 recorded by the camera 1, wherein the algorithm receives a camera image 3 as input information.
  • the code arrangement 2 simultaneously serves as an analog and digital scale in two dimensions, X and Y. It consists of symbols arranged in a regular grid. Preferably, it is a binary code with two symbols arranged in a square grid: a small round dot for a digital 0 and a large dot for a 1.
  • the dot type contains the digital information, while the dot center contains the analog information.
  • the camera 1 captures a section of the code arrangement 2 and transmits the camera image 3 to a computer or any data processing device.
  • the algorithm selects a reading field in the camera image 3 with the minimum size of a code cell (e.g. 7 x 7 dots) and uses this to calculate the position of the camera 1 in relation to the code arrangement 2 in six dimensions.
  • the method uses both the digitally coded position information and the precisely measured center positions of all dots in the measuring field or reading field. These form a grid that is distorted by the camera perspective and the distortion of the lens.
  • Step 100 Reading the camera image 3 into the computer's RAM.
  • Step 200 optional: First check of the image quality based on characteristics such as brightness and contrast.
  • Step 300 XY coarse position evaluation and optional z coarse angle evaluation
  • Step 310 Search for a launch pad of 3x3 dots in the reading field
  • Step 320 Detection of the dots in a reading field in the camera image
  • Step 330 Precise measurement of the center position and area of the dots
  • Step 340 Optional: Mathematical correction of the lens distortion by rectifying the dot positions. This converts the curved lines of the dot grid in camera image 3 into straight lines.
  • Step 350 Area-based classification of the dots, assignment to the binary digits 0 and 1
  • Step 360 Reading the digital code in the axis directions X and Y, determination of the absolute coarse position in X, Y and optionally ⁇ ⁇ -Direction as z-coarse angle evaluation.
  • Step 400 Distortion evaluation
  • Step 410 Adaptation of a regression line (beam) to each row and each column of the dot grid of the reading field
  • Step 420 Adaptation of a regression function to a first bundle of straight lines (bunch) by interpolating all straight lines in the rows and a second regression function by interpolating all straight lines in the columns of the code grid. Each bundle of straight lines is completely described by 6 interpolation parameters (bunch data).
  • interpolated straight lines can also be calculated that lie between two measured straight lines.
  • Calculation of the 6D camera position from characteristic values that are obtained from the measured dot positions and that describe the distorted grid in the camera image.
  • the equations for calculating the position result from an inverse optical imaging model of camera 1 and the laws of geometric optics: Step 500: XY fine position evaluation: The position in the X and Y directions is calculated from the XY coarse position and the position of the grid in relation to the position of the optical axis (image center).
  • R.405034 - 40 - Step 600 Z angle evaluation from the angle of the (interpolated) straight line in the image center
  • Step 700 Z position and XY angle evaluation
  • Step 710 Derivation of interpolated parameters from the bunch data that describe the perspective-distorted grid in the image center: - Grid size of the straight line of both straight line bundles - Angular divergence of the straight line of both straight line bundles
  • the camera position in the Z direction is mainly determined from the grid size of the straight line in the image center
  • the camera angles ⁇ ⁇ and ⁇ ⁇ are mainly determined from the angular divergence of the two straight line bundles in the image center.
  • Step 800 Output of the 6D position information and the optional validity information, which results from the results of numerous diagnostic functions in the process.
  • the algorithm concentrates the camera image data on a few data relevant to position determination, increases the accuracy through interpolation and behaves robustly in the event of camera image disturbances.
  • sequence positions are of particular importance (numerical values as an example): Sequence position I: input data camera image (e.g.
  • Sequence position II (step 300): converts the camera image data into dot data 2,250 values
  • Sequence position III (step 400/500): converts the dot data into beam data 90 values
  • Sequence position IV (step 400/500): converts the beam data into bunch data 12 values
  • Sequence position V (step 500/600/700): converts the bunch data into a 6D position R.405034 - 41 - 6 values
  • Process position II a) Fast finding of the dots in the camera image 3 by mathematical modeling of the perspective-distorted code grid in the code arrangement 2. The method is based on the dot positions already measured. Advantages: fast finding of the dots, the time-consuming search in the pixel grid is eliminated.
  • Process position V h
  • Mathematical method for transforming the 12 bunch parameters into a 6D position The advantages are some or all of the following improvements: ⁇ Full 6D position measurement, absolute position information ⁇ Simultaneous recording of all dimensions with one measurement process (in one camera image). ⁇ High position measurement rate and low latency.
  • the method requires only a small number of calculation steps on a computer. With an embedded computer, typical measurement rates of around 100Hz - 10000Hz are achieved, so that the sensor can also be used in a closed position control loop, for example.
  • the process also achieves a high reading speed by minimizing the number of accesses to camera image points (pixels). No time-consuming, area-wide camera image operations are carried out.
  • the amount of data is significantly reduced with each processing step.
  • Position detection is also possible in the event of disturbances in the camera's field of view, such as local occlusions, invalid dots or under unfavorable lighting conditions.
  • a validity check of the processing steps detects faulty states and prevents the output of unreliable position values.
  • a rotary angle encoder usually requires a rotary bearing for the measuring axis so that lateral position deviations of the code disk do not lead to measurement errors.
  • the mechanical R.405034 - 44 - Guides are not required because the full 6D position information of the code disk is recorded simultaneously as a code arrangement. A lateral position deviation of the sensor does not lead to an error in the angle measurement. This reduces the costs and mechanical complexity of the position measuring system.
  • a positioning system can be implemented in which the division of the position sensors into several axes is structurally impossible.
  • a levitating planar robot can be implemented that can be positioned in six dimensions without a structural connection between the robot and the stator underneath.
  • the simultaneous recording of several dimensions reduces measurement errors that can arise in distributed sensor systems due to different measurement times.
  • the costs of the sensor are largely independent of the number of degrees of freedom recorded. It can therefore also be used advantageously in applications that require fewer than 6 degrees of freedom.
  • the additional information provided enables additional functions, such as self-diagnosis of systems or permanent observation of the operating status (“condition monitoring”).
  • the method is scalable, e.g. by varying the grid size of the code arrangement and adapting the imaging optics to the code arrangement.
  • the resolution can vary over many orders of magnitude, for example from the nanometer range (application example: nanometer positioning system) to the m range (application example: automated landing of an aircraft or drone at an airfield, where the airfield is marked with a code arrangement).
  • the ratio of resolution to measuring range can cover many orders of magnitude. For example, if a distance measuring system with 10nm resolution is combined with a 10m long code arrangement, the ratio of resolution to measuring range is 1:109.
  • a sensor with the method has a high level of application flexibility, as it is easy to install and can be configured for specific applications by parameterization. This is particularly advantageous when operating conditions change frequently.
  • the method can read additional information contained in the position code. For example, object identification data can be read in addition to the position.
  • the method provides an independent position estimate for each individual image; it is not dependent on prior information from previous images. Therefore, the measurement rate corresponds to the frame rate.
  • the method enables the localization of at least one camera 1 in relation to at least one object 8 in six degrees of freedom, with at least one code arrangement being applied to the surface of each object 8.
  • a camera 1 records the code arrangements 2 on the objects 8 and displays them completely or in sections in the camera image 3.
  • the 6D position of the objects 8 is calculated from the camera image 3.
  • the code arrangement 2 forms a flat, digitally coded scale.
  • the camera 1 contains several different symbols, preferably circular symbols (dots), which are arranged in a regular, preferably square grid and enable position determination in 6 degrees of freedom.
  • the camera 1 comprises at least one imaging sensor element, usually a camera chip, in particular the image sensor 12.
  • An imaging system which images the scale sharply and with high contrast onto the sensor element, in particular the lens 9.
  • the imaging system comprises in particular a wide-angle lens as lens 9, since a central perspective image is required to determine all six degrees of freedom.
  • the camera system of the camera 1 comprises an illumination system, in particular for illuminating the code arrangements. This makes the camera 1 more independent of the lighting conditions in the environment.
  • Light-emitting diodes are used as lighting sources.
  • Means for shielding from external light e.g. an aperture or optical filters.
  • a spectral filter can be present in the beam path of the imaging system so that only light from a limited wavelength range reaches the sensor element.
  • R.405034 - 46 - Ideally, single-color lamps with the same wavelength characteristics as the color filter are used.
  • a computer system is required as a digital data processing device for information processing, e.g. designed as a control unit.
  • the method is implemented as an algorithm in the computer system.
  • the algorithm is either executed on request from outside or cyclically, for example in a fixed time grid to record the movement paths of objects (tracking).
  • the computer system can be designed, for example, as an embedded system, parallel computer, GPU, FPGA, ASIC or cloud system.
  • a smartphone can also be used as an overall system for position detection, whereby the integrated camera 1, possibly with active lighting, is used to record images.
  • the method can be implemented in a smartphone application and executed embedded in the smartphone or in the cloud.
  • Figure 2 shows a typical arrangement for determining the absolute position in 6 degrees of freedom.
  • the camera 1 records the camera image 3 of a planar code arrangement 2. From the perspective-distorted camera image 3, the method according to the invention calculates the 6D position of the camera in the coordinate system of the code arrangement 2 and outputs it as a position vector ( ⁇ ⁇ , ⁇ ⁇ , ⁇ ⁇ ) and angle vector ( ⁇ ⁇ ,
  • the coordinates ⁇ ⁇ and ⁇ ⁇ are indicated in the rectangular coordinate system (XC, YC) of the code arrangement 2. They indicate the intersection point 4 of the optical axis 5 of the camera 1 with the plane in which the code arrangement lies. Since the optical axis 5 is perpendicular to the plane of the image sensor 12, it can be designated by a point 7 in the camera image 3.
  • R.405034 - 47 - The method determines the intersection point (X,Y) even if the code arrangement 2 is only shown at the edge of the image field and not at the location of the optical axis 5.
  • the distance ⁇ ⁇ lies on the optical axis 5 and extends from the intersection point 4 to the optical center of the lens of the camera 1. Since the optical axis 5 is not always perpendicular to the code arrangement 2, ⁇ ⁇ with (X C , Y C ) is generally a non-orthogonal coordinate system.
  • the position vector ( ⁇ ⁇ , ⁇ ⁇ , ⁇ ⁇ ) into a rectangular coordinate system.
  • FIG. 3 and 4 show a schematic of the beam path of the camera 1.
  • Figure 3 shows the camera 1 with a lens 9 and an image sensor 12, with the line of sight directed downwards onto the code plane of the code arrangement 2.
  • the optical axis 5 is shown as a dash-dotted vertical line, the focal points of the lens 9 as points 10,11.
  • a vector arrow G on the code plane of the code arrangement 2 is imaged as a vector arrow B on the image sensor 12 according to the laws of ray optics.
  • a line of sight 14 intersects the optical axis 5 at a point, which is referred to here as the optical center 13 of the lens 9.
  • the complete beam path is shown in Figure 4, the lens 9 is simplified to a lens.
  • the ray optics with the ray theorem and the lens equation forms the basis for the mathematical method for determining position.
  • Object size g Object distance f Focal length
  • Figures 5, 6, 7 illustrate the coordinate systems involved:
  • the two-dimensional coordinate system 15 of the image sensor 12 is defined by the axes (X I , Y I ) of the camera chip.
  • a position on the image sensor 12 is specified in image points [pixels], whereby the pixel rows and columns of the camera chip are numbered consecutively.
  • image points [pixels] whereby the pixel rows and columns of the camera chip are numbered consecutively.
  • an image sensor 12 with 200 x 200 pixels is assumed.
  • the numbering results in an integer X and Y position value for each pixel.
  • Subpixeling a method for interpolating gray values between neighboring pixels, can also result in real numbers as the camera position during the evaluation. To convert the unit of position from [pixels] to [m], the position is multiplied by the distance between neighboring pixels ⁇ ⁇ on the camera chip in the unit [m/pixel].
  • the pixel pitch ⁇ ⁇ is a property of the image sensor 12. Each pixel provides an integer gray value.
  • the unit is either [dots], i.e. the consecutive numbering of the dot rows and columns, or [m] - after multiplication by the dot grid spacing ⁇ ⁇ in [m/Dot].
  • Code arrangement 2 uniquely encodes the local position in the coordinate system (X C , Y C ).
  • the three-dimensional camera coordinate system (X, Y, Z) 17 is firmly connected to the camera 1.
  • the optical axis 5 Its origin is on the optical axis 5 between the image sensor 12 and the code arrangement 2, at a distance of twice the image width b from the image sensor 12.
  • the optical axis 5 forms the Z axis, the camera 1 looks in the direction of -Z. R.405034 - 49 -
  • the coordinate system for the imaging model in Fig. 8 corresponds to the camera coordinate system 17 (X, Y, Z).
  • b is the image distance of the camera 1.
  • the image plane is at the height (0, 0, 2b) and is parallel to the X/Y plane of the camera coordinate system 17.
  • a further "virtual" image plane 18 can be constructed in the (X, Y) plane of the coordinate system 17, whereby the virtual image is mirrored point-symmetrically with respect to the real image on the image sensor 12 in relation to the image center.
  • the code plane of the code arrangement 2 At the height (0, 0, z 0 ) with (z 0 ⁇ 0) is the code plane of the code arrangement 2.
  • the code plane With the camera orientation (0°, 0°, 0°) the code plane is parallel to the X/Y plane of the camera coordinate system 17 and the axes (X C , Y C ) of the coordinate system 16 of the code arrangement 2 point in the same direction as the axes (X I , Y I ) of the coordinate system 15 of the image sensor 12.
  • the method determines the 6D position of the camera ⁇ in translation: ( ⁇ ⁇ , ⁇ ⁇ , ⁇ ⁇ ) and ⁇ in rotation: ( ⁇ ⁇ , ⁇ ⁇ , ⁇ ⁇ ).
  • the center of rotation to which the tilt and rotation angles phix and phy of camera 1 refer is at the point (0, 0, z0).
  • the roll angle phiz is measured around the optical axis 5.
  • Fig. 9 shows the imaging model with tilted code plane of code arrangement 2.
  • the coded scale is designed as a sensor-readable marking applied as a code arrangement 2 on a surface that extends essentially in two dimensions, but can also have curvatures. For a better description, it is assumed below that the coded scale is printed as an optically readable pattern on a flat surface, without restricting the claim to other marking and sensor principles and curved surfaces.
  • the coded scale of code arrangement 2 is formed by arranging different basic symbols in a regular grid.
  • the basic symbols have two R.405034 - 52 - Information: its shape encodes a digital information and its centroid marks a specific position on the surface.
  • base symbols 20 are used, e.g. a small and a large circle, which symbolize the values "0" and "1".
  • Their centroid (circle center) marks a grid point on the surface.
  • the centroids of the base symbols 20 form a periodic two-dimensional pattern on the scale level of the code arrangement 2, for example in a square grid as in Fig. 10 with the same base distance ⁇ ⁇ neighboring symbols in the X and Y directions.
  • Fig. 10 shows a dot matrix with square plots 19, each of which can accommodate 7 x 7 binary symbols, which corresponds to a maximum information content of 49 bits.
  • the lines and squares drawn in Figure 10 are for illustration purposes only and are not shown in the real code arrangement 2.
  • Fig. 11 shows an example code arrangement 2 without lines with the basic symbols 20 in the plots 19.
  • the regular arrangement of the basic symbols 20 is overlaid by a regular arrangement of plot symbols 21 by marking each plot 19 in the same way with a plot symbol 21.
  • the plot symbol 21 can be shown, for example, by omitting a basic symbol 20.
  • the parcel symbol 21 consists of a blank space in the dot grid, which is located in the middle of each parcel 19.
  • the parcel symbol 21 makes it possible to recognize the position of the parcel 19 in order to read out the basic symbols 20 along a reading track in the correct order. Since the parcel symbol 21 occupies a grid space, the information content of a parcel 19 is reduced to 48 bits in this example.
  • a reading field 22 is a field on the coded scale of the code arrangement 2, which is at least the size of a plot 19. It is bound to the dot grid, but not to the grid of the plots 19.
  • Fig. 12 shows a dot grid of a code arrangement 2 with two example reading fields 22.
  • the position of the reading field 2 in the coordinate system of the dot grid is defined by its center position 23. It can be set in integer steps of the base distance ⁇ ⁇ vary.
  • the reading field 22 has an angular position in relation to the coordinate system of the dot grid, which can vary in steps of 90° in a square grid. In Fig. 12, the angular position is visualized by marking a corner of the reading field. The possible angular positions are shown in Fig. 13.
  • the code of the code arrangement 2 is constructed in such a way that the basic symbols 20 in a reading field 22 contain sufficient information to digitally encode the location (X,Y) and the direction of the reading field 22 in the coordinate system 16 of the code arrangement 2.
  • X and Y are integer multiples of the basic distance ⁇ ⁇ (coarse position).
  • the fine position in fractions of the base distance ⁇ ⁇ and the exact angle in fractions of 90° is not digitally coded, it is determined by an exact location of the basic symbols 20 in the camera coordinate system 17.
  • FIG. 14 shows an example of a reading field 22 with 15x15 spaces for basic symbols 20. It provides more information than the minimum required reading field 22 of the size of a plot 19, here 7x7 symbols. The redundant information is used for error detection and/or error correction.
  • Fig. 15 shows an example of the structure of a plot 19 with 7x7 grid points. In the middle of the plot 19 is the plot symbol 21.
  • the two fields 24 mark the X-plot areas in which the continuous code for the position R.405034 - 54 - is shown in the X direction.
  • the X parcel areas comprise 24 grid points, accordingly they represent a code with a length of 24 bits.
  • the basic symbols 20 are read column by column from left to right and within each column from top to bottom.
  • the reading order in the X parcel areas 24 is in grid point coordinates (X C ,Y C ): (0.6); (0.5); (0.4); (1.6); (1.5); (1.4); (2.6); (2.5); (2.4); (3.6); (3.5); (3.4); (3.2); (3.1); (3.0); (4.2); (4.1); (4.0); (5.2); (5.1); (5.0); (6.2); (6.1); (6.0).
  • the two fields 25 identify the Y parcel areas in which the continuous code for the position in the Y direction is shown.
  • the reading order corresponds to that of the X parcel areas 24, but is rotated 90° anti-clockwise. The reading track therefore runs line by line from bottom to top and within each line from left to right.
  • the number g is sufficiently large so that the X-parcel areas 24 of all parcels 19 adjacent in the X direction can be completely filled.
  • g is greater than fifty, in particular greater than a thousand and especially greater than a million.
  • the contents of the X-parcel areas 24 of parcels adjacent in the Y direction are identical.
  • the overall sequence is designed such that each partial sequence of t consecutive basic symbols 20 is contained exactly once in the overall sequence when read forwards and each partial sequence read backwards is not contained in the overall sequence when read forwards.
  • the inverted Y code also only appears once in the overall sequence and does not appear in the overall sequence when read backwards.
  • the contents of the Y parcel areas 25 of neighboring parcels 19 in the X direction are identical.
  • the overall sequence is designed in such a way that a checksum of a partial sequence is less than half of the maximum possible checksum of a partial sequence.
  • the checksum for any partial sequence selected from the overall sequence is less than half of the maximum possible checksum of a partial sequence.
  • the partial sequences of the overall sequence encode a coordinate value, for example the X coordinates of the start position of the reading process.
  • a partial sequence of the inverted overall sequence encodes a Y coordinate, for example the position from which the partial sequence is read.
  • the X code read in a plot 19 and the Y code are assigned to the X and Y coordinates of a reference point in the plot 19, for example the center of the reading field.
  • Each reading field 22 contains exactly one parcel symbol 21, t basic symbols from X parcel areas 24 and t basic symbols from Y parcel areas 25.
  • the position of the parcel grid and thus the position of the X and Y parcel areas 24, 25 in the reading field 22 as well as the associated reading order can be derived from the position of the parcel symbol 21.
  • the basic symbols 20 read according to the reading order result in a sequence of digits with t positions which - if necessary after inversion - is a partial sequence of the overall sequence.
  • the orientation of a reading field 22 is unknown, it is initially not known which of the two axes is the X axis and which is the Y axis. This is determined by calculating the checksum of the read code and comparing it with q: the checksum of an X code is less than q, the checksum of a Y code is greater than q.
  • the direction of the coordinate axes of the reading field 22 in relation to the coordinate axes of the code arrangement 2 is clearly derived from the direction of the read codes in relation to the overall sequence (forward or backward). In this way, the position and orientation of a reading field 22 in the coordinate system 16 of the code arrangement 2 can be determined, the position in integer steps of the grid width and the orientation in integer steps of 90°.
  • Fig. 16 left, plots 19 with 9 rows and 9 columns are shown.
  • a plot area for additional data 26 is provided. It comprises (5x5) grid points, with the middle grid point for the plot symbol 21 being left out, so that 24 grid points remain, each of which can accommodate a base symbol 20. In this way, 24 bits of additional information can be shown in each plot 19, which are not required for position determination and are read in a fixed order.
  • Fig. 16, right shows another code arrangement 2 with additional data.
  • four plot areas 26, each with 10 grid points, are provided for additional data, so that a total of 40 bits of additional information are available for each plot 19.
  • Fig. 1 The algorithm for determining position is shown in Fig. 1 as a sequence of data processing steps, which are explained in detail below using exemplary embodiments. Standard methods of mathematics and image processing as well as for diagnosis and error detection are not explained in detail. The method is optimized in particular for high accuracy of position determination and fast execution. The sequence of steps quickly reduces the data volume, which supports fast execution.
  • process position I in step 100 the digital image data is transferred from camera 1 to the computer as a grayscale matrix.
  • Step 200 is used to roughly check the validity of the image data using key values. Further image processing steps can follow, e.g. for preparing the image data or for segmenting it into individual code areas. These are not shown in detail here.
  • the data volume for a 200x200 camera image 3 is 40,000 pixels and thus 40,000 bytes in grayscale.
  • the symbols (dots) contained in the image are located and entered into a dot matrix according to their arrangement in the dot code grid, which corresponds to the size of a reading field (here: 15x15 dots).
  • Each symbol is measured in terms of its position and area.
  • the positions are rectified in order to correct lens distortions.
  • the areas of the symbols are R.405034 - 57 - standardized to eliminate the influence of perspective distortion.
  • the symbol type is classified based on the standardized area. This reduces the data volume to 225 dots with meta information and thus 9000 bytes.
  • a local model of the dot code grid in the camera image is created from the positions of the successfully identified symbols. Symbols are searched for at all grid points of the model within the reading field. Due to local occlusions, image errors or the image field limitation, not all symbols can always be identified. The corresponding grid positions are then classified as "not valid”.
  • regression lines (beams) are adjusted to the rows and columns of valid dots in the reading field 22. Each regression line is described by a straight line angle in the image field of camera 1 and an intersection point with the X or Y axis of the image field coordinate system.
  • Each reading field 22 provides two bundles of regression lines, corresponding to the two main axis directions of the code arrangement 2.
  • each straight line bunch comprises up to 15 straight lines.
  • the straight lines of each bunch are interpolated by two second degree polynomials: one polynomial describes the straight line angles, a second the axis intersection points of the straight lines of a straight line bunch.
  • the polynomial parameters of the two bunches are represented by 12 real values, which corresponds to a reduction by a factor of 5 compared to the straight line representation.
  • an inverse mathematical imaging model is also used to calculate the 6D position of camera 1 from the polynomial parameters of the two straight line bundles.
  • the validity of the position value is estimated by evaluating a large number of diagnostic results from the individual steps of the program sequence.
  • the 6D camera position and validity are output to the higher-level system in step 800.
  • Step 200 - Checking/validity test of the image data R.405034 - 58 - Statistical characteristics are used to check whether an evaluable camera image 3 is present (see flow chart in Fig. 17).
  • the image brightness ⁇ and the contrast C are estimated and checked for compliance with specified limit values. If the specified limit values are exceeded, further evaluation is aborted and the result is classified as invalid.
  • sub-step 220 the image brightness ⁇ and the contrast C are estimated:
  • sub-step 230 the image brightness ⁇ and the contrast C are evaluated with the following conditions: If one of the conditions is met, further evaluation is aborted and the result is classified as invalid.
  • the aim is to identify, measure and classify the dots as basic symbols 20 in a reading field 22 of a specified size (here: 15x15 grid points).
  • the result is a two-dimensional dot matrix 29 or general basic symbol matrix with the data of the dots, whereby the indices of the matrix 29 are assigned to the rows and columns of the code arrangement 2. Characteristic values are determined for each dot. R.405034 - 59 -
  • the Dot.Typ size contains the classification result.
  • a starting base/starting field (launch pad) 28 is first searched for in the image area and/or in the reading field 22 of the camera image 3 with the dot code of the code arrangement 2. This is understood here to be a field of, for example, 3x3 neighboring dots of type 1 or 2.
  • the starting base 28 is used to build a local model of the point grid in the area surrounding the starting base 28. Additional dots are searched for at the neighboring grid locations predicted by the model, precisely measured if successful, and entered into the dot matrix 29 as valid dots. This process is repeated cyclically so that more and more valid dots are registered around the starting base 28 until the reading field 22 of 15x15 dots is completely covered.
  • the search process is robust against local reading errors: if individual dots cannot be clearly identified or exceed the edge of the image field, they are marked as invalid in the dot matrix 29 and excluded from further processing. Fig.
  • Sub-step 330 the center positions and areas of the dots are measured.
  • Sub-step 340 converts the measured positions of all valid dot positions in the reading field 22 into rectified coordinates. This step serves to compensate for the distortion errors of the wide-angle lens (barrel distortion). After rectification, points that are on a R.405034 - 60 - Straight lines lie on a straight line, even in the rectified image in the coordinate system of the image sensor 15. Instead of computer-assisted rectification, optical rectification can also be carried out with a corresponding lens 9, so that sub-step 340 is optional.
  • the dots are classified in sub-step 350 on the basis of the measured data.
  • Sub-step 360 the digital code is read in both spatial directions and converted into an integer position indication and a rough direction indication in 90° steps using the code table. The determination of the rough position in the upper step 300 is thus completed.
  • Sub-step 310 - Determination of the starting base The process for determining the starting base 28 is shown in the flow chart Fig. 21.
  • Sub-step 310.1 First, a starting position 30 is determined for searching for the first dot of the starting base 28.
  • Fig.22 shows several predefined starting positions 30 in the image field of camera 1. The search begins at one of these starting positions. If the process fails (e.g. due to a disturbance in the image field), a second search is started at the second starting position, etc., until sub-step 310.1 can be successfully completed.
  • Sub-step 310.1 is aborted with a negative result.
  • Sub-step 310.2 Starting from the starting position ⁇ ⁇ ⁇ /30 the nearest dot is searched. In Fig. 23 a dot is found at position ⁇ ⁇ ⁇ as the starting base symbol.
  • Substep 310.4: Then a connection vector ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ is formed.
  • Substep 310.7 If it is a left-handed coordinate system (condition: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ 0), it is exchanged by exchanging the axes ⁇ ⁇ ⁇ and ⁇ ⁇ ⁇ into a right-handed coordinate system, see Fig.24, left.
  • Substep 310.8 By linear combination of the vectors ⁇ ⁇ ⁇ and ⁇ ⁇ ⁇ all eight become ⁇ ⁇ ⁇ neighboring dot positions are estimated (Fig.24, second from left) and used as a starting field 28 for searching and measuring dots. As a result, a starting base 28 of 3x3 dots is available (Fig.24, second from right, right).
  • Sub-step 310.9 If a dot is not found in this process, it is assumed that it is a parcel symbol 21 (missing dot). In sub-step 310.10, ⁇ ⁇ ⁇ shifted by one dot position in the direction opposite to the missing dot and the sequence is continued with the new search of ⁇ ⁇ ⁇ and ⁇ ⁇ ⁇ continued. In the second run, it can be assumed that all 3x3 dots are identified, since the next parcel symbol 21 is one parcel 19 away (here: 7 dots) and the starting base is only 3x3 dots in size.
  • a sub-step 310.11 can then be carried out to detect errors, whereby if an error is detected in a sub-step 310.12, a new starting position 30 is used and the procedure is repeated starting from sub-step 310.2.
  • the challenge is to identify a dot in the image field of camera 1 starting from an estimated starting position and to measure its position and area with subpixel accuracy. In order to achieve a short measurement time, this process must be carried out very quickly, since a total of 225 dots must be identified in a reading field 22.
  • R.405034 - 62 - For this purpose, the Center_Pos function described below is used, which is optimized for the minimum number of pixel accesses.
  • Fig.25 shows the flow chart.
  • the area of the dot is calculated as the area of the surrounding rectangle, multiplied by the factor to convert the square area into a circular area or elliptical area: R.405034 - 63 -
  • ⁇ ⁇ to find the nearest dot.
  • This task can be solved using the Nearest_dot function described below.
  • ND true
  • the dot at the location of the start position is ignored and the nearest neighbor dot is output.
  • the function scans the image field along 16 search beams 31 at an angular distance of 22.5° (Fig. 27a, b).
  • the edge is at position ⁇ ⁇ ⁇ , it belongs to the nearest dot you are looking for.
  • Starting from ⁇ ⁇ ⁇ the center position and the area of the dot found are determined and output using the Center_Dot function.
  • Sub-step 320 - Detecting the dots in the reading field The flow chart in Fig. 28 shows the process for detecting all dots in the reading field 22.
  • the previously determined starting base 28 of e.g. 3x3 dots serves as input information.
  • step 330 Precise measurement of the center position and area of the dots is integrated into sub-step 320.
  • the center position 32 of the reading field 22 is determined.
  • the reading field 22 has the largest possible R.405034 - 64 - overlaps with the image area in which the code is shown, so that as many valid dots as possible can be recorded. This is usually the case when the center of the reading field 22 is in the center of the code area. If the code area takes up the entire image area, as in the present example, the center position 32 of the reading field is placed as close to the center of the image as possible (see Fig.29a). At the beginning of the process, only the 3x3 dots of the starting base 28 are known. All other dots in the reading field 22 are still unknown, i.e. their exact position and area have not yet been measured. The aim of the process is to gradually measure and classify the unknown dots.
  • Sub-step 320.2 For each known dot, the vectors ⁇ . ⁇ ⁇ and ⁇ . ⁇ ⁇ (Fig.30), which point to the nearest neighboring dot in the main axis directions 1 and 2. Due to the perspective distortion, they form an oblique coordinate system. By linear combination of the vectors ⁇ . ⁇ ⁇ and ⁇ . ⁇ ⁇ the grid positions of the unknown neighboring dots can be estimated. The position estimation for an unknown dot can be improved by extrapolating and averaging the estimates from several valid neighbors. The more valid neighbors an unknown dot has, the better its position can be estimated. To increase the reliability of the reading process, only unknown dots that have at least two valid neighbors are examined. The number of valid neighbors is counted for each unknown dot.
  • Fig. 29c the middle dot position has 8 neighboring positions (dark).
  • Fig. 29b shows schematically the unknown dots with 2 valid neighbors 20 a and with 3 valid neighbors as 20 b. All other unknown dots (20c) do not yet have valid neighbors.
  • R.405034 - 65 - The algorithm is based on a stack, whereby in sub-step 320.3 all unknown dots with at least 2 valid neighbors are entered into the stack.
  • ⁇ Sub-step 320.3 The top entry is fetched from the stack as an unknown dot and processed in the following steps.
  • ⁇ Sub-step 320.5 If the unknown dot cannot be identified, it is classified as defective (sub-step 320.6) and the next unknown dot is fetched from the stack.
  • ⁇ Step 330/Substep 320.7 If the dot has been identified, its position and area are measured using the Center_Pos function and it is entered into the dot matrix 29 as a valid new dot. Also the vectors ⁇ . ⁇ ⁇ and ⁇ . ⁇ ⁇ are calculated and entered for this dot.
  • ⁇ Sub-step 320.8 For all 8 neighbors of the new valid dot, the number of valid neighbors is increased by 1. If this means that an unknown dot has two or more valid neighbors, it is placed on the stack for measurement.
  • ⁇ Sub-step 320.9 This process is repeated until the stack is empty. Then all dots in the reading field have been processed.
  • ⁇ Sub-step 320.10 If not enough dots were found to determine the position, the reading process is assessed as invalid.
  • Imaging with the wide-angle lens can result in a barrel-shaped distortion of the image field.
  • Lines of dots that lie on a straight line in the code plane of the code arrangement 2 may lie on a curved line in the camera image 3.
  • This curvature can be eliminated by a mathematical process, the rectification.
  • the rectification is only applied to the R.405034 - 66 - center positions 32 of the dots, not on all pixels of the input image.
  • Fig. 31 shows an example of a non-rectified grid (33) and a rectified grid (34).
  • the center of the distortion ⁇ ⁇ ⁇ ⁇ ⁇ is located at the intersection point of the optical axis 5 with the camera chip of the image sensor 12.
  • the polynomial parameters ⁇ ⁇ , ⁇ ⁇ , ⁇ ⁇ are specific to the lens 9 and are adjusted to it in a calibration process. Alternatively, a distortion-free lens 9 can be used.
  • Sub-step 350 Classification of the dots
  • the small and large dots symbolize the values "0" and "1" of the binary number system.
  • the classification of the dots is based on a threshold value for the standardized area of the dots.
  • the process is shown in the flow chart Fig.32.
  • the perspective distortion has a strong influence on the area of the dots in the image field. For example, dots further away are shown smaller, circular dots on an inclined plane are shown as an ellipse.
  • Sub-step 350.1 To compensate for these effects, the area of the dots is standardized in relation to the area of their dot cell.
  • the dot cell is the parallelogram that contains the vectors ⁇ . ⁇ ⁇ and ⁇ . ⁇ ⁇ at the location of the dot, i.e. the distance vectors from the dot to the neighboring dots in the main axis directions 1 and 2.
  • R.405034 - 67 - Fig. 30 shows a perspectively distorted dot in a distorted grid, which is locally represented by the vectors ⁇ . ⁇ ⁇ and ⁇ . ⁇ ⁇
  • the area of the cell is ⁇ . ⁇ ⁇ ⁇ ⁇ . ⁇ ⁇ .
  • the normalized area of the dot is calculated as follows: Sub-step 350.2: The threshold value is calculated using statistical methods from the standardized areas ⁇ . ⁇ ⁇ of all dots. Sub-step 350.3: All dots are then classified: ⁇ Missing dot: Type 0 ⁇ Normalized area smaller than threshold: Type 1; otherwise: Type 2. Sub-step 350.3: If errors occur, the status is set to invalid; if no errors occur, the dot is valid. To sub-step 360 - Reading the code After the dots have been classified, the dot matrix 29 contains all the information to determine the 6D position. The dot matrix 29 contains the following information: Dot data Description Data is provided by the following steps: ⁇ ⁇ , ⁇ .
  • Dot area in the original substep 310 and 320 image coordinates [pixels]
  • Center_Pos Dot area detection ⁇ , ⁇ . ⁇ Classified DotType
  • Dot classification based on the dot area ⁇ , ⁇ . ⁇ Number of valid sub-steps 310 and 320, neighboring dots Counting the valid neighbors The flow chart for this is shown in Fig.33.
  • the digital coarse position in the X and Y directions is determined by reading the X and Y bit chains in the dot matrix.
  • Sub-step 360.1 The parcel symbol 21 "empty dot" (type 0) serves as a reference point to identify the position of the bit chains in the dot matrix 29.
  • Sub-step 360.2 Starting from the parcel symbol 21, the position of the reading tracks for the codes in the two axes of the code level is determined. It is initially unknown which of the sequences is assigned to the X axis and which to the Y axis. R.405034 - 69 - and in which direction (forwards or backwards) the code is read. The codes are read along the reading track and saved as Code_0 and Code_1.
  • Fig.34a) shows examples of the dot types that are entered in the dot matrix. The parcel symbol (type 0) is highlighted in gray.
  • Fig.34b the reading track for the two axes is also shown.
  • the reading tracks of the two axes are rotated 90° to each other, with the parcel symbol 21 forming the center of rotation.
  • the code can be read redundantly: A copy of Code_0 is in the parcels adjacent in the j direction (35a), a copy of Code_1 is in the parcels adjacent in the i direction (36a). Redundancy also exists in the length of the readable code.
  • a code length of 24 bits in each direction is sufficient for location determination, i.e. the content of a 7x7 parcel.
  • the larger reading field with 15x15 dots provides 51 or 54 bits in each direction.
  • the redundant information is used to detect and correct individual incorrectly read bits in Code_0 and Code_1.
  • the following codes are read: ⁇ Code_0: 111.111.011.111.011.111.111.111.111.111.111.011.011.111.111.111.111 ⁇ Code_1: 000.000.000.101.000.001.000.000.000.100.110.000.000.000.000.000.000
  • Sub-step 360.4: The checksum of Code_0 is then calculated. If this is less than t/2 12, Code_0 is the X code and Code_1 is the Y code.
  • Code_0 is the Y code and Code_1 is the X code.
  • the Y code is inverted.
  • the X code remains unchanged.
  • the bit position with the best R.405034 - 70 - Match is displayed as a search result; if the deviation is too great, the search result is assessed as invalid.
  • the bit position of the codes is converted into a spatial position according to the code structure, as shown schematically in Fig.
  • the rough orientation of the reading window 22 is determined in steps of 90° according to the table below. ⁇ ⁇ 0 1 0 0° 270° ⁇ ⁇ ⁇ ⁇ 1 90° 180° R.405034 - 71 -
  • the result of sub-step 360 is the integer coarse position ( ⁇ ⁇ , ⁇ , ⁇ ⁇ , ⁇ ) and the orientation of the reading window 22.
  • Step 400 Determination of the beam data
  • the rectified position data of the valid dots in the dot matrix 29 are evaluated.
  • Fig. 36 shows an example of the dots of a reading field in the camera image after rectification.
  • Step 410 Adjustment of best fit lines For this, best fit lines (beams) are adjusted to the rows and columns of valid dots in the reading field 22. The best fit line is calculated using standard mathematical methods to minimize errors from the position data of the valid dots in the respective row or column. Invalid dots are excluded from the process.
  • the regression lines fitted to the dot rows form a first bundle of lines ( ⁇ h ⁇ ) 36, where the lines are parallel to the YC axis.
  • the lines of the dot columns form a second bundle of lines ( ⁇ h ⁇ ) 37, where the straight lines parallel to the X C -axis.
  • the interpolation also has the effect of averaging the dot positions on each line, so that the best fit lines are robust against individual fluctuations of the individual dot positions. This increases the stability and accuracy of the 6D position value.
  • Fig. 36 shows the best fit lines for a reading field with 15x15 dots, the lines from ⁇ h ⁇ than 36 and the straight lines from ⁇ h ⁇ than 37th.
  • the three straight line parameters ⁇ ⁇ , ⁇ ⁇ , ⁇ ⁇ each bundle of regression lines 36, 37 is interpolated with a second degree polynomial. The interpolation procedure only takes valid lines into account.
  • Invalid lines for which there are too few valid dots available for interpolation, are excluded from the bunch interpolation.
  • a weighted interpolation is carried out using standard mathematical methods, which is based on the minimization of error squares.
  • Valid lines are given a weight of 1.0, while invalid lines are given a weight of 0.0 and are thus hidden.
  • ⁇ ⁇ ( ⁇ ) ⁇ ⁇ ( ⁇ ), ⁇ ⁇ ( ⁇ ) or ⁇ ⁇ ( ⁇ )
  • the intersection point is specified with the axis that is as perpendicular to the line as possible: for flat lines, the intersection point with the Y axis is preferably specified, for steep lines, the intersection point with the X axis.
  • In bundle 1, a reference line is selected that is close to the center 32 of the reading field 22. ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ If the angle of the reference line is in the range [ ⁇ ⁇ , ⁇ ⁇ ] or [ ⁇ ⁇ , ⁇ ⁇ ] (sectors on the X I -axis in Fig. 38a)), it is a flat line. Then for all lines in bundle 0 (36) the intersection point ⁇ ⁇ with the X-axis and for all lines in bundle 1 (37) the intersection point ⁇ ⁇ with the Y-axis (Fig. 38b)). As a marker, rot_status is set to 0.
  • the 6D position is calculated from these parameters.
  • the interpolation also has the effect of averaging over the straight lines of each bundle and thus over all dots, so that the interpolated values are robust against individual fluctuations of individual straight lines or dots. This increases the stability and accuracy of the 6D position value.
  • Step 6 Calculating the 6D camera position
  • the 6 coordinates of the camera position are calculated from the 12 interpolation parameters of the straight line bundles (Table 9.1), in the following order: ⁇ Sub-step 500: Position ⁇ ⁇ and ⁇ ⁇ ⁇ Substep 710: Calculation of characteristics of the distorted grid ⁇ Substep 600: Camera angle ⁇ ⁇ ⁇ Substep 700: Position ⁇ ⁇ ⁇ Substep 700: Camera angle ⁇ ⁇ and ⁇ ⁇ ⁇ Substep 700: Iterative algorithm for solving the system of equations for ⁇ ⁇ , ⁇ ⁇ and ⁇ ⁇ The calculation includes the derivation of parameters that describe the measured grid at the location of the optical axis 5.
  • the camera position is determined by solving the system of equations.
  • the validity of the position values is estimated by evaluating a large number of diagnostic results from the individual steps of the program sequence.
  • the camera position in X and Y is calculated as the sum of the integer coarse position ( ⁇ ⁇ , ⁇ , and a real fraction [0..1] (fine position), multiplied by the dot grid spacing: ; Unit: [m] ; Unit: [m] with ( ⁇ ⁇ , ⁇ , ⁇ ⁇ , ⁇ ) : Integer position of the reading field in [Dot], as determined in step 300 ( ⁇ ⁇ , ⁇ , ⁇ ⁇ , ⁇ ) : real fraction of the reading field position in [Dot] ⁇ ⁇ : Dot grid spacing in [m/dot].
  • the reference point for measuring the camera position is the intersection point 4 of the optical axis 5 with the code arrangement 2, in the camera image 3 the intersection point of the optical axis 5 with the image sensor 12 (Fig.2, point (4) or illustration of the intersection point 4 image center 4 in Fig. 39).
  • This image center ⁇ (4) is determined by the position of the lens 9 in relation to the camera chip, it does not have to be identical with the center of the camera chip. It is determined in a calibration process and is stored as a constant two-dimensional vector ( ⁇ ⁇ , ⁇ ⁇ ) in the program. The fractions ⁇ ⁇ , ⁇ and ⁇ ⁇ , ⁇ we calculate as the intersection point of the interpolated line with the image center 4.
  • Straight line angle in the image center: ⁇ ⁇ , ⁇ ⁇ results from the interpolation function for the straight line angle: for c) Angular divergence of the straight line bundles in the image center: ⁇ ⁇ , ⁇ ⁇ . This is the angle difference between adjacent straight lines close to the image center.
  • Substep 700.1 Calculation of the real fractions of the reading field position in [Dot] ( ⁇ ⁇ , ⁇ , ⁇ ⁇ , ⁇ )
  • Substep 700.2 Calculation of position r x and r y
  • Substep 700.3 Calculating the camera rotation/angle ⁇ ⁇
  • Sub-step 700.5 Initialize a counter for iterations with e.g.
  • Sub-step 700.7 Calculate camera angles phix, phiy
  • Sub-step 700.8: Counter 0? Recalculate, otherwise abort the iteration R.405034 - 80 -

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Image Processing (AREA)

Abstract

Verfahren zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera (1) relativ zu einer Codeanordnung (2) aus einem Kamerabild der Kamera (1), wobei die Codeanordnung (2) ein Punktraster mit einer Mehrzahl von Basissymbolen (20) aufweist, wobei in der Codeanordnung (2) eine Grobposition der Basissymbole (20) codiert ist, wobei die Basissymbole (20) eine erste und eine dazu unabhängige zweite Hauptrichtung entlang des Punktrasters definieren, wobei aus dem Kamerabild in einem Referenzpunkt die folgenden Werte als Kennwerte bestimmt werden: - ein Drehwinkel phiz der Kamera (1) um die optische Achse der Kamera (1); - ein erstes und/oder zweites lokales Rastermaß gco/gdc des Punktrasters in dem Kamerabild in der ersten Hauptrichtung bzw. in der zweiten Hauptrichtung; - eine erste und eine lokale Winkeldivergenz dalphac0/dalphac1 des Punktrasters in dem Kamerabild in der ersten bzw. zweiten Hauptrichtung, wobei die lokale Winkeldivergenz dalphac0/dalphac1 den Differenzwinkel zwischen zwei benachbarten Geraden in der jeweiligen Hauptrichtung in dem Punktraster beschreibt; wobei auf Basis der Kennwerte die folgenden drei Freiheitsgrade der Kamera (1) relativ zu der Codeanordnung (2) bestimmt werden: - ein Abstand rz zwischen der Codeanordnung (1) und der Kamera (1); - zwei unabhängige Nickwinkel phix; phy der optischen Achse zu der Codeanordnung (2).

Description

R.405034 - 1 - Beschreibung Titel Verfahren zur Ermittlung von mindestens einem einer Kamera, und elektronische Steuereinheit oder Stand der Technik Die Erfindung betrifft ein Verfahren zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera relativ zu einer Codeanordnung in dem Kamerabild der Kamera nach dem Anspruch 1. Die Erfindung betrifft auch ein Computerprogramm, ein maschinenlesbares Speichermedium mit dem Computerprogramm sowie eine elektronische Steuereinheit oder eine Automatisierungsanordnung mit der elektronischen Steuereinheit. In modernen Fertigungsanwendungen und anderen Anwendungen ist es notwendig, eine Position von einem bewegten Körper relativ zu der Umgebung zu erfassen. Hierzu gibt es eine Vielzahl von Sensoriken, wie zum Beispiel Wegaufnehmer, Codierte Positionen, welche ausgelesen werden, etc. Sämtliche existierenden Sensoriken haben für die jeweilige Anwendung spezifische Vorteile, die auf der Genauigkeit, der Einfachheit, der kostengünstigen Integration, der Robustheit oder anderen Eigenschaften begründet sein können. In der Druckschrift DE 10 2016 216 221 A1 der Anmelderin, die den nächstkommenden Stand der Technik bildet, wird ein Verfahren zum Positionieren und/oder zur Positionsbestimmung von Objekten in einem Raum und/oder auf einer Fläche vorgeschlagen, welche eine zweidimensionale Codeanordnung verwendet. Die zweidimensionale Codeanordnung weist Basissymbole auf, wobei die Basissymbole auf eine Fläche angeordnet sind und die Basissymbole auf der Fläche ein zweidimensionales, periodisches Raster bilden. Auf Basis der R.405034 - 2 - Codeanordnung kann die Position einer Kamera relativ zu der Codeanordnung ermittelt werden. Die Druckschrift DE 10 2016 216 196 A1 der Anmelderin offenbart eine Sensoranlage, wobei die Sensoranlage das Verfahren zum Positionieren und/oder zur Positionsbestimmung der vorhergehenden Druckschrift nutzt. Offenbarung der Erfindung Es wird ein Verfahren zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera relativ zu einer Codeanordnung aus einem Kamerabild der Kamera mit den Merkmalen des Anspruchs 1, eine elektronische Steuereinheit oder eine Automatisierungsanordnung mit der elektronischen Steuereinheit, ein Computerprogramm und ein maschinenlesbares Speichermedium mit den Merkmalen der unabhängigen Ansprüche vorgeschlagen. Bevorzugte oder vorteilhafte Ausführungsformen der Erfindung ergeben sich aus den Unteransprüchen, der nachfolgenden Beschreibung sowie den beigefügten Figuren. Das erfindungsgemäße Verfahren dient zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera relativ zu einer Codeanordnung aus einem Kamerabild der Kamera. Das Verfahren basiert auf dem Verfahren der Druckschrift DE 102016216221 A1 und/oder der Anwendung der Druckschrift DE 102016216196 A1, deren Offenbarung via Referenzierung in die vorliegende Offenbarung integriert wird. Definition Kamera: Die Kamera umfasst insbesondere eine optische Sensoreinheit (auch als bildgebendes Sensorelement, Kamer-Chip oder Bildaufnehmer bezeichnet) zur Aufnahme des Kamerabilds und eine abbildende Optik. Insbesondere ist die Kamera als eine Farbkamera oder als eine Schwarz-Weiß-Kamera ausgebildet. Die optische Sensoreinheit ist ausgebildet, ein einzelnes Kamerabild eines Ausschnitts der Codeanordnung und/oder eine Sequenz von Kamerabildern zum Beispiel in Form eines Videos bereitzustellen. Die Kamera weist einen Bildaufnehmer als die optische Sensoreinheit auf. Die Kamera kann ein Objektiv R.405034 - 3 - umfassen, wobei das Objektiv bevorzugt als ein Weitwinkelobjektiv ausgebildet ist. Insbesondere setzt die Kamera eine Fluchtperspektive und/oder eine Zentralperspektive um. Dabei werden insbesondere parallele Kanten bei geneigter Betrachtung nicht abbildungsparallel dargestellt, sondern vereinigen sich optisch in einem gedachten Punkt, dem sogenannten Fluchtpunkt. Insbesondere setzt die Kamera, insbesondere umfassend das Objektiv, eine anwendungsbezogen gewünschte, perspektivische Verzerrung um. Definition optische Achse 5: Die abbildende Optik ist idealerweise ein rotationssymmetrisches optisches System, wobei die Symmetrieachse die optische Achse ist. Sie zeichnet sich dadurch aus, dass ein Lichtstrahl entlang der optischen Achse beim Durchtritt durch die Optik keine Ablenkung erfährt. Definition Bildmittelpunkt 7: Der Schnittpunkt der optischen Achse 5 mit der optischen Sensoreinheit 12 wird als Bildmittelpunkt 7 bezeichnet. Dieser kann, muss aber nicht zwangsläufig mit dem geometrischen Mittelpunkt der optischen Sensoreinheit 12 zusammenfallen. Definition Kamerabild: Das Kamerabild der Kamera ist insbesondere als eine Matrix ausgebildet, welche an den Matrixpunkten Bildpunkte, wie zum Beispiel 8 Bit-Grauwertpunkte oder Farbpunkte aufweist. Definition Codeanordnung: Die Codeanordnung ist insbesondere von der Kamera abbildbar, wobei auf Basis des Kamerabilds z.B. die absolute Position einer Maschine oder eines Maschinenteils in einem bis sechs Freiheitsgraden messbar ist. Insbesondere ist die Codeanordnung ausgebildet, von der Kamera durch berührungsloses Ablesen detektiert zu werden, wobei durch die berührungslose Detektion durch die Kamera eine mehrdimensionale Ist-Positionsbestimmung durchführbar ist. Vorzugsweise kann die zweidimensionale Codeanordnung in einer Produktions-und/oder Prüfanlage eingesetzt werden, in der Werkstücke und/oder Prüf- und/oder Arbeitsmittel positioniert werden müssen. Definition Basissymbol: R.405034 - 4 - Die zweidimensionale Codeanordnung umfasst Basissymbole, wobei die Basissymbole auf einer Fläche angeordnet sind und die Basissymbole auf der Fläche ein zweidimensionales periodisches Raster, ein Punktraster, bilden. Die Basissymbole sind vorzugsweise geometrische Figuren, wie beispielsweise Kreise, Quadrate, Dreiecke oder Striche. Besonders bevorzugt sind die Basissymbole als Kreis ausgebildet. Die Basissymbole werden auch als Dots bezeichnet. Sie repräsentieren vorzugsweise Ziffern eines Zahlensystems. Insbesondere umfasst die zweidimensionale Codeanordnung mindestens zwei unterschiedliche Basissymbole. In einer möglichen Ausgestaltung der Erfindung umfasst das zweidimensionale periodische Raster Leerstellen an Rasterplätzen und/oder Gitterplätzen, die nicht mit Basissymbolen besetzt sind, als Parzellensymbole. Die Basissymbole sind auf der Fläche angeordnet, wobei die Fläche eine gekrümmte oder eine nicht gekrümmte Fläche sein kann. Beispielsweise ist die Fläche der Boden einer Produktions- und/oder Prüfanlage. Die Basissymbole sind in der Fläche zu einem zweidimensionalen Raster angeordnet, wobei vorzugsweise die Flächenschwerpunkte der Basissymbole Rasterpunkte in dem Punktraster bilden. Definition Punktraster der Codeanordnung: Die Rasterpunkte werden im Folgenden auch als Rasterplätze und/oder Gitterplätze bezeichnet. Insbesondere bildet das zweidimensionale periodische Punktraster ein zweidimensionales Gitter. Definition Parzelle: Die Fläche ist vorzugsweise in gleichartige, regelmäßig angeordnete Parzellen eingeteilt, wobei die Parzellen beispielsweise eine quadratische, eine rechteckige, eine dreieckige oder sechseckige Grundform aufweisen. Als gleichartige Parzellen werden insbesondere gleich große und/oder gleichförmige Parzellen verstanden. Vorzugsweise umfasst jede Parzelle n Basissymbole. Die Parzellen umfassen insbesondere eine ganzzahlige Anzahl von Basissymbolen und im Speziellen eine gerade Anzahl an Basissymbolen. Vorzugsweise umfassen die Parzellen mehr als zehn Basissymbole, insbesondere mehr als zwanzig Basissymbole und im Speziellen mehr als vierzig Basissymbole. Ferner ist die Anzahl der Basissymbole in einer Parzelle vorzugsweise kleiner als einhundert. Die von den Basissymbolen R.405034 - 5 - gebildeten Parzellen können optisch in der Codeanordnung angezeigt sein, wie beispielsweise durch eine Umrandung oder nicht optisch angezeigt sein und nur eine gedankliche und/oder logische Einheit bilden. Definition Parzellenbereich: Die Parzellen weisen mindestens einen ersten und einen zweiten Parzellenbereich auf. Ein X-Parzellenbereich umfasst den ersten Parzellenbereich und ein Y- Parzellenbereich umfasst den zweiten Parzellenbereich. Insbesondere belegt jeder Parzellenbereich eine zusammenhängende Fläche oder mehrere verteilte, nicht zusammenhängende Teilflächen innerhalb der Parzelle. Jeder Parzellenbereich umfasst mehrere Basissymbole. Insbesondere umfassen der X-Parzellenbereich und der Y-Parzellenbereich gleich viele Basissymbole. Insbesondere sind die mindestens zwei Parzellenbereiche so in der Parzelle angeordnet, dass diese eine p-zählige Drehsymmetrie in Bezug zum Mittelpunkt der Parzelle als Drehpunkt aufweisen, wobei die p-zählige Drehsymmetrie beispielsweise eine zweizählige, dreizählige oder vierzählige Drehsymmetrie ist. Definition Parzellensymbol: Die Parzellen weisen jeweils mindestens ein Parzellensymbol auf, welches einen ortsfesten Bezugspunkt innerhalb jeder Parzelle darstellt. Das Parzellensymbol ermöglicht das Lesen und/oder Decodieren der Basissymbole in einer festgelegten Reihenfolge. Die Parzellensymbole sind insbesondere regelmäßig und/oder periodisch in dem zweidimensionalen periodischen Raster der Basissymbole angeordnet. Die Parzellensymbole können auf oder neben den Rasterpunkten liegen. Die Parzellensymbole sind insbesondere jeweils an einer gleichen Position innerhalb einer Parzelle angeordnet, wie beispielsweise im Mittelpunkt einer Parzelle. Die Parzellensymbole sind beispielsweise andere grafische Elemente als die Basissymbole, wie beispielsweise Dreiecke, Sechsecke oder Linien. Alternativ und/oder ergänzend werden die Parzellensymbole durch ein Weglassen eines oder mehrerer Basissymbole in einer Parzelle dargestellt. In einer möglichen Ausgestaltung bildet das Parzellensymbol den Symmetriepunkt der p-zähligen Drehsymmetrie der Parzelle. Insbesondere ist die Leserichtung und/oder Decodierreihenfolge, also die Reihenfolge, in der die Basissymbole innerhalb des X-Parzellenbereiches und/oder innerhalb des Y-Parzellenbereiches gelesen werden müssen, festgelegt. Vorzugsweise entspricht die Leserichtung und/oder R.405034 - 6 - Decodierreihenfolge der Vorgabe, welche Basissymbole nacheinander zu lesen und/oder zu decodieren sind. Definition Codierung: In dem X-Parzellenbereich ist ein X-Koordinatenwert durch die Basissymbole codiert und ein Y-Koordinatenwert ist in dem Y-Parzellenbereich durch die Basissymbole codiert. Insbesondere ist der X-Koordinatenwert und der Y- Koordinatenwert die Koordinate eines Basissymbols in der Parzelle, wobei die Koordinate in einem kartesischen Koordinatensystem der durch die Basissymbole aufgespannten Fläche angegeben ist. Alternativ und/oder ergänzend kann der X- Koordinatenwert und der Y-Koordinatenwert eine Position innerhalb der Fläche auch als Koordinaten in einem anderen Koordinatensystem angeben sein, wie beispielsweise einem schrägwinkligen Koordinatensystem, in Zylinderkoordinaten oder Kugelkoordinaten. Definition bevorzugte Ausführung des Punktrasters: In einer besonders bevorzugten Ausgestaltung der Erfindung ist das zweidimensionale periodische Raster ein rechteckiges Raster, wobei die Parzellen auch rechteckig sind. Insbesondere sind die rechteckigen Raster und die rechteckigen Parzellen quadratische Raster und/oder quadratische Parzellen. Vorzugsweise ist der Abstand der Basissymbole entlang einer Längen- und Breitenachse des rechteckigen Rasters gleich groß. Beispielsweise sind für ein quadratisches Raster mit quadratischen Parzellen die Anzahl an Basissymbolen in X- und in Y-Richtung des flächigen zweidimensionalen periodischen Rasters gleich. Insbesondere besteht der X-Parzellenbereich und der Y-Parzellenbereich jeweils aus zwei räumlich getrennten, rechteckigen Teilflächen innerhalb einer Parzelle, wobei die Teilflächen eine Längserstreckung aufweisen. Die Längserstreckung der Teilflächen des X-Parzellenbereichs steht vorzugsweise senkrecht auf der Längserstreckung der Teilflächen des Y-Parzellenbereiches. Vorzugsweise kann die vom X-Parzellenbereich belegte Fläche durch eine 90°- Drehung in die vom Y-Parzellenbereich belegte Fläche überführt werden. In einer besonders bevorzugten Ausgestaltung der Erfindung weist das periodische Raster eine Rasterlänge und eine Rasterbreite auf. Die Rasterlänge erstreckt sich in X-Richtung eines kartesischen Koordinatensystems, die R.405034 - 7 - Rasterbreite in Y-Richtung. Das so gebildete Koordinatensystem ordnet jedem Punkt der Codierungsfläche einen eindeutig bestimmten Ortsvektor (X, Y) zu. Eine Anzahl von g aufeinanderfolgenden Basissymbolen bildet insbesondere eine Gesamtsequenz. Die Gesamtsequenz ist in die X-Parzellenbereiche eingetragen, insbesondere in mehreren in X-Richtung benachbarten Parzellen eingetragen. Der Eintrag der Basissymbole erfolgt insbesondere entsprechend ihrer Reihenfolge in der Gesamtsequenz vorzugsweise in aufsteigender X-Richtung der Parzellen, innerhalb jeder Parzelle in einer zuvor festgelegten Lese- und/oder Decodierreihenfolge in die X-Parzellenbereiche. Die Anzahl g ist hinreichend groß, so dass die X-Parzellenbereiche aller in X-Richtung benachbarten Parzellen vollständig gefüllt werden können. Insbesondere ist g größer als fünfzig, insbesondere größer als tausend und im Speziellen größer als eine Million. Die Inhalte der X-Parzellenbereiche von in Y-Richtung benachbarten Parzellen sind identisch. Besonders bevorzugt ist es, dass ein Ausschnitt von t aufeinanderfolgenden Basissymbolen in der Gesamtsequenz eine Teilsequenz bildet. Insbesondere bildet jeder Ausschnitt von t aufeinanderfolgenden Basissymbolen der Gesamtsequenz eine Teilsequenz, wobei die aufeinanderfolgenden Basissymbole in Decodier- und/oder Lesereihenfolge aufeinanderfolgen. Insbesondere ist die Gesamtsequenz ausgebildet, dass jede Teilsequenz von t aufeinanderfolgenden Basissymbolen vorwärts gelesen in der Gesamtsequenz nur einmal enthalten ist und jede rückwärts gelesene Teilsequenz in der Gesamtsequenz vorwärts gelesen nicht enthalten ist. Vorzugsweise umfasst eine Teilsequenz mindestens fünf aufeinanderfolgende Basissymbole, insbesondere mindestens zwanzig aufeinanderfolgende Basissymbole und im Speziellen mindestens dreißig Basissymbole. Ferner umfasst die Teilsequenz vorzugsweise weniger als fünfzig Basissymbole und im Speziellen weniger als dreißig Basissymbole. Insbesondere gilt t < g. In einer besonders bevorzugten Ausgestaltung der Erfindung sind die Basissymbole ausgebildet, Ziffern zu einer Zahlenbasis b zu codieren. Die Zahlenbasis b ist vorzugsweise die Basis eines Stellenwertsystems. Vorzugsweise ist die Zahlenbasis b = 2, die Basis eines Dualsystems, wobei die Ziffern des Dualsystems 0 und 1 umfassen. Ferner ist es möglich, dass die Zahlenbasis b = 10 ist und die Basis eines Dezimalsystems bildet, wobei das Dezimalsystem die Ziffern 0, 1, 2, 3, 4, 5, 6, 7, 8 und 9 umfasst. Alternativ ist die Zahlenbasis b = 16, R.405034 - 8 - die Basis eines Hexadezimalsystems, wobei das Hexadezimalsystem die Ziffern 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E und F umfasst. Insbesondere ist die Zahlenbasis b beliebig wählbar, wobei die Ziffern der Zahlenbasis die Elemente 0, 1, ... b – 1 umfasst. Alternativ und/oder ergänzend ist die Zahlenbasis b die Basis eines additiven Zahlensystems, wie beispielsweise des Römischen. In einer besonders bevorzugten Ausgestaltung der Erfindung ist die Zahlenbasis b = 2 gewählt. Insbesondere bildet die gewählte Zahlenbasis b = 2 ein Binärsystem. Das Binärsystem und/oder das Zahlensystem mit der Zahlenbasis b = 2 umfasst zwei Ziffern, insbesondere die Ziffer 0 und die Ziffer 1. Vorzugsweise codieren zwei unterschiedliche Basissymbole die Ziffern 0 und 1 des Binärsystems. Die beiden unterschiedlichen Basissymbole werden von zwei Kreisen gebildet, einem ersten Kreis mit einem Radius R1 und einem zweiten Kreis mit Radius R2. Insbesondere ist der Radius R1 kleiner als der Radius R2 gewählt. Insbesondere ist das Verhältnis von Radius R2 zu Radius R1 größer als die Quadratwurzel aus 2. Beispielsweise ist der Radius R2 so gewählt, dass er kleiner ist als das halbe Rastermaß des Coderasters, sodass zwei im periodischen Raster benachbarte Kreise mit R2 sich nicht tangieren. Dieser Ausgestaltung liegt die Überlegung zugrunde, dass einerseits eine besonders hohe Informationsdichte erreicht wird, andererseits eine sichere Lesbarkeit mit Standardverfahren der Bildverarbeitung wie der Segmentierung mittels Blobanalyse erreicht wird. In einer möglichen Ausgestaltung der Erfindung ist die Gesamtsequenz so ausgebildet, dass eine Quersumme einer Teilsequenz kleiner als die Hälfte der maximal möglichen Quersumme einer Teilsequenz ist. Insbesondere ist die Quersumme für jede beliebige aus der Gesamtsequenz herausgegriffenen Teilsequenz kleiner als die Hälfte der maximal möglichen Quersumme einer Teilsequenz. Beispielsweise ist die Quersumme jeder Teilsequenz mit der Länge t zu einem Zahlensystem mit der Basis b kleiner t·(b – 1)/2. In einer besonders bevorzugten Ausgestaltung der Erfindung umfasst die zweidimensionale Codeanordnung eine invertierte Gesamtsequenz. Die invertierte Gesamtsequenz stellt vorzugsweise eine Invertierung der Gesamtsequenz dar. Vorzugsweise ist die invertierte Gesamtsequenz in die Y-Parzellenbereiche mehrerer in Y-Richtung benachbarter Parzellen eingetragen. Der Eintrag der Basissymbole erfolgt insbesondere entsprechend ihrer Reihenfolge in der R.405034 - 9 - invertierten Gesamtsequenz vorzugsweise in aufsteigender Y-Richtung der Parzellen, innerhalb jeder Parzelle in der zuvor festgelegten Lese- und/oder Decodierreihenfolge in die Y-Parzellenbereiche. Die Anzahl g ist hinreichend groß, so dass die Y-Parzellenbereiche aller in Y-Richtung benachbarten Parzellen vollständig gefüllt werden können. Insbesondere sind die Inhalte der Y- Parzellenbereiche von in X-Richtung benachbarten Parzellen identisch. In einer möglichen Ausgestaltung der Erfindung ist das Basissymbol an der k-ten Stelle der invertierten Gesamtsequenz die codierte Ziffer m(k), wobei die Ziffer m(k) mit der durch das Basissymbol an der k-ten Stelle in der Gesamtsequenz codierten Ziffer n(k) die Relation erfüllt: m(k) = b – n(k) – 1. Beispielsweise bildet die invertierte Gesamtsequenz und die Gesamtsequenz für die Wahl eines Dualsystems mit der Basis b = 2 die Relation: m(k) = 1 – n(k). Definition Aufpunkt: Besonders bevorzugt umfasst der Ausschnitt einen Aufpunkt. Der Aufpunkt ist beispielsweise der Schnittpunkt der optischen Achse der Kamera mit der Ebene, in der die Codeanordnung liegt. Vorzugsweise ist das Verfahren ausgebildet, auf Basis des durch die Sensoreinheit aufgenommenen Bildes die Position der Kamera in Bezug zum Arbeitsbereich zu bestimmen, wie beispielsweise die X- Koordinate (rx) und die Y-Koordinate (ry) des Aufpunkts in einem Koordinatensystem, welches durch den Arbeitsbereich und/oder die Basissymbole und/oder die Codeanordnung aufgespannt wird. Zunächst wird im Rahmen des Verfahrens nur die Grobposition in Form der codierten X-Koordinate und der codierten Y-Koordinate als zwei Freiheitsgrade bestimmt. Bereits die Grobposition ergibt eine belastbare und verwertbare Position für die Grobpositionierung der Kamera. Dadurch, dass die X-Koordinate und die Y-Koordinate in der Codeanordnung als Grobposition bestimmt wird, kann auf die relative Position der Kamera in Bezug auf die Codeanordnung zurückgeschlossen werden. Wird beispielsweise die Grobposition in der unmittelbaren Nähe des Aufpunkts bestimmt, so kann über die Kenntnis des Verlaufs der optischen Achse der Kamera auf die Position der Kamera zurückgeschlossen werden. Eine quasi-exakte Position der Kamera wird dadurch erhalten, dass der Aufpunkt gleich der codierten Position ist und die R.405034 - 10 - Winkel der optischen Achse zu der Codeanordnung bekannt ist. Der einfachste Fall ist, dass die optische Achse senkrecht zu der Codeanordnung ausgerichtet ist. Definition Freiheitsgrade: In einer besonders bevorzugten Ausgestaltung der Erfindung ist das Verfahren ausgebildet, die Position und/oder die Lage des Arbeitsmoduls bezüglich des Arbeitsbereiches in bis zu sechs Freiheitsgraden zu bestimmen. Die Freiheitsgrade sind insbesondere: rx: Ortskoordinate in dem Koordinatensystem der Codeanordnung (als Grobposition und/oder Feinposition). ry: Ortskoordinate in dem Koordinatensystem der Codeanordnung (als Grobposition und/oder Feinposition). Insbesondere beziehen sich rx und ry auf den Aufpunkt, insbesondere den Durchstoßpunkt der optischen Achse durch die Codeanordnung. rz: Abstand von dem Referenzpunkt zu der Kamera entlang der optischen Achse. phiz: Z-Drehwinkel der Kamera um die optische Achse. phix: erster Nickwinkel der optischen Achse zu der Codeanordnung insbesondere in Bezug auf die erste Hauptrichtung. phiy: zweiter Nickwinkel der optischen Achse zu der Codeanordnung insbesondere in Bezug auf die zweite Hauptrichtung. Definition X, Y-Koordinate (rx, ry): Beispielsweise umfassen die sechs Freiheitsgrade der Position und/oder Lage der Kamera zum Arbeitsbereich die Koordinaten X und Y bezüglich des kartesischen Koordinatensystems aufgespannt durch die Basissymbole, in besondere in einem Koordinatensystem (XC, YC) der Codeanordnung in der Ebene der Codeanordnung. Definition Abstand zwischen Aufpunkt und optischen Zentrum der Kamera (rz): Ferner umfassen die 6 Freiheitsgrade den Abstand Z oder rz der Kamera zum Aufpunkt entlang der optischen Achse, wobei der Abstand z.B. den Abstand zwischen dem Aufpunkt und z.B. dem optischen Zentrum des Objektivs der Kamera bezeichnet. R.405034 - 11 - Definition Drehwinkel: Ferner werden die drei unabhängigen Drehwinkel der Kamera in einem Kamerakoordinatensystem bestimmt. Zwei der Drehwinkel werden insbesondere als Zwischenwinkel zwischen der optischen Achse und der Codeanordnung definiert (phix, phiy). Der dritte Drehwinkel (phiz) bezeichnet die Rotation der Kamera um die optische Achse. Definition Koordinatensystem der Codeanordnung: Das Koordinatensystem (XC, YC) der Codeanordnung liegt in der Ebene der Codeanordnung. Definition Koordinatensystem des Bildaufnehmers der Kamera und/oder im Kamerabild: Das Koordinatensystem (XI, YI) des Bildaufnehmers liegt in der Ebene des Bildaufnehmers oder in dem Kamerabild. Definition Kamerakoordinatensystem: Das Koordinatensystem (X, Y, Z) der Kamera hat den Ursprung in dem optischen Zentrum des Objektivs der Kamera, wobei die negative Z-Richtung mit der optischen Achse der Kamera zusammenfällt. Verallgemeinerung: Während vorliegend die Koordinatensysteme hinsichtlich des Ursprungs und der Ausrichtung beispielhaft konkretisiert sind, können auch äquivalente Koordinatensysteme verwendet werden. Definition Verfahren: Das Verfahren ist bei einigen Varianten dadurch gekennzeichnet, dass der X- Koordinatenwert und der Y-Koordinatenwert auf Basis des durch die Kamera aufgenommenen Kamerabildes decodiert und/oder bestimmt wird. In einer möglichen Weiterentwicklung des Verfahrens wird auf Basis des im Bild aufgenommenen Ausschnittes der Codeanordnung die Orientierung des Ausschnittes bezüglich dreier Koordinatenachsen bestimmt. Insbesondere wird die Orientierung des im Bild aufgenommenen Ausschnittes bezüglich der X-Achse und der Y-Achse des kartesischen Koordinatensystems, welches durch die R.405034 - 12 - Basissymbole aufgespannt wird, bestimmt. Alternativ und/oder ergänzend werden die Koordinaten der Position des Aufpunktes in der Codeanordnung durch Decodierung des im Bild enthaltenen Ausschnittes der Codeanordnung bestimmt. In einer besonders bevorzugten Ausgestaltung der Erfindung wird in dem Verfahren die Lage des Arbeitsmoduls zum Arbeitsbereich in bis zu sechs Freiheitsgraden bestimmt. Insbesondere wird dabei die Lage der Kamera im Arbeitsbereich in drei kartesischen Koordinaten X, Y, Z bestimmt, wobei X und Y die Koordinaten des durch die Basissymbole aufgespannten Koordinatensystems sind und Z der Abstand des Arbeitsmoduls zum Arbeitsbereich ist. Ferner werden bei dem Verfahren zum Beispiel die drei Eulerwinkel der Kamera bestimmt. Alternativ und/oder ergänzend wird die zweidimensionale Codeanordnung in Bereichen außerhalb der Automatisierungstechnik, zum Beispiel zum Monitoring von Bewegungsabläufen in Natur und Umwelt, Biologie und Medizin, Architektur, Unterhaltungselektronik und/oder Sensorik eingesetzt. Die allgemeinen Vorteile der Erfindung sind in Abhängigkeit der Variante: Die zentrale Aufgabe der Erfindung ist es, ein leistungsfähiges, zuverlässiges und preiswertes Verfahren zur Lokalisierung und Identifikation von einem oder mehreren Objekten in einem Arbeitsraum zur Verfügung zu stellen in bis zu sechs Freiheitsgraden (6D Lokalisierung = simultane Positionserfassung in 6 Bewegungsfreiheitsgraden). Das Verfahren verarbeitet Bilddaten, die von einem bildgebenden Messsystem, beispielsweise einer Kamera, bereitgestellt werden. Zur Bildaufnahme und zur Ermittlung der Position mit dem erfindungsgemäßen Verfahren kann beispielsweise auch ein Smartphone eingesetzt werden, wobei das Verfahren als Algorithmus in einer Anwendung implementiert ist, die vom Embedded Rechner des Smartphones oder in der Cloud ausgeführt wird. Um die Position eines Objektes in bis zu sechs Freiheitsgraden zu bestimmen, erfasst die Kamera eine zweidimensionale Codeanordnung, die mit dem zu lokalisierenden Objekt verbunden ist. Das erfindungsgemäße Verfahren bietet in Abhängigkeit der Variante folgende Eigenschaften: R.405034 - 13 - - Bis zu voller 6D Positionsinformation: Translation (X,Y,Z) und Rotation (φ_X,φ_Y,φ_Z) - Absolute Positionsinformation (nicht inkrementell), d.h. eine Referenzierungsfahrt wie bei inkrementellen Sensoren entfällt - Sehr großer Messbereich: - in X, Y „nahezu unendlich“, nur durch die Codeanordnung begrenzt. Beispiele: eindeutig codierbare Fläche bei Verwendung des in [B] beschrieben Codes und Punktraster 2,5mm: bei Parzellengröße 5x5 Dots: 2m x 2m bei Parzellengröße 7x7 Dots: 8km x 8km bei Parzellengröße 9x9 Dots: 550.000km x 550.000km in Z: einzige Dimension mit Begrenzung. Anpassbar an die Applikation über Kameraauflösung, Objektiv und Rastermaß der Codeanordnung. in φ_X, φ_Y: aktuell +/- 60° in φ_Z unendlich (0°-360°) - Hohe Messrate, beispielsweise 100Hz – 10.000Hz - Kurze Latenzzeit (Zeit von der Bildaufnahme bis zur Ausgabe des 6D Positionsmesswertes), z.B. 10ms – 100µs. - Hohe Messgenauigkeit in allen sechs Freiheitsgraden: aktuell 1 µm und 0,01° Wiederholbarkeit (bei 3 sigma), bei einem Coderastermaß von 2,5mm - Maximale Lesesicherheit, auch bei lokalen Störungen im Bild oder Schwankungen der Bildhelligkeit - Preiswert realisierbar, sowohl das Sensorsystem als auch die Codeanordnung - Zusatzdaten lesbar, zeitgleich mit der Lokalisierung. Z.B. kann ein ID-Code zur Identifikation des Objektes gelesen werden, der in die Codeanordnung integriert ist. - Skalierbar hinsichtlich Genauigkeit, Messbereich in Z, Redundanz und Messrate durch Änderung von Objektiv, Auflösung Bildaufnehmer, Rastermaß Codeanordnung, Größe des Lesefeldes, Rechenleistung etc. - Einfache Integration in vorhandene Systeme, beispielsweise als Smartphone- App Damit lassen sich auf einfache Weise eine Vielzahl von automatisierungstechnischen Anwendungen realisieren, die bisher nicht oder nicht wirtschaftlich umsetzbar waren, beispielsweise R.405034 - 14 - - Präzise Lokalisierung von Achsen oder Läufern in einem Achssystem oder Robotersystem, um eine Echtzeit-Lageregelung in bis zu sechs Dimensionen zu realisieren. - Aufbau von absoluten Positioniersystemen und Robotern, die ohne Referenzfahrt auskommen - Vereinfachung von Positioniersystemen, da mehrere eindimensional messende Sensoren durch einen mehrdimensional messenden Sensor ersetzt werden können. - Visual Servoing, z.B. zur Nachführung eines Robotergreifers auf ein bewegtes Ziel. - Monitoring und Tracking von mehreren Objekten im Raum durch zyklische Positionsmessung - Aufzeichnung und Analyse von Bewegungsabläufen - Schwingungsanalyse von Maschinen in 6 Dimensionen. - Bestimmung der relativen Lage von zwei Objekten. Eine Kamera, beispielsweise in einem Hand-held device, erfasst in einem Bild zwei Objekte, die jeweils mit einem Punktecode ausgestattet sind. Das vorgeschlagene Verfahren erlaubt die Lokalisierung beider Objekte in Bezug auf das gemeinsame Kamera- Koordinatensystem. Durch eine vektorielle Differenzbildung kann die relative Lage der beiden Objekte zueinander ermittelt werden. Die Position der Kamera wird dabei rechnerisch eliminiert, d.h. das Verfahren ist in weitgehend unabhängig von der Kameraposition. - Bestimmung der relativen Lage von mehr als zwei Objekten, die jeweils mit Kameras und/oder Codeanordnungen ausgerüstet sind. - Aufbau eines Lokalisierungsnetzwerkes, z.B. in einer Fertigungshalle, um mehrere stationäre oder bewegte Objekte relativ zueinander oder relativ zu einem Hallen-Koordinatensystem zu lokalisieren. Beispielsweise lokalisieren sich mehrere autonome Fahrzeuge, die jeweils mit einer Kamera ausgerüstet sind, indem sie eine Codeanordnung erfassen, die an der Hallendecke angebracht ist. Die Codeanordnung weist ein Punktraster mit einer Mehrzahl von Basissymbolen auf, wobei in der Codeanordnung eine Grobposition der Basissymbole codiert ist. Die Basissymbole definieren eine erste und eine dazu unabhängige, zweite Hauptrichtung entlang des Punktrasters. In Abhängigkeit des Betrachtungswinkels R.405034 - 15 - sind die unabhängigen zwei Hauptrichtungen in dem Kamerabild senkrecht oder schiefwinklig zueinander ausgerichtet. In dem Kamerabild ist ein Referenzpunkt angeordnet. Der Referenzpunkt ist als ein Schnittpunkt der optischen Achse mit dem Bildaufnehmer und/oder mit dem Kamerabild ausgebildet. Der Referenzpunkt ist somit in dem Koordinatensystem der Kamera und/oder in dem Kamerabild durch die Kamera vorgegeben. Das Punktraster in dem Kamerabild ist insbesondere perspektivisch verzerrt, so dass zwar die Reihen und Spalten des Punktrasters jeweils geradlinig ausgebildet sind, jedoch die Reihen und Spalten zueinander in der perspektivischen Verzerrung nicht senkrecht, sondern schiefwinklig zueinander angeordnet sind. Aus dem Kamerabild werden in dem Referenzpunkt die folgenden Werte als Kennwerte bestimmt: Es wird ein oder der Drehwinkel Phiz – auch Z-Drehwinkel genannt - der Kamera um die optische Achse der Kamera bestimmt. Ferner wird mindestens ein lokales Rastermaß des Punktrasters in dem Kamerabild bestimmt. Das lokale Rastermaß gibt den Abstand zwischen zwei benachbarten Geraden des Punktrasters in dem Kamerabild an. Das Punktraster in der Codeanordnung ist regelmäßig und/oder mit einem regelmäßigen Rastermaß ausgebildet. Durch die Aufnahme der Codeanordnung mit der Kamera, welches zu dem Kamerabild führt, wird das Rastermaß verzerrt abgebildet, so dass sich das Rastermaß über das Kamerabild ändert. Unter dem lokalen Rastermaß an dem Referenzpunkt wird der Wert des Rastermaßes an dem Referenzpunkt verstanden. Ferner wird mindestens eine erste und eine zweite lokale Winkeldivergenz des Punktrasters in dem Kamerabild bestimmt. Prinzipiell sind in dem Punktraster in der Codeanordnung die Geraden parallel zueinander angeordnet. Durch die Abbildung der Codeanordnung auf das Kamerabild ist jedoch das Punktraster verzerrt, so dass die Geraden jeweils einen Differenzwinkel ungleich 0 zwischen zwei benachbarten Geraden einnehmen. Unter der lokalen Winkeldivergenz des Punktrasters im Kamerabild wird der Differenzwinkel zwischen zwei benachbarten R.405034 - 16 - Geraden des Punktrasters an dem Referenzpunkt verstanden. Es handelt sich dabei um eine erste lokale Winkeldivergenz für die erste Hauptrichtung und eine zweite lokale Winkeldivergenz für die zweite Hauptrichtung. Die genannten Kennwerte beschreiben - physikalisch betrachtet - vollständig drei Freiheitsgrade der Kamera relativ zu der Codeanordnung, nämlich einen Abstand rz zwischen der Codeanordnung und der Kamera an dem Referenzpunkt und/oder entlang der optischen Achse sowie zwei Nickwinkel phix und phy, die einen Zwischenwinkel der optischen Achse und der Ebene der Codeanordnung in der ersten und in der zweiten Hauptrichtung beschreiben. Die genannten Kennwerte sind somit ausreichend, um die genannten drei Freiheitsgrade zu bestimmen. Es ist dabei eine Überlegung der Erfindung, dass die genannten Kennwerte in einfacher Weise aus dem Kamerabild bestimmt werden können. Neben einer „händischen“ Bestimmung der Kennwerte in dem Kamerabild ist es auch möglich, diese über Methoden der digitalen Bildverarbeitung abzuleiten. In Kenntnis der Kennwerte kann auf die genannten drei Freiheitsgrade geschlossen werden. Durch die Auswahl der genannten Kennwerte wird somit ein neues Verfahren zur Bestimmung der genannten Freiheitsgrade vorgeschlagen, welches sich durch die Verwendung von nur wenigen Kennwerten zur Bestimmung der Freiheitsgrade auszeichnet. Dadurch ist es möglich, das Verfahren recheneffizient und hochgenau auszugestalten. Bei einer bevorzugten Ausgestaltung der Erfindung werden die genannten Kennwerte in ein Abbildungsmodell eingesetzt, welches die optische Abbildung der Codeanordnung auf den Bildsensor beschreibt, wobei die Position und - orientierung der Kamera relativ zur Codeanordnung berücksichtigt wird. . Das Modell beschreibt den physikalischen und damit analytischen Zusammenhang zwischen den genannten Kennwerten als Eingangswerte und den drei genannten Freiheitsgraden als Ausgangswerte. Dieser Zusammenhang führt somit zur Bestimmung der drei Freiheitsgrade. Bei einer möglichen Ausgestaltung der Erfindung werden für die drei Freiheitsgrade drei Gleichungen bestimmt, welche ein Gleichungssystem bilden. Es ist dabei zu unterstreichen, dass die drei Gleichungen mögliche Darstellungen R.405034 - 17 - der analytischen Zusammenhänge der Kennwerte und der drei Freiheitsgrade darstellen, andere mathematische oder analytische Darstellungen sind möglich. Über die drei Gleichungen und/oder das Gleichungssystem kann jedoch der physikalische Zusammenhang besonders einfach und kompakt dargestellt werden. Die Gleichung zur Bestimmung des ersten Nickwinkels phix ist insbesondere eine Funktion von der ersten lokalen Winkeldivergenz dalphac0, dem Abstand rz zwischen der Codeanordnung und der Kamera sowie dem zweiten Nickwinkel phiy. Insbesondere wird der erste Nickwinkel über die folgende Gleichung bestimmt: ^^^ tan ^ ^^∙^^ ^ = mit ^ : Rasterabstand des Punktrasters in [m] ^ ∙ ^ ^^^^ ^^^^ ^^^ ^^ Die Gleichung zur Bestimmung des zweiten Nickwinkels phiy ist insbesondere eine Funktion von der zweiten lokalen Winkeldivergenz dalphac1, dem Abstand rz zwischen der Codeanordnung und der Kamera sowie dem ersten Nickwinkel phix. Insbesondere wird der zweite Nickwinkel über die folgende Gleichung bestimmt: Die Gleichung für den Abstand rz zwischen der Codeanordnung und der Kamera ist insbesondere eine Funktion wie folgt: Alt. 1: ^ ∙ ^^^^^ ∙ cos ^^ ^ ∙ ^^^^^ ∙ cos ^^ rot_status ^^^^ = ^ ^ ∙ (cos ^ − tan ^ sin ^ sin ^^^ = ^^ ^ ^ ^ ^^) ^^^ ∙ cos ^^ = 0 Alt.2 ^ ∙ ^ ∙ cos ^ ^ ∙ ^ ∙ cos ^ rot_status ^ = ^^^^ ^ ^ ^^^^ ^ ^^^ ^ ∙ (− sin ^^^ = ^^ ^^ − tan ^^ sin ^^ cos ^^) ^^^ ∙ sin ^^ = 1 Mit b: Bildweite der Kamera im [m] ^^^, ^^^: lokales Rastermaß des Punktrasters im Kamerabild, in [m] R.405034 - 18 - Die Spalten betreffen zwei unabhängige Varianten und die Reihen betreffen zwei Alternativen in Abhängigkeit der Definition und/oder Konvention des Drehwinkels Phiz. Alternativ oder ergänzend wird der Abstand zwischen der Codeanordnung und der Kamera als Mittelwert der Varianten und/oder Funktionen mit der folgenden Gleichung bestimmt: ^^^ + ^ ^ = ^ ^^^ ^ 2 Prinzipiell kann das Gleichungssystem analytisch gelöst werden. Bei einer bevorzugten Weiterbildung der Erfindung wird das Gleichungssystem, umfassend die drei Gleichungen, iterativ gelöst. Dabei werden zunächst Startwerte vorgegeben und dann in einer Optimierungsroutine in iterativen Schritten die Freiheitsgrade bestimmt. Bevorzugt wird Aus dem Kamerabild eine insbesondere zweidimensionale Basissymbol-Matrix ermittelt, wobei jedem Rasterpunkt der Codeanordnung ein Eintrag in der Basissymbol-Matrix zugeordnet ist und wobei in der Basissymbol- Matrix die Mittelpunktsposition der Basissymbole in dem Kamerabild eingetragen ist. Somit verweist ein Eintrag in der Basissymbol-Matrix auf die Position des Basissymbols in dem zugeordneten Rasterpunkt und zwar insbesondere in einem Koordinatensystem des Bildaufnehmers und/oder in einem Koordinatensystem des Kamerabilds. Das Punktraster in dem Kamerabild ist insbesondere perspektivisch verzerrt, so dass zwar die Reihen und Spalten des Punktrasters jeweils geradlinig ausgebildet sind, jedoch die Reihen und Spalten zueinander in der perspektivischen Verzerrung im Allgemeinen schiefwinklig zueinander angeordnet sind. Daneben kann es noch zu einer optischen Verzeichnung kommen, wobei diese optional durch eine Rektifizierung kompensiert werden kann. Aus den Daten der Basissymbol-Matrix wird eine erste Geradenfunktion in einem Koordinatensystem des Kamerabilds für eine erste Gerade mit einem ersten R.405034 - 19 - Funktionsargument bestimmt. Die erste Gerade ist unabhängig vom ersten Funktionsargument stets parallel zu der ersten Hauptrichtung des Punktrasters, wenn die erste Gerade in das Koordinatensystem der Codeanordnung gedanklich transferiert wird. Durch Änderung des ersten Funktionsarguments wird die erste Gerade parallel in der zweiten Hauptrichtung in dem Koordinatensystem der Codeanordnung verschoben. Somit kann durch Änderung des ersten Funktionsarguments die Gerade z. B. auf eine Reihe des Punktrasters gelegt werden und zwar sowohl in dem Koordinatensystem der Codeanordnung als auch in dem Koordinatensystem des Kamerabilds. Insbesondere kann dies wie folgt umgesetzt werden: Ausgangssituation: a) Die Mittelpunkte der Basissymbole bilden in der Codeebene ein zweidimensionales Punktraster mit regelmäßig angeordneten geradlinigen Reihen und Spalten b) Die Kamera bildet die Codeebene perspektivisch verzerrt auf dem Bildsensor ab. Im Kamerabild erscheinen die Reihen im Allgemeinen als aufgefächerte Linien, die einen gemeinsamen Fluchtpunkt besitzen. Gleiches gilt auch für die Spalten. c) Durch Verzeichnung des Objektives erscheinen die Reihen und Spalten im Kamerabild als gekrümmte Linien. Verfahrensschritte im Kamera-Koordinatensystem: a) Durch Rektifizierung wird die Verzeichnung des Objektives mathematisch eliminiert, die gekrümmten Linien werden in gerade Linien überführt. b) Durch lineare Interpolation werden Geraden an die Reihen angepasst und mit einem ganzzahligen Index als Funktionsargument entsprechend ihrer Abfolge nummeriert. Sie bilden ein erstes Geradenbündel. Sinngemäß wird mit den Spalten verfahren, sie bilden ein zweites Geradenbündel. c) Jede Gerade wird durch einen Geradenwinkel und einen Achsenabschnittswert beschrieben. Die Geradenwinkel eines Bündels bilden eine Zahlenfolge, die durch quadratische Interpolation angenähert wird. Als Funktionsargument dient der ganzzahlige Geradenindex. Das Polynom besitzt drei Interpolationsparameter. Sinngemäß wird mit dem Achsenabschnittswert R.405034 - 20 - verfahren, woraus sich drei weitere Interpolationsparameter ergeben. Jedes Geradenbündel wird also von sechs Interpolationsparametern vollständig und kompakt beschrieben. d) Durch Einsetzen rationaler Funktionswerte in die Interpolationsfunktion können auch Geraden berechnet werden, die zwischen zwei Reihen oder Spalten liegen. Alternativ oder ergänzend wird auf Basis der Basissymbol-Matrix eine zweite Geradenfunktion in einem Koordinatensystem des Kamerabilds für eine zweite Gerade mit einem zweiten Funktionsargument bestimmt. Die zweite Gerade ist unabhängig vom zweiten Funktionsargument stets parallel zu der zweiten Hauptrichtung des Punktrasters, wenn die zweite Gerade in das Koordinatensystem der Codeanordnung transferiert wird. Durch Änderung des zweiten Funktionsarguments wird die zweite Gerade parallel in der ersten Hauptrichtung in dem Koordinatensystem der Codeanordnung verschoben. Somit kann durch Änderung des zweiten Funktionsarguments die Gerade z. B. auf eine Reihe des Punktrasters gelegt werden und zwar sowohl in dem Koordinatensystem der Codeanordnung als auch in dem Koordinatensystem des Kamerabilds. Es ist darauf hinzuweisen, dass die Begriffe Reihe und Spalte insbesondere nur zur Benennung dienen und keine spezifische Ausrichtung des Punktrasters bedeuten. Aus den Geradenfunktionen kann die lokale Winkeldivergenz und/oder das lokale Rastermaß bestimmt werden. Insbesondere werden diese bestimmt, indem die benachbarten Geraden zu dem Referenzpunkt bestimmt werden und aus den benachbarten Geraden die Kennwerte abgeleitet werden. Es ist dabei eine weiterführende Überlegung, dass auf dem Weg von dem Kamerabild zu dem mindestens einen Freiheitsgrad die Datenmenge reduziert werden soll, um eine schnellere und/oder effizientere Berechnung des mindestens einen Freiheitsgrad zu ermöglichen. Während das Kamerabild beispielsweise mit einer Bildgröße von 200 x 200 Pixel noch 40.000 Werte aufweist, ist die Basissymbol-Matrix bereits auf die Position reduziert und weist dementsprechend bei einem Ausschnitt des Kamerabilds z.B. mit einer Kantenlänge des Punktrasters R.405034 - 21 - von 15 Basissymbolen nur noch 225 Werte für die Positionen auf. Dadurch, dass die mindestens eine Geradenfunktion abgeleitet wird, wird die Datenmenge auf die Parameter der Geradenfunktion reduziert. Hierbei hat sich gezeigt, dass pro Geradenfunktion 6 Parameter optional plus ein Datum ausreichend ist, um den wesentlichen Informationsgehalt der Basissymbol- Matrix bzw. des Kamerabilds auf den Weg zu dem mindestens einen Freiheitsgrad ausreichend ist, so dass die Datenmenge in dem Beispiel von 225 Einträgen auf 12 bzw.14 Einträge reduziert wird. Dadurch wird die Berechnung des mindestens einen Freiheitsgrads vom Aufwand betrachtet signifikant verringert. Ein weiterer Vorteil der Umsetzung ist, dass die Reihen und die Spalten der Basissymbol-Matrix in der Codeanordnung jeweils zueinander parallel und regelmäßig beabstandet angeordnet sind, so dass durch die Ableitung der Geradenfunktion in dem Kamerabild auch eine Art Mittelung über die Basissymbol- Matrix durchgeführt wird, wobei die Geradenfunktionen eine gemittelte Information der Basissymbol-Matrix beschreiben. Durch die Geradenfunktionen wird eine Verdichtung der Informationen bei gleichzeitiger Verbesserung des Informationsgehalts durchgeführt. Damit erlaubt das erfindungsgemäße Verfahren eine recheneffiziente Umsetzung des Verfahrens zur Ermittlung von mindestens einem Freiheitsgrad der Kamera relativ zu der Codeanordnung aus dem Kamerabild der Kamera. Anwendungstechnisch betrachtet kann die Ermittlung z.B. auf einem Mikrocontroller durchgeführt werden, welcher den mindestens einen Freiheitsgrad pro Sekunde mindestens 100 mal bestimmen kann. Auf diese Weise ist es möglich Echtzeitanwendungen mit dem Verfahren z.B. in der Fertigung durchzuführen. Bei einer bevorzugten Weiterbildung wird die erste Geradenfunktion auf Basis von mindestens zwei Reihen, vorzugsweise von mehr als zwei Reihen, insbesondere auf Basis von allen Reihen der Basissymbol-Matrix bestimmt. Alternativ oder ergänzend wird die zweite Geradenfunktion auf Basis von mindestens zwei Spalten, vorzugsweise von mehr als zwei Spalten und insbesondere von allen Spalten der Basissymbol-Matrix bestimmen. Durch diese Weiterbildung wird unterstrichen, dass die Geradenfunktion eine gemittelte und/oder verdichtete Information über mehrere Reihen bzw. Spalten trägt. R.405034 - 22 - Bei einer bevorzugten Konkretisierung der Erfindung wird für die Reihen entlang der ersten Hauptrichtungen jeweils eine erste Ausgleichsgerade pro Reihe gebildet. Die erste Geradenfunktion ist auf Basis einer Mehrzahl der ersten Ausgleichsgeraden gebildet. Dadurch, dass durch eine Reihe eine erste Ausgleichsgerade gebildet wird, kann diese erste Ausgleichsgerade an den Verlauf der Reihe angepasst werden, so dass die erste Ausgleichsgerade bereits eine gemittelte und/oder verdichtete Information der zugrundeliegenden Reihe bildet. Die erste Geradenfunktion wird auf Basis einer Mehrzahl der ersten Ausgleichsgeraden gebildet, wobei hier durch eine zweite Mittelung oder Verdichtung erfolgt, so dass die erste Geradenfunktion durch eine zweifache Mittelung der Ursprungsinformationen gebildet ist. Alternativ oder ergänzend wird für die Spalten entlang der zweiten Hauptrichtungen jeweils eine zweite Ausgleichsgerade pro Spalte gebildet. Die zweite Geradenfunktion ist auf Basis einer Mehrzahl der zweiten Ausgleichsgeraden gebildet. Dadurch, dass durch eine Spalte eine zweite Ausgleichsgerade gebildet wird, kann diese zweite Ausgleichsgerade an den Verlauf der Spalte angepasst werden, so dass die zweiet Ausgleichsgerade bereits eine gemittelte und/oder verdichtete Information der zugrundeliegenden Spalte bildet. Die zweite Geradenfunktion wird auf Basis einer Mehrzahl der zweiten Ausgleichsgeraden gebildet, wobei hier durch eine zweite Mittelung oder Verdichtung erfolgt, so dass die zweite Geradenfunktion durch eine zweifache Mittelung der Ursprungsinformationen gebildet ist. Bei einer bevorzugten Realisierung ist das erste Funktionsargument als ein ganzzahliger erster Zählwert der Reihen und/oder das zweite Funktionsargument als ein ganzzahliger zweiter Zählwert der Spalten ausgebildet. Für einen ganzzahligen ersten Zählwert bei der ersten Geradenfunktion entspricht somit die erste Gerade einer ersten Ausgleichsgerade. In gleicher Weise entspricht bei einem ganzzahligen zweiten Zählwert als zweites Funktionsargument in der zweiten Geradenfunktion die zweite Gerade eine der Spalten der Basissymbol- Matrix. Allerdings ist die erste Gerade und/oder die zweite Gerade nicht exakt die erste Ausgleichsgerade bzw. die zweite Ausgleichsgerade, da die Geradenfunktion die zweite Mittelung/Verdichtung durchlaufen hat, so dass es sich R.405034 - 23 - um eine korrigierte erste Ausgleichsgerade bzw. korrigierte zweite Ausgleichsgerade handelt. Bei einer bevorzugten Umsetzung werden die Ausgleichsgeraden durch einen Geradenwinkel als Schnittwinkel und mindestens einem Achsenschnittpunkt mit einem oder dem Koordinatensystem des Bildaufnehmers und/oder von dem Kamerabild beschrieben. Für die Ausgleichsgerade sind der Geradenwinkel und der Achsenschnittpunkt von mindestens oder genau einer Koordinatenachse des Koordinatensystems ausreichend, um die Ausgleichsgerade eindeutig in dem Koordinatensystem zu bestimmen. Durch diese Umsetzung werden die Positionen der Ausgleichsgeraden in dem Punktraster der zugehörigen Reihe bzw. Spalte auf zwei Werte reduziert. Bei einer bevorzugten Weiterbildung wird die Geradenfunktion durch eine Kombination von einer Geradenwinkelfunktion des Geradenwinkels abhängig von dem Funktionsargument der Geradenfunktion und einer Achsenschnittpunktfunktion des Achsenschnittpunktes abhängig von dem Funktionsargument der Geradenfunktion gebildet. Die Geradenfunktion wird somit ebenfalls durch den Geradenwinkel und mindestens einen Achsenschnittpunkt bestimmt. Es ist bevorzugt, dass die Geradenwinkelfunktion als ein Polynom zweiten Grades und/oder die Achsenschnittpunktfunktion als Polynom zweiten Grades ausgebildet ist, wobei die Polynome als Funktionsargument das Funktionsargument der jeweiligen Geradenfunktion aufweisen. Hierdurch wird erreicht, dass der Geradenwinkel und/oder der Achsenschnittpunkt in Abhängigkeit des Funktionsarguments bestimmt werden kann. Durch die Wahl als Polynom zweiten Grades kann die Annäherung besonders einfach durchgeführt werden, so dass die Recheneffizienz weiter erhöht ist. Bei einer bevorzugten Konkretisierung wird in Abhängigkeit des Geradenwinkels der Geradenfunktion mit dem Koordinatensystem derjenige Achsenschnittpunkt der Koordinatenachse des Koordinatensystems ausgewählt, welcher zu einem kleineren Zwischenwinkel zu einer Senkrechten auf die jeweilige Koordinatenachse führt. Ferner wird der Geradenfunktion ein Datum zugeordnet, R.405034 - 24 - welches die ausgewählte Koordinatenachse codiert. Es ist dabei eine Überlegung, dass zur Beschreibung der Geraden nur der Achsenschnittpunkt von einer einzigen Koordinatenachse notwendig ist, nicht jedoch die Achsenschnittpunkte mit beiden Koordinatenachsen. Um eine möglichst große Aussagekraft zu erreichen, wird derjenige Achsenschnittpunkt gewählt, dessen zugeordneter Kreuzungswinkel zu der gekreuzten Koordinatenachse mehr senkrecht steht. Bei einer Weiterbildung der Erfindung wird auf Basis der Basissymbole der Basissymbol-Matrix oder einer Teilmenge davon die Grobposition von mindestens einem der Basissymbole in der Codeanordnung bestimmt. Insbesondere wird ein Lesefeld in dem Kamerabild und/oder flächigen Punktraster definiert und eine dazu korrespondierende Basissymbol-Matrix gebildet wird, wobei jedem Punkt im Lesefeld ein Eintrag in der Basissymbol-Matrix zugeordnet ist, wobei in der Basissymbol-Matrix die Position und die insbesondere normierte Fläche oder das Datum der Basissymbole eingetragen ist, wobei auf Basis der Basissymbol-Matrix die Grobposition des Koordinatensystems des Punktrasters und/oder von mindestens einem Basissymbols in der Codeanordnung als die zwei Freiheitsgrade ermittelt wird. Es wird bevorzugt eine erste Achsenschnittpunktfunktion in dem Koordinatensystem des Kamerabilds von einer ersten Geraden gebildet. Die erste Gerade ist in dem Koordinatensystem der Codeanordnung parallel zu der ersten Hauptrichtung des Punktrasters ausgerichtet. Die Achsenschnittpunktfunktion weist ein erstes Funktionsargument auf, wobei durch Änderung des ersten Funktionsarguments die erste Gerade in dem Koordinatensystem der Codeanordnung parallel in der zweiten Hauptrichtung verschoben wird. Die erste Achsenschnittpunktfunktion definiert in Abhängigkeit des ersten Funktionsarguments einen ersten Achsenschnittpunkt entlang einer ersten Achse des Koordinatensystems des Kamerabilds, wobei die erste Achse durch den Referenzpunkt verläuft. Durch eine Verschiebung der ersten Gerade durch Änderung des ersten Funktionsarguments in dem Koordinatensystem der Codeanordnung wird somit -perspektivisch verzerrt - die erste Gerade in dem Koordinatensystem der Kamera und/oder des Kamerabilds derart verschoben, dass der Achsenschnittpunkt entlang der ersten Achse wandert. R.405034 - 25 - Ferner wird bevorzugt eine zweite Achsenschnittpunktfunktion in dem Koordinatensystem des Kamerabilds von einer zweiten Geraden gebildet. Die zweite Gerade ist in dem Koordinatensystem der Codeanordnung parallel zu der zweiten Hauptrichtung des Punktrasters ausgerichtet. Die Achsenschnittpunktfunktion weist ein zweites Funktionsargument auf, wobei durch Änderung des zweiten Funktionsarguments die zweite Gerade in dem Koordinatensystem der Codeanordnung parallel in der zweiten Hauptrichtung verschoben wird. Die zweite Achsenschnittpunktfunktion definiert in Abhängigkeit des zweiten Funktionsarguments einen zweiten Achsenschnittpunkt entlang einer zweiten Achse des Koordinatensystems des Kamerabilds, wobei die zweite Achse durch den Referenzpunkt verläuft. Durch eine Verschiebung der zweiten Gerade durch Änderung des zweiten Funktionsarguments in dem Koordinatensystem der Codeanordnung wird somit - perspektivisch verzerrt - die zweite Gerade in dem Koordinatensystem der Kamera und/oder des Kamerabilds derart verschoben, dass der Achsenschnittpunkt entlang der zweiten Achse wandert. Auf Basis der Achsenschnittpunktfunktionen wird das erste und das zweite Funktionsargumente derart bestimmt, dass der Referenzpunkt den ersten und den zweiten Achsenschnittpunkt bildet. Bildlich gesprochen wird das erste Funktionsargumente solange variiert, bis die erste Gerade in dem Koordinatensystem der Kamera und/oder des Kamerabilds durch den Referenzpunkt läuft und/oder der erste Achsenschnittpunkt auf den Referenzpunkt liegt. In gleiche Weise wird das zweite Funktionsargumente solange variiert, bis die zweite Gerade in dem Koordinatensystem der Kamera und/oder des Kamerabilds durch den Referenzpunkt läuft und/oder der zweite Achsenschnittpunkt auf den Referenzpunkt liegt. Nachfolgend wird auf Basis des ersten und des zweiten Funktionsarguments und der Grobposition die Feinposition des Referenzpunkts in dem Koordinatensystem der Codeanordnung in der Ebene der Codeanordnung als weiterer Freiheitsgrad bestimmt. Gedanklich betrachtet wird zunächst die Grobposition des Basissymbols in dem Koordinatensystem der Codeanordnung bestimmt und nachfolgend eine Verschiebung des Basissymbols auf den Referenzpunkt auf Basis der Funktionsargumente bestimmt. R.405034 - 26 - Das Verfahren hat den Vorteil, dass die Grobposition des Basissymbols durch Dekodierung der Codeanordnung bestimmt werden kann. Nachfolgend werden auf Basis der Achsenschnittpunktfunktionen die Verschiebung bis zu dem Referenzpunkt berechnet, wobei durch die Nutzung der Achsenschnittpunktfunktionen die Berechnung mit wenigen Berechnungswerten und damit recheneffizient durchgeführt werden kann. Dies hat den Vorteil, dass das Verfahren in Echtzeitanwendungen auch bei digitalen Datenverarbeitungseinrichtung, insbesondere Mikrocontrollern, mit geringer Rechenleistung durchgeführt werden kann. Bei einer bevorzugten Ausgestaltung der Erfindung ist das erste Funktionsargument als ein Zählwert der Reihen und/oder das zweite Funktionsargumente als ein Zählwert der Spalten in dem Punktraster ausgebildet. Bildlich gesprochen wird die Position des Basissymbols, dessen Grobposition bekannt ist, durch Ganze Schritte oder Teilschritte im Rastermaß des Punktrasters auf den Referenzpunkt verschoben. Wie bereits diskutiert, ist der Referenzpunkt besonders bevorzugt als ein Schnittpunkt der optischen Achse der Kamera mit dem Bildaufnehmer ausgebildet. Der Referenzpunkt ist somit als eine konstruktive Position in dem Koordinatensystem der Kamera und/oder des Kamerabilds festgelegt. Es ist aber nicht zwingend notwendig, dass der Referenzpunkt und/oder der Schnittpunkt genau mittig in dem Kamerabild und/oder auf dem Bildaufnehmer der Kamera angeordnet ist. Vielmehr kann über eine Kalibrierung die Position des Referenzpunkt definiert werden. Bei einer möglichen Ausgestaltung der Erfindung ist die Achsenschnittpunktfunktion als eine Geradenfunktion zur Beschreibung der Geraden ausgebildet, insbesondere wie diese zuvor beschrieben wurde. In diesem Fall umfasst die Achsenschnittpunktfunktion eine vollständige mathematische Beschreibung der Gerade in Abhängigkeit der jeweiligen Funktionsargumente. Alternativ hierzu wird eine Geradenfunktion verwendet, insbesondere wie diese zuvor beschrieben wurde, welche durch eine Kombination von einer Geradenwinkelfunktion des Geradenwinkels als Schnittwinkel der Gerade mit einer der Achsen des Koordinatensystems des Kamerabilds abhängig von dem R.405034 - 27 - Funktionsargument und der Achsenschnittpunktfunktion gebildet ist. Die Gerade wird somit durch einen Achsenschnittpunkt und durch einen Geradenwinkel vollständig beschrieben. Diese Aufteilung hat den Vorteil, dass zur Bestimmung der Feinposition nur die Achsenschnittpunktfunktion bestimmt werden muss und/oder ausgewertet werden muss und zwar ohne Informationen zu dem Geradenwinkel. Diese Ausgestaltung erhöht weiter die Effizienz des Verfahrens. Auf Basis der Funktionsargumente und einem bekannten Rastermaß des Punktrasters kann dann die Feinposition bestimmt werden. Bildlich gesprochen wird die Feinposition so bestimmt, dass zum Beispiel ausgehend von der Position des Basissymbols mit der bekannten Grobposition ein Bruchteil eines Rastermaßes in der ersten Hauptrichtung und ein Bruchteil des Rastermaßes in der zweiten Hauptrichtung gegangen werden muss, um zu dem Referenzpunkt in dem Koordinatensystem der Codeanordnung zu gelangen. Diese Darstellung ist besonders recheneffizient. Es wird bevorzugt vorgeschlagen, dass das erste und/oder das zweite Funktionsargument der Geradenfunktion derart bestimmt wird, dass der erste bzw. die zweite Gerade den Referenzpunkt schneidet bzw. schneiden. Beispielsweise werden die erste und die zweite Gerade durch Variation des Funktionsarguments derart verschoben, dass diese den Referenzpunkt schneiden. Ein Drehwinkel Phiz der Kamera um die optische Achse wird als ein Freiheitsgrad der Kamera relativ zu der Codeanordnung auf Basis der ersten und/oder der zweiten Geraden abgeleitet, welche den Referenzpunkt schneiden. Die Ableitung ist möglich, da die Geradenfunktionen in dem Kamerabild definiert sind. Somit ist es möglich, den Drehwinkel Phiz als Geradenwinkel in dem Koordinatensystem der Kamera und/oder des Kamerabilds zu bestimmen. Theoretische Überlegungen haben ergeben, dass der Geradenwinkel in dem Koordinatensystem der Kamera und/oder des Kamerabilds dem Drehwinkel Phiz der Kamera um die Schwenkachse entspricht und zwar ohne dass eine Transformation der Koordinatensysteme von dem Koordinatensystem der Kamera und/oder des Kamerabilds zu dem Koordinatensystem der Codeanordnung durchgeführt werden muss. Somit ist es auf Basis von mindestens einer Geradenfunktion möglich, den Drehwinkel Phiz in einfacher Weise zu bestimmen. Mit der Weiterbildung wird somit ein Weg aufgezeigt, wie der Drehwinkel Phiz höchst R.405034 - 28 - genau und ohne großen Rechenaufwand bestimmt werden kann. Dabei ist hervorzuheben, dass die Bestimmung dadurch besonders einfach gelingt, wenn als Referenzpunkt der Schnittpunkt der optischen Achse der Kamera durch das Kamerabild bzw. durch den Bildaufnehmer gewählt wird. Bei dieser speziellen Konstellation kann der Drehwinkel Phiz besonders einfach abgeleitet werden. Damit erlaubt das Verfahren eine einfache und zugleich hochgenaue Bestimmung des Drehwinkel Phiz aus dem Kamerabild, welcher dann als ein Freiheitsgrad der Kamera relativ zu der Codeanordnung zur Verfügung steht. Bei einer bevorzugten Ausbildung der Erfindung wird aus dem Kamerabild die Basissymbol-Matrix ermittelt, wobei in der Basissymbol-Matrix die Position der Basissymbole in dem Kamerabild eingetragen ist. Somit verweist eine Stelle in der Basissymbol-Matrix auf die Position des Basissymbols in dem Punktraster und zwar insbesondere in einem Koordinatensystem des Bildaufnehmers und/oder in einem Koordinatensystem des Kamerabilds. Die erste und/oder die zweite Geradenfunktion wird bevorzugt auf Basis der Basissymbol-Matrix bestimmt. Besonders bevorzugt wird jeweils eine Geradenfunktion verwendet, welche durch eine Kombination von einer Geradenwinkelfunktion des Geradenwinkels als Schnittwinkel der Gerade mit einer der Achsen des Koordinatensystems des Kamerabilds abhängig von dem Funktionsargument und einer Achsenschnittpunktfunktion gebildet ist. Die Achsenschnittpunktfunktion definiert in Abhängigkeit des ersten Funktionsarguments einen Achsenschnittpunkt entlang einer Achse des Koordinatensystems des Kamerabilds, wobei die Achse durch den Referenzpunkt verläuft. Durch eine Verschiebung der Gerade durch Änderung des ersten Funktionsarguments in dem Koordinatensystem der Codeanordnung wird somit -perspektivisch verzerrt - die Gerade in dem Koordinatensystem der Kamera und/oder des Kamerabilds derart verschoben, dass der Achsenschnittpunkt entlang der Achse wandert. Die eine Geradenfunktion bzw. Kombination von Geradenwinkelfunktion und Achsenschnittpunktfunktion ist der ersten Hauptrichtung und die andere Geradenfunktion bzw. Kombination von Geradenwinkelfunktion ist der zweiten Hauptrichtung zugeordnet. Der Vorteil der Aufteilung ist, dass das Funktionsargument über die Achsenschnittpunktfunktion bestimmt werden kann und nachfolgend der Drehwinkel Phiz auf Basis des bestimmten Funktionsarguments aus der Geradenwinkelfunktion ausgelesen werden kann. R.405034 - 29 - Bei einer bevorzugten Weiterbildung der Erfindung wird aus der ersten Geradenfunktion ein erster Wert für den Drehwinkel Phiz und aus der zweiten Geradenfunktion ein zweiter Wert für den Drehwinkel Phiz bestimmt und nachfolgend der Drehwinkel Phiz als Mittelwert der beiden Werte bestimmt wird. Dadurch, dass der Drehwinkel Phiz aus beiden Geradenfunktionen unabhängig bestimmt werden kann, ergeben sich zwei unabhängige Werte, die dann zur Ermittlung des Drehwinkels Phiz gemittelt werden können, um die Messgenauigkeit zu verbessern. Alternativ hierzu kann auch eine Plausibilitätskontrolle durchgeführt werden und einer der beiden Werte verworfen werden, wenn dieser nicht plausibel oder nicht valide ist. Bevorzugt wird im Rahmen des Verfahrens ein Startfeld bestimmt. Das Startfeld weist mindestens drei, bevorzugt zueinander benachbarte Basissymbole auf, die in einem Winkel zueinander angeordnet sind. Die Verbindungslinien zwischen den Basissymbolen des Startfelds definieren zwei unabhängige Hauptrichtungen entlang des Punktrasters in dem Kamerabild. Für den Fall, dass das Startfeld genau drei Basissymbole aufweist, so sind diese beispielsweise in einem Winkel zueinander angeordnet. Sie legen ein Koordinatensystem des flächigen Punktrasters fest, wobei eines der mindestens drei Basissymbole den Ursprung des Koordinatensystems bildet. Bei einer bevorzugten Weiterbildung der Erfindung weist das Startfeld neun Basissymbole auf, welche quadratisch und/oder rechteckig angeordnet sind. Insbesondere weist das Startfeld eine Kantenlänge mit drei Basissymbolen auf. Die Basissymbole des Startfelds sind valide Basissymbole. Unter validen Basissymbolen werden insbesondere die Basissymbole verstanden, welche im Rahmen des Verfahrens wahlweise als valide definiert oder aufgrund von Bildmerkmalen als valide Basissymbole klassifiziert und/oder durch Auffinden der Basissymbole und erfolgreichem Verarbeiten der Basissymbole mit einem verwertbaren Bearbeitungsergebnis als valide gesetzt sind. Bildstrukturen, die nicht als valide Basissymbole klassifiziert werden, werden als Bildstörung interpretiert und von der weiteren Verarbeitung ausgeschlossen. In dem Verfahren werden in einem Suchschritt ausgehend von mindestens einem validen Basissymbol entlang der Hauptrichtungen weitere insbesondere valide Basissymbole gesucht. R.405034 - 30 - Bei einer erfolgreichen Suche, insbesondere bei einem Auffinden von weiteren Basissymbolen, werden die weiteren Basissymbole als valide Basissymbole gekennzeichnet. Es ist vorgesehen, dass der Suchschritt mehrfach durchgeführt wird. Für den Fall, dass in einem Suchschritt neue weitere Basissymbole als valide Basissymbole aufgefunden wurden, erfolgt der Suchschritt wahlweise von dem Basissymbol des Startfelds oder von den neu aufgefundenen, validen Basissymbolen aus. Auf diese Weise wird das Punktraster ausgehend von dem Startfeld mit validen Basissymbolen schrittweise um weitere valide Basissymbole ergänzt. Der Suchschritt wird so lange wiederholt, bis ausreichend viele valide Basissymbole aufgefunden wurden, insbesondere so dass eine Decodierung erfolgen kann. Auf Basis der validen Basissymbole oder einer ausgewählten Teilmenge davon wird, insbesondere durch Dekodierung der validen Basissymbole, die Grobposition von mindestens einem der Basissymbole in der Codeanordnung als zwei Freiheitsgrade der Kamera relativ zu der Codeanordnung bestimmt. Insbesondere werden die validen Basissymbole oder eine Teilmenge davon decodiert, wobei aus der decodierten Grobposition und optional ergänzend Groborientierung des Koordinatensystems des Punktrasters im Kamerabild mindestens ein Freiheitsgrad der Kamera relativ zu der Codeanordnung ermittelt wird. Es ist dabei eine weiterführende Überlegung, dass die Basissymbole in der Codeanordnung und/oder im Kamerabild beispielsweise mit flächenhaften Funktionen der Bildverarbeitung gesucht und gefunden werden können. Allerdings erfordert das Auffinden von Basissymbolen zum Beispiel mit einer Blobanalyse oder der musterbasierten Suche (pattern matching) einen häufigen Zugriff auf die Pixel des Kamerabilds und führt dadurch zu einer aufwendigen Bildverarbeitung. Dadurch, dass ausgehend von dem Suchfeld, welches die zwei Hauptrichtungen des Punktrasters und damit das Punktraster, insbesondere das Koordinatensystem des Punktrasters, in dem Kamerabild definiert, ausschließlich in den Hauptrichtungen gesucht wird, kann das a priori Wissen über den Aufbau R.405034 - 31 - des Punktrasters genutzt werden, so dass die Suche nicht flächenorientiert, sondern linienorientiert entlang der Hauptrichtungen erfolgt. Praktisch betrachtet ist es ausreichend, ausgehend von einem validen Basissymbol in der Hauptrichtung entlang einer Linie ein weiteres Basissymbol zu suchen. Es ist offensichtlich, dass durch die Reduktion von einer Flächensuche zu einer Liniensuche die Anzahl der Pixelzugriffe und/oder der Aufwand für die Bildverarbeitung deutlich reduziert wird. Somit ermöglicht das erfindungsgemäße Verfahren eine sehr effiziente Umsetzung des Verfahrens. Bei einer bevorzugten Weiterbildung der Erfindung wird zu den Basissymbolen die jeweilige Mittelpunktsposition, insbesondere die Schwerpunktsposition des Basissymbols in dem Kamerabild bestimmt. Damit wird auf Basis der validen Basissymbole eine Vielzahl von Kreuzungspunkten in dem Punktraster ermittelt. Es ist vorgesehen, dass der Suchschritt ausgehend von der Mittelpunktsposition des jeweiligen validen Basissymbols, insbesondere eine linienorientierte Suche in eine vorgegebene Suchrichtung, im Speziellen entlang einer der Hauptrichtungen, durchgeführt wird. Während das Auffinden eines Basissymbols zunächst nur eine ungefähre Bestimmung der Position des Basissymbols in dem Punktraster und/oder Kamerabild erlaubt, wird durch die Erfassung der Mittelpunktsposition die genaue Position in dem Punktraster und/oder Kamerabild ermittelt und damit das Punktraster konkretisiert. Es ist vorteilhaft, dass der insbesondere linienorientierte Suchschritt von der Mittelpunktsposition des Basissymbols aus erfolgt, da hierdurch ein versehentliches Verfehlen benachbarter Basissymbole verhindert wird. Bei einer bevorzugten Weiterbildung der Erfindung werden auf Basis des Startfelds und/auf Basis von weiteren validen Basissymbolen zwei Verbindungsvektoren in den zwei unabhängigen Hauptrichtungen entlang des Punktrasters in dem Kamerabild bestimmt. Durch die Bestimmung der Verbindungsvektoren kann ausgehend von dem bekannten validen Basissymbol im Rahmen einer Linearkombination der Verbindungsvektoren die Position des gesuchten nächstliegenden und/oder benachbarten Basissymbols durch Extrapolation abgeschätzt werden. R.405034 - 32 - Besonders bevorzugt erfolgt die Bestimmung der Mittelpunktsposition eines Basissymbols derart, dass ein Anfangspunkt in den Basissymbolen über mehrere Zwischenschritte zu einer Mittelpunktsposition entlang der Hauptrichtungen verschoben wird, bis als Mittelpunktsposition die Position aufgefunden wird, in der die Mittelpunktsposition in den Hauptrichtungen mittig in dem Basissymbol angeordnet ist. Dadurch, dass die Anfangsposition zur Mittelpunktsposition so verschoben wird, dass diese stets mittig in den Hauptrichtungen liegt, ist es nur notwendig, für jeden Verschiebeschritt, in den Hauptrichtungen die Begrenzung des Basissymbols zu suchen und nachfolgend die Anfangsposition in den Mittelpunkt zwischen den Begrenzungen zu verschieben. Im Beispiel eines kreisförmigen Basissymbols wird ausgehend von einer Anfangsposition innerhalb des Basissymbols durch linienhafte Suche in einer ersten Hauptrichtung des Kamerabildes die Begrenzung des Basissymbols gesucht, anschließend wird die Begrenzung des Basissymbols in der negativen ersten Hauptrichtung gesucht. Die Mittelung der Begrenzungen führt auf eine genauere Positionsschätzung. Dieser Schritt wird sinngemäß für die zweite Hauptrichtung wiederholt, anschließend nochmals für die erste Hauptrichtung. Auf diese Weise erfolgt die Verschiebung von der Anfangsposition zur Mittelpunktsposition recheneffizient durch eine Abfolge von Linienauswertungen entlang der Hauptrichtungen. In einem nachfolgenden Schritt wird die Fläche der Basissymbole in dem Kamerabild bestimmt, wobei die Fläche ein Datum der Codierung der Codeanordnung bildet. Insbesondere wird die Fläche zur Klassifizierung des Basissymbols genutzt. Das Datum kann beispielsweise in dem binären System eine 0 oder eine 1 sein, wobei die Basissymbole beispielsweise Kreisflächen unterschiedlicher Größe sind. Für den Fall, dass die jeweilige Mittelpunktsposition sowie durch die Verschiebeschritte die Ausdehnung des Basissymbols in den Hauptrichtungen bekannt ist, kann durch diese Werte in einfacher Weise auf die Fläche des Basissymbols geschlossen werden. Somit wird sehr recheneffizient zunächst die Mittelpunktsposition in dem Punktraster und nachfolgend die Fläche des Basissymbols bestimmt. R.405034 - 33 - Die Fläche des Basissymbols im Kamerabild wird stark durch die perspektivische Verzerrung beeinflusst. Beispielsweise verringert sich die Fläche mit zunehmendem Abstand der Kamera von dem Basissymbol und mit zunehmendem Kippwinkel der Kamera (elliptische Verzerrung). Diese Einflüsse können zu einer fehlerhaften Klassifizierung führen, beispielsweise, wenn in einem Kamerabild gleichartige Basissymbole mit stark unterschiedlichem Abstand zur Kamera auftreten. Daher wird zur Klassifizierung des Basissymbols bevorzugt die normierte Fläche des Basissymbols herangezogen. Zur Berechnung der normierten Fläche wird eine Referenzfläche ermittelt, die annähernd den gleichen perspektivischen Verzerrungen wie das Basissymbol unterliegt. Als Referenzfläche wird ein Parallelogramm verwendet, das durch die beiden Vektoren von der Rasterposition des Basissymbols hin zu den in Hauptachsenrichtung benachbarten Rasterpositionen aufgespannt wird. Die Referenzfläche ergibt sich als Betrag des Kreuzproduktes beider Vektoren. Die normierte Fläche des Basissymbols wird insbesondere als Quotient aus der Fläche des Basissymbols und der Referenzfläche berechnet. Bei einer bevorzugten Ausgestaltung der Erfindung wird ein Lesefeld in dem Kamerabild und/oder in dem flächigen Punktraster definiert und eine dazu korrespondierende zweidimensionale Basissymbol-Matrix, insbesondere Dot- Matrix, gebildet, wobei jedem Punkt im Lesefeld ein Eintrag in der Basissymbol- Matrix zugeordnet ist und wobei in die Basissymbol-Matrix die Position und die Fläche und/oder das Datum der Basissymbole eingetragen ist. Aus den Daten in der Basissymbol-Matrix kann die Grobposition und optional ergänzend - orientierung des Koordinatensystems des Punktrasters decodiert werden und/oder die Grobposition von mindestens einem Basissymbol in der Codeanordnung als die zwei Freiheitsgrade ermittelt werden. Bei einer bevorzugten Weiterbildung der Erfindung wird in einem Vorschritt zur Erstellung des Startfelds mindestens eine Startposition festgelegt. Die Startposition wird willkürlich festgelegt. Bevorzugt ist die Startposition in der Nähe oder benachbart zu dem Aufpunkt angeordnet. Für den Fall, dass die Startposition zufällig innerhalb eines Basissymbols liegt, wird die Startposition als R.405034 - 34 - Anfangsposition für ein Startbasissymbol genommen. Für den Fall, dass die Startposition außerhalb eines Basissymbols liegt, wird entlang von Suchstrahlen ein benachbartes Basissymbol ausgehend von der Startposition als Startbasissymbol gesucht. Auch in dem Vorschritt erfolgt somit keine rechenintensive flächenorientierte Bildverarbeitung, vielmehr wird ausgehend von der Startposition nur entlang der Suchstrahlen ein Basissymbol gesucht. Die Begrenzung des Basissymbols kann beispielsweise durch eine Kontraständerung entlang der Suchrichtung in dem Kamerabild erfasst werden. Dabei ist es möglich, dass in dem Verfahren mindestens oder genau 8 oder 16 Suchstrahlen verwendet werden, welche in der Startposition beginnen und in regelmäßigen Winkelschritten über 360° verteilt angeordnet sind. Es kann ein Minimalradius für die Suchstrahlen definiert werden, ab dem ein weiteres Basissymbol gesucht wird. Optional kann ein maximaler Suchradius festgelegt werden, wobei bei Erreichen des maximalen Suchradius ohne Auffinden eines benachbarten Basissymbols die Startposition verworfen wird und eine alternative Startposition gewählt wird. In einem nachfolgenden Schritt wird ausgehend von der Position des Startbasissymbols entlang von weiteren Suchstrahlen ein benachbartes Basissymbol als erstes Hilfsstartbasissymbol gesucht. Das Suchen von dem ersten Hilfsstartbasissymbol kann mit der gleichen Verteilung der Suchstrahlen wie zuvor beschrieben durchgeführt werden. In einem nachfolgenden Schritt wird ausgehend von dem Startbasissymbol und dem ersten Hilfsstartbasissymbol in einer Richtung, welche gewinkelt zu der Verbindung (und/oder entlang einer ersten Hauptrichtung) zwischen dem Startbasissymbol und dem ersten Hilfsstartbasissymbol ist, ein zweites Hilfsstartbasissymbol gesucht. Dabei können jedoch weniger Suchstrahlen wie zuvor eingesetzt werden, die insbesondere über einen kleineren Winkelbereich verteilt sind, so dass die Suche beschleunigt wird. Dabei wird ausgenutzt, dass die ersten drei Basissymbole gewinkelt zueinander angeordnet sein sollen, so dass es ein a priori Wissen gibt, in welcher Richtung das zweite Hilfsstartbasissymbol gesucht wird. Beispielsweise werden nur noch ein, zwei oder drei bis sechs Suchstrahlen verwendet, welche um eine Hauptsuchrichtung herum verteilt sind, die senkrecht zu der Verbindung zwischen Startbasissymbol und dem ersten Hilfsstartbasissymbol orientiert ist. R.405034 - 35 - Zur Vervollständigung werden ausgehend von dem Startbasissymbol alle in Hauptachsenrichtung oder Diagonalenrichtung des Punktrasters insbesondere unmittelbar benachbarten Basissymbole des Startbasissymbols auf Basis der Verbindung zwischen Startbasissymbol und dem ersten Hilfsstartbasissymbol und der Verbindung zwischen dem Startbasissymbol und dem zweiten Hilfsstartbasissymbol durch Linearkombination der Verbindungen gesucht. Insbesondere können über die ersten drei aufgefunden Basissymbole die Verbindungsvektoren und/oder Hauptrichtungen abgeleitet werden. Diese spannen ein zweidimensionales Koordinatensystem des Punktrasters auf. Zur Verbesserung des Verfahrens können die Mittelpunktspositionen bestimmt werden, um die Verbindungsvektoren möglichst genau zu definieren. Im Ergebnis liegt dann ein Startfeld mit 3 x 3 validen Basissymbolen vor. In dem Suchschritt werden ausgehend von dem Startfeld und/oder von den weiteren validen Basissymbolen, welche durch einen früheren Suchschritt aufgefunden wurden, benachbarte Basissymbole gesucht. Das Verfahren sucht bevorzugt Basissymbole an Rasterpunkten, welche mindestens zwei valide Nachbarn in den Hauptrichtungen oder in den Diagonalrichtungen aufweisen. Alle Nachbarn eines Rasterpunktes liefern durch Extrapolation unabhängige Positionsschätzungen, die durch Mittelung zu einer genaueren Positionsschätzung des Rasterpunktes führen. Durch die Bedingung, dass nur Rasterpunkte und/oder mit mindestens zwei validen Basissymbolen als Nachbarn gesucht werden, wird außerdem eine flächenhafte Ausdehnung des erfassten Bereiches begünstigt und die linienhafte Ausdehnung in Form von Lanzen, Dendrite oder Spitzen vermieden. Die flächenhafte Ausdehnung ist robuster und toleranter gegenüber Störungen im Bild als die linienhafte Ausdehnung. Auf Basis der validen Basissymbole wird die Basissymbol-Matrix insbesondere des Lesefelds ermittelt werden. Insbesondere kann in dem Verfahren vorgesehen sein, dass zunächst durch die Kamera ein Kamerabild aufgenommen wird, nachfolgend mindestens ein Freiheitsgrad der Kamera relativ zu der Codeanordnung bestimmt wird und nachfolgend z.B. ein Aktor der Automatisierungsanordnung angesteuert wird. Beispielsweise kann der mindestens eine Freiheitsgrad auf einer optischen Ausgabeeinrichtung, wie zum Beispiel ein Display, ausgegeben werden. Der R.405034 - 36 - mindestens eine Freiheitsgrad kann zur Positionssteuerung und/oder –regelung des Aktors der Automatisierungsanordnung verwendet werden, indem dieser als IST-Wert eingesetzt wird. Ein Roboter mit der Sensoreinheit der Automatisierungsanordnung kann beispielsweise seine absolute Lage relativ zu der Codeanordnung bestimmen und diese als IST-Information ausgegeben oder zu einer vorgebbaren weiteren Position fahren, wobei sich der Roboter weiter an der Codeanordnung hinsichtlich seiner IST-Position orientiert. Ein weiterer Gegenstand der Erfindung betrifft eine Steuereinheit und/oder eine Automatisierungsanordnung mit der Steuereinheit, wobei diese ausgebildet ist, das Verfahren auszuführen, wie dies zuvor beschrieben wurde. Optional umfasst die Steuereinheit die Kamera und/oder ist mit dieser datentechnisch verbunden. Ein weiterer Gegenstand der Erfindung betrifft ein Computerprogramm, welches ausgebildet ist, das zuvor beschriebene Verfahren durchzuführen, wenn das Computerprogramm auf einer digitalen Datenverarbeitungseinrichtung und/oder auf der Steuereinheit ausgeführt wird. Ein weiterer Gegenstand der Erfindung betrifft ein maschinenlesbares Speichermedium mit dem Computerprogramm. Weitere Merkmale, Vorteile und Wirkungen der Erfindung ergeben sich aus der nachfolgenden Beschreibung bevorzugter Ausführungsbeispiele sowie der beigefügten Figuren. Diese zeigen: Fig. 1 ein Flussdiagramm des Gesamtverfahrens mit einem Ausführungsbeispiel des erfindungsgemäßen Verfahrens; Fig. 2 eine schematische Darstellung des optischen Modells in 3D; Fig. 3 eine schematische Darstellung des optischen Modells in 2D; Fig. 4 eine schematische Darstellung des optischen Modells in 2D; Fig. 5, 6, 7 eine schematische Veranschaulichung der Koordinatensysteme; Fig. 8 eine schematische Veranschaulichung des Koordinatensystems für das Abbildungsmodell Fig. 9 das Abbildungsmodell in der Fig. 8 mit verkippter Codeebene; Fig.10 eine Veranschaulichung der Codeanordnung; Fig.11 eine weitere Veranschaulichung der Codeanordnung; R.405034 - 37 - Fig.12 ein Punktraster einer Codeanordnung mit zwei beispielhaft eingezeichneten Lesefeldern; Fig.13 verschiedene Winkellagen des Lesefelds; Fig.14 ein Beispiel für ein Lesefeld; Fig.15 einen beispielhaften Aufbau einer Parzelle in der Codeanordnung; Fig.16 weitere beispielhafte Aufbauten einer Parzelle in der Codeanordnung; Fig.17 Flussdiagramm einer Validitätsprüfung; Fig.18 Details der Validitätsprüfung; Fig.19 beispielhaft ein Kamerabild mit einer identifizierten Startbasis und dem Lesefeld; Fig.20 ein Beispiel für eine Basissymbol-Matrix mit eingetragenem Datum der Fläche; Fig.21 ein Flussdiagramm zur Bestimmung der Startbasis; Fig.22 mehrere vordefinierte Startpositionen im Bildfeld der Kamera; Fig.23 Veranschaulichung des Verfahrens zur Bestimmung der Startbasis; Fig.24 Veranschaulichung des Verfahrens zur Bestimmung der Startbasis; Fig.25 Flussdiagramm der Funktion Center_Pos; Fig.26 Veranschaulichung der Funktion Center_Pos; Fig.27a,b Veranschaulichung der Funktion Nearest_dot; Fig.28 Flussdiagramm vom Ablauf zur Erfassung aller Dots/Basissymbole im Lesefeld; Fig.29 a-d Veranschaulichung des Ablaufs zur Erfassung aller Dots/Basissymbole im Lesefeld; Fig.30 Veranschaulichung des Erfassens von Basissymbolen in einem verzerrten Raster; Fig.31 Veranschaulichung der Rektifizierung; Fig.32 Flussdiagramm zur Klassifizierung der Basissymbole; Fig.33 Flussdiagramm zur Bestimmung der Grobposition; Fig.34a,b Basissymbol-Matrix mit eingetragenem Datum und mit Lesespuren; Fig.35 Veranschaulichung der Dekodierung der Grobposition; R.405034 - 38 - Fig.36 Veranschaulichung der Ausgleichsgeraden für die Geradenfunktion; Fig.37 Veranschaulichung des Geradenwinkels; Fig. 38a-c Veranschaulichung der Ausgleichsgeraden sowie der Geradenfunktion; Fig.39 Veranschaulichung der Bestimmung der Feinposition und des Drehwinkels phiz (Z-Drehwinkel); Fig.40 Flussdiagramm zur Bestimmung des Kamerabstands und der Nickwinkel. Es wird ein Verfahren als Umsetzung eines Algorithmus zur präzisen Bestimmung der absoluten 6D-Position einer Kamera 1 in Bezug auf eine ebene Codeanordnung 2, die von der Kamera 1 aufgenommen wird, offenbart, wobei der Algorithmus ein Kamerabild 3 als Eingangsinformation erhält. Die Codeanordnung 2 dient gleichzeitig als analoger und digitaler Maßstab in zwei Dimensionen, X und Y. Sie besteht aus Symbolen, die in einem regelmäßigen Raster angeordnet sind. Bevorzugt ist es ein binärer Code mit zwei Symbolen, die in einem quadratischen Raster angeordnet sind: einem kleinen runden Punkt (Dot) für eine digitale 0 und einem großen Dot für eine 1. Der Dot-Typ beinhaltet die digitale Information, während der Dot-Mittelpunkt die analoge Information beinhaltet. Die Kamera 1 erfasst einen Ausschnitt der Codeanordnung 2 und überträgt das Kamerabild 3 an einen Rechner oder eine beliebige Datenverarbeitungseinrichtung. Der Algorithmus wählt ein Lesefeld in dem Kamerabild 3 mit der Mindestgröße einer Code- Zelle (z.B.7 x 7 Dots) und errechnet daraus die Position der Kamera 1 in Bezug auf die Codeanordnung 2 in sechs Dimensionen. Dazu nutzt das Verfahren sowohl die digital codierte Positionsinformation als auch die präzise gemessenen Mittelpunktspositionen aller Dots im Messfeld oder Lesefeld. Diese bilden ein Raster, welches durch die Kameraperspektive und die Verzeichnung des Objektivs verzerrt ist. R.405034 - 39 - Das Verfahren zur Positionserfassung umfasst folgende Schritte (siehe Fig.1): Schritt 100: Einlesen des Kamerabildes 3 in den Arbeitsspeicher des Rechners. Schritt 200: optional: Erste Prüfung der Bildqualität anhand von Kenndaten wie Helligkeit und Kontrast. Schritt 300: XY-Grobpositionsauswertung und optional z-Grobwinkelauswertung Schritt 310: Suche eines Startfeldes (launch pad) von 3x3 Dots im Lesefeld Schritt 320: Erfassung der Dots in einem Lesefeld im Kamerabild Schritt 330: Präzise Messung der Mittelpunktsposition und Fläche der Dots Schritt 340: Optional: Mathematische Korrektur der Objektivverzeichnung durch Rektifizierung der Dot-Positionen. Dadurch werden die im Kamerabild 3 gekrümmten Linien des Dot-Rasters in gerade Linien überführt. Schritt 350: Flächenbasierte Klassifizierung der Dots, Zuordnung zu den binären Ziffern 0 und 1 Schritt 360: Lesen des digitalen Codes in den Achsrichtungen X und Y, Bestimmung der absoluten Grobposition in X-, Y- und optional ^^-Richtung als z-Grobwinkelauswertung. Schritt 400: Verzerrungsauswertung Schritt 410: Anpassung einer Ausgleichsgeraden (beam) an jede Reihe und jede Spalte des Dot-Rasters des Lesefelds Schritt 420: Anpassung einer Ausgleichsfunktion an ein erstes Geradenbündel (bunch) durch Interpolation aller Geraden in den Reihen und einer zweiten Ausgleichsfunktion durch Interpolation aller Geraden in den Spalten des Code-Rasters. Jedes Geradenbündel wird durch 6 Interpolationsparameter (bunch-Daten) vollständig beschrieben. Mit Hilfe der Interpolationsfunktion können daraus auch interpolierte Geraden berechnet werden, die zwischen zwei gemessenen Geraden liegen. Berechnung der 6D Kameraposition aus Kennwerten, die aus den gemessenen Dot- Positionen gewonnen werden und die das verzerrte Raster im Kamerabild beschreiben. Die Gleichungen zur Positionsberechnung ergeben sich aus einem inversen optischen Abbildungsmodell der Kamera 1 und den Gesetzen der geometrischen Optik: Schritt 500: XY-Feinpositionsauswertung: Die Position in X- und Y-Richtung wird aus der XY-Grobposition und der Lage des Rasters in Bezug auf die Lage der optischen Achse (Bildmittelpunkt) berechnet. R.405034 - 40 - Schritt 600: Z-Winkelauswertung aus dem Winkel der (interpolierten) Geraden im Bildmittelpunkt Schritt 700: Z-Positions- und XY-Winkelauswertung Schritt 710: Herleitung von interpolierten Kennwerten aus den bunch-Daten, die das perspektivisch verzerrte Raster im Bildmittelpunkt beschreiben: - Rastermaß der Geraden beider Geradenbündel - Winkeldivergenz der Geraden beider Geradenbündel Die Kamera-Position in Z-Richtung wird hauptsächlich aus dem Rastermaß der Geraden im Bildmittelpunkt bestimmt Die Kamera-Winkel ^^ und ^^ werden hauptsächlich aus der Winkeldivergenz der beiden Geradenbündel im Bildmittelpunkt ermittelt. Ein iterativer Algorithmus löst numerisch das Gleichungssystem, mit dem die Größen Z, ^^ und ^^ verknüpft sind. Schritt 800: Ausgabe der 6D-Positionsinformation und der optionalen Validitätsinformation, die sich aus den Ergebnissen zahlreicher Diagnosefunktionen im Ablauf ergibt. Mit minimalem Rechenaufwand konzentriert der Algorithmus die Kamerabilddaten auf wenige zur Positionsbestimmung relevante Daten, steigert dabei die Genauigkeit durch Interpolation und verhält sich robust bei Kamerabildstörungen. Von besonderer Bedeutung sind die folgenden Ablaufpositionen (Zahlenwerte als Beispiel): Ablaufposition I: Eingangsdaten Kamerabild (z.B. 200x200 Pixel) 40.000 Werte Ablaufposition II (Schritt 300): wandelt die Kamerabilddaten in Dot-Daten 2.250 Werte Ablaufposition III (Schritt 400/500): wandelt die Dot-Daten in beam-Daten 90 Werte Ablaufposition IV (Schritt 400/500): wandelt die beam-Daten in bunch-Daten 12 Werte Ablaufposition V (Schritt 500/600/700): wandelt die bunch-Daten in eine 6D Position R.405034 - 41 - 6 Werte Die Ablaufpositionen II - V besitzen folgende besondere Merkmale. Ablaufposition II: a) Schnelles Auffinden der Dots im Kamerabild 3 durch mathematische Modellierung des perspektivisch verzerrten Coderasters in der Codeanordnung 2. Das Verfahren stützt sich auf die bereits gemessenen Dot-Positionen. Vorteile: schnelles Auffinden der Dots, die zeitaufwändige Suche im Pixelraster entfällt. Robust gegenüber Störungen im Kamerabild: Dots werden als „nicht valide“ klassifiziert, falls sie an der erwarteten Position nicht gefunden werden. Nicht valide Dots werden nicht weiterverarbeitet, behindert jedoch im Allgemeinen nicht den weiteren Ablauf b) Stack-basierter Algorithmus zur schnellen und robusten Suche der Dots im Coderaster der Codeanordnung 2. Vorteil: fehlertolerant, da das Suchverfahren bei fehlerhaften Dots nicht abbricht, sondern diese allseitig umschließt. Präzise (hohe Ausbeute an gefundenen Dots pro Lesefeld) und robust (durch priorisierte Erfassung von Dots mit vielen validen Nachbarn) c) Funktion Center_Pos: schnelles Verfahren zur Subpixel-genauen Positions- und Flächenbestimmung von Dots im Kamerabild Vorteil: schnell (wenig Pixelzugriffe), genau (durch Subpixeling), robust (Verwendung dynamischer Kontrastschwellen statt Grauwertschwellen) d) Rektifizierung der Dot-Positionen anstatt des gesamten Kamerabildes. Vorteil: schnell (Rektifizierung von nur 225 Positionen statt aller 40.000 Pixel im Kamerabild) e) Lokale Normierung der Dot-Fläche auf die Fläche der Dot-Rasterzelle. Zur Klassifizierung der Dots wird die normierte Dot-Fläche verwendet. Vorteil: robustes Lesen des digitalen Codes (Klassifikation der Dots ist tolerant gegen perspektivische Verzerrung und gegen eine Änderung des Abstandes zwischen Kamera und Dot) f)Redundantes Lesen der digitalen Codes, Fehlererkennung und z.T. Fehlerkorrektur Vorteil: Geringe Fehlerrate bei Störungen im Kamerabild, korrektes Lesen trotz nicht valider Dots. Ablaufposition III und IV: R.405034 - 42 - g) Komprimierte und präzise Darstellung der aus dem Kamerabild 3 extrahierten Dot-Positionen als bunch-Parameter (nur 12 Werte) Vorteil: schnell (da geringe Datenmenge), präzise (durch Mittelung und best-fit Interpolation in zwei Stufen: Dots zu Ausgleichsgeraden und Ausgleichsgeraden zu Geradenbündeln), fehlertolerant und robust (durch Ausschluss nicht valider Dots von der Weiterverarbeitung). Ablaufposition V: h) Mathematisches Verfahren zur Transformation der 12 bunch-Parameter in eine 6D Position. Als Vorteile werden einige oder alle der folgenden Verbesserungen erreicht: ^ Volle 6D Positionsmessung, absolute Positionsinformation ^ Gleichzeitige Erfassung aller Dimensionen mit einem Messvorgang (in einem Kamerabild). ^ Hohe Positions-Messrate und geringe Latenzzeit. Das Verfahren erfordert nur eine geringe Anzahl von Rechenschritten eines Computers. Mit einem embedded Computer werden typische Messraten von etwa 100Hz – 10000Hz erreicht, so dass der Sensor beispielsweise auch in einem geschlossenen Lageregelungskreis eingesetzt werden kann. Das Verfahren erzielt eine hohe Lesegeschwindigkeit auch durch Minimierung der Anzahl von Zugriffen auf Kamerabildpunkte (Pixel). Es werden keine zeitintensiven flächenhaften Kamerabildoperationen durchgeführt. Außerdem wird die Datenmenge mit jedem Verarbeitungsschritt deutlich reduziert. ^ Hohe Lesesicherheit durch redundantes Lesen des Punktecodes. Die Positionserfassung ist auch bei Störungen im Bildfeld der Kamera möglich, wie zum Beispiel bei lokalen Verdeckungen, nicht validen Dots oder unter ungünstigen Beleuchtungsverhältnissen. Durch eine Validitätsprüfung der Verarbeitungsschritte werden fehlerhafte Zustände erkannt und die Ausgabe unzuverlässiger Positionswerte verhindert. ^ Hohe Genauigkeit der Positionsmessung in allen Freiheitsgraden. Dies wird durch verschiedene Maßnahmen erreicht wie oMittelung über zahlreiche Dots pro Kamerabild 3, beispielsweise mehr als 100 oder 1000 R.405034 - 43 - oKlassifizierung von Dots nach Validität, Ausschluss von nicht validen Dots von der weiteren Verarbeitung oSubpixel-genaue Positionsbestimmung der Kanten der Dots oVerwendung von Kontrastschwellen statt Grauwertschwellen, dadurch hohe Robustheit gegenüber lokalen Änderungen der Bildhelligkeit oRunde Dots, daher kaum Mittelpunktsfehler bei Kippung oder Rotation der Codeebene ^ Unbegrenzter Messbereich in ^^ ^ Nahezu unbegrenzter Messbereich in X und Y. Beispielsweise wird bei Verwendung eines Codes mit einer Codezelle von 9 x 9 Dots und einem Dot-Raster von 2,5mm ein Messbereich von 550.000km x 550.000km erreicht. ^ Großer Winkel-Messbereich ^^, ^^ von etwa +/- 50°, bei hoher Genauigkeit. Erweiterung auf 360° durch räumlich verteilte Codeanordnungen auf dem Objekt. ^ Ein inverses Abbildungsmodell auf Basis der geometrischen Optik wird genutzt, um die Position der Kamera aus den Kamerabilddaten zu errechnen. ^ Das Verfahren kommt ohne eine aktive Beleuchtung aus, so dass Kamerabilder verarbeitet werden können, die unter Umgebungslicht aufgenommen wurden, beispielsweise mit einem Smartphone. ^ Minimale Fehlerrate. Das Verfahren bestimmt die Validität eines Positionsmesswertes, indem es jeden Verarbeitungsschritt mit verschiedenen Diagnosemethoden auf Fehler und Plausibilität überprüft. Die Validität wird zusammen mit dem Positionsmesswert ausgegeben. Dabei wird das Ziel verfolgt, nur valide Messwerte zur weiteren Verarbeitung auszugeben. Weitere Vorteile sind: ^ Ein einzelner Messaufnehmer, insbesondere ausgebildet als Kamera 1, erfasst die Position eines oder mehrerer Objekte in jeweils sechs Dimensionen. Gegenüber einem System mit vielen verteilten Sensoren zur Erfassung einzelner Freiheitsgrade reduziert sich der Installationsaufwand und die Komplexität des Gesamtsystems, was zu Kostenvorteilen führt. ^ Einsparung von Systemkomponenten durch Erfassung aller 6 Freiheitsgrade. Beispielsweise benötigt ein Drehwinkel-Encoder meist ein Drehlager für die Messachse, damit seitliche Positionsabweichungen der Codescheibe nicht zu Messfehlern führen. Mit dem vorgeschlagenen Verfahren kann die mechanische R.405034 - 44 - Führung entfallen, da die volle 6D Lageinformation der Codescheibe als Codeanordnung simultan erfasst wird. Eine seitliche Positionsabweichung des Sensors führt nicht zu einem Fehler in der Winkelmessung. Dadurch werden die Kosten und die mechanische Komplexität des Positionsmesssystems reduziert. ^ Es kann ein Positioniersystem realisiert werden, bei dem die Aufteilung der Positionssensorik auf mehrere Achsen baulich nicht möglich ist. Beispielsweise kann ein levitierender planarer Roboter realisiert werden, der in sechs Dimensionen positionierbar ist, ohne dass eine bauliche Verbindung zwischen dem Roboter und dem darunter liegenden Stator besteht. ^ Durch die simultane Erfassung mehrerer Dimensionen werden Messfehler reduziert, die bei verteilten Sensorsystemen durch unterschiedliche Messzeitpunkte entstehen können. ^ Die Kosten des Sensors sind weitgehend unabhängig von der Anzahl der erfassten Freiheitsgrade. Daher kann er auch vorteilhaft in Anwendungen eingesetzt werden, die weniger als 6 Freiheitsgrade benötigen. Die zusätzlich bereitgestellte Information ermöglicht Zusatzfunktionen, beispielsweise die Eigendiagnose von Systemen oder die permanente Beobachtung des Betriebszustandes („Condition Monitoring“). ^ Das Verfahren ist skalierbar, z.B. durch Variation des Rastermaßes der Codeanordnung und Anpassung der abbildenden Optik an die Codeanordnung. Die Auflösung kann über viele Größenordnungen variieren, beispielsweise vom Nanometer-Bereich (Anwendungsbeispiel: Nanometer-Positioniersystem) bis in den m- Bereich (Anwendungsbeispiel: Automatisiertes Landen eines Flugzeugs oder einer Drohne auf einem Flugplatz, wobei das Flugfeld mit einer Codeanordnung markiert ist). ^ Das Verhältnis von Auflösung zu Messbereich kann viele Größenordnungen umfassen. Wird beispielsweise ein Wegmesssystem mit 10nm Auflösung mit einer 10m langen Codeanordnung kombiniert, beträgt das Verhältnis von Auflösung zu Messbereich 1:109. ^ Ein Sensor mit dem Verfahren besitzt eine hohe Einsatzflexibilität, da er einfach installiert werden kann und durch Parametrierung für spezifische Anwendungen konfiguriert werden kann. Dies ist insbesondere vorteilhaft bei häufig wechselnden Einsatzbedingungen. ^ Das Verfahren kann Zusatzinformationen lesen, die im Positionscode enthalten sind. Beispielsweise können zusätzlich zur Position Objekt-Identifikationsdaten gelesen werden. R.405034 - 45 - ^ Bei zyklischer Bildaufnahme liefert das Verfahren für jedes Einzelbild eine unabhängige Positionsschätzung, sie ist nicht auf Vorinformation aus vorherigen Bildern angewiesen. Daher entspricht die Messrate der Bildwiederholrate. Das Verfahren ermöglicht die Lokalisierung der mindestens einen Kamera 1 in Bezug auf mindestens ein Objekt 8 in sechs Freiheitsgraden, wobei auf der Oberfläche jedes Objektes 8 mindestens eine Codeanordnung aufgebracht ist. Eine Kamera 1 erfasst die Codeanordnungen 2 auf den Objekten 8 und stellte diese vollständig oder ausschnittsweise in dem Kamerabild 3 dar. Mit dem vorgeschlagenen Verfahren und weiteren üblichen mathematisch/technischen Methoden wird die 6D Position der Objekte 8 aus dem Kamerabild 3 errechnet. Die Codeanordnung 2 bildet einen flächigen, digital codierten Maßstab. Sie enthält mehrere unterschiedliche Symbole, vorzugsweise kreisförmige Symbole (Dots), die in einem regelmäßigen, vorzugsweise quadratischen Raster angeordnet sind und eine Positionsbestimmung in 6 Freiheitsgraden ermöglichen. Die Kamera 1 umfasst mindestens ^ ein bildgebendes Sensorelement, üblicherweise einen Kamera-Chip, insbesondere den Bildaufnehmer 12. ^ Ein Abbildungssystem, welches den Maßstab scharf und kontrastreich auf das Sensorelement abbildet, insbesondere das Objektiv 9. Das Abbildungssystem umfasst insbesondere ein Weitwinkelobjektiv als Objektiv 9, da zur Bestimmung aller sechs Freiheitsgrade eine zentralperspektivische Abbildung erforderlich ist. ^ Eine Schnittstelle zur Ausgabe der Kamerabilddaten und/oder des Kamerabilds 3. Optional umfasst das Kamerasystem der Kamera 1 ^ ein Beleuchtungssystem, insbesondere zur Beleuchtung der Codeanordnungen. Dadurch wird die Kamera 1 unabhängiger von den Beleuchtungsbedingungen in der Umgebung. Im Blitzbetrieb werden kurze Messzeiten ermöglicht, so dass auch schnell bewegte Objekte erfasst werden können. Als Leuchtmittel werden beispielsweise Leuchtdioden eingesetzt. ^ Mittel zur Abschirmung von Fremdlicht, z.B. eine Blende oder optische Filter. Es kann ein spektrales Filter im Strahlengang des Abbildungssystems vorhanden sein, damit nur das Licht aus einem begrenzten Wellenlängenbereich das Sensorelement erreicht. R.405034 - 46 - Idealerweise werden einfarbige Leuchtmittel mit gleicher Wellenlängencharakteristik wie das Farbfilter eingesetzt. Zusätzlich ist ein Rechnersystem als digitale Datenverarbeitungeinrichtung zur Informationsverarbeitung z. B. ausgebildet als Steuereinheit erforderlich. Als Eingangsinformation erhält es die digitalisierten Kamerabilddaten des Kamerabilds 3, am Ausgang stellt es die ermittelten 6D Positionen der identifizierten Objekte sowie optional eine Bewertung der Validität der Positionsmesswerte bereit. In dem Rechnersystem ist das Verfahren als Algorithmus implementiert. Der Algorithmus wird entweder auf Anforderung von außen oder zyklisch ausgeführt, beispielsweise in einem festen Zeitraster zur Erfassung der Bewegungsbahnen von Objekten (Tracking). Das Rechnersystem kann beispielsweise als embedded System, Parallelrechner, GPU, FPGA, ASIC oder Cloud-System ausgeführt sein. Als Gesamtsystem zur Positionserfassung kann auch ein Smartphone eingesetzt werden, wobei die integrierte Kamera 1, ggf. mit aktiver Beleuchtung, zur Bildaufnahme genutzt wird. Das Verfahren kann in einer Smartphone-Applikation implementiert sein und embedded im Smartphone oder in der Cloud ausgeführt werden. Figur 2 zeigt eine typische Anordnung zur Bestimmung der Absolutposition in 6 Freiheitsgraden. Die Kamera 1 nimmt das Kamerabild 3 einer ebenen Codeanordnung 2 auf. Aus dem perspektivisch verzerrten Kamerabild 3 errechnet das erfindungsgemäße Verfahren die 6D Position der Kamera im Koordinatensystem der Codeanordnung 2 und gibt sie als Positionsvektor (^^, ^^, ^^) und Winkelvektor (^^, Die Koordinaten ^^ und ^^ sind in dem rechtwinkligen Koordinatensystem (XC, YC) der Codeanordnung 2 angegeben. Sie bezeichnen den Schnittpunkt 4 der optischen Achse 5 der Kamera 1 mit der Ebene, in der die Codeanordnung liegt. Da die optische Achse 5 senkrecht auf der Ebene des Bildaufnehmers 12 steht, kann sie im Kamerabild 3 durch einen Punkt 7 bezeichnet werden. R.405034 - 47 - Das Verfahren ermittelt den Schnittpunkt (X,Y) auch dann, wenn die Codeanordnung 2 nur am Rand des Bildfeldes und nicht am Ort der optischen Achse 5 dargestellt ist. Der Abstand ^^ liegt auf der optischen Achse 5 und erstreckt sich vom Schnittpunkt 4 zum optischen Zentrum des Objektivs der Kamera 1. Da die optische Achse 5 nicht immer senkrecht auf der Codeanordnung 2 steht, bildet ^^ mit (XC, YC) im Allgemeinen ein nicht-orthogonales Koordinatensystem. Mit Hilfe des Winkelvektors kann der Positionsvektor (^^, ^^, ^^) in ein rechtwinkliges Koordinatensystem transformiert werden. Mit dem Verfahren können mehrere simultan aufgenommene Objekte 8 im Bildfeld der Kamera lokalisiert werden, selbst wenn sich diese teilweise überdecken. Um die Position lesen zu können, muss mindestens ein Bereich in der Größe einer Code-Parzelle (z.B. 7x7 Dots) im Kamerabild 3 erkennbar sein. Fig. 3 und 4 zeigen schematisch den Strahlengang der Kamera 1. In der Figur 3 ist die Kamera 1 mit einem Objektiv 9 und einem Bildaufnehmer 12 zu sehen, die Blickrichtung nach unten auf die Codeebene der Codeanordnung 2 gerichtet. Die optische Achse 5 ist als strichpunktierte senkrechte Linie eingezeichnet, die Brennpunkte des Objektivs 9 als Punkte 10,11. Ein Vektorpfeil G auf der Codeebene der Codeanordnung 2 wird nach den Gesetzen der Strahlenoptik als Vektorpfeil B auf den Bildaufnehmer 12 abgebildet. Ein Sichtstrahl 14 schneidet die optische Achse 5 in einem Punkt, der hier als optisches Zentrum 13 des Objektives 9 bezeichnet wird. In Figur 4 ist der vollständige Strahlengang dargestellt, das Objektiv 9 ist zu einer Linse vereinfacht. Die Strahlenoptik mit dem Strahlensatz und der Linsengleichung bildet die Grundlage für das mathematische Verfahren zur Positionsbestimmung. Hierbei gilt: B/G = b/g und 1/f = 1/b + 1/g mit: B Bildgröße b Bildweite R.405034 - 48 - G Gegenstandsgröße g Gegenstandsweite f Brennweite Figuren 5, 6, 7 veranschaulichen die beteiligten Koordinatensysteme: Das zweidimensionale Koordinatensystem 15 des Bildaufnehmers 12 wird durch die Achsen (XI, YI) des Kamerachips aufgespannt. Eine Position auf dem Bildaufnehmer 12 wird in Bildpunkten [Pixel] angegeben, wobei die Pixel-Reihen und –Spalten des Kamerachips fortlaufend nummeriert sind. In diesem Beispiel wird ein Bildaufnehmer 12 mit 200 x 200 Pixeln angenommen. Aus der Nummerierung ergibt sich ein ganzzahliger X- und Y-Positionswert für jeden Pixel. Durch das Subpixeling, ein Verfahren zur Interpolation von Grauwerten zwischen benachbarten Pixeln, können bei der Auswertung auch reelle Zahlen als Kameraposition auftreten. Um die Einheit der Position von [Pixel] in [m] umzuwandeln, wird die Position mit dem Abstand benachbarter Pixel ^^^^^ auf dem Kamerachip in der Einheit [m/Pixel] multipliziert. Der Pixelabstand ^^^^^ ist eine Eigenschaft des Bildaufnehmers 12. Jeder Pixel liefert einen ganzzahligen Grauwert. Das Koordinatensystem 16 der Codeanordnung 2 (XC, YC) wird durch die Hauptachsen der Codeanordnung 2 aufgespannt, die dem quadratischen Raster der Dots entsprechen. Es wird um eine dritte Achse ZC zu einem dreidimensionalen Koordinatensystem erweitert, die senkrecht auf der Codeanordnung 2 steht, wobei die Codeanordnung 2 bei ZC=0 angeordnet ist. Die Einheit ist entweder [Dots], also die fortlaufende Nummerierung der Dot – Reihen und –Spalten, oder [m] – nach Multiplikation mit dem Dot-Rasterabstand ^^^^^ in [m/Dot]. Die Codeanordnung 2 codiert eindeutig die lokale Position im Koordinatensystem (XC, YC). Das dreidimensionale Kamera-Koordinatensystem (X, Y, Z) 17 ist mit der Kamera 1 fest verbunden. Sein Ursprung liegt auf der optischen Achse 5 zwischen dem Bildaufnehmer 12 und der Codeanordnung 2, im Abstand der doppelten Bildweite b von dem Bildaufnehmer 12 entfernt. Die optische Achse 5 bildet die Z-Achse, die Kamera 1 blickt in Richtung –Z. R.405034 - 49 - Das Koordinatensystem für das Abbildungsmodell in Fig. 8 entspricht dem Kamera- Koordinatensystem 17 (X, Y, Z). Dabei ist b die Bildweite der Kamera 1. Die Bildebene befindet sich auf der Höhe (0, 0, 2b) und liegt parallel zur X/Y-Ebene des Kamera- Koordinatensystems 17. Als Modellvorstellung kann eine weitere „virtuelle“ Bildebene 18 in der (X,Y)-Ebene des Koordinatensystems 17 konstruiert werden, wobei das virtuelle Bild gegenüber dem realen Bild auf dem Bildaufnehmer 12 in Bezug zum Bildmittelpunkt punktsymmetrisch gespiegelt ist. In der Höhe (0, 0, z0) mit (z0 < 0) befindet sich die Codeebene der Codeanordnung 2. Bei der Kamera-Orientierung (0°, 0°, 0°) liegt die Codeebene parallel zur X/Y-Ebene des Kamera-Koordinatensystems 17 und die Achsen (XC, YC) des Koordinatensystems 16 der Codeanordnung 2 weisen in die gleiche Richtung wie die Achsen (XI, YI) des Koordinatensystems 15 des Bildaufnehmers 12. Das Verfahren ermittelt die 6D Position der Kamera ^ in Translation: (^^, ^^, ^^) und ^ in Rotation: (^^ , ^^ , ^^). Das Drehzentrum, auf das sich die Kipp- und Drehwinkel phix und phy der Kamera 1 beziehen, liegt im Punkt (0, 0, z0). Der Rollwinkel phiz wird um die optische Achse 5 gemessen. Fig. 9 zeigt das Abbildungsmodell mit verkippter Codeebene der Codeanordnung 2. Der Wert ^^ ist der Abstand zwischen dem Drehzentrum (0, 0, z0) und dem optischen Zentrum (0, 0, b) des Objektivs, so dass gilt: ^^ = ^ − ^^. Ausgehend von dem Strahlensatz und der geometrischen Optik kann die Abbildung eines Punktes (x0, y0) in der Codeebene auf einen Punkt (BX, BY) in der Bildebene mathematisch als Abbildungsgleichung im Kamera-Koordinatensystem 17 beschrieben werden: ^ Optisches Zentrum 13 des Objektivs 9: R.405034 - 50 - ^ Zweidimensionale Koordinaten von Dots oder Punkten in der Ebene der Codeanordnung in Koordinatensystem 16 der Codeanordnung 2 mit ^^ ^ = (^^, ^^) dem Flächenschwerpunkt eines ausgewählten Basissymbols und i, j ganzen Zahlen ^ Räumliche Koordinaten von Dots oder Punkten in dem Kamerakoordinatensystem 17: mit der Rotationsmatrix für Vektoren im dreidimensionalen Raum: Bildpunkt in der virtuellen Bildebene im Kamera-Koordinatensystem 17: ^ Schnittpunkt des Sichtstrahls mit der virtuellen Bildebene 18: R.405034 - 51 - b^ ^ Virtuelles Bild des Punkts oder Dots: ^ Für das reale Abbild muss das negative Vorzeichen weggelassen werden: Für den Schnittpunkt 4 mit dem Index (i=0; j=0) erhält man die Bildkoordinaten im realen Bild: 2.4.3 Codeanordnung Das Verfahren erfordert einen flächig codierten Maßstab in der Codeanordnung 2, von dem ein Teilbereich mit einem bildgebenden Sensor, beispielsweise der Kamera 1, gelesen wird, so dass aus der Bild-Information die Lage des Sensors und/oder der Kamera 1 in Bezug auf den Maßstab in bis zu sechs Raumrichtungen ermittelt werden kann. Weitere Details zu der Codeanordnung 2 ergeben sich aus der Druckschrift DE 102016216221 A1 der Anmelderin, deren Inhalt via Referenzierung insbesondere hinsichtlich der Ausbildung der Codeanordnung sowie der Decodierung und der Varianten in die vorliegende Offenbarung inkorporiert wird. Der codierte Maßstab wird als sensor-lesbare Markierung ausgebildet als Code- Anordnung 2 auf einer Fläche aufgebracht, die sich im Wesentlichen in zwei Dimensionen erstreckt, aber auch Krümmungen aufweisen kann. Zur besseren Beschreibung wird im Folgenden davon ausgegangen, dass der codierte Maßstab als optisch lesbares Muster auf eine ebene Fläche gedruckt wird, ohne Einschränkung des Anspruches auf andere Markierungs- und Sensorprinzipien und gekrümmte Flächen. Der codierte Maßstab der Codeanordnung 2 wird durch die Anordnung unterschiedlicher Basissymbole in einem regelmäßigen Raster gebildet. Die Basissymbole tragen zwei R.405034 - 52 - Informationen: ihre Gestalt codiert eine digitale Information und ihr Flächenschwerpunkt markiert eine spezifische Position auf der Fläche. In einem einfachen Fall wird die digitale Information in einem binären Zahlensystem mit der Basis b=2 codiert. Dann werden nur zwei Basissymbole 20 verwendet, z.B. ein kleiner und ein großer Kreis, welche die Werte „0“ und „1“ symbolisieren. Ihr Flächenschwerpunkt (Kreis-Mittelpunkt) markiert einen Raster-Punkt auf der Fläche. Die Flächenschwerpunkte der Basissymbole 20 bilden ein periodisches zweidimensionales Muster auf der Maßstabsebene der Codeanordnung 2, beispielsweise in einem quadratischen Raster wie in Fig. 10 mit dem gleichen Basisabstand ^^^^^ benachbarter Symbole in X- und Y-Richtung. Durch Einteilung der Ebene in gleich große, flächenfüllende Parzellen 19 werden die Basissymbole innerhalb einer Parzelle 19 zu einer logischen Einheit zusammengefasst. Bevorzugt werden quadratische Parzellen 19 verwendet. Fig.10 zeigt ein Punktraster mit quadratischen Parzellen 19, die jeweils 7 x 7 binäre Symbole aufnehmen können, was einem maximalen Informationsgehalt von 49 Bit entspricht. Die in der Figur 10 eingezeichneten Linien und Quadrate dienen nur der Veranschaulichung und werden in der realen Codeanordnung 2 nicht dargestellt. Fig. 11 zeigt eine beispielhafte Codeanordnung 2 ohne Linien mit den Basissymbolen 20 in den Parzellen 19. Die regelmäßige Anordnung der Basissymbole 20 wird von einer regelmäßigen Anordnung von Parzellensymbolen 21 überlagert, indem jede Parzelle 19 auf gleiche Weise mit einem Parzellensymbol 21 markiert wird. Das Parzellensymbol 21 kann beispielsweise durch Weglassen eines Basissymbols 20 dargestellt werden. In Fig. 10, 11 besteht das Parzellensymbol 21 aus einer Leerstelle im Punktraster, die sich in der Mitte jeder Parzelle 19 befindet. Das Parzellensymbol 21 erlaubt es, die Lage der Parzelle 19 zu erkennen, um dadurch die Basissymbole 20 entlang einer Lesespur in der richtigen Reihenfolge auszulesen. Da das Parzellensymbol 21 einen Rasterplatz belegt, wird der Informationsgehalt einer Parzelle 19 in diesem Beispiel auf 48 Bit reduziert. R.405034 - 53 - Ein Lesefeld (Reading field) 22 ist ein Feld auf dem codierten Maßstab der Codeanordnung 2, welches mindestens die Größe einer Parzelle 19 besitzt. Es ist an das Punktraster gebunden, aber nicht an das Raster der Parzellen 19. Fig. 12 zeigt ein Punktraster einer Codeanordnung 2 mit zwei beispielhaft eingezeichneten Lesefeldern 22. Die Lage des Lesefeldes 2 im Koordinatensystem des Punktrasters ist durch seine Mittelpunkts-Position 23 definiert. Sie kann in ganzzahligen Schritten des Basisabstandes ^^^^^ variieren. Außerdem hat das Lesefeld 22 in Bezug auf das Koordinatensystem des Punktrasters eine Winkellage, die bei einem quadratischen Raster in Schritten von 90° variieren kann. In Fig.12 ist die Winkellage durch die Markierung einer Ecke des Lesefelds visualisiert. Die möglichen Winkellagen sind in Fig. 13 dargestellt. Die in Fig. 12 beispielhaft dargestellten Lesefelder 22 werden durch folgende Angaben eindeutig beschrieben: ^ Lesefeld 22, links: Position = (4,11); Winkellage = 0° ^ Lesefeld 22, rechts: Position = (12,6); Winkellage = 90° Der Code der Codeanordnung 2 ist so aufgebaut, dass die Basissymbole 20 in einem Lesefeld 22 hinreichend viel Information beinhalten, um den Ort (X,Y) und die Richtung des Lesefeldes 22 im Koordinatensystem 16 der Codeanordnung 2 digital zu codieren. X und Y sind in ganzzahligen Vielfachen des Basisabstandes ^^^^^ angegeben (Grobposition). Die Feinposition in Bruchteilen des Basisabstandes ^^^^^ sowie der genaue Winkel in Bruchteilen von 90° ist nicht digital codiert, sie wird durch eine genaue Ortsbestimmung der Basissymbole 20 im Kamera-Koordinatensystem 17 ermittelt. Fig. 14 zeigt beispielhaft ein Lesefeld 22 mit 15x15 Plätze für Basissymbole 20. Es stellt mehr Informationen bereit als das minimal benötigte Lesefeld 22 der Größe einer Parzelle 19, hier 7x7 Symbole. Die redundante Information wird zur Fehlererkennung und/oder zur Fehlerkorrektur genutzt. Fig. 15 zeigt beispielhaft den Aufbau einer Parzelle 19 mit 7x7 Rasterpunkten. In der Mitte der Parzelle 19 befindet sich das Parzellensymbol 21. Die beiden Felder 24 kennzeichnen die X-Parzellenbereiche, in denen der fortlaufende Code für die Position R.405034 - 54 - in X-Richtung dargestellt ist. Die X-Parzellenbereiche umfassen 24 Rasterpunkte, dementsprechend stellen sie einen Code mit der Länge von 24 Bit dar. Zum Lesen des Codes werden die Basissymbole 20 spaltenweise von links nach rechts und innerhalb jeder Spalte von oben nach unten gelesen. Die Lesereihenfolge in den X-Parzellenbereichen 24 (Lesespur) ist in Rasterpunkt-Koordinaten (XC,YC): (0,6); (0,5); (0,4); (1,6); (1,5); (1,4); (2,6); (2,5); (2,4); (3,6); (3,5); (3,4); (3,2); (3,1); (3,0); (4,2); (4,1); (4,0); (5,2); (5,1); (5,0); (6,2); (6,1); (6,0). Die beiden Felder 25 kennzeichnen die Y-Parzellenbereiche, in denen der fortlaufende Code für die Position in Y-Richtung dargestellt ist. Die Lesereihenfolge entspricht derjenigen der X-Parzellenbereiche 24, ist jedoch um 90° gegen den Uhrzeigersinn gedreht. Die Lesespur verläuft also zeilenweise von unten nach oben und innerhalb jeder Zeile von links nach rechts. Der Code aus den X-Parzellenbereichen 24 (X-Code) ist eine Teilsequenz mit t=24 Ziffern Länge aus einer Gesamtsequenz von g Ziffern, wobei g sehr viel größer als t ist. Die Anzahl g ist hinreichend groß, so dass die X-Parzellenbereiche 24 aller in X- Richtung benachbarten Parzellen 19 vollständig gefüllt werden können. Insbesondere ist g größer als fünfzig, insbesondere größer als tausend und im Speziellen größer als eine Million. Die Inhalte der X-Parzellenbereiche 24 von in Y-Richtung benachbarten Parzellen sind identisch. Die Gesamtsequenz ist so ausgebildet, dass jede Teilsequenz von t aufeinanderfolgenden Basissymbolen 20 vorwärts gelesen in der Gesamtsequenz genau einmal enthalten ist und jede rückwärts gelesene Teilsequenz in der Gesamtsequenz vorwärts gelesen nicht enthalten ist. Der Code aus den Y-Parzellenbereichen 25 (Y-Code) ist invertiert dargestellt, d.h. jede Ziffer z ist ersetzt durch die Ziffer (b-1-z). Für das Binärsystem mit b=2 entspricht das einer Bit-weisen Invertierung. Der invertierte Y-Code ist eine Teilsequenz mit t=24 Bit Länge aus einer Gesamtsequenz, wobei die gleiche Gesamtsequenz verwendet werden kann wie für den X-Code. Auch der invertierte Y-Code kommt nur einmal in der Gesamtsequenz vor und kommt rückwärts gelesen in der Gesamtsequenz nicht vor. Die Inhalte der Y-Parzellenbereiche 25 von in X-Richtung benachbarten Parzellen 19 sind identisch. R.405034 - 55 - Die Gesamtsequenz ist so ausgebildet, dass eine Quersumme einer Teilsequenz kleiner ist als die Hälfte der maximal möglichen Quersumme einer Teilsequenz. Insbesondere ist die Quersumme für jede beliebige aus der Gesamtsequenz herausgegriffenen Teilsequenz kleiner als die Hälfte der maximal möglichen Quersumme einer Teilsequenz. Beispielsweise ist die Quersumme jeder Teilsequenz mit der Länge t zu einem Zahlensystem mit der Basis b kleiner als q = t·(b – 1)/2. Die Teilsequenzen der Gesamtsequenz codieren einen Koordinatenwert, beispielsweise die X-Koordinaten der Startposition des Lesevorgangs. Ebenso codiert eine Teilsequenz der invertierten Gesamtsequenz eine Y-Koordinate, beispielsweise die Position, von welchem an die Teilsequenz gelesen wird. Der in einer Parzelle 19 gelesene X-Code und der Y-Code sind der X- und der Y-Koordinate eines Bezugspunktes in der Parzelle 19 zugeordnet, beispielsweise dem Mittelpunkt des Lesefeldes. Jedes Lesefeld 22 beinhaltet genau ein Parzellensymbol 21, t Basissymbole aus X- Parzellenbereichen 24 und t Basissymbole aus Y-Parzellenbereichen 25. Aus der Position des Parzellensymbols 21 kann die Lage des Parzellenrasters und somit die Lage der X- und Y-Parzellenbereiche 24, 25 im Lesefeld 22 sowie die zugehörige Lesereihenfolge abgeleitet werden. Die entsprechend der Lesereihenfolge gelesenen Basissymbole 20 ergeben eine Ziffernfolge mit t Stellen, die – ggf. nach Invertierung – eine Teilsequenz der Gesamtsequenz ist. Bei unbekannter Orientierung eines Lesefeldes 22 ist zunächst nicht bekannt, welche der beiden Achsen die X-Achse und welche die Y-Achse ist. Dies wird ermittelt, indem die Quersumme des gelesenen Codes errechnet und mit q verglichen wird: die Quersumme eines X-Codes ist kleiner als q, die Quersumme eines Y-Codes ist größer als q. Aus der Richtung der gelesenen Codes in Bezug auf die Gesamtsequenz (vorwärts oder rückwärts) wird die Richtung der Koordinatenachsen des Lesefeldes 22 in Bezug auf die Koordinatenachsen der Codeanordnung 2 eindeutig abgeleitet. Auf diese Weise kann die Lage und Orientierung eines Lesefeldes 22 im Koordinatensystem 16 der Codeanordnung 2 bestimmt werden, die Lage in ganzzahligen Schritten der Rasterweite und die Orientierung in ganzzahligen Schritten von 90°. R.405034 - 56 - In Fig. 16, links sind sinngemäß Parzellen 19 mit 9 Reihen und 9 Spalten dargestellt. Zusätzlich zu den Parzellenbereichen X und Y 24, 25, die den Positionscode für die jeweilige Achse des Koordinatensystems 16 darstellen, ist ein Parzellenbereich für Zusatzdaten 26 vorgesehen. Er umfasst (5x5) Rasterpunkte, wobei der mittlere Rasterpunkt für das Parzellensymbol 21 ausgespart ist, so dass 24 Rasterpunkte verbleiben, die jeweils ein Basissymbol 20 aufnehmen können. Auf diese Weise können in jeder Parzelle 19 24 Bit Zusatzinformationen dargestellt werden, die nicht für die Positionsbestimmung benötigt werden und in einer festgelegten Reihenfolge gelesen werden. Fig. 16, rechts zeigt eine weitere Codeanordnung 2 mit Zusatzdaten. Hier sind vier Parzellenbereiche 26 mit jeweils 10 Rasterpunkten für Zusatzdaten vorgesehen, so dass insgesamt 40 Bit Zusatzinformation je Parzelle 19 zur Verfügung stehen. Der Algorithmus zur Positionsbestimmung ist in Fig. 1 als Abfolge von Datenverarbeitungsschritten dargestellt, die nachfolgend anhand von Ausführungsbeispielen im Detail erläutert werden. Standardverfahren der Mathematik und Bildverarbeitung sowie zur Diagnose und Fehlererkennung sind nicht im Detail erläutert. Das Verfahren ist insbesondere auf hohe Genauigkeit der Positionsbestimmung und auf schnelle Ausführbarkeit hin optimiert. Mit der Abfolge der Schritte wird das Datenvolumen rasch reduziert, was die schnelle Ausführbarkeit unterstützt. In der Ablaufposition I im Schritt 100 werden die digitalen Bilddaten als Grauwert-Matrix von der Kamera 1 an den Rechner übertragen. Schritt 200 dient dazu, die Validität der Bilddaten anhand von Kennwerten grob zu überprüfen. Es können weitere Schritte zur Bildverarbeitung folgen, z.B. zur Aufbereitung der Bilddaten oder zur Segmentierung in einzelne Codebereiche. Diese sind hier im Einzelnen nicht dargestellt. Das Datenvolumen ist bei einem 200x200 Kamerabild 3 40.000 Pixel und somit in Grauwerten 40.000 Byte. In der Ablaufpostion werden die im Bild enthaltenen Symbole (Dots) lokalisiert und entsprechend ihrer Anordnung im Dotcode-Raster in eine Dot-Matrix eingetragen, die der Größe eines Lesefeldes (hier: 15x15 Dots) entspricht. Jedes Symbol wird hinsichtlich seiner Position und Fläche vermessen. Die Positionen werden rektifiziert, um Verzeichnungen des Objektives zu korrigieren. Die Flächen der Symbole werden R.405034 - 57 - normiert, um den Einfluss der perspektivischen Verzerrung zu eliminieren. Auf Basis der normierten Fläche wird der Symbol-Typ klassifiziert. Damit reduziert sich das Datenvolumen auf 225 Dots mit Metainformationen und somit 9000 Byte. Um auch unbesetzte Rasterpunkte oder fehlerhaft abgebildete Symbole als solche zu klassifizieren, wird aus den Positionen der erfolgreich identifizierten Symbole ein lokales Modell des Dotcode-Rasters im Kamerabild erstellt. Innerhalb des Lesefeldes wird an allen Rasterpunkten des Modells nach Symbolen gesucht. Aufgrund von lokalen Verdeckungen, Bildfehlern oder der Bildfeld-Begrenzung können nicht immer alle Symbole identifiziert werden. Dann werden die entsprechenden Rasterpositionen als „nicht valide“ klassifiziert. In der Ablaufposition III werden Ausgleichsgeraden (beams) an die Reihen und Spalten von validen Dots im Lesefeld 22 angepasst. Jede Ausgleichsgerade wird durch einen Geradenwinkel im Bildfeld der Kamera 1 und einen Schnittpunkt mit der X- oder Y-Achse des Bildfeld-Koordinatensystems beschrieben. Jedes Lesefeld 22 liefert zwei Bündel von Ausgleichsgeraden, entsprechend den zwei Hauptachsenrichtungen der Codeanordnung 2. In diesem Beispiel umfasst jedes Geradenbündel (bunch) bis zu 15 Geraden. So werden die Positionsdaten von 15 x 15 = 225 Dots auf die Daten von 15 + 15 = 30 Ausgleichsgeraden reduziert. In der Ablaufposition IV werden die Geraden jedes Bündels durch zwei Polynome zweiten Grades interpoliert: ein Polynom beschreibt die Geradenwinkel, ein zweites die Achsenschnittpunkte der Geraden eines Geradenbündels. Die Polynomparameter der zwei Bündel werden durch 12 reelle Werte repräsentiert, was gegenüber der Geradendarstellung einer Reduktion um den Faktor 5 entspricht. In der Ablaufposition V wird auch ein inverses mathematisches Abbildungsmodell verwendet, um aus den Polynomparametern der zwei Geradenbündel die 6D Position der Kamera 1 zu berechnen. Zusätzlich wird die Validität des Positionswertes abgeschätzt, indem eine Vielzahl von Diagnoseergebnissen aus den einzelnen Schritten des Programmablaufes ausgewertet werden. Die 6D Kameraposition und Validität werden im Schritt 800 an das übergeordnete System ausgegeben. Schritt 200 – Prüfung/Validitätstest der Bilddaten R.405034 - 58 - Anhand von statistischen Kenndaten wird überprüft, ob ein auswertbares Kamerabild 3 vorliegt (siehe Flussdiagramm in Fig. 17). In diesem Beispiel wird die Bildhelligkeit ^ und der Kontrast C abgeschätzt und auf Einhaltung vorgegebener Grenzwerte überprüft. Bei Verlassen der vorgegebenen Grenzwerte wird die weitere Auswertung abgebrochen und das Ergebnis als nicht valide klassifiziert. Zur Einsparung von Rechenzeit wird nur eine geringe Anzahl von Bildpunkten in die Ermittlung der Kennzahlen einbezogen, beispielsweise die Grauwerte an den Schnittpunkten der Geraden und Kreise in dem Schnittpunktmuster 27 (Fig.18). In dem Unterschritt 210 werden ein Set von Pixeln ausgewählt, welche nach einem beliebigen Schnittpunktmuster 27 bestimmt werden. Es werden die Pixel an den Schnittpunkten in dem Schnittpunktmuster 27 verwendet. Damit ist Gi ein Graustufenwert der Pixel an den Positionen i, i = 1..n. In dem Unterschritt 220 werden die Bildhelligkeit ^ und der Kontrast C abgeschätzt: In dem Unterschritt 230 werden die Bildhelligkeit ^ und der Kontrast C mit den folgenden Bedingungen bewertet: Sollte eine der Bedingungen erfüllt sein, wird die weitere Auswertung abgebrochen und das Ergebnis als nicht valide klassifiziert. Erfassung der Dot-Daten/Schritte 310 bis 350: Ziel ist es, in einem Lesefeld 22 vorgegebener Größe (hier: 15x15 Rasterpunkte) die Dots als Basissymbole 20 zu identifizieren, zu vermessen und zu klassifizieren. Als Ergebnis wird eine zweidimensionale Dot-Matrix 29 oder allgemein Basissymbol-Matrix mit den Daten der Dots ausgegeben, wobei die Indizes der Matrix 29 den Reihen und Spalten der Codeanordnung 2 zugeordnet sind. Zu jedem Dot werden Kennwerte ermittelt. R.405034 - 59 - Die Größe Dot.Typ enthält das Klassifikationsergebnis. Falls Dot.Typ positiv ist, wurde der Dot als valide bewertet: ^ Dot.Typ = 2: großer Dot; logische „1“ ^ Dot.Typ = 1: kleiner Dot; logische „0“ ^ Dot.Typ = 0: fehlender Dot; Parzellensymbol 21 Falls Dot.Typ negativ ist, konnte der Dot nicht eindeutig identifiziert werden. In Teilschritt 310 wird zunächst in dem Bildbereich und/oder in dem Lesefeld 22 des Kamerabilds 3 mit dem Dotcode der Codeanordnung 2 eine Startbasis/Startfeld (Launch Pad) 28 gesucht. Darunter wird hier ein Feld von z. B. 3x3 benachbarten Dots vom Typ 1 oder 2 verstanden. Fig.19 zeigt beispielhaft ein Kamerabild 3 mit einer identifizierten Startbasis 28 und dem Lesefeld 22, in dem – ausgehend von der Startbasis 28 – die Dots als Basissymbole 20 gesucht werden. In Teilschritt 320 wird die Startbasis 28 genutzt, um ein lokales Modell des Punktgitters im Umfeld der Startbasis 28 aufzubauen. An den vom Modell prädizierten benachbarten Gitterplätzen werden weitere Dots gesucht, bei Erfolg präzise vermessen und als valide Dots in die Dot-Matrix 29 eingetragen. Dieser Vorgang wird zyklisch wiederholt, so dass um die Startbasis 28 herum immer mehr valide Dots registriert werden, bis das Lesefeld 22 von 15x15 Dots vollständig erfasst ist. Der Suchvorgang ist robust gegen lokale Lesefehler: wenn einzelne Dots nicht eindeutig identifizierbar sind oder den Bildfeldrand überschreiten, werden diese in der Dot-Matrix 29 als nicht valide gekennzeichnet und von der weiteren Verarbeitung ausgeschlossen. Fig.20 zeigt das Ergebnis einer erfolgreich klassifizierten Dot-Matrix 29 auf Basis des Kamerabilds 3 in der Figur 19. In Teilschritt 330 werden die Mittelpunktspositionen und Flächen der Dots vermessen. Teilschritt 340 rechnet die gemessenen Positionen aller validen Dot-Positionen in dem Lesefeld 22 in rektifizierte Koordinaten um. Dieser Schritt dient dazu, die Verzeichnungsfehler des Weitwinkelobjektives (Tonnenverzeichnung) auszugleichen. Nach der Rektifizierung liegen Punkte, die im Code-Koordinatensystem 16 auf einer R.405034 - 60 - Geraden liegen, auch im rektifizierten Bild im Koordinatensystem des Bildaufnehmers 15 auf einer Geraden. Statt einer computergestützten Rektifizierung kann auch eine optische Rektifizierung mit einem entsprechenden Objektiv 9 durchgeführt werden, so dass der Teilschritt 340 optional ist. Auf Basis der gemessenen Daten werden die Dots in Teilschritt 350 klassifiziert. Danach wird in Teilschritt 360 der digitale Code in beiden Raumrichtungen gelesen und mit Hilfe der Codetabelle in eine ganzzahlige Positionsangabe sowie eine grobe Richtungsangabe in 90° Schritten gewandelt. Die Bestimmung der Grob-Position in dem Oberschritt 300 ist damit abgeschlossen. Zu Teilschritt 310 – Ermittlung der Startbasis Der Ablauf zur Bestimmung der Startbasis 28 ist im Flussdiagramm Fig. 21 dargestellt. Unterschritt 310.1: Zunächst wird eine Startposition 30 zur Suche des ersten Dots der Startbasis 28 festgelegt. Fig.22 zeigt mehrere vordefinierte Startpositionen 30 im Bildfeld der Kamera 1. Die Suche beginnt an einer dieser Startpositionen. Falls der Ablauf fehlschlägt (z.B. durch eine Störung im Bildfeld), wird eine zweite Suche an der zweiten Startposition gestartet usw., bis der Unterschritt 310.1. erfolgreich zu Ende geführt werden kann. Falls alle Startpositionen genutzt wurden und keine Suche erfolgreich war, wird Unterschritt 310.1 mit negativem Ergebnis abgebrochen. Unterschritt 310.2: Ausgehend von der Startposition ^^ ^^^^^ /30 wird der nächstgelegene Dot gesucht. In Fig. 23 wird ein Dot an Position ^^ ^ als Startbasissymbol gefunden. Unterschritt 310.3: Anschließend wird ausgehend von ^^ ^ der nächstgelegene Dot gesucht und mit ^^ ^ als erster Hilfsstartbasisymbol bezeichnet. Unterschritt 310.4: Danach wird ein Verbindungsvektor ^^ ^ = ^^ ^ ^ − ^ ^ ^^ gebildet. Unterschritt 310.5: Ausgehend von ^^ ^ wird der nächstgelegene Dot in orthogonaler Richtung zum Verbindungsvektor ^^ ^ = − ^ ^ ^^ gesucht und mit ^ ^ ^ als zweites Hilfsstartbasissymbol bezeichnet. R.405034 - 61 - Unterschritt 310.6: Die drei Punkte ^^ ^, ^ ^ ^ und ^ ^ ^ spannen ein schiefwinkliges Koordinatensystem mit den Achsen ^^ ^ = − ^ ^ ^ ^ und ^ ^ ^ = auf, wobei ^ ^ ^ den Ursprung des Koordinatensystems bildet. Unterschritt 310.7: Falls es sich um ein linkshändisches Koordinatensystem handelt (Bedingung: × ^ ^ ^^ < 0), wird es durch Tausch der Achsen ^ ^ ^ und ^ ^ ^ in ein rechtshändisches Koordinatensystem überführt, siehe Fig.24, links. Unterschritt 310.8: Durch Linearkombination der Vektoren ^^ ^ und ^ ^ ^ werden alle acht zu ^^ ^ benachbarten Dot-Positionen abgeschätzt (Fig.24, zweites von links) und als Startfeld 28 zur Suche und Vermessung von Dots genutzt. Als Ergebnis steht eine Startbasis 28 von 3x3 Dots zur Verfügung (Fig.24, zweites von rechts, rechts). Unterschritt 310.9: Falls bei diesem Ablauf ein Dot nicht gefunden wird, wird angenommen, dass es sich um ein Parzellensymbol 21 handelt (fehlender Dot). In dem Unterschritt 310.10 wird dann ^^ ^ um eine Dot-Position in die zum fehlenden Dot gegenüberliegende Richtung verschoben und der Ablauf wird mit der erneuten Suche von ^^ ^ und ^ ^ ^ fortgesetzt. Bei dem zweiten Durchlauf ist davon auszugehen, dass alle 3x3 Dots identifiziert werden, da das nächste Parzellensymbol 21 eine Parzelle 19 weit (hier: 7 Dots) entfernt liegt und die Startbasis nur 3x3 Dots groß ist. Nachfolgend können ein Unterschritt 310.11 zur Fehlererkennung durchgeführt werden, wobei bei einem erkannten Fehler in einem Unterschritt 310.12 eine neue Startposition 30 verwendet wird und das Vorgehen ausgehend von dem Unterschritt 310.2 wiederholt wird. Als Teil des zuvor beschriebenen Ablaufes besteht die Herausforderung, einen Dot im Bildfeld der Kamera 1 ausgehend von einer geschätzten Startposition zu identifizieren und dessen Position und Fläche mit Subpixel-Genauigkeit zu vermessen. Um eine kurze Messzeit zu erreichen, muss dieser Ablauf sehr schnell erfolgen, da in einem Lesefeld 22 insgesamt 225 Dots identifiziert werden müssen. R.405034 - 62 - Zu diesem Zweck wird die nachfolgend beschriebene Funktion Center_Pos eingesetzt, die auf minimale Anzahl von Pixel-Zugriffen optimiert ist. Fig.25 zeigt das Flussdiagramm. Bei Aufruf der Funktion Center_Pos wird die geschätzte Mittelpunktsposition des Dots ^^ ^ übergeben. Falls ^ ^ ^ außerhalb des Suchbereiches liegt, wird die Suche abgebrochen und ein negatives Ergebnis zurückgemeldet. Andernfalls werden die 8 Schritte a) – h) ausgeführt, siehe auch Fig.26 a - h: a) Mit einem grauwertbasierten zweidimensionalen Gradientenverfahren wird aus ^^ ^ ein optimierter Startpunkt ^ ^ ^ berechnet, der näher am Zentrum des Dots liegt. Für die Berechnung des Gradienten sind lediglich 4 Pixel-Zugriffe im Umfeld des Startpunktes ^^ ^ erforderlich. b) Ausgehend vom optimierten Punkt ^^ ^ wird in +X- und –X-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstand von ^^ ^ zum rechten Rand ist ^0, zum linken Rand ^1. c) ^^ ^ wird auf der X-Achse in Bezug auf die linke und rechte Kante zentriert, daraus ergibt sich der optimierte Punkt ^^ ^. d) Ausgehend vom Punkt ^^ ^ wird in +Y- und –Y-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstand von ^^ ^ zum oberen Rand ist ^2, zum unteren Rand ^3. e) ^^ ^ wird auf der Y-Achse in Bezug auf die obere und untere Kante zentriert, daraus ergibt sich der optimierte Punkt ^^ ^. f)Ausgehend vom Punkt ^^ ^ wird erneut in +X- und –X-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstand von ^^ ^ zum rechten Rand ist ^^, zum linken Rand ^^. g) ^^ ^ wird auf der X-Achse in Bezug auf die linke und rechte Kante zentriert. Daraus ergibt sich der optimierte Punkt ^^ ^, der als Mittelpunktsposition des Dots mit Subpixel-Genauigkeit ausgegeben wird. h) Die Fläche des Dots wird als Fläche des umschreibenden Rechtecks berechnet, multipliziert mit dem Faktor zur Umrechnung der quadratischen Fläche in eine Kreisfläche bzw. elliptische Fläche: R.405034 - 63 - Als Teil des zuvor beschriebenen Ablaufes besteht außerdem die Herausforderung, im Kamerabild 3 den zu einer Startposition ^^ ^ nächstgelegenen Dot zu finden. Diese Aufgabe kann mit der nachfolgend beschriebenen Funktion Nearest_dot gelöst werden. Die Funktion erhält die Eingangsdaten ^^ ^ Startposition ^^^^ minimaler Suchradius ^^^^ maximaler Suchradius ND bool´sche Größe (ND = „neighbor dot“): Falls die Startposition innerhalb eines Dots liegt und ND = false ist, wird der Dot am Ort der Startposition ausgegeben. Falls ND = true ist, wird der Dot am Ort der Startposition ignoriert und der nächstgelegene Nachbar-Dot ausgegeben. Ausgehend vom Startpunkt ^^ ^ tastet die Funktion das Bildfeld entlang von 16 Suchstrahlen 31 im Winkelabstand von 22,5° ab (Fig. 27a, b). Der Radius aller Suchstrahlen 31 wird schrittweise erhöht, beginnend mit dem Radius ^^^^, bis zum maximalen Radius ^^^^. Falls ND = false (Fig. 27a), werden sowohl Kanten gesucht, die in einen Dot hineinführen als auch Kanten, die aus einem Dot herausführen. Falls ND = true (fig. 27b), werden nur Kanten gesucht, die in einen Dot hineinführen. Sobald eine Kante gefunden wurde, wird die Suche abgebrochen. Die Kante befindet sich an der Position ^^ ^, sie gehört zu dem gesuchten nächstgelegenen Dot. Ausgehend von ^ ^ ^ wird mit der Funktion Center_Dot die Mittelpunktsposition und die Fläche des gefundenen Dots bestimmt und ausgegeben. Teilschritt 320 – Erfassen der Dots im Lesefeld Das Flussdiagramm in Fig.28 zeigt den Ablauf zur Erfassung aller Dots im Lesefeld 22. Als Eingangsinformation dient die zuvor ermittelte Startbasis 28 von z. B.3x3 Dots. Zudem ist der Schritt 330: Präzise Messung der Mittelpunktsposition und Fläche der Dots in den Teilschritt 320 integriert. Im ersten Unterschritt 320.1 wird die Mittelpunktsposition 32 des Lesefeldes 22 festgelegt. Diese wird so gewählt, dass das Lesefeld 22 eine möglichst große R.405034 - 64 - Überdeckung mit dem Bildbereich hat, in dem der Code dargestellt ist, so dass möglichst viele valide Dots erfasst werden können. Üblicherweise ist das der Fall, wenn der Mittelpunkt des Lesefeldes 22 im Mittelpunkt des Codebereiches liegt. Falls der Codebereich die gesamte Bildfläche einnimmt, wie in dem vorliegenden Beispiel, wird die Mittelpunktsposition 32 des Lesefeldes möglichst nah am Bildmittelpunkt platziert (siehe Fig.29a). Zu Beginn des Verfahrens sind nur die 3x3 Dots der Startbasis 28 bekannt. Alle anderen Dots im Lesefeld 22 sind noch unbekannt, d.h. ihre genaue Position und Fläche wurde noch nicht vermessen. Ziel des Verfahrens ist es, nach und nach die unbekannten Dots zu vermessen und zu klassifizieren. Unterschritt 320.2: Für jeden bekannten Dot werden die Vektoren ^^^. ^^ und ^^^. ^^ bestimmt (Fig.30), die zum jeweils nächsten Nachbardot in den Hauptachsenrichtungen 1 und 2 zeigen. Sie spannen aufgrund der perspektivischen Verzerrung ein schiefwinkliges Koordinatensystem auf. Durch Linearkombination der Vektoren ^^^. ^^ und ^^^. ^^ können die Rasterpositionen der unbekannten benachbarten Dots abgeschätzt werden. Die Positionsschätzung für einen unbekannten Dot kann verbessert werden, indem die Schätzwerte von mehreren validen Nachbarn extrapoliert und gemittelt werden. Je mehr valide Nachbarn ein unbekannter Dot besitzt, umso besser kann dessen Position geschätzt werden. Um die Zuverlässigkeit des Lesevorgangs zu erhöhen, werden nur unbekannte Dots untersucht, die mindestens zwei valide Nachbarn haben. Für jeden unbekannten Dot wird die Anzahl der validen Nachbarn gezählt. Diese kann zwischen 0 und 8 liegen, siehe Fig. 29c): die mittlere Dot-Position hat 8 Nachbarpositionen (dunkel). Zu Beginn der Suche sind nur die 3x3 Dots der Startbasis valide. Die einzigen unbekannten Dots mit 2 oder mehr validen Nachbarn sind in Fig. 29b) verstärkt dargestellt. Fig. 29 d) zeigt schematisch die unbekannten Dots mit 2 validen Nachbarn 20 a und mit 3 validen Nachbarn als 20 b. Alle anderen unbekannten Dots (20c) haben noch keine validen Nachbarn. R.405034 - 65 - Der Algorithmus basiert auf einem Stack, wobei in dem Unterschritt 320.3 alle unbekannten Dots mit mindestens 2 validen Nachbarn in den Stack eingetragen eingetragen werden. Der Stack wird in einer Schleife abgearbeitet: ^ Unterschritt 320.3: Der oberste Eintrag wird als unbekannter Dot vom Stack geholt und in den folgenden Schritten bearbeitet. ^ Unterschritt 320.4: Die Position des unbekannten Dots wird geschätzt, indem die extrapolierten Positionen aller validen Nachbarn gemittelt werden. Falls der unbekannte Dot außerhalb des erwarteten Lesefeldes 22 liegt, wird er nicht weiter bearbeitet. Liegt der unbekannte Dot innerhalb des erwarteten Lesefeldes 22, wird er an der geschätzten Position mit der Funktion Center_Pos identifiziert und vermessen. ^ Unterschritt 320.5: Falls der unbekannte Dot nicht identifiziert werden kann, wird er als defekt klassifiziert (Unterschritt 320.6) und der nächste unbekannte Dot wird vom Stack geholt. ^ Schritt 330/Unterschritt 320.7: Falls der Dot identifiziert wurde, wird seine Position und Fläche mit der Funktion Center_Pos gemessen und er wird als valider neuer Dot in die Dot-Matrix 29 eingetragen. Auch die Vektoren ^^^. ^^ und ^^^. ^^ werden für diesen Dot berechnet und eingetragen. ^ Unterschritt 320.8: Für alle 8 Nachbarn des neuen validen Dots wird die Zahl der validen Nachbarn um 1 erhöht. Falls dadurch ein unbekannter Dot zwei oder mehr valide Nachbarn hat, wird dieser zur Vermessung auf den Stack gelegt. ^ Unterschritt 320.9: Dieser Ablauf wird wiederholt, bis der Stack leer ist. Dann wurden alle Dots des Lesefeldes bearbeitet. ^ Unterschritt 320.10: Falls nicht genügend Dots zur Positionsbestimmung gefunden wurden, wird der Lesevorgang als nicht valide bewertet. Zu Teilschritt 340 – Rektifizierung Die Abbildung mit dem Weitwinkelobjektiv kann eine tonnenförmige Verzeichnung des Bildfeldes zur Folge haben. Linien von Dots, die in der Codeebene der Codeanordnung 2 auf einer Gerade liegen, liegen im Kamerabild 3 unter Umständen auf einer gekrümmten Linie. Diese Krümmung kann durch ein mathematisches Verfahren beseitigt werden, die Rektifizierung. Aus Rechenzeitgründen wird die Rektifizierung nur auf die R.405034 - 66 - Mittelpunktspositionen 32 der Dots angewandt, nicht auf alle Bildpunkte des Eingangsbildes. Fig. 31 zeigt beispielhaft ein nicht rektifiziertes Raster (33) und ein rektifiziertes Raster (34). Das Zentrum der Verzeichnung^ ^^^^^ liegt im Schnittpunkt der optischen Achse 5 mit dem Kamerachip des Bildaufnehmers 12, bei perfekter Montage der Kamera 1 ist das üblicherweise die Mitte des Kamerachips. Andernfalls wird das Zentrum durch einen einmaligen Kalibriervorgang der Kamera 1 bestimmt. Mit einem Polynom 2. Ordnung wird eine Position ^^ im Bildfeld der Kamera 3 in die rektifizierte Position ^^ umgerechnet: ^^ = (^^ + ^^^ + ^^^^) ∙ ^ ^⃗ + ^ ^^^ ^ ^ mit ^^⃗ = ^^^^ ^^^^^ ^ Position in Bezug auf das Zentrum der Verzeichnung D = Abstand zum Zentrum der Verzeichnung Die Verzeichnung ändert nur die Länge des Vektors ^^⃗, nicht dessen Richtung. Die Polynomparameter ^^, ^^, ^^ sind spezifisch für das Objektiv 9 und werden in einem Kalibriervorgang an dieses angepasst. Alternativ hierzu kann ein verzerrungsfreies Objektiv 9 verwendet werden. Zu Teilschritt 350 – Klassifizierung der Dots Die kleinen und großen Dots symbolisieren die Werte „0“ und „1“ des binären Zahlensystems. Die Klassifizierung der Dots erfolgt auf Basis eines Schwellwertes für die normierte Fläche der Dots. Der Ablauf ist im Flussdiagramm Fig.32 dargestellt. Die perspektivische Verzerrung hat starken Einfluss auf die Fläche der Dots im Bildfeld. Beispielsweise werden weiter entfernt liegende Dots kleiner abgebildet, kreisförmige Dots auf einer geneigten Ebene werden als Ellipse abgebildet. Unterschritt 350.1: Um diese Effekte zu kompensieren, wird die Fläche der Dots in Bezug auf die Fläche ihrer Dot-Zelle normiert. Unter der Dot-Zelle ist das Parallelogramm zu verstehen, das die Vektoren ^^^. ^^ und ^^^. ^^ am Ort des Dots, also die Abstandsvektoren vom Dot zu den in den Hauptachsenrichtungen 1 und 2 benachbarten Dots, aufspannen. R.405034 - 67 - Fig. 30 zeigt einen perspektivisch verzerrten Dot in einem verzerrten Raster, das lokal durch die Vektoren ^^^. ^^ und ^^^. ^^ aufgespannt wird. Die Fläche der Zelle ist ^^^^. ^^ × ^^^. ^^^. Die normierte Fläche des Dots wird folgendermaßen berechnet: Unterschritt 350.2: Der Schwellwert wird mit statistischen Verfahren aus den normierten Flächen ^^^. ^^^^^^^^^^ aller Dots bestimmt. Unterschritt 350.3: Anschließend werden alle Dots klassifiziert: ^ Fehlender Dot: Typ 0 ^ Normierte Fläche kleiner als Schwellwert: Typ 1; sonst: Typ 2. Unterschritt 350.3: Falls Fehler auftreten wird der Status auf invalid gesetzt, falls keine Fehler auftreten ist der Dot valid. Zu Teilschritt 360 – Lesen des Codes Nach der Klassifizierung der Dots enthält die Dot-Matrix 29 alle Informationen, um die 6D Position zu ermitteln. Die Dot-Matrix 29 enthält die folgenden Informationen: Dot Daten Beschreibung Daten werden durch die folgenden Schritte bereitgestellt: ^^^^,^ . ^ ^ Genaue Dot-Mittelpunkte in Teilschritt 310 und 320, den originalen Funktion: Center_Pos: Bildkoordinaten Subpixel genaues Erfassen des Dot- Mttelpunkts R.405034 - 68 - ^^^^,^ . ^ ^ Dot-Mittelpunkte in den Teilschritt 340, Funktion: rektifizierten Bildkoordinaten Rectify: Rektifizierung der ^^^^,^ . ^ ^ ^^^,^ . ^ ^^^^1 ^^^^,^ . ^ ^^^^2 Lokaler Distanzvektor Teilschritt 310 und 320, zwischen benachbarten Dots berechnet aus den Dot- in der ersten und der zweiten Mittelpunkten in den Rasterrichtung. originalen Bildkoordinaten ^^^^,^ . ^ ^ ^,^ . ^^^^ Dotfläche in den originalen Teilschritt 310 und 320, Bildkoordinaten [Pixel] Center_Pos: Dotflächenerfassung ^,^ . ^^^ Klassifizierter DotTyp Teilschritt 340, Dot- Klassifizierung auf Basis der Dot-Fläche ^,^ . ^^ Anzahl der validen Teilschritt 310 und 320, Nachbardots Zählung der validen Nachbarn Das Flussdiagramm dazu ist in Fig.33 dargestellt. Die digitale Grob-Position in X- und Y-Richtung wird durch das Lesen der X- und Y-Bitketten in der Dot-matrix ermittelt. Unterschritt 360.1: Das Parzellensymbol 21 „leerer Dot“ (Typ 0) dient als Referenzpunkt, um die Lage der Bitketten in der Dot-Matrix 29 zu identifizieren. Falls mehrere Einträge mit Typ 0 enthalten sind, können diese gegeneinander plausibilisiert werden, da sich der „leere Dot“ regelmäßig im Parzellenraster (hier: 7x7 Dots) wiederholt. Unterschritt 360.2: Ausgehend vom Parzellensymbol 21 wird die Lage der Lesespuren für die Codes in den beiden Achsen der Codeebene ermittelt. Dabei ist zunächst unbekannt, welche der Sequenzen der X-Achse und welche der Y-Achse zugeordnet R.405034 - 69 - sind und in welcher Richtung (vorwärts oder rückwärts) der Code gelesen wird. Die Codes werden entlang der Lesespur gelesen und als Code_0 und Code_1 abgespeichert. Fig.34a) zeigt beispielhaft die Dot-Typen, die in der DotMatrix eingetragen sind. Das Parzellensymbol (Typ 0) ist grau unterlegt. in Fig.34b) ist zusätzlich die Lesespur für die zwei Achsen eingezeichnet. Die Lesespuren der zwei Achsen sind um 90° zueinander gedreht, wobei das Parzellensymbol 21 das Drehzentrum bildet. Da das Lesefeld (15x15 Dots) deutlich größer ist als eine Parzelle (7x7), kann der Code redundant gelesen werden: Eine Kopie von Code_0 liegt in den in j-Richtung benachbarten Parzellen (35a), eine Kopie von Code_1 liegt in den in i-Richtung benachbarten Parzellen (36a). Redundanz besteht außerdem in der Länge des lesbaren Codes. Zur Ortsbestimmung genügt eine Codelänge von 24 Bit in jeder Richtung, also der Inhalt einer 7x7 Parzelle. Das größere Lesefeld mit 15x15 Dots liefert jedoch 51 oder 54 Bit in jeder Richtung. Die redundante Information wird genutzt, um einzelne fehlerhaft gelesene Bits in Code_0 und Code_1 zu erkennen und zu korrigieren. In diesem Beispiel werden die folgenden Codes gelesen: ^ Code_0: 111.111.011.111.011.111.111.111.111.111.111.111.011.011.111.111.111.111 ^ Code_1: 000.000.000.101.000.001.000.000.000.000.100.110.000.000.000.000.000.000 Unterschritt 360.3: Aus Code_0 wird ein beliebiger Abschnitt mit t=24 aufeinanderfolgenden Bits ausgewählt und auf Vollständigkeit geprüft. Unterschritt 360.4: Nachfolgend wird die Quersumme von Code_0 berechnet. Falls diese kleiner ist als t/2 = 12, handelt es sich bei Code_0 um den X-Code und bei Code_1 um den Y-Code. Falls sie größer ist als t/2, handelt es sich bei Code_0 um den Y-Code und bei Code_1 um den X-Code. Der Y-Code wird invertiert. Der X-Code bleibt unverändert. Unterschritt 360.5: Danach werden Code_0 und Code_1 mittels einer fehlertoleranten String-Suche in der Codetabelle gesucht. Die Bit-Position mit der besten R.405034 - 70 - Übereinstimmung wird als Suchergebnis ausgegeben, bei zu großer Abweichung wird das Suchergebnis als nicht valide bewertet. Um Code_0 und Code_1 in ganzzahlige Ortskoordinaten (X, Y) zu transformieren, wird die Bit-Position der Codes entsprechend dem Code-Aufbau in eine räumliche Position gewandelt, wie beispielhaft in Fig.35 schematisch dargestellt: - Es wird ein wird ein beliebiger Abschnitt mit t=24 aufeinanderfolgenden Bits ausgewählt und auf Vollständigkeit geprüft: 000100000000001010100000 Dieser wird in der Codetabelle in Vorwärtsrichtung gesucht und an der Bitposition 37 gefunden gemäß Unterstreichung: 010101010000000010000000000100010000000010000000000101010000000010000 00001000101000000001 … - Jeder X-Dot bekommt eine Bitposition innerhalb der Codetabelle zugeordnet. - Die Bitposition entspricht dem Anfangspunkt bei der Lesereihenfolge innerhalb einer Parzelle. - Jeder Y-Dot bekommt eine Bitposition innerhalb der Codetabelle zugeordnet. 360.6 Validitätsprüfung Gemäß der Figur 35 entspricht dies der Dotposition Xc=10=Pos0. In analoger Weise wird der Yc-Wert für Pos1 ermittelt. Für beide Codes wird auch die Leserichtung (Dir_0 und Dir_1) ermittelt, indem die Codes in beiden Richtungen in der Codetabelle gesucht werden: 0 = gefunden in Vorwärts-Richtung, 1 = gefunden in Rückwärts-Richtung. Aus den Leserichtungen von Code_ 0 und Code_1 wird gemäß der nachfolgenden Tabelle die grobe Orientierung des Lesefensters 22 in Schritten von 90° bestimmt. ^^^^ 0 1 0 0° 270° ^ ^^ ^ 1 90° 180° R.405034 - 71 - Als Ergebnis von Teilschritt 360 steht die ganzzahlige Grob-Position (^^,^^^, ^^,^^^) und die Orientierung des Lesefensters 22 bereit. Schritt 400 – Ermittlung der Beam-Daten Um die Fein-Position zu ermitteln, werden die rektifizierten Positionsdaten der validen Dots in der Dot-Matrix 29 ausgewertet. Fig. 36 zeigt beispielhaft die Dots eines Lesefeldes im Kamerabild nach der Rektifizierung. Schritt 410: Anpassung von Ausgleichsgeraden Dazu werden Ausgleichsgeraden (beams) an die Reihen und Spalten von validen Dots im Lesefeld 22 angepasst. Die Ausgleichsgerade wird mit üblichen mathematischen Methoden zur Fehlerminimierung aus den Positionsdaten der validen Dots in der jeweiligen Reihe oder Spalte berechnet. Nicht valide Dots werden von dem Verfahren ausgeschlossen. Jede Ausgleichsgerade ^ des bunches ^ = 0..1 wird durch folgende Parameter beschrieben (Fig.37): o^^^^ Schnittpunkt mit der XI-Achse o^^^^ Schnittpunkt mit der YI-Achse o^^^ Winkel der Gerade i im Bildfeld Die an die Dot-Reihen angepassten Ausgleichsgeraden bilden ein erstes Geradenbündel (^^^^ℎ^) 36, wobei die Geraden parallel zu der YC-Achse sind. Die Geraden der Dot-Spalten bilden ein zweites Geradenbündel (^^^^ℎ^) 37, wobei die geraden parallel zu der XC-Achse sind. So werden die Positionsdaten von 15 x 15 = 225 Dots auf die Daten von 15 + 15 = 30 Ausgleichsgeraden reduziert. Die Interpolation hat außerdem den Effekt, dass eine Mittelung über die Dot-Positionen auf jeder Geraden erfolgt, so dass die Ausgleichsgeraden robust sind gegenüber individuellen Schwankungen der einzelnen Dot-Positionen. Dadurch erhöht sich die Stabilität und Genauigkeit des 6D Positionswertes. In Fig. 36 sind die Ausgleichsgeraden für ein Lesefeld mit 15x15 Dots dargestellt, die Geraden aus ^^^^ℎ^ als 36 und die Geraden aus ^^^^ℎ^ als 37. R.405034 - 72 - Schritt 420 – Ermittlung der Bunch-Daten In diesem Schritt werden die drei Geraden-Parameter ^^^^, ^^^^, ^^^ jedes Bündels von Ausgleichsgeraden 36, 37 mit einem Polynom zweiten Grades interpoliert. Das Interpolationsverfahren berücksichtigt nur valide Geraden. Nicht valide Geraden, für deren Interpolation zu wenig valide Dots zur Verfügung stehen, werden von der bunch- Interpolation ausgenommen. Dazu wird mit üblichen mathematischen Methoden eine gewichtete Interpolation durchgeführt, die auf der Minimierung von Fehlerquadraten beruht. Valide Geraden werden mit dem Gewicht 1,0 bewertet, während nicht valide Geraden mit dem Gewicht 0,0 bewertet und somit ausgeblendet werden. Ansatz Interpolationsfunktion: ^ ^^^(^) = ^^^^^ + ^ ∙ ^^^^^ + ^^ ∙ ^^^^^ ^ ^^^(^) = ^^^^^ + ^ ∙ ^^^^^ + ^^ ∙ ^^^^^ ^ ^^(^) = ^^^^ + ^ ∙ ^^^^ + ^^ ∙ ^^^^ Dabei ist i die fortlaufende Nummer der Geraden (Geradenindex) im jeweiligen Geradenbündel. Allgemeiner Ansatz zur Interpolation der Geradenparameter: ^^(^) = ^^^ + ^ ∙ ^^^ + ^^ ∙ ^^^ ; mit ^^(^) = ^^^(^), ^^^(^) or ^^(^) Für eine mathematisch eindeutige Beschreibung einer Geraden ist es ausreichend, nur einen der beiden Achsenschnittpunkte ^^^^ oder ^^^^ zusammen mit dem Geradenwinkel ^^^ anzugeben. Idealerweise wird der Schnittpunkt mit derjenigen Achse angegeben, die möglichst senkrecht zur Geraden steht: bei flachen Geraden wird vorzugsweise der Schnittpunkt mit der Y-Achse angegeben, bei steilen Geraden der Schnittpunkt mit der X-Achse. Daher wird folgendes Verfahren angewandt: ^ In Bündel 1 wird eine Referenz-Gerade ausgewählt, die sich nahe am Mittelpunkt 32 des Lesefeldes 22 befindet. ^^ ^ ^ ^ ^ Falls der Winkel der Referenz-Geraden im Bereich [ ^ ^, ^ ^] oder [ ^ ^, ^ ^] liegt (Sektoren auf der XI-Achse in Fig. 38a)), handelt es sich um eine flache Gerade. Dann wird für alle Geraden in Bündel 0 (36) der Schnittpunkt ^^^^ mit der X-Achse spezifiziert und für alle Geraden in Bündel 1 (37) der Schnittpunkt ^^^^ mit der Y-Achse (Fig. 38b)). Als Merker wird rot_status auf 0 gesetzt. R.405034 - 73 - ^ Falls der Winkel der Referenz-Geraden außerhalb des genannten Bereiches liegt (Sektoren auf der YI-Achse in Fig. 38 a)), handelt es sich um eine steile Gerade. Dann wird für alle Geraden in Bündel 0 (36) der Schnittpunkt ^^^^ mit der Y-Achse spezifiziert und für alle Geraden in Bündel 1 (37) der Schnittpunkt ^^^^ mit der X-Achse (Fig. 38c)). Als Merker wird rot_status auf 1 gesetzt. Durch diesen Schritt wird der Datenumfang weiter reduziert: ein Bündel von Geraden wird durch nur 6 Parameter beschrieben, drei Parameter für ^^^ und drei Parameter für einen der Achsenschnittpunkte, ^^^^ oder ^^^^. Bei zwei Bündeln sind es 12 Parameter sowie der Merker rot_status. So werden zwei Bündel 36, 37 immer durch 12 Parameter und die bool’sche Variable rot_status beschrieben, unabhängig von der Anzahl von Geraden bzw. der Größe des Messfeldes. Aus diesen Parametern wird im nächsten Schritt die 6D Position berechnet. Die Interpolation hat außerdem den Effekt, dass eine Mittelung über die Geraden jedes Bündels und somit über alle Dots erfolgt, so dass die interpolierten Werte robust sind gegenüber individuellen Schwankungen einzelner Geraden oder Dots. Dadurch erhöht sich die Stabilität und Genauigkeit des 6D Positionswertes. Schritt 6 – Berechnung der 6D Kameraposition Aus den 12 Interpolationsparametern der Geradenbündel (Tabelle 9.1) werden die 6 Koordinaten der Kameraposition berechnet, in folgender Reihenfolge: ^ Teilschritt 500: Position ^^ und ^^ ^ Teilschritt 710: Berechnung von Kennwerten des verzerrten Rasters ^ Teilschritt 600: Kamera-Winkel ^^ ^ Teilschritt 700: Position ^^ ^ Teilschritt 700: Kamera-Winkel ^^ und ^^ ^ Teilschritt 700: Iterativer Algorithmus zur Lösung des Gleichungssystems für ^^, ^^ und ^^ Die Berechnung umfasst die Herleitung von Kennwerten, die das gemessene Raster am Ort der optischen Achse 5 beschreiben. Diese Kennwerte sind mit der 6D Kameraposition R.405034 - 74 - über ein Gleichungssystem verknüpft, das sich aus dem Abbildungsmodell und den Gesetzen der Strahlenoptik ergibt. Die Kameraposition wird durch Lösen des Gleichungssystems bestimmt. Zusätzlich wird die Validität der Positionswerte abgeschätzt, indem eine Vielzahl von Diagnose-ergebnissen aus den einzelnen Schritten des Programmablaufes ausgewertet werden. Zu Teilschritt 500 – Berechnung der Kameraposition ^^ und ^^ Die Kameraposition in X und Y wird als Summe der ganzzahligen Grobposition (^^,^^^, und eines reellen Bruchteils [0..1] (Feinposition) berechnet, multipliziert mit dem Dot-Rasterabstand: ; Einheit: [m] ; Einheit: [m] mit (^^,^^^, ^^,^^^) : Ganzzahlige Position des Lesefeldes in [Dot], wie in Schritt 300 ermittelt (^^,^^^^^, ^^,^^^^^) : reeller Bruchteil der Lesefeld-Position in [Dot] ^^^^^ : Dot-Rasterabstand in [m/Dot]. Der Referenzpunkt für die Messung der Kameraposition ist der Schnittpunkt 4 der optischen Achse 5 mit der Codeanordnung 2, im Kamerabild 3 ist der Schnittpunkt der optischen Achse 5 mit dem Bildaufnehmer 12 (Fig.2, Punkt (4) bzw. Abbildung des Schnittpunkts 4 Bildmittelpunkt/Image center 4 in Fig. 39). Dieser Bildmittelpunkt ^^ (4) wird durch die Lage des Objektivs 9 in Bezug zum Kamerachip bestimmt, er muss nicht mit dem Zentrum des Kamerachips identisch sein. Er wird in einem Kalibrierprozess ermittelt und als konstanter zweidimensionaler Vektor (^^^ , ^^^) im Programm hinterlegt. Die Bruchteile ^^,^^^^^ und ^^,^^^^^ berechnen wir als Schnittpunkt der interpolierten Gerade mit dem Bildmittelpunkt 4. Für die beiden Strahlenbündel k = 0 und k = 1 (36, 37) gilt die Interpolationsgleichung für den Achsenschnittpunkt: ^^ (^) = ^^^^ + ^ ∙ ^^^^ + ^^ ∙ ^^^^; mit ^^ (^) = ^^^ (^) oder ^^^(^), abhängig von rot_status. R.405034 - 75 - Im Bild 39 sind die Mittelpunktsgeraden für beide Geradenbündel ^ = 0 und ^ = 1 dargestellt. Es gilt Durch geeignete Wahl der Interpolationsparameter (^, ^) wird der Achsschnittpunkt für beide Mittelpunktsgeraden in den Bildmittelpunkt^ ^^^^^ verschoben. Dies wird erfüllt durch die Gleichungen Die Lösung der Gleichungen führt auf die gesuchten Bruchteile der Geradenindizes Zu Teilschritt 710 – Berechnung von Kennwerten des verzerrten Rasters Aus den Interpolationsgleichungen werden weitere Kennwerte gewonnen, die das verzerrte Raster charakterisieren. Die Feinpositionen ^^,^^^^^ und ^^,^^^^^ werden in die Interpolationsgleichungen eingesetzt, um die Kennwerte im Bildmittelpunkt zu erhalten. Die Kennwerte werden zur Bestimmung der Position in den Dimensionen ^^, ^^ , ^^ und ^^ benötigt. a) Rastermaß der Achsenschnittpunkte der Geraden für beide Geradenbündel: ^^^, ^^^. Das Rastermaß wird durch Ableitung der Interpolationsfunktion für den Achsenschnittpunk ^^ (^) nach dem dimensionslosen Geraden-Index ^ am Ort des Bildmittelpunktes bestimmt: für R.405034 - 76 - ^^,^^ ^^^ ^ = 0 mit ^ ^ ^^^ ^^^^^ = ^^,^^^^^ ^^^ ^ = 1 b) Geradenwinkel im Bildmittelpunkt: ^^^, ^^^ (siehe Fig. 37), ergibt sich aus der Interpolationsfunktion für den Geradenwinkel: für c) Winkeldivergenz der Geradenbündel im Bildmittelpunkt: ^^^^, ^^^^. Darunter ist die Winkeldifferenz zwischen benachbarten Geraden nahe am Bildmittelpunkt zu verstehen. Sie ergibt sich aus der Ableitung der Interpolationsfunktion für den Geradenwinkel nach dem dimensionslosen Geraden- Index ^ am Ort des Bildmittelpunktes: für Zu Teilschritt 600 – Berechnung des Kamerawinkels ^^ Wir ermitteln den Geradenwinkel ^^ aus der in 2.4.2 hergeleiteten Abbildungsgleichung: ; mit ^^ = ^^ − ^ : Abstand Codeebene / opt. Zentrum Durch Ableiten der Bild-Koordinaten ^^ und ^^ nach der Coderaster-Koordinate ^^ erhalten wir Die Steigung einer Gerade des Geradenbündels ^^^^ℎ^ im Kamerabild ist Wir betrachten die Steigung im Zentrum bei ^^ = 0 und erhalten ^^ | ^^^^ = − tan( ^^ ) . ^^|^^^^ ist die Steigung der Geraden von ^^^^ℎ^ im Bildmittelpunkt. Sie entspricht dem Kennwert ^^^ aus 6.2 b), d.h. Das führt auf die Gleichung für den Kamerawinkel ^^: ^^ = ^^^ Zu Teilschritt 700 – Berechnung der Kameraposition ^^ R.405034 - 77 - Die Kameraposition ^^ wird aus dem Rasterabstand der Achsenschnittpunkte ^^^ für beide Geradenbündel b^^^ℎ^ ermittelt. Da es in jedem Bild zwei Geradenbündel gibt, können grundsätzlich zwei ^^ Positionen ermittelt werden. Mit den Fällen rot_status = ^ ergeben sich vier Werte ^^^^ mit (^, ^ = 0..1). Es gilt die Abbildungsgleichung zur Fig.9: ; mit ^^ = ^ − ^^: Abstand Codeebene / opt. Zentrum Beispielhaft wird der Wert ^^^^ aus dem gemessenen Rasterabstand ^^^ der Achsenschnittpunkte auf der ^^ Achse für rot_status = 0 ermittelt. Auf der ^^ Achse gilt: ^^ = 0, aus der Abbildungsgleichung folgt ^^^^^ + ^^^^^ = 0 ⇒ ^ ^ ^^ ^ = − ^ ^^ ^^ Durch Einsetzen dieses Terms in die Gleichung für ^^ erhalten wir ^^ = Der Rasterabstand ^ entspricht der Ableitung ^ ^ ^ ^ ^^ ^^ ^^ bei ^^ = 0 ; mit ^^ = ^ ^^^^ Geradenindex in [dots] Daraus Bei ^ aufgelöst Durch Einsetzen der Matrixelemente erhalten wir die Gleichung für ^^^^ In gleicher Weise wird die Position ^^^^ für rot_status=1 berechnet, Ansatz: ^^^ = aus ^^^ abgeleitet, Ansatz für ^^^^: ^^^ = ^^ ^ ^^ ^^ ^ ; ^^ ^^ Die Ergebnisse sind in Tabelle 10.1 zusammengefasst. R.405034 - 78 - rot_status ^^^^ ^^^^ (abgeleitet aus ^^^^ℎ^) (abgeleitet aus ^^^^ℎ^) ^^^^ ^ ∙ ^ ^ ^^^^ ∙ cos ^^ 0 ^^^ = ^ ∙ ^^^^^ ∙ cos ^^ ^^^ ∙ cos ^^ = ^^^ ∙ (cos ^^ − tan ^^ sin ^^ sin ^^) ^^^^ ^ ∙ ^ ^ ^^^^ ∙ cos ^^ 1 ^^^ = ^ ∙ ^^^^^ ∙ cos ^ ^^^ ∙ sin ^^ = ^ ^^^ ∙ (− sin ^^ − tan ^^ sin ^^ cos ^^) Tabelle: Berechnung der Kamera-Positionswerte ^^^^ ^ Durch Einführung des Winkels ^ = ^^^_^^^^^^ ∙ ^ können die Gleichungen zusammengefasst werden: Um nur einen Wert ^^ pro Bild auszugeben, wird der Mittelwert beider z-Werte berechnet: ^^ = ^ ^^^ ^^ ^^^ ^ Zu Teilschritt 700 – Berechnung der Kamerawinkel ^^ , ^^ Die Winkel ^^, ^^ werden aus der Winkeldivergenz ^^ ^ (^) ^ ^ der beiden Geradenbündel ^^^^ℎ^ im Bildzentrum abgeleitet. Im Schritt 600 haben wir die Geradensteigung ^^ für das Geradenbündel ^^^^ℎ^ als Funktion des Geradenindex ^^ hergeleitet: (^^^ ^^ ^^^ ^^^^^^ ^^ ^^^ ^^ ^^^ ^^ )∙^^^^^^ ^^ ^^^ ^ ∙^ ^ (^ ) = ^ ^ ^ ^ (^^^^ ^^ ^^^ ^^^^^^ ^^ ^^^ ^^ ^^^ ^^ )∙^^^^^^ ^^ ^^^ ^^∙^^ Daraus berechnen wir den Geradenwinkel ^^ (^^ ) = tan( ^^(^^)) und leiten diesen nach ^ = ^^^^^ [dots] ab, um die Winkeldivergenz zu ^ Im Bildzentrum ^ = 0 ist die Winkeldivergenz R.405034 - 79 - ^ Gleichsetzen mit der gemessenen Winkeldivergenz ^^^^ ergibt die Gleichung für In gleicher Weise ergibt sich der Winkel ^^ aus der Steigung ^^ einer Geraden in ^^^^ℎ^. Analog zur Rechnung in 600 erhalten wir ^ Wir leiten den Winkel ^^ (^^ ) = tan( ^^(^^)) nach ^^ ^ = ^ ^ ^^^^^ ab und erhalten die Winkeldivergenz ^ ^ ^^^ ^ Im Bildzentrum ^ = 0 ist ^^ ^ (^ ^ ) ^^ ^^^^ ∙^^^ ^ ^^ ^ die Winkeldivergenz ^^ ^^ ^ = ^^ ^^ ^ ^ ^ Gleichsetzen mit der gemessenen Winkeldivergenz ^^^^ ergibt die Gleichung für Zu Teilschritt 700 – Iterative Berechnung der Kameraposition Z und der Kamerawinkel ^^ , ^^ Zwischen den Funktionen ^^, ^^ und Z gibt es gegenseitige Abhängigkeiten: Daher werden die Gleichungen in einem iterativen Ablauf gelöst. Mit jedem Iterationsschritt steigt die Genauigkeit der Kameraposition Z und der Kamerawinkel ^^ und ^^. Der Algorithmus ist im Flussdiagramm Fig.40 dargestellt. Unterschritt 700.1: Berechnung der reellen Bruchteile der Lesefeld-Position in [Dot] (^^,^^^^^, ^^,^^^^^) Unterschritt 700.2: Berechnung der Position rx und ry Unterschritt 700.3: Berechnung der Kamerarotation/Kamerawinkels ^^ Unterschritt 700.4: Initialisiere die Kamerawinkel phix = 0; phiy = 0 Unterschritt 700.5: Initialisiere einen Zähler für Iterationen mit z.B.4 Unterschritt 700.6: Berechnung von rZ0k und rZ1k und schließlich rZ=(rZ0k+ rZ1k)/2 Unterschritt 700.7: Berechnung von Kamerawinkel phix, phiy Unterschritt 700.8: Counter = 0? Neuberechnung, ansonsten Abbruch der Iteration R.405034 - 80 - Unterschritt 700.9: Fehlerabfrage Der Algorithmus konvergiert schnell, nach etwa 4 Iterationen ist das Ergebnis hinreichend stabil. Schließlich werden folgende Ergebnisse ausgegeben: ^ Kameraposition (^^, ^^, ^^) ^ Kamerawinkel (^^ , ^^ , ^^) ^ Validitätsinformationen Bezugszeichenliste: 1 Kamera 2 Codeanordnung 3 Bild 4 Schnittpunkt der optischen Achse 5 mit der Codeanordnung 2; Aufpunkt; 5 optische Achse 6 leer 7 Schnittpunkt der optischen Achse mit dem Bildaufnehmer 8 Objekte mit mindestens einer Codeanordnung 2 9 Objektiv 10 Brennpunkt des Objektivs 9 11 Brennpunkt des Objektivs 9 12 Bildaufnehmer 13 optisches Zentrum des Objektivs 9 14 Sichtstrahl 15 Koordinatensystem (XI, YI) des Bildaufnehmers 12 in der Ebene des Bildaufnehmers 12 16 Koordinatensystem (XC, YC) der Codeanordnung 2 in der Ebene der Codeanordnung 2 17 Koordinatensystem (X, Y, Z) der Kamera 1 18 virtuelle Bildebene 19 Parzelle 20 Basissymbol 21 Parzellensymbol 22 Lesefeld 23 Mittelpunkts-Position R.405034 - 81 - 24 X-Parzellenbereiche 25 Y-Parzellenbereiche 26 Parzellenbereich für Zusatzdaten 27 Schnittpunktmuster 28 Startfeld/Startbasis/launch pad 29 Dot-Matrix 30 Startpositionen 31 Suchstrahlen 32 Mittelpunktsposition des Lesefeld 22 33 nicht-rektifiziertes Punktraster 34 rektifiziertes Punktraster 35 Lesespur in einer ersten Code-Richtung 36 Lesespur in einer zweiten Code-Richtung 37 erstes Geradenbündel/bunch0 38 zweites Geradenbündel/bunch1

Claims

R.405034 - 82 - Ansprüche 1. Verfahren zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera (1) relativ zu einer Codeanordnung (2) aus einem Kamerabild der Kamera (1), wobei die Codeanordnung (2) ein Punktraster mit einer Mehrzahl von Basissymbolen (20) aufweist, wobei in der Codeanordnung (2) insbesondere eine Grobposition der Basissymbole (20) codiert ist, wobei die Basissymbole (20) eine erste und eine dazu unabhängige zweite Hauptrichtung entlang des Punktrasters definieren, wobei in dem Kamerabild ein Referenzpunkt angeordnet ist, wobei der Referenzpunkt als ein Schnittpunkt der optischen Achse der Kamera (1) mit dem Bildaufnehmer und/oder dem Kamerabild ausgebildet ist, wobei aus dem Kamerabild in dem Referenzpunkt die folgenden Werte als Kennwerte bestimmt werden: - ein Drehwinkel (phiz) der Kamera (1) um die optische Achse der Kamera (1); - ein erstes lokales Rastermaß (gco) des Punktrasters in dem Kamerabild in der ersten Hauptrichtung und/oder ein zweites lokales Rastermaß (gc1) des Punktrasters in dem Kamerabild in der zweiten Hauptrichtung; - eine erste lokale Winkeldivergenz (dalphac0) des Punktrasters in dem Kamerabild in der ersten Hauptrichtung, wobei die erste lokale Winkeldivergenz (dalphac0) den Differenzwinkel zwischen zwei benachbarten Geraden in der ersten Hauptrichtung in dem Punktraster beschreibt; - eine zweite lokale Winkeldivergenz (dalphac1) des Punktrasters in dem Kamerabild in der zweiten Hauptrichtung, wobei die zweite lokale Winkeldivergenz (dalphac1) den Differenzwinkel zwischen zwei benachbarten Geraden in der zweiten Hauptrichtung in dem Punktraster beschreibt; R.405034 - 83 - wobei auf Basis der Kennwerte die folgenden drei Freiheitsgrade der Kamera (1) relativ zu der Codeanordnung (2) bestimmt werden: - ein Abstand (rz) zwischen der Codeanordnung (1) und der Kamera (1); - zwei unabhängige Nickwinkel (phix; phy) der optischen Achse zu der Codeanordnung (2). 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Kennwerte in ein optisches Strahlenmodell der Kamera und der Codeanordnung (2) auf Basis der drei Freiheitsgrade eingesetzt werden, um die drei Freiheitsgrade zu bestimmen. 3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Referenzpunkt als ein Schnittpunkt der optischen Achse der Kamera mit dem Bildaufnehmer und/oder dem Kamerabild ausgebildet ist. 4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der erste Nickwinkel (phix) mit der folgenden Gleichung bestimmt wird: ^^ = f(^^^^; ^^; ^^) und/oder dass der zweite Nickwinkel (phiy) mit der folgenden Gleichung bestimmt wird: ^^ = f(^^^^; ^^; ^^) und/oder dass der Abstand zwischen der Codeanordnung und der Kamera mit einer der folgenden Gleichungen bestimmt wird: ^^^^/^ = ^(^^; ^^^; ^^; ^^) und/oder R.405034 - 84 - 5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass das Gleichungssystem zur Bestimmung der drei Freiheitsgrade iterativ gelöst wird. 6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass aus dem Kamerabild eine Basissymbol-Matrix ermittelt wird, wobei in der Basissymbol-Matrix die Position der Basissymbole (20) in dem Kamerabild eingetragen ist, wobei auf Basis der Basissymbol-Matrix eine erste Geradenfunktion mit einem ersten Funktionsargument in einem Koordinatensystem des Kamerabilds für eine erste Gerade abgeleitet wird, wobei die erste Gerade in dem Koordinatensystem der Codeanordnung (2) parallel zu der ersten Hauptrichtung ausgerichtet ist, wobei durch Änderung des ersten Funktionsarguments die erste Gerade parallel in dem Koordinatensystem der Codeanordnung (2) in der zweiten Hauptrichtung verschoben wird, und/oder eine zweite Geradenfunktion mit einem zweiten Funktionsargument in einem Koordinatensystem des Kamerabilds für eine zweite Gerade abgeleitet wird, wobei die zweite Gerade in dem Koordinatensystem der Codeanordnung (2) parallel zu der zweiten Hauptrichtung ausgerichtet ist, wobei durch Änderung des zweiten Funktionsarguments die zweite Gerade parallel in dem Koordinatensystem der Codeanordnung (2) in der ersten Hauptrichtung verschoben wird, wobei aus den Geradenfunktionen die lokale Winkeldivergenz und/oder das lokale Rastermaß bestimmt wird. 7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass auf Basis der Basissymbole (20) oder einer Teilmenge davon der Basissymbol-Matrix die Grobposition von mindestens einem der Basissymbole in der Codeanordnung und auf Basis der ersten und der zweiten Geradenfunktion die Feinposition von zwei Freiheitsgraden der Kamera relativ zu der Codeanordnung ermittelt werden. 8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass in dem Kamerabild ein Referenzpunkt angeordnet ist, mit einer ersten Achsenschnittpunktfunktion in dem Koordinatensystem des Kamerabilds von einer ersten Geraden, wobei die erste Gerade in dem Koordinatensystem (XC, YC) der Codeanordnung parallel zu der ersten Hauptrichtung (2) des Punktrasters ausgerichtet ist, mit einem ersten Funktionsargument, wobei durch Änderung des ersten Funktionsarguments die erste Gerade in dem Koordinatensystem (XC, YC) R.405034 - 85 - der Codeanordnung parallel in der zweiten Hauptrichtung verschoben wird, wobei die erste Achsenschnittpunktfunktion in Abhängigkeit des ersten Funktionsarguments einen ersten Achsenschnittpunkt entlang einer ersten Achse des Koordinatensystems (XI, YI) des Kamerabilds bestimmt, wobei die erste Achse durch den Referenzpunkt verläuft, mit einer zweiten Achsenschnittpunktfunktion in dem Koordinatensystem des Kamerabilds von einer zweiten Geraden, wobei die zweite Gerade in dem Koordinatensystem (XC, YC) der Codeanordnung parallel zu der zweiten Hauptrichtung ausgerichtet ist, mit einem zweiten Funktionsargument, wobei durch Änderung des zweiten Funktionsarguments die zweite Gerade in dem Koordinatensystem (XC, YC) der Codeanordnung parallel in der ersten Hauptrichtung verschoben wird, wobei die zweite Achsenschnittpunktfunktion in Abhängigkeit des zweiten Funktionsarguments einen zweiten Achsenschnittpunkt entlang einer zweiten Achse des Koordinatensystems (XI, YI) des Kamerabilds bestimmt, wobei die zweite Achse durch den Referenzpunkt verläuft, wobei auf Basis der Achsenschnittpunktfunktionen das erste und das zweite Funktionsargument derart bestimmt wird, dass der Referenzpunkt den ersten und den zweiten Achsenschnittpunkt bildet, wobei auf Basis des ersten und des zweiten Funktionsarguments und der Grobposition die Feinposition des Referenzpunkts in dem Koordinatensystem (XC, YC) der Codeanordnung (2) in der Ebene der Codeanordnung (2) als mindestens ein weiterer Freiheitsgrad bestimmt wird. 9. Verfahren nach einem der vorhergehenden Ansprüche 6 bis 8, dadurch gekennzeichnet, dass das erste und/oder das zweite Funktionsargument derart bestimmt wird, dass die erste bzw. die zweite Gerade den Referenzpunkt schneiden, wobei ein Drehwinkel (phiz) der Kamera um die optische Achse als ein Freiheitsgrad der Kamera (1) relativ zu der Codeanordnung (2) auf Basis der ersten und/oder der zweiten Geraden abgeleitet wird. 10. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass ein Startfeld (28) mit Basissymbolen (20) bestimmt wird, wobei das Startfeld (28) mindestens drei Basissymbole (20) aufweist, wobei über die Basissymbole (20) des Startfelds (28) zwei unabhängigen Hauptrichtungen entlang des Punktrasters in dem Kamerabild abgeschätzt werden, wobei die Basissymbole (20) des Startfelds valide Basissymbole bilden, wobei in einem Suchschritt ausgehend von mindestens einem validen Basissymbol (20) entlang R.405034 - 86 - von mindestens einer der Hauptrichtungen weitere Basissymbole (20) gesucht werden und wobei bei erfolgreicher Suche die weiteren Basissymbole (20) als valide Basissymbole (20) gekennzeichnet werden, wobei der Suchschritt mehrfach durchgeführt wird, wobei auf Basis der validen Basissymbole (20) oder einer Teilmenge davon die Basissymbol-Matrix ermittelt wird. 11. Elektronische Steuereinheit oder Automatisierungsanordnung mit der elektronischen Steuereinheit, wobei die Steuereinheit programmtechnisch und/oder schaltungstechnisch ausgebildet ist, das Verfahren nach einem der vorhergehenden Ansprüche durchzuführen. 12. Computerprogramm, wobei das Computerprogramm ausgebildet ist, das Verfahren nach einem der Ansprüche 1 bis 10 durchzuführen, wenn das Computerprogramm auf einem Computer oder auf Steuereinheit nach Anspruch 11 ausgeführt wird. 13. Maschinenlesbares Speichermedium, wobei auf dem Speichermedium das Computerprogramm nach Anspruch 12 gespeichert ist.
EP24712464.7A 2023-04-05 2024-03-15 Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung Pending EP4690113A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102023203165.5A DE102023203165A1 (de) 2023-04-05 2023-04-05 Verfahren zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera, Computerprogramm, maschinenlesbares Speichermedium und elektronische Steuereinheit oder Automatisierungsanordnung
PCT/EP2024/057052 WO2024208568A1 (de) 2023-04-05 2024-03-15 Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung

Publications (1)

Publication Number Publication Date
EP4690113A1 true EP4690113A1 (de) 2026-02-11

Family

ID=90366864

Family Applications (1)

Application Number Title Priority Date Filing Date
EP24712464.7A Pending EP4690113A1 (de) 2023-04-05 2024-03-15 Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung

Country Status (5)

Country Link
EP (1) EP4690113A1 (de)
KR (1) KR20250170655A (de)
CN (1) CN120898228A (de)
DE (1) DE102023203165A1 (de)
WO (1) WO2024208568A1 (de)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE517445C2 (sv) * 1999-10-01 2002-06-04 Anoto Ab Positionsbestämning på en yta försedd med ett positionskodningsmönster
DE102016216221A1 (de) 2016-08-29 2018-03-01 Robert Bosch Gmbh Zweidimensionale Codeanordnung, Arbeitsanordnung und Verfahren zum Betreiben der Arbeitsanordnung
DE102016216196A1 (de) 2016-08-29 2018-03-01 Robert Bosch Gmbh Sensoranlage mit einer optischen Sensoreinheit und eine Automatisierungsanlage

Also Published As

Publication number Publication date
WO2024208568A1 (de) 2024-10-10
KR20250170655A (ko) 2025-12-05
CN120898228A (zh) 2025-11-04
DE102023203165A1 (de) 2024-10-10

Similar Documents

Publication Publication Date Title
DE112010005008B4 (de) System und Verfahren zur Bestimmung von Kamerafehlkalibrierung im Laufzeitbetrieb
DE102015011914B4 (de) Konturlinienmessvorrichtung und Robotersystem
DE102016120775B4 (de) System und Verfahren zum Erkennen von Linien in einem Bild mit einem Sichtsystem
EP3290861B1 (de) Sensoranlage mit einer optischen sensoreinheit und automatisierungsanlage
DE112012005350B4 (de) Verfahren zum Schätzen der Stellung eines Objekts
DE102006055758B4 (de) Verfahren zur Kalibrierung von Kameras und Projektoren
DE102016013274A1 (de) Bildverarbeitungsvorrichtung und verfahren zur erkennung eines bilds eines zu erkennenden objekts aus eingabedaten
DE112010004767T5 (de) Punktwolkedaten-Verarbeitungsvorrichtung, Punktwolkedaten-Verarbeitungsverfahren und Punktwolkedaten-Verarbeitungsprogramm
DE102017116952A1 (de) System und verfahren für verbessertes scoring von 3d-lagen und entfernen von störpunkten in 3d-bilddaten
DE102018109774A1 (de) Bildverarbeitungssystem, Bildverarbeitungsvorrichtung und Bildverarbeitungsprogramm
DE102016216221A1 (de) Zweidimensionale Codeanordnung, Arbeitsanordnung und Verfahren zum Betreiben der Arbeitsanordnung
DE102009046295A1 (de) Optische Abweichungskorrektur für maschinelle Sichtinspektionssysteme
DE102012223047B4 (de) Mehrteil-Korrespondierer (corresponder) für mehrere Kameras
DE102017113615A1 (de) System, Verfahren und Marker zur Positionsbestimmung eines beweglichen Objektes im Raum
WO2024208575A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
EP4690112A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
WO2012048889A1 (de) Vorrichtung und verfahren zur dreidimensionalen bilderfassung
DE102019115224A1 (de) System und verfahren zum auffinden und klassifizieren von linien in einem bild mittels eines schichtsystems
DE102021111706B4 (de) Verfahren, Messgerät und Computerprogramm
EP4690113A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
EP4690114A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
WO2024208567A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
EP3543901B1 (de) Vorrichtung und verfahren zur robusten ermittlung der position, ausrichtung, identität und ausgewählter zustandsinformationen von objekten
DE19632058C1 (de) Optoelektronisch erfaßbares Identifizierungs- oder Zielelement sowie Verfahren zu seiner Erfassung
DE102019220364A1 (de) Kalibriereinrichtung und Verfahren zum Kalibrieren einer Vorrichtung

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20251105

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR