EP4690116A1 - 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
EP4690116A1
EP4690116A1 EP24714825.7A EP24714825A EP4690116A1 EP 4690116 A1 EP4690116 A1 EP 4690116A1 EP 24714825 A EP24714825 A EP 24714825A EP 4690116 A1 EP4690116 A1 EP 4690116A1
Authority
EP
European Patent Office
Prior art keywords
camera
straight line
function
coordinate system
code arrangement
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
EP24714825.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 EP4690116A1 publication Critical patent/EP4690116A1/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
    • 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.405016 - 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 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.
  • 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 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.405016 - 7 - Grid width in the Y direction.
  • 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 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.405016 - 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.405016 - 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 computationally, i.e. the process is largely independent of the camera position.
  • a localization network e.g. in a production hall, in order to localize several stationary or moving objects relative to each other or relative to a hall coordinate system.
  • several autonomous vehicles each equipped with a camera, localize themselves by detecting a code arrangement that is attached to the hall ceiling.
  • the code arrangement has a dot grid with a plurality of basic symbols, wherein the centers of the basic symbols are preferably located at the grid points and wherein a rough position of the basic symbols is encoded in the code arrangement.
  • R.405016 - 15 - The basic symbols define a first and an independent second main direction along the dot grid.
  • 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.
  • a reference point is arranged in the camera image. The reference point can be positioned as desired. In preferred embodiments, as described later, 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.
  • a first axis intersection function is formed in the coordinate system of the camera image by a first straight line.
  • the first straight line is aligned parallel to the first main direction of the dot grid in the coordinate system of the code arrangement.
  • the axis intersection function has a first function argument, whereby by changing the first function argument the first straight line in the coordinate system of the code arrangement is parallel in the R.405016 - 16 - second main direction.
  • the first axis intersection function defines a first axis intersection along a first axis of the coordinate system of the camera image depending on the first function argument, the first axis running through the reference point.
  • a second axis intersection function in the coordinate system of the camera image is formed by a second straight line.
  • the second straight line is aligned parallel to the second main direction of the dot grid in the coordinate system of the code arrangement.
  • the axis intersection function has a second function argument, and 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, depending on the second function argument, a second axis intersection along a second axis of the coordinate system of the camera image, with the second axis running through the reference point.
  • the second straight line By shifting the second straight line by changing the second function argument in the coordinate system of the code arrangement, the second straight line in the coordinate system of the camera and/or the camera image is shifted - distorted in perspective - 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.
  • 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.
  • the following process positions are of particular importance (numerical values as an example):
  • Process position I Input data camera image (e.g.
  • Process position II (step 300): converts the camera image data into dot data R.405016 - 44 - 2,250 values
  • Process position III (step 400/500): converts the dot data into beam data 90 values
  • Process position IV (step 400/500): converts the beam data into bunch data 12 values
  • Process position V (step 500/600/700): converts the bunch data into a 6D position 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.
  • Center_Pos function fast method for subpixel-accurate position and area determination of dots in the camera image
  • fast fine pixel accesses
  • accurate through subpixeling
  • robust use of dynamic contrast thresholds instead of gray value thresholds
  • Rectification of the dot positions instead of the entire camera image.
  • fast rectification of only 225 positions instead of all 40,000 pixels in the camera image
  • e Local normalization of the dot area to the area of the dot grid cell. The standardized dot area is used to classify the dots.
  • R.405016 - 45 - ⁇ Advantage: robust reading of the digital code (classification of the dots is tolerant of perspective distortion and of a change in the distance between the camera and the dot) f) Redundant reading of the digital codes, error detection and, in some cases, error correction Advantage: low error rate in the event of disturbances in the camera image, correct reading despite invalid dots.
  • Process position III and IV g) Compressed and precise representation of the dot positions extracted from camera image 3 as bunch parameters (only 12 values)
  • Process position V h
  • Mathematical method for transforming the 12 bunch parameters into a 6D position The advantages are achieved by achieving 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 process requires only a small number of computer calculation steps. 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 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 image field, such as R.405016 - 46 - Example of 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.
  • R.405016 - 47 - ⁇ A single measuring sensor, in particular designed as camera 1, records the position of one or more objects in six dimensions. Compared to a system with many distributed sensors for recording individual degrees of freedom, the installation effort and complexity of the overall system are reduced, which leads to cost advantages. ⁇ Savings in system components by recording all 6 degrees of freedom.
  • 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 guide can be omitted, since 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.
  • the three-dimensional camera coordinate system (X, Y, Z) 17 is firmly connected to the camera 1. 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.
  • the coordinate system for the imaging model in Fig. 8 corresponds to the camera coordinate system 17 (X, Y, Z).
  • b is the image width 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.
  • 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. The plot symbol 21 is located in the middle of the plot 19. The two fields 24 mark the X plot areas in which the continuous code for the position in the X direction is shown.
  • 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 R.405016 - 59 - the cross sum of the read code is calculated and compared with q: the cross sum of an X code is smaller than q, the cross sum of a Y code is larger 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).
  • Fig. 1 shows another code arrangement 2 with additional data.
  • four parcel 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 parcel 19.
  • the algorithm for determining the position is shown in Fig. 1 as a sequence of data processing steps, which are explained in detail below using exemplary embodiments. Standard procedures for mathematics and image processing as well as for diagnosis and error detection are not explained in detail. The procedure is optimized in particular for high accuracy in position determination and for rapid execution. The sequence of steps quickly reduces the data volume, which supports rapid execution.
  • process position I in step 100 the digital image data is transferred as a gray value matrix from camera 1 to the computer.
  • Step 200 serves to check the validity of the R.405016 - 60 - Image data should be roughly checked using characteristic values.
  • Each reading field 22 provides two bundles of regression lines, corresponding to the two main axis directions of the code arrangement 2.
  • each bundle of lines (bunch) comprises up to 15 lines.
  • the lines of each bundle are interpolated by two second-degree polynomials: one polynomial describes the line angles, a second the axis intersection points of the lines of a bundle of lines.
  • the polynomial parameters of the R.405016 - 61 - two bundles are represented by 12 real values, which corresponds to a reduction by a factor of 5 compared to the straight line representation.
  • 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 vicinity of 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.
  • sub-step 340 optical rectification with a corresponding lens 9 can also be carried out, so that sub-step 340 is optional.
  • the dots are classified in sub-step 350.
  • sub-step 360 the digital code is read in both spatial directions and, with the help of the code table, converted into an integer position indication and a rough direction indication in 90° steps. 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 defined for searching for the first dot of the starting base 28. Fig.
  • 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 completed successfully. If all starting positions have been used and no search was successful, sub-step 310.1 is aborted with a negative result.
  • R.405016 - 64 - Substep 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.3 Then, starting from ⁇ ⁇ ⁇ the nearest dot is searched and marked with ⁇ ⁇ ⁇ referred to as the first auxiliary starting base symbol.
  • Substep 310.4: Then a connection vector ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ is formed.
  • Substep 310.5: Starting from ⁇ ⁇ ⁇ the nearest dot in the orthogonal direction to the connection vector ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ searched and with ⁇ ⁇ ⁇ referred to as the second auxiliary starting base symbol.
  • 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.
  • a sub-step 310.11 can then be carried out for error detection, 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 sub-pixel accuracy.
  • ⁇ ⁇ ⁇ is centered on the X-axis with respect to the left and right edges, resulting in the optimized point ⁇ ⁇ ⁇ .
  • d) Starting from point ⁇ ⁇ ⁇ The edge of the dot is searched for in the +Y and –Y directions using edge detection methods. The distance from ⁇ ⁇ ⁇ to the top edge is ⁇ 2 , to the bottom edge ⁇ 3 .
  • R.405016 - 66 - e) ⁇ ⁇ ⁇ is centered on the Y-axis with respect to the top and bottom edges, resulting in the optimized point ⁇ ⁇ ⁇ .
  • 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. This is selected so that the reading field 22 has as much coverage as possible with the image area in which the code is displayed, so that as many valid dots as possible can be detected. This is usually the case when the center of the reading field 22 is in the center of the code area.
  • the center position 32 of the reading field is placed as close to the center of the image as possible (see Fig.29a).
  • 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.
  • R.405016 - 68 - 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. This can be between 0 and 8, see Fig. 29c): the middle dot position has 8 neighbor positions (dark). At the beginning of the search, only the 3x3 dots of the starting base are valid. The only unknown dots with 2 or more valid neighbors are shown in Fig. 29b).
  • Fig. 29b the 3x3 dots of the starting base are valid.
  • 29 d 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 any valid neighbors.
  • 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. The stack is processed in a loop: ⁇ 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.4: The position of the unknown dot is estimated by averaging the extrapolated positions of all valid neighbors. If the unknown dot is outside the expected reading field 22, it is not processed further.
  • ⁇ 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. R.405016 - 69 - ⁇
  • Sub-step 320.8 For all 8 neighbors of the new valid dot, the number of valid neighbors is increased by 1.
  • 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. If the camera 1 is perfectly mounted, this is usually the center of the camera chip. Otherwise, the center is determined by a one-time calibration process of the camera 1.
  • the polynomial parameters ⁇ ⁇ , ⁇ ⁇ , ⁇ ⁇ are specific to the lens 9 and are adapted 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 dots adjacent to it in the main axis directions 1 and 2.
  • Fig. 30 shows a perspectively distorted dot in a distorted grid, which is locally defined by the vectors ⁇ . ⁇ ⁇ and ⁇ . ⁇ ⁇
  • the area of the cell is ⁇ ⁇ ⁇ ⁇ . ⁇ ⁇ ⁇ .
  • the threshold value is calculated using statistical methods from the standardized areas ⁇ . ⁇ ⁇ of all dots are determined.
  • 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. R.405016 - 71 - 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 substeps 310 and 320, neighbor dots count of valid neighbors R.405016 - 72 - 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 plane is determined. It is initially unknown which of the sequences are assigned to the X axis and which to the Y axis 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 grey. In Fig.34b) the reading track for the two axes is also shown.
  • 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 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 is the intersection point of the optical axis 5 with the image sensor 12 (Fig.2, point (4) or illustration of the R.405016 - 78 - intersection point 4 image center/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 to 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.
  • the fine positions ⁇ ⁇ , ⁇ and ⁇ ⁇ , ⁇ are in the R.405016 - 79 - Interpolation equations are used to obtain the parameters in the center of the image.
  • the parameters are used to determine the position in the dimensions ⁇ ⁇ , ⁇ ⁇ , ⁇ ⁇ and ⁇ ⁇ required.
  • the grid dimension is determined by deriving the interpolation function for the axis intersection point ⁇ ⁇ ( ⁇ ) determined according to the dimensionless straight line index ⁇ at the location of the image center: b) Straight line angle in the image center: ⁇ ⁇ , ⁇ ⁇ (see Fig. 37), 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 Calculate the real fractions of the reading field position in [Dot] ( ⁇ ⁇ , ⁇ , ⁇ ⁇ , ⁇ )
  • Substep 700.2 Calculating the position rx and ry
  • Substep 700.3 Calculating the camera rotation/camera angle ⁇ ⁇
  • Substep 700.5 Initialize a counter for iterations with e.g.
  • Sub-step 700.7 Calculation of camera angle phix, phiy
  • Sub-step 700.8: Counter 0? Recalculation, otherwise abort iteration

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

Es wird ein Verfahren zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera (1) relativ zu einer Codeanordnung (2) aus einem Kamerabild der Kamera, wobei die Codeanordnung (2) ein Punktraster mit einer Mehrzahl von Basissymbolen (20) aufweist, wobei in der Codeanordnung (2) eine Grobposition der Basissymbole codiert ist, wobei die Basissymbole (20) eine erste und eine dazu unabhängige zweite Hauptrichtung entlang des Punktrasters definieren und wobei das Kamerabild ein Koordinatensystem Xl, Yl definiert, wobei aus dem Kamerabild eine Grobposition eines Basissymbols in dem Koordinatensystem Xc, Yc der Codeanordnung (2) in der Ebene der Codeanordnung (2) ermittelt wird, wobei in dem Kamerabild ein Referenzpunkt angeordnet ist, wobei auf Basis der Achsenschnittpunktfunktionen ein erstes und zweites 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 der mindestens eine Freiheitsgrad bestimmt wird.

Description

R.405016 - 1 - Beschreibung Titel Verfahren zur 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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.405016 - 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 vorzugsweise sich die Mittelpunkte der Basissymbole an den Rasterpunkten befinden und wobei in der Codeanordnung eine Grobposition der Basissymbole codiert ist. R.405016 - 15 - Die Basissymbole definieren eine erste und eine dazu unabhängige, zweite Hauptrichtung entlang des Punktrasters. In Abhängigkeit des Betrachtungswinkels sind die unabhängigen zwei Hauptrichtungen in dem Kamerabild senkrecht oder schiefwinklig zueinander ausgerichtet. Aus dem Kamerabild wird insbesondere eine 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. 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. Daneben kann es noch zu einer optischen Verzeichnung kommen, wobei diese optional durch eine Rektifizierung kompensiert werden kann. Auf Basis der Basissymbole oder einer ausgewählten Teilmenge davon wird die Grobposition von mindestens einem der Basissymbole in der Codeanordnung als zwei Freiheitsgrade der Kamera relativ zu der Codeanordnung bestimmt. In dem Kamerabild ist ein Referenzpunkt angeordnet. Der Referenzpunkt kann beliebig positioniert sein. Bei bevorzugten Ausgestaltungen, wie diese später beschrieben werden, ist der Referenzpunkt 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. Es wird 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 R.405016 - 16 - 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. Ferner wird 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. R.405016 - 17 - 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 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. 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. R.405016 - 18 - Bei einer möglichen Ausgestaltung der Erfindung ist die Achsenschnittpunktfunktion als eine Geradenfunktion zur Beschreibung der Geraden ausgebildet. 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, 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 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. Aus den Daten der Basissymbol-Matrix wird vorzugsweise eine erste Geradenfunktion als eine der Geradenfunktionen in einem Koordinatensystem des Kamerabilds für eine erste Gerade mit dem ersten 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 R.405016 - 19 - 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 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. R.405016 - 20 - Alternativ oder ergänzend wird auf Basis der Basissymbol-Matrix eine zweite Geradenfunktion als eine weitere der Geradenfunktionen in einem Koordinatensystem des Kamerabilds für eine zweite Gerade mit dem 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. Der mindestens eine Freiheitsgrad der Kamera kann auf Basis von mindestens einer der Geradenfunktionen ermittelt werden. Optional kann der mindestens eine Freiheitsgrad der Kamera auf Basis von beiden Geradenfunktionen ermittelt werden. Es ist dabei eine weiterführende Überlegung der Erfindung, 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 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 R.405016 - 21 - 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. 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 R.405016 - 22 - 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 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 R.405016 - 23 - 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 der 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, 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 R.405016 - 24 - 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 die 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 das 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. Ferner wird bevorzugt die 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 R.405016 - 25 - 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 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. 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. R.405016 - 26 - 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 die 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 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 R.405016 - 27 - 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 optional 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 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. R.405016 - 28 - 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. 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 R.405016 - 29 - Plausibilitätskontrolle durchgeführt werden und einer der beiden Werte verworfen werden, wenn dieser nicht plausibel oder nicht valide ist. In dem Kamerabild ist ein oder der 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. Aus dem Kamerabild werden bei einer bevorzugten Weiterbildung 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. Der Drehwinkel phiz kann besonders bevorzugt über die Geradenfunktion und/oder die Achsenschnittpunktfunktion bestimmt werden. Ferner wird mindestens ein oder das 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 lokale Rastermaß kann besonders bevorzugt über die die Geradenfunktion und/oder die Achsenschnittpunktfunktion bestimmt werden. 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.405016 - 30 - 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 erste und die zweite lokale Winkeldivergenz kann insbesondere über die Geradenfunktion und/oder über die Geradenwinkelfunktion bestimmt werden. 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 weiterführende Überlegung, 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. R.405016 - 31 - 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 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 i ^ ∙^^^^ ^ ^^^^ n [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 R.405016 - 32 - Mit b: Bildweite der Kamera im [m] ^^^, ^^^: lokales Rastermaß des Punktrasters im Kamerabild, in [m] 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 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 R.405016 - 33 - 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. 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 R.405016 - 34 - 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 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. R.405016 - 35 - 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. 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. R.405016 - 36 - 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. 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 - R.405016 - 37 - 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 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 R.405016 - 38 - 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. 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 R.405016 - 39 - 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 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; R.405016 - 40 - 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; 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; R.405016 - 41 - 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; 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. R.405016 - 42 - 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. 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. R.405016 - 43 - 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. 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 R.405016 - 44 - 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 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. R.405016 - 45 - ^ 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: 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 R.405016 - 46 - 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 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: R.405016 - 47 - ^ 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 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 R.405016 - 48 - 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. ^ 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 R.405016 - 49 - ^ 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. 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 (^^, R.405016 - 50 - 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. 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. R.405016 - 51 - 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 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 R.405016 - 52 - 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. 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: ^^ = ^ − ^^. R.405016 - 53 - 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: ^ 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: ^ Sichtstrahl von ^ zu ^ ^ ^,^ : R.405016 - 54 - ^ Schnittpunkt des Sichtstrahls mit der virtuellen Bildebene 18: ⇒ ^ = −b/^^^^^^^ + ^ ∙ ^^^^^^ + ^^^^^^ + ^ ∙ ^^^^^^ + ^^ − 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. R.405016 - 55 - 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 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 R.405016 - 56 - 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. 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 R.405016 - 57 - 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 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 R.405016 - 58 - 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. 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 R.405016 - 59 - 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°. 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 R.405016 - 60 - 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 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 R.405016 - 61 - 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 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: R.405016 - 62 - 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. 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 R.405016 - 63 - 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 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. R.405016 - 64 - 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. 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. R.405016 - 65 - 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. 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. R.405016 - 66 - 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: 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 R.405016 - 67 - 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 Ü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. R.405016 - 68 - 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. 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. R.405016 - 69 - ^ 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 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: 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. R.405016 - 70 - 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. 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. R.405016 - 71 - 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 ^^^ . ^ ^ 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 R.405016 - 72 - 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 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 R.405016 - 73 - ^ 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 Ü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 R.405016 - 74 - 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° 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 R.405016 - 75 - 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. 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 ^^(^) R.405016 - 76 - 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. ^ 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. R.405016 - 77 - 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 ü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 R.405016 - 78 - 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. Im Bild 39 sind die Mittelpunktsgeraden für beide Geradenbündel ^ = 0 und ^ = 1 dargestellt. Es gilt ^ für rot_status = ^^ ^ ^^,^^^^^ ^ ^ ^ für rot_status = 1: ^ ^^^^,^^^^^^ ^^ ^ = ^ ^ ^ ^^,^^^^^ ^ ^ ^ ^ ^ ^^ 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 R.405016 - 79 - 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: 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 R.405016 - 80 - 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 ^^ 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 A ^ ^ ^ ^ ^^ bleitung bei ^^ = 0 ; mit ^^ = ^ ^^^^ Geradenindex in [dots] Daraus folgt Bei ^ = 0 erhalten wir ^ = ^^ ^ ^ = ^∙^ ^^^^ ∙(^ ^^ ^ ^^ ^^ ^^ ^ ^^ ) ^ ^^ ^^ ^^ , und aufgelöst nach ^^ ^^ ^ ^^ ^ ^^^ R.405016 - 81 - 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 ^ : ^ = ^^ ^ ^^ ^^^ ^^ ^^ ^^ ^ ; für ^^ ^^ Die Ergebnisse sind in Tabelle 10.1 zusammengefasst. 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 ^^ , ^^ R.405016 - 82 - 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 erhalten: ^ Im Bildzentrum ^ ^^^ ^ ^ ^ = 0 ist die Winkeldivergenz ^ Gleichsetzen mit der gemessenen Winkeldivergenz ^^^^ ergibt die Gleichung für ^^: tan ^^ = ^^^ ^^ ∙^ ^ ^^^^^ ∙^^^ ^ ^ 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 ^^: tan ^^ = ^^^ ^^ ∙^ ^ ^^^^^ ∙^^^^ ^^ Zu Teilschritt 700 – Iterative Berechnung der Kameraposition Z und der Kamerawinkel ^^ , ^^ Zwischen den Funktionen ^^, ^^ und Z gibt es gegenseitige Abhängigkeiten: R.405016 - 83 - 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 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 R.405016 - 84 - 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 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.405016 - 85 - 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) eine Grobposition der Basissymbole codiert ist, wobei die Basissymbole (20) eine erste und eine dazu unabhängige zweite Hauptrichtung entlang des Punktrasters definieren und wobei das Kamerabild ein Koordinatensystem (XI, YI) definiert, wobei aus dem Kamerabild eine Grobposition eines Basissymbols in dem Koordinatensystem (XC, YC) der Codeanordnung (2) in der Ebene der Codeanordnung (2) ermittelt wird, wobei 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) 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 R.405016 - 86 - 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 der mindestens eine Freiheitsgrad bestimmt wird. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass das erste Funktionsargument als ein Zählwert der Reihen und/oder das zweite Funktionsargument als ein Zählwert der Spalten ausgebildet ist. 3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Referenzpunkt als ein Schnittpunkt der optischen Achse der Kamera (1) mit dem Bildaufnehmer und/oder mit dem Kamerabild ausgebildet ist. 4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Achsenschnittpunktfunktion als eine Geradenfunktion zur Beschreibung der Geraden ausgebildet ist oder dass eine Geradenfunktion verwendet wird, welche durch eine Kombination von einer Geradenwinkelfunktion des Geradenwinkels mit einer der Achsen des Koordinatensystems (XI, YI) des Kamerabilds abhängig von dem Funktionsargument und der Achsenschnittpunktfunktion gebildet ist. 5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass auf Basis der Funktionsargumente und einem bekannten Rastermaß des Punktrasters die Feinposition bestimmt wird. R.405016 - 87 - 6. Verfahren nach einem der vorhergehenden Ansprüche 4 oder 5, 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 als eine der Geradenfunktionen mit dem 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 als eine der Geradenfunktionen mit dem 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. 7. Verfahren nach einem der vorhergehenden Ansprüche, 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. 8. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass wobei in dem Kamerabild ein oder der Referenzpunkt angeordnet ist, wobei der Referenzpunkt als ein Schnittpunkt der optischen Achse der Kamera mit dem Bildaufnehmer und/oder dem Kamerabild ausgebildet ist, wobei aus dem Kamerabild in dem Referenzpunkt die folgenden Werte als Kennwerte bestimmt werden: - ein oder der Drehwinkel (phiz) der Kamera um die optische Achse der Kamera; R.405016 - 88 - - ein erstes lokales Rastermaß (gc0) 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; wobei auf Basis der Kennwerte die folgenden weiteren drei Freiheitsgrade der Kamera relativ zu der Codeanordnung bestimmt werden: - ein Abstand (rz) zwischen der Codeanordnung und der Kamera; - zwei unabhängige Nickwinkel (phix; phy) der optischen Achse zu der Codeanordnung. 9. 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 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. 10. 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. R.405016 - 89 - 11. Computerprogramm, wobei das Computerprogramm ausgebildet ist, das Verfahren nach einem der Ansprüche 1 bis 9 durchzuführen, wenn das Computerprogramm auf einem Computer oder auf Steuereinheit nach Anspruch 10 ausgeführt wird. 12. Maschinenlesbares Speichermedium, wobei auf dem Speichermedium das Computerprogramm nach Anspruch 11 gespeichert ist.
EP24714825.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 EP4690116A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102023203162.0A DE102023203162A1 (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/057036 WO2024208567A1 (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
EP4690116A1 true EP4690116A1 (de) 2026-02-11

Family

ID=90544606

Family Applications (1)

Application Number Title Priority Date Filing Date
EP24714825.7A Pending EP4690116A1 (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) EP4690116A1 (de)
KR (1) KR20260004362A (de)
CN (1) CN121002535A (de)
DE (1) DE102023203162A1 (de)
WO (1) WO2024208567A1 (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
CN121002535A (zh) 2025-11-21
WO2024208567A1 (de) 2024-10-10
DE102023203162A1 (de) 2024-10-10
KR20260004362A (ko) 2026-01-08

Similar Documents

Publication Publication Date Title
EP3290861B1 (de) Sensoranlage mit einer optischen sensoreinheit und automatisierungsanlage
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
DE102006055758B4 (de) Verfahren zur Kalibrierung von Kameras und Projektoren
DE102016013274A1 (de) Bildverarbeitungsvorrichtung und verfahren zur erkennung eines bilds eines zu erkennenden objekts aus eingabedaten
DE102016216221A1 (de) Zweidimensionale Codeanordnung, Arbeitsanordnung und Verfahren zum Betreiben der Arbeitsanordnung
DE102009046295A1 (de) Optische Abweichungskorrektur für maschinelle Sichtinspektionssysteme
DE112012005350T5 (de) Verfahren zum Schätzen der Stellung eines Objekts
DE112010004767T5 (de) Punktwolkedaten-Verarbeitungsvorrichtung, Punktwolkedaten-Verarbeitungsverfahren und Punktwolkedaten-Verarbeitungsprogramm
DE102017113615A1 (de) System, Verfahren und Marker zur Positionsbestimmung eines beweglichen Objektes im Raum
DE102019201526A1 (de) Verfahren und System zum Erfassen und Messen der Position eines Bauteils gegenüber einer Referenzposition sowie der Verschiebung und der Verdrehung eines sich relativ zu einem Bezugssystem bewegenden Bauteils
DE102015220831A1 (de) Verfahren und Vorrichtung zum Bestimmen von Landmarken für eine Ortsbestimmung für ein bewegliches Objekt sowie Verfahren und Vorrichtung zur Ortsbestimmung für ein bewegliches Objekt
DE102018123393A1 (de) Erkennung von Parkflächen
WO2024208566A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
WO2024208575A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
DE102019115224A1 (de) System und verfahren zum auffinden und klassifizieren von linien in einem bild mittels eines schichtsystems
EP1098268A2 (de) Verfahren zur dreidimensionalen optischen Vermessung von Objektoberflächen
DE102021111706B4 (de) Verfahren, Messgerät und Computerprogramm
WO2024208567A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
WO2024208568A1 (de) Verfahren zur ermittlung von mindestens einem freiheitsgrad einer kamera, computerprogramm, maschinenlesbares speichermedium und elektronische steuereinheit oder automatisierungsanordnung
WO2024208574A1 (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