[go: up one dir, main page]

DE102023203159A1 - Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement - Google Patents

Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement Download PDF

Info

Publication number
DE102023203159A1
DE102023203159A1 DE102023203159.0A DE102023203159A DE102023203159A1 DE 102023203159 A1 DE102023203159 A1 DE 102023203159A1 DE 102023203159 A DE102023203159 A DE 102023203159A DE 102023203159 A1 DE102023203159 A1 DE 102023203159A1
Authority
DE
Germany
Prior art keywords
camera
code arrangement
straight line
symbols
starting
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
DE102023203159.0A
Other languages
German (de)
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
Priority to DE102023203159.0A priority Critical patent/DE102023203159A1/en
Priority to PCT/EP2024/057152 priority patent/WO2024208574A1/en
Priority to KR1020257036963A priority patent/KR20250170656A/en
Priority to EP24713422.4A priority patent/EP4690114A1/en
Priority to CN202480024504.9A priority patent/CN120958484A/en
Publication of DE102023203159A1 publication Critical patent/DE102023203159A1/en
Pending legal-status Critical Current

Links

Images

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

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 Analysis (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera 1 relativ zu einer Codeanordnung 2 aus einem Kamerabild der Kamera 1, wobei die Codeanordnung 2 ein Punktraster mit einer Mehrzahl von Basissymbolen 20 aufweist, wobei in der Codeanordnung 2 eine Grobposition der Basissymbole 20 codiert ist, wobei 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 Grobposition von mindestens einem der Basissymbole 20 in der Codeanordnung und/oder die Grobposition des Koordinatensystems des Punktrasters als zwei Freiheitsgrade der Kamera relativ zu der Codeanordnung 2 ermittelt wird.The invention relates to a method for determining at least one degree of freedom of a camera 1 relative to a code arrangement 2 from a camera image of the camera 1, wherein the code arrangement 2 has a dot matrix with a plurality of base symbols 20, wherein a rough position of the base symbols 20 is encoded in the code arrangement 2, wherein a start field 28 is determined with base symbols 20, wherein the start field 28 has at least three base symbols 20, wherein two independent main directions along the dot matrix in the camera image are estimated via the base symbols 20 of the start field 28, wherein the base symbols 20 of the start field form valid base symbols, wherein in a search step, starting from at least one valid base symbol 20, further base symbols 20 are searched for along at least one of the main directions and wherein, if the search is successful, the further base symbols 20 are marked as valid base symbols 20, wherein the search step is carried out several times, wherein on the basis of the valid Basic symbols 20 or a subset thereof, the coarse position of at least one of the basic symbols 20 in the code arrangement and/or the coarse position of the coordinate system of the point grid is determined as two degrees of freedom of the camera relative to the code arrangement 2.

Description

Stand der TechnikState of the art

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.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.

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 modern manufacturing applications and other applications, it is necessary to detect the position of a moving body relative to its surroundings. There are a variety of sensors for this purpose, 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.

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 Codeanordnung kann die Position einer Kamera relativ zu der Codeanordnung ermittelt werden.In the printed publication DE 10 2016 216 221 A1 The applicant's application, which represents the closest prior art, proposes a method for positioning and/or determining the position of objects in a space and/or on a surface, which uses a two-dimensional code arrangement. The two-dimensional code arrangement has basic symbols, the basic symbols being arranged on a surface and the basic symbols on the surface forming a two-dimensional, periodic grid. The position of a camera relative to the code arrangement can be determined on the basis of the code arrangement.

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.The publication DE 10 2016 216 196 A1 The applicant discloses a sensor system, wherein the sensor system uses the method for positioning and/or position determination of the preceding document.

Offenbarung der Erfindungdisclosure of the invention

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.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.

Das erfindungsgemäße Verfahren dient zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera relativ zu einer Codeanordnung aus einem Kamerabild der Kamera.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.

Das Verfahren basiert auf dem Verfahren der Druckschrift DE 10 2016 216 221 A1 und/oder der Anwendung der Druckschrift DE 10 2016 216 196 A1 , deren Offenbarung via Referenzierung in die vorliegende Offenbarung integriert wird.The procedure is based on the procedure of the printed document DE 10 2016 216 221 A1 and/or the application of the publication DE 10 2016 216 196 A1 , the disclosure of which is incorporated by reference into the present disclosure.

Definition Kamera:Definition Camera:

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 umfassen, wobei das Objektiv bevorzugt als ein Weitwinkelobjektiv ausgebildet ist.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. In particular, 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 comprise a lens, wherein the lens is preferably designed as a wide-angle lens.

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.In particular, the camera implements a vanishing perspective and/or a central perspective. In particular, parallel edges are not shown parallel to the image when viewed at an angle, but optically merge into an imaginary point, the so-called vanishing point. In particular, the camera, especially including the lens, implements a perspective distortion that is desired for the application.

Definition optische Achse 5:Definition of optical axis 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.The imaging optics are ideally a rotationally symmetrical optical system, where the axis of symmetry is the optical axis. It is characterized by the fact that a light beam does not experience any deflection along the optical axis when passing through the optics.

Definition Bildmittelpunkt 7:Definition of image center 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.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.

Definition Kamerabild:Definition of camera image:

Das Kamerabild der Kamera ist insbesondere als eine Matrix ausgebildet, welche an den Matrixpunkten Bildpunkte, wie zum Beispiel 8 Bit-Grauwertpunkte oder Farbpunkte aufweist.The camera image of the camera is in particular designed as a matrix which has pixels at the matrix points, such as 8-bit grayscale points or color points.

Definition Codeanordnung:Definition code arrangement:

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.The code arrangement can be imaged by the camera in particular, whereby the absolute position of a machine or a machine part can be measured in one to six degrees of freedom on the basis of the camera image. In particular, the code arrangement is designed to be detected by the camera by non-contact reading, whereby a multi-dimensional actual position determination can be carried out by the non-contact detection by the camera. The two-dimensional code arrangement can preferably be used in a production and/or testing system in which workpieces and/or testing and/or work equipment must be positioned.

Definition Basissymbol:Definition of basic symbol:

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.The two-dimensional code arrangement comprises basic symbols, the basic symbols being arranged on a surface and the basic symbols on the surface forming a two-dimensional periodic grid, a dot grid. The basic symbols are preferably geometric figures, such as circles, squares, triangles or lines. The basic symbols are particularly preferably designed as circles. The basic symbols are also referred to as dots. They preferably represent digits of a number system. In particular, the two-dimensional code arrangement comprises at least two different basic symbols. In one possible embodiment of the invention, the two-dimensional periodic grid comprises empty spaces at grid locations and/or grid locations that are not occupied by basic symbols, as parcel symbols.

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.The basic symbols are arranged on the surface, whereby the surface can be a curved or a non-curved surface. For example, the surface is the floor of a production and/or testing facility. The basic symbols are arranged in the surface to form a two-dimensional grid, whereby the area centers of gravity of the basic symbols preferably form grid points in the point grid.

Definition Punktraster der Codeanordnung:Definition of dot matrix of code arrangement:

Die Rasterpunkte werden im Folgenden auch als Rasterplätze und/oder Gitterplätze bezeichnet. Insbesondere bildet das zweidimensionale periodische Punktraster ein zweidimensionales Gitter.The raster points are also referred to below as raster positions and/or grid positions. In particular, the two-dimensional periodic point grid forms a two-dimensional grid.

Definition Parzelle:Definition of parcel:

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 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.The area is preferably divided into similar, regularly arranged plots, the plots having, for example, a square, rectangular, triangular or hexagonal basic shape. Similar plots are understood to mean plots of the same size and/or shape in particular. Preferably, each plot comprises n basic symbols. The plots comprise in particular an integer number of basic symbols and in particular an even number of basic symbols. Preferably, the plots comprise more than ten basic symbols, in particular more than twenty basic symbols and in particular more than forty basic symbols. Furthermore, the number of basic symbols in a plot is preferably less than one hundred. The plots formed by the basic symbols can be optically be indicated in the code arrangement, such as by a border, or not be indicated visually and form only a mental and/or logical unit.

Definition Parzellenbereich:Definition of parcel area:

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.The plots have at least a first and a second plot area. An X plot area comprises the first plot area and a Y plot area comprises the second plot area. In particular, each plot area occupies a contiguous area or several distributed, non-contiguous sub-areas within the plot.

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.Each parcel area comprises several basic symbols. In particular, the X parcel area and the Y parcel area comprise the same number of basic symbols. In particular, the at least two parcel areas are arranged in the parcel such that they have a p-fold rotational symmetry with respect to the center of the parcel as the pivot point, wherein the p-fold rotational symmetry is, for example, a two-fold, three-fold or four-fold rotational symmetry.

Definition Parzellensymbol:Definition of parcel symbol:

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 Decodierreihenfolge der Vorgabe, welche Basissymbole nacheinander zu lesen und/oder zu decodieren sind.The plots each have at least one plot symbol, which represents a fixed reference point within each plot. The plot symbol enables the reading and/or decoding of the basic symbols in a fixed order. The plot symbols are arranged in particular regularly and/or periodically in the two-dimensional periodic grid of the basic symbols. The plot symbols can be located on or next to the grid points. The plot symbols are each arranged in particular at the same position within a plot, such as in the center of a plot. The plot symbols are, for example, other graphic elements than the basic symbols, such as triangles, hexagons or lines. Alternatively and/or additionally, the plot symbols are represented by omitting one or more basic symbols in a plot. In one possible embodiment, the plot symbol forms the point of symmetry of the p-fold rotational symmetry of the plot. In particular, the reading direction and/or decoding sequence, i.e. the sequence in which the basic symbols must be read within the X-parcel area and/or within the Y-parcel area, is specified. Preferably, the reading direction and/or decoding sequence corresponds to the specification of which basic symbols are to be read and/or decoded one after the other.

Definition Codierung:Definition of coding:

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.In the X-parcel area, an X-coordinate value is encoded by the base symbols and a Y-coordinate value is encoded in the Y-parcel area by the base symbols. In particular, the X-coordinate value and the Y-coordinate value are the coordinates of a base symbol in the parcel, wherein the coordinate is specified in a Cartesian coordinate system of the area spanned by the base symbols. Alternatively and/or additionally, the X-coordinate value and the Y-coordinate value can also specify a position within the area as coordinates in another coordinate system, such as an oblique coordinate system, in cylindrical coordinates or spherical coordinates.

Definition bevorzugte Ausführung des Punktrasters:Definition of preferred design of the dot matrix:

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 a particularly preferred embodiment of the invention, the two-dimensional periodic grid is a rectangular grid, with the plots also being rectangular. In particular, the rectangular grids and the rectangular plots are square grids and/or square plots. Preferably, the distance between the base symbols along a length and width axis of the rectangular grid is the same. For example, for a square grid with square plots, the number of base symbols in the X and Y directions of the two-dimensional periodic grid is the same. In particular, the X plot area and the Y plot area each consist of two spatially separated, rectangular partial areas within a plot, with the partial areas having 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. Preferably, the area occupied by the X plot area can be converted into the area occupied by the Y plot area by a 90° rotation.

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 Rasterbreite in Y-Richtung. Das so gebildete Koordinatensystem ordnet jedem Punkt der Codierungsfläche einen eindeutig bestimmten Ortsvektor (X, Y) zu.In a particularly preferred embodiment of the invention, the periodic grid has a grid length and a grid width. The grid length extends in the X direction of a Cartesian coordinate coordinate system, the grid width in the Y direction. The coordinate system thus formed assigns a uniquely determined position vector (X, Y) to each point of the coding area.

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.A number of g consecutive basic symbols forms in particular an overall sequence. The overall sequence is entered into the X-plot areas, in particular in several plots adjacent in the X direction. The basic symbols are entered into the X-plot areas in particular according to their order in the overall sequence, preferably in ascending X direction of the plots, within each plot in a previously determined reading and/or decoding order. The number g is sufficiently large so that the X-plot areas of all plots adjacent in the X direction can be completely filled. In particular, g is greater than fifty, in particular greater than a thousand and especially greater than a million. The contents of the X-plot areas of plots adjacent in the Y direction are identical. It is particularly preferred that a section of t consecutive basic symbols in the overall sequence forms a partial sequence. In particular, each section of t consecutive basic symbols of the overall sequence forms a partial sequence, with the consecutive basic symbols following one another in decoding and/or reading order. In particular, the overall sequence is designed such that each partial sequence of t consecutive basic symbols is contained only once in the overall sequence when read forwards and each partial sequence read backwards is not contained in the overall sequence when read forwards. Preferably, a partial sequence comprises at least five consecutive basic symbols, in particular at least twenty consecutive basic symbols and in particular at least thirty basic symbols. Furthermore, the partial sequence preferably comprises fewer than fifty basic symbols and in particular fewer than thirty basic symbols. In particular, t < g applies.

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, 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 a particularly preferred embodiment of the invention, the base symbols are designed to encode digits to a number base b. The number base b is preferably the base of a place value system. Preferably, the number base b = 2, the base of a binary system, where the digits of the binary system include 0 and 1. It is also possible for the number base b = 10 and to form the base of a decimal system, where the decimal system includes the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9. Alternatively, the number base b = 16, the base of a hexadecimal system, where the hexadecimal system includes the digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E and F. In particular, the number base b can be selected as desired, where the digits of the number base include the elements 0, 1, ... b - 1. Alternatively and/or additionally, the number base b is the base of an additive number system, such as the Roman numeral system.

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 a particularly preferred embodiment of the invention, the number base b = 2 is selected. In particular, the selected number base b = 2 forms a binary system. The binary system and/or the number system with the number base b = 2 comprises two digits, in particular the digit 0 and the digit 1. Preferably, two different base symbols encode the digits 0 and 1 of the binary system. The two different base symbols are formed by two circles, a first circle with a radius R1 and a second circle with a radius R2. In particular, the radius R1 is selected to be smaller than the radius R2. In particular, the ratio of radius R2 to radius R1 is greater than the square root of 2. For example, the radius R2 is selected such that it is smaller than half the grid dimension of the code grid, so that two adjacent circles with R2 in the periodic grid do not touch each other. This design is based on the consideration that, on the one hand, a particularly high information density is achieved, and on the other hand, reliable readability is achieved with standard image processing methods such as segmentation using blob analysis.

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 one possible embodiment of the invention, the overall sequence is designed such that a checksum of a partial sequence is less than half of the maximum possible checksum of a partial sequence. In particular, the checksum for any partial sequence selected from the overall sequence is less than half of the maximum possible checksum of a partial sequence. For example, the checksum of any partial sequence with length t for a number system with base b is less than 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 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 a particularly preferred embodiment of the invention, the two-dimensional code arrangement comprises an inverted overall sequence. The inverted overall sequence preferably represents an inversion of the overall sequence. The inverted overall sequence is preferably entered into the Y-plot areas of several plots adjacent in the Y direction. The basic symbols are entered into the Y-plot areas in particular according to their order in the inverted overall sequence, preferably in ascending Y direction of the plots, within each plot in the previously determined reading and/or decoding order. The number g is sufficiently large so that the Y-plot areas of all plots adjacent in the Y direction can be completely filled. In particular, the contents of the Y-plot areas of plots adjacent in the X direction are identical.

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).In a possible embodiment of the invention, the base symbol at the k-th position of the inverted overall sequence is the coded digit m(k), where the digit m(k) with the digit n(k) coded by the base symbol at the k-th position in the overall sequence satisfies the relation: m(k) = b - n(k) - 1. For example, the inverted overall sequence and the overall sequence for the choice of a dual system with the base b = 2 form the relation: m(k) = 1 - n(k).

Definition Aufpunkt:Definition of starting point:

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.The section particularly preferably comprises a reference point. The reference point is, for example, the intersection point of the optical axis of the camera with the plane in which the code arrangement lies. The method is preferably designed to determine the position of the camera in relation to the work area on the basis of the image recorded by the sensor unit, such as the X coordinate (rx) and the Y coordinate (ry) of the reference point in a coordinate system which is spanned by the work area and/or the basic symbols and/or the code arrangement.

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.Initially, the procedure only determines the rough position in the form of the coded X coordinate and the coded Y coordinate as two degrees of freedom. The rough position alone provides a reliable and usable position for the rough positioning of the camera.

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 Winkel der optischen Achse zu der Codeanordnung bekannt ist. Der einfachste Fall ist, dass die optische Achse senkrecht zu der Codeanordnung ausgerichtet ist.By determining the X coordinate and the Y coordinate in the code arrangement as a rough position, the relative position of the camera in relation to the code arrangement can be deduced. For example, if the rough position is determined in the immediate vicinity of the reference point, the position of the camera can be deduced by knowing the course of the optical axis of the camera. A quasi-exact position of the camera is obtained by making the reference point equal to the coded position and knowing the angle of the optical axis to the code arrangement. The simplest case is that the optical axis is aligned perpendicular to the code arrangement.

Definition Freiheitsgrade:Definition of degrees of freedom:

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).
In a particularly preferred embodiment of the invention, the method is designed to determine the position and/or the location of the work module with respect to the work area in up to six degrees of freedom. The degrees of freedom are in particular:
  • rx: Location coordinate in the coordinate system of the code arrangement (as coarse position and/or fine position).
  • ry: Location coordinate in the coordinate system of the code arrangement (as coarse position and/or fine position).

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.
In particular, rx and ry refer to the reference point, in particular the point where the optical axis penetrates the code arrangement.
  • rz: Distance from the reference point to the camera along the optical axis.
  • phiz: Z-rotation angle of the camera around the optical axis.
  • phix: first pitch angle of the optical axis to the code arrangement, particularly with respect to the first main direction.
  • phiy: second pitch angle of the optical axis to the code arrangement, particularly with respect to the second main direction.

Definition X, Y-Koordinate (rx, ry):Definition X, Y coordinate (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.For example, the six degrees of freedom of the position and/or attitude of the camera relative to the workspace include the coordinates X and Y with respect to the Cartesian coordinate system spanned by the base symbols, in particular in a coordinate system (X c , Y c ) of the code arrangement in the plane of the code arrangement.

Definition Abstand zwischen Aufpunkt und optischen Zentrum der Kamera (rz):Definition distance between reference point and optical center of the camera (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.Furthermore, the 6 degrees of freedom include the distance Z or r z of the camera to the reference point along the optical axis, where the distance e.g. denotes the distance between the reference point and e.g. the optical center of the camera lens.

Definition Drehwinkel:Definition of angle of rotation:

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.Furthermore, the three independent rotation angles of the camera are determined in a camera coordinate system. Two of the rotation angles are specifically defined as the intermediate angle between the optical axis and the code arrangement (phix, phiy). The third rotation angle (phiz) describes the rotation of the camera around the optical axis.

Definition Koordinatensystem der Codeanordnung:Definition of the coordinate system of the code arrangement:

Das Koordinatensystem (Xc, Yc) der Codeanordnung liegt in der Ebene der Codeanordnung.The coordinate system (X c , Y c ) of the code arrangement lies in the plane of the code arrangement.

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 of the coordinate system of the camera's image sensor and/or in the camera image:
  • The coordinate system (X I, Y I ) of the image sensor lies in the plane of the image sensor or in the camera image.

Definition Kamerakoordinatensystem:Definition of camera coordinate system:

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.The coordinate system (X, Y, Z) of the camera has its origin at the optical center of the camera lens, with the negative Z direction coinciding with the optical axis of the camera.

Verallgemeinerung:Generalization:

Während vorliegend die Koordinatensysteme hinsichtlich des Ursprungs und der Ausrichtung beispielhaft konkretisiert sind, können auch äquivalente Koordinatensysteme verwendet werden.While the coordinate systems in this case are specified as examples with regard to the origin and orientation, equivalent coordinate systems can also be used.

Definition Verfahren:Definition of procedure:

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 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.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. In particular, 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 spanned by the basic symbols, is determined. Alternatively and/or additionally, 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. In a particularly preferred embodiment of the invention, the position of the work module in relation to the work area is determined in up to six degrees of freedom in the method. In particular, 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 base symbols and Z is the distance of the work module from the work area. The method also determines, for example, the three Euler angles of the camera.

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.Alternatively and/or in addition, 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, consumer electronics and/or sensor technology.

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).
The general advantages of the invention are depending on the variant:
  • The central task of the invention is to provide a powerful, reliable and inexpensive method for localizing and identifying one or more objects in a workspace in up to six degrees of freedom (6D localization = simultaneous position detection in 6 degrees of freedom).

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.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.

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.To determine the position of an object in up to six degrees of freedom, the camera captures a two-dimensional code arrangement that is associated with the object to be located.

Das erfindungsgemäße Verfahren bietet in Abhängigkeit der Variante folgende Eigenschaften:

  • - 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°
    • unendlich, wenn das Objekt auf allen Seiten einen Punktecode trägt (wie in 5a, b)
    • 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
The method according to the invention offers the following properties depending on the variant:
  • - Up to full 6D position information: translation (X,Y,Z) and rotation (φ_X,φ_Y,φ_Z)
  • - Absolute position information (not incremental), i.e. a referencing run as with incremental sensors is not required
  • - Very large measuring range:
  • - in X, Y “almost infinite”, limited only by the code arrangement. Examples: clearly encodeable area when using the code described in [B] and dot grid 2.5mm:
    • for plot size 5x5 dots: 2m x 2m
    • for plot size 7x7 dots: 8km x 8km
    • for plot size 9x9 dots: 550,000km x 550,000km
    • in Z: only dimension with limitation. Adaptable to the application via camera resolution, lens and grid size of the code arrangement.
    • in φ_X, φ_Y: currently +/- 60°
    • infinite if the object has a point code on all sides (as in 5a , b)
    • in φ_Z infinite (0°-360°)
  • - High measurement rate, e.g. 100Hz - 10,000Hz
  • - Short latency (time from image capture to output of the 6D position measurement value), e.g. 10ms - 100µs.
  • - High measurement accuracy in all six degrees of freedom:
    • currently 1 µm and 0.01 ° repeatability (at 3 sigma), with a code pitch of 2.5 mm
  • - Maximum reading reliability, even with local disturbances in the image or fluctuations in image brightness
  • - Cost-effective, both the sensor system and the code arrangement
  • - Additional data can be read at the same time as the localization. For example, an ID code for identifying the object that is integrated into the code arrangement can be read.
  • - Scalable in terms of accuracy, measuring range in Z, redundancy and measuring rate by changing the lens, image sensor resolution, grid size of code arrangement, size of the reading field, computing power, etc.
  • - Easy integration into existing systems, for example as a smartphone app

Damit lassen sich auf einfache Weise eine Vielzahl von automatisierungstechnischen Anwendungen realisieren, die bisher nicht oder nicht wirtschaftlich umsetzbar waren, beispielsweise

  • - 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.
This makes it easy to implement a wide range of automation applications that were previously not or not economically feasible, for example
  • - Precise localization of axes or sliders in an axis system or robot system to realize real-time position control in up to six dimensions.
  • - Construction of absolute positioning systems and robots that do not require reference travel
  • - Simplification of positioning systems, since several one-dimensional measuring sensors can be replaced by one multi-dimensional measuring sensor.
  • - Visual servoing, e.g. for tracking a robot gripper on a moving target.
  • - Monitoring and tracking of multiple objects in space through cyclic position measurement
  • - Recording and analysis of movement sequences
  • - Vibration analysis of machines in 6 dimensions.
  • - Determination of the relative position of two objects. 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, ie the method is largely independent of the camera position.
  • - Determining the relative position of more than two objects, each equipped with cameras and/or code arrangements.
  • - Setting up a localization network, e.g. in a production hall, to localize several stationary or moving objects relative to each other or relative to a hall coordinate system. For example, several autonomous vehicles, each equipped with a camera, localize themselves by detecting a code arrangement attached to the hall ceiling.

Die Codeanordnung weist ein insbesondere flächiges 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.The code arrangement has a particularly flat 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.

Im Rahmen des Verfahrens wird ein Startfeld bestimmt. Das Startfeld weist mindestens drei, bevorzugt zueinander benachbarte Basissymbole auf, die in einem Winkel zueinander angeordnet sind. Die Verbindungslinien zwischen den Basissymbolen des Startfelds definieren zwei unabhängige Hauptrichtungen entlang des Punktrasters in dem Kamerabild. Für den Fall, dass das Startfeld genau drei Basissymbole aufweist, so sind diese beispielsweise in einem Winkel zueinander angeordnet. Sie legen ein Koordinatensystem des flächigen Punktrasters fest, wobei eines der mindestens drei Basissymbole den Ursprung des Koordinatensystems bildet. Bei einer bevorzugten Weiterbildung der Erfindung weist das Startfeld neun Basissymbole auf, welche quadratisch und/oder rechteckig angeordnet sind. Insbesondere weist das Startfeld eine Kantenlänge mit drei Basissymbolen auf. Die Basissymbole des Startfelds sind valide Basissymbole. Unter validen Basissymbolen werden insbesondere die Basissymbole verstanden, welche im Rahmen des Verfahrens wahlweise als valide definiert oder aufgrund von Bildmerkmalen als valide Basissymbole klassifiziert und/oder durch Auffinden der Basissymbole und erfolgreichem Verarbeiten der Basissymbole mit einem verwertbaren Bearbeitungsergebnis als valide gesetzt sind. Bildstrukturen, die nicht als valide Basissymbole klassifiziert werden, werden als Bildstörung interpretiert und von der weiteren Verarbeitung ausgeschlossen.As part of the method, a starting field is determined. The starting field has at least three basic symbols, preferably adjacent to one another, which are arranged at an angle to one another. The connecting lines between the basic symbols of the starting field define two independent main directions along the dot grid in the camera image. In the event that the starting field has exactly three basic symbols, these are arranged at an angle to one another, for example. They define a coordinate system of the flat dot grid, with one of the at least three basic symbols forming the origin of the coordinate system. In a preferred development of the invention, the starting field has nine basic symbols, which are arranged squarely and/or rectangularly. In particular, the starting field has an edge length with three basic symbols. The basic symbols of the starting field are valid basic symbols. Valid basic symbols are understood to mean in particular the basic symbols that are either defined as valid within the framework of the process or classified as valid basic symbols based on image features and/or set as valid by finding the basic symbols and successfully processing the basic symbols with a usable processing result. Image structures that are not classified as valid basic symbols are interpreted as image interference and excluded from further processing.

In dem Verfahren werden in einem Suchschritt ausgehend von mindestens einem validen Basissymbol entlang der Hauptrichtungen weitere insbesondere valide Basissymbole gesucht.In the method, in a search step, starting from at least one valid basic symbol, further particularly valid basic symbols are searched for along the main directions.

Bei einer erfolgreichen Suche, insbesondere bei einem Auffinden von weiteren Basissymbolen, werden die weiteren Basissymbole als valide Basissymbole gekennzeichnet.If the search is successful, especially if additional base symbols are found, the additional base symbols are marked as valid base symbols.

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.It is intended that the search step is carried out several times. In the event that new basic symbols are found as valid basic symbols in a search step, the search step is carried out either from the basic symbol of the start field or from the newly found, valid basic symbols. In this way, the dot grid is gradually supplemented with further valid basic symbols, starting from the start field with valid basic symbols. The search step is repeated until a sufficient number of valid basic symbols have been found, in particular so that decoding can take place.

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.Based on the valid basic symbols or a selected subset thereof, in particular by decoding the valid basic symbols, the coarse 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.

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.In particular, the valid basic symbols or a subset thereof are decoded, whereby at least one degree of freedom of the camera relative to the code arrangement is determined from the decoded coarse position and optionally additional coarse orientation of the coordinate system of the point grid in the camera image.

Es ist dabei eine Überlegung der Erfindung, dass die Basissymbole in der Codeanordnung und/oder im Kamerabild beispielsweise mit flächenhaften Funktionen der Bildverarbeitung gesucht und gefunden werden können. Allerdings erfordert das Auffinden von Basissymbolen zum Beispiel mit einer Blobanalyse oder der musterbasierten Suche (pattern matching) einen häufigen Zugriff auf die Pixel des Kamerabilds und führt dadurch zu einer aufwendigen Bildverarbeitung.It is a consideration of the invention that the basic symbols in the code arrangement and/or in the camera image can be searched for and found, for example, using surface functions of image processing. However, finding basic symbols, for example using blob analysis or pattern matching, requires frequent access to the pixels of the camera image and thus leads to complex image processing.

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.By searching exclusively in the main directions starting from the search field, which defines the two main directions of the point grid and thus the point grid, in particular the coordinate system of the point grid, in the camera image, the a priori knowledge about the structure of the point grid can be used so that the search is not area-oriented, but line-oriented along the main directions. In practical terms, it is sufficient to search for another base symbol starting from a valid base symbol in the main direction along a line. It is obvious that by reducing an area search to a line search, the number of pixel accesses and/or the effort for image processing is significantly reduced. The method according to the invention thus enables a very efficient implementation of the method.

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.In a preferred development of the invention, the respective center point position, in particular the center of gravity position of the basic symbol in the camera image, is determined for the basic symbols. This determines a large number of intersection points in the point grid on the basis of the valid basic symbols.

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.It is intended that the search step is carried out starting from the center position of the respective valid base symbol, in particular a line-oriented search in a predetermined search direction, in particular along one of the main directions. While finding a base symbol initially only allows an approximate determination of the position of the base symbol in the dot grid and/or camera image, the exact position in the dot grid and/or camera image is determined by detecting the center position and thus making the dot grid more specific. It is advantageous that the line-oriented search step in particular is carried out from the center position of the base symbol, as this prevents neighboring base symbols from being accidentally missed.

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.In a preferred development of the invention, two connection vectors are determined in the two independent main directions along the point grid in the camera image on the basis of the starting field and/or on the basis of further valid base symbols. By determining the connection vectors, the position of the nearest and/or neighboring base symbol sought can be estimated by extrapolation based on the known valid base symbol within the framework of a linear combination of the connection vectors.

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.Particularly preferably, the determination of the center position of a base symbol is carried out in such a way that a starting point in the base symbols is moved over several intermediate steps to a center position along the main directions until the position in which the center position is arranged centrally in the base symbol in the main directions is found as the center position. Because the starting position is moved to the center position in such a way that it is always located centrally in the main directions, it is only necessary to search for the boundary of the base symbol in the main directions for each shifting step and then to move the starting position to the center between the boundaries.

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.In the example of a circular base symbol, the boundary of the base symbol is searched for by linear search in a first main direction of the camera image, starting from an initial position within the base symbol. The boundary of the base symbol is then searched for in the negative first main direction. Averaging the boundaries leads to a more precise position estimate. This step is repeated in the same way for the second main direction, and then again for the first main direction.

Auf diese Weise erfolgt die Verschiebung von der Anfangsposition zur Mittelpunktsposition recheneffizient durch eine Abfolge von Linienauswertungen entlang der Hauptrichtungen.In this way, the shift from the initial position to the center position is performed computationally efficiently through a sequence of line evaluations along the main directions.

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.In a subsequent step, the area of the basic symbols in the camera image is determined, whereby the area forms a datum for the coding of the code arrangement. In particular, the area is used to classify the basic symbol.

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.The date can be a 0 or a 1 in the binary system, for example, where the base symbols are, for example, circular areas of different sizes. In the event that the respective center position and the extent of the base symbol in the main directions is known from the shifting steps, the area of the base symbol can be easily determined using these values. In this way, the center position in the point grid and then the area of the base symbol are determined very efficiently.

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.The area of the base symbol in the camera image is strongly influenced by perspective distortion. For example, the area decreases with increasing distance of the camera from the base symbol and with increasing tilt angle of the camera (elliptical distortion). These influences can lead to incorrect classification, for example if similar base symbols with very different distances from the camera appear in a camera image. Therefore, the standardized area of the base symbol is preferably used to classify the base symbol.

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.To calculate the standardized area, a reference area is determined that is subject to approximately the same perspective distortions as the base symbol. A parallelogram is used as the reference area, which is spanned by the two vectors from the grid position of the base symbol to the grid positions adjacent in the direction of the main axis. The reference area is the value of the cross product of both vectors.

Die normierte Fläche des Basissymbols wird insbesondere als Quotient aus der Fläche des Basissymbols und der Referenzfläche berechnet.In particular, the normalized area of the base symbol is calculated as the quotient of the area of the base symbol and the reference area.

Bei einer bevorzugten Ausgestaltung der Erfindung wird ein Lesefeld in dem Kamerabild und/oder in dem flächigen Punktraster definiert und eine dazu korrespondierende zweidimensionale Basissymbol-Matrix, insbesondere Dot-Matrix, gebildet, wobei jedem Punkt im Lesefeld ein Eintrag in der Basissymbol-Matrix zugeordnet ist und wobei in die Basissymbol-Matrix die Position und die Fläche und/oder das Datum der Basissymbole eingetragen ist. Aus den Daten in der Basissymbol-Matrix kann die Grobposition und optional ergänzend - orientierung des Koordinatensystems des Punktrasters decodiert werden und/oder die Grobposition von mindestens einem Basissymbol in der Codeanordnung als die zwei Freiheitsgrade ermittelt werden.In a preferred embodiment of the invention, a reading field is defined in the camera image and/or in the flat dot matrix and a corresponding two-dimensional basic symbol matrix, in particular a dot matrix, is formed, with each point in the reading field being assigned an entry in the basic symbol matrix and with the position and the area and/or the date of the basic symbols being entered in the basic symbol matrix. The rough position and optionally additional orientation of the coordinate system of the dot matrix can be decoded from the data in the basic symbol matrix and/or the rough position of at least one basic symbol in the code arrangement can be determined as the two degrees of freedom.

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 a preferred development of the invention, at least one starting position is determined in a preliminary step for creating the starting field. The starting position is determined arbitrarily. The starting position is preferably located near or adjacent to the reference point. If the starting position happens to be within a base symbol, the starting position is taken as the initial position for a starting base symbol. If the starting position is outside a base symbol, a neighboring base symbol is searched for as a starting base symbol along search rays starting from the starting position. In the preliminary step, no computationally intensive area-oriented image processing takes place; instead, a base symbol is searched for only along the search rays starting from the starting position. The boundary of the base symbol can be detected, for example, by a contrast change along the search direction in the camera image. It is possible for the method to use at least or exactly 8 or 16 search rays, which start in the starting position and are arranged in regular angular steps distributed over 360°. A minimum radius can be defined for the search beams, from which a further base symbol is searched. Optionally, a maximum search radius can be specified. If the maximum search radius is reached without finding a neighboring base symbol, the start position is discarded and an alternative start position is selected.

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 a subsequent step, starting from the position of the starting base symbol, a neighboring base symbol is searched for as the first auxiliary starting base symbol along further search beams. The search for the first auxiliary starting base symbol can be carried out with the same distribution of search beams as previously described.

In einem nachfolgenden Schritt wird ausgehend von dem Startbasissymbol und dem ersten Hilfsstartbasissymbol in einer Richtung, welche gewinkelt zu der Verbindung (und/oder entlang einer ersten Hauptrichtung) zwischen dem Startbasissymbol und dem ersten Hilfsstartbasissymbol ist, ein zweites Hilfsstartbasissymbol gesucht. Dabei können jedoch weniger Suchstrahlen wie zuvor eingesetzt werden, die insbesondere über einen kleineren Winkelbereich verteilt sind, so dass die Suche beschleunigt wird. Dabei wird ausgenutzt, dass die ersten drei Basissymbole gewinkelt zueinander angeordnet sein sollen, so dass es ein a priori Wissen gibt, in welcher Richtung das zweite Hilfsstartbasissymbol gesucht wird. Beispielsweise werden nur noch ein, zwei oder drei bis sechs Suchstrahlen verwendet, welche um eine Hauptsuchrichtung herum verteilt sind, die senkrecht zu der Verbindung zwischen Startbasissymbol und dem ersten Hilfsstartbasissymbol orientiert ist.In a subsequent step, a second auxiliary start base symbol is searched for, starting from the starting base symbol and the first auxiliary start base symbol, in a direction that is angled to the connection (and/or along a first main direction) between the starting base symbol and the first auxiliary start base symbol. However, fewer search beams can be used than before, which are distributed in particular over a smaller angular range, so that the search is accelerated. This takes advantage of the fact that the first three base symbols should be arranged at an angle to one another, so that there is a priori knowledge of the direction in which the second auxiliary start base symbol is being searched for. For example, only one, two or three to six search beams are used, which are distributed around a main search direction that is oriented perpendicular to the connection between the starting base symbol and the first auxiliary start base symbol.

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.To complete the process, starting from the starting base symbol, all base symbols of the starting base symbol that are immediately adjacent in the main axis direction or diagonal direction of the point grid are searched for based on the connection between the starting base symbol and the first auxiliary starting base symbol and the connection between the starting base symbol and the second auxiliary starting base symbol by linear combination of the connections. In particular, the connection vectors and/or main directions can be derived from the first three base symbols found. These form a two-dimensional coordinate system of the point grid. To improve the process, the center positions can be determined in order to define the connection vectors as precisely as possible. The result is a starting field with 3 x 3 valid base symbols.

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.In the search step, neighboring base symbols are searched for starting from the starting field and/or from the other valid base symbols that were found in an earlier search step. The method preferentially searches for base symbols at grid points that have at least two valid neighbors in the main directions or in the diagonal directions. All neighbors of a grid point provide independent position estimates through extrapolation, which, when averaged, lead to a more accurate position estimate of the grid point.

Durch die Bedingung, dass nur Rasterpunkte und/oder mit mindestens zwei validen Basissymbolen als Nachbarn gesucht werden, wird außerdem eine flächenhafte Ausdehnung des erfassten Bereiches begünstigt und die linienhafte Ausdehnung in Form von Lanzen, Dendrite oder Spitzen vermieden. Die flächenhafte Ausdehnung ist robuster und toleranter gegenüber Störungen im Bild als die linienhafte Ausdehnung.The requirement that only raster points and/or those with at least two valid base symbols as neighbors are searched for also promotes a planar expansion of the captured area and avoids linear expansion in the form of lances, dendrites or tips. The planar expansion is more robust and more tolerant of disturbances in the image than the linear expansion.

Die Basissymbole definieren eine erste und eine davon unabhängige, zweite Hauptrichtung entlang des Punktrasters. In Abhängigkeit von den Betrachtungswinkeln werden die unabhängigen zwei Hauptrichtungen in dem Kamerabild senkrecht oder schiefwinklig zueinander abgebildet.The basic symbols define a first and an independent second main direction along the point grid. Depending on the viewing angles, the two independent main directions are shown perpendicularly or obliquely to each other in the camera image.

Aus dem Kamerabild wird eine insbesondere zweidimensionale Basissymbol-Matrix ermittelt, wobei jedem Rasterpunkt der Codeanordnung ein Eintrag in der Basissymbol-Matrix zugeordnet ist und wobei in der Basissymbol-Matrix die Mittelpunktsposition der Basissymbole in dem Kamerabild eingetragen ist. Somit verweist ein Eintrag in der Basissymbol-Matrix auf die Position des Basissymbols in dem zugeordneten Rasterpunkt und zwar insbesondere in einem Koordinatensystem des Bildaufnehmers und/oder in einem Koordinatensystem des Kamerabilds.A basic symbol matrix, in particular a two-dimensional one, is determined from the camera image, with each grid point of the code arrangement being assigned an entry in the basic symbol matrix and with the center position of the basic symbols in the camera image being entered in the basic symbol matrix. An entry in the basic symbol matrix thus refers to the position of the basic symbol in the assigned grid point, in particular in a coordinate system of the image sensor and/or in a coordinate system of the camera image.

Das Punktraster in dem Kamerabild ist insbesondere perspektivisch verzerrt, so dass zwar die Reihen und Spalten des Punktrasters jeweils geradlinig ausgebildet sind, jedoch die Reihen und Spalten zueinander in der perspektivischen Verzerrung im Allgemeinen schiefwinklig zueinander angeordnet sind.The dot grid in the camera image is particularly perspectively distorted, so that although the rows and columns of the dot grid are each formed in a straight line, the rows and columns are generally arranged at an oblique angle to one another in the perspective distortion.

Daneben kann es noch zu einer optischen Verzeichnung kommen, wobei diese optional durch eine Rektifizierung kompensiert werden kann.In addition, optical distortion may occur, which can optionally be compensated by rectification.

Vorzugsweise wird aus den Daten der Basissymbol-Matrix eine erste Geradenfunktion in einem Koordinatensystem des Kamerabilds für eine erste Gerade mit einem 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 dem Koordinatensystem der Codeanordnung als auch in dem Koordinatensystem des Kamerabilds.Preferably, a first straight line function in a coordinate system of the camera image is determined from the data of the basic symbol matrix for a first straight line with a first function argument. The first straight line is always parallel to the first main direction of the dot grid, regardless of the first function argument, if the first straight line is mentally transferred to the coordinate system of the code arrangement. By changing the first function argument, the first straight line is shifted parallel in the second main direction in the coordinate system of the code arrangement. Thus, by changing the first function argument, the straight line can be placed, for example, on a row of the dot grid, both in the coordinate system of the code arrangement and in the coordinate system of the camera image.

Insbesondere kann dies wie folgt umgesetzt werden:In particular, this can be implemented as follows:

Ausgangssituation:

  1. a) Die Mittelpunkte der Basissymbole bilden in der Codeebene ein zweidimensionales Punktraster mit regelmäßig angeordneten geradlinigen Reihen und Spalten
  2. 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.
  3. c) Durch Verzeichnung des Objektives erscheinen die Reihen und Spalten im Kamerabild als gekrümmte Linien.
Initial situation:
  1. a) The centers of the basic symbols form a two-dimensional dot grid in the code plane with regularly arranged straight rows and columns
  2. b) The camera images the code plane on the image sensor with a distorted perspective. In the camera image, the rows generally appear as fanned-out lines that have a common vanishing point. The same applies to the columns.
  3. c) Due to distortion of the lens, the rows and columns in the camera image appear as curved lines.

Verfahrensschritte im Kamera-Koordinatensystem:

  1. a) Durch Rektifizierung wird die Verzeichnung des Objektives mathematisch eliminiert, die gekrümmten Linien werden in gerade Linien überführt.
  2. 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.
  3. 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.
  4. d) Durch Einsetzen rationaler Funktionswerte in die Interpolationsfunktion können auch Geraden berechnet werden, die zwischen zwei Reihen oder Spalten liegen.
Process steps in the camera coordinate system:
  1. a) By rectification, the distortion of the lens is mathematically eliminated, the curved lines are converted into straight lines.
  2. b) Linear interpolation is used to fit straight lines to the rows and number them according to their sequence using an integer index as a function argument. They form a first bundle of straight lines. The same procedure is followed for the columns, which form a second bundle of straight lines.
  3. c) Each straight line is described by a straight line angle and an intercept value. The straight line angles of a bundle form a sequence of numbers that is approximated by quadratic interpolation. The integer straight line index serves as the function argument. The polynomial has three interpolation parameters. The intercept value is used in the same way, resulting in three further interpolation parameters. Each straight line bundle is therefore completely and compactly described by six interpolation parameters.
  4. d) By inserting rational function values into the interpolation function, straight lines that lie between two rows or columns can also be calculated.

Alternativ oder ergänzend wird auf Basis der Basissymbol-Matrix eine zweite Geradenfunktion in einem Koordinatensystem des Kamerabilds für eine zweite Gerade mit einem zweiten Funktionsargument bestimmt. Die zweite Gerade ist unabhängig vom zweiten Funktionsargument stets parallel zu der zweiten Hauptrichtung des Punktrasters, wenn die zweite Gerade in das Koordinatensystem der Codeanordnung transferiert wird. Durch Änderung des zweiten Funktionsarguments wird die zweite Gerade parallel in der ersten Hauptrichtung in dem Koordinatensystem der Codeanordnung verschoben. Somit kann durch Änderung des zweiten Funktionsarguments die Gerade z. B. auf eine Reihe des Punktrasters gelegt werden und zwar sowohl in dem Koordinatensystem der Codeanordnung als auch in dem Koordinatensystem des Kamerabilds.Alternatively or additionally, a second straight line function is determined on the basis of the basic symbol matrix in a coordinate system of the camera image for a second straight line with a second function argument. Regardless of the second function argument, the second straight line is always parallel to the second main direction of the dot grid when the second straight line is transferred to the coordinate system of the code arrangement. By changing the second function argument, the second straight line is shifted parallel in the first main direction in the coordinate system of the code arrangement. Thus, by changing the second function argument, the straight line can be placed on a row of the dot grid, for example, both in the coordinate system of the code arrangement and in the coordinate system of the camera image.

Es ist darauf hinzuweisen, dass die Begriffe Reihe und Spalte insbesondere nur zur Benennung dienen und keine spezifische Ausrichtung des Punktrasters bedeuten.It should be noted that the terms row and column are for naming purposes only and do not imply a specific orientation of the dot grid.

Der mindestens eine weitere Freiheitsgrad der Kamera wird auf Basis von mindestens einer der Geradenfunktionen ermittelt. Optional kann der mindestens eine weitere Freiheitsgrad der Kamera auf Basis von beiden Geradenfunktionen ermittelt werden.The at least one further degree of freedom of the camera is determined based on at least one of the straight line functions. Optionally, the at least one further degree of freedom of the camera can be determined based on both straight line functions.

Es ist dabei eine weiterführende Überlegung, dass auf dem Weg von dem Kamerabild zu dem mindestens einen Freiheitsgrad die Datenmenge reduziert werden soll, um eine schnellere und/oder effizientere Berechnung des mindestens einen Freiheitsgrad zu ermöglichen. Während das Kamerabild beispielsweise mit einer Bildgröße von 200 x 200 Pixel noch 40.000 Werte aufweist, ist die Basissymbol-Matrix bereits auf die Position reduziert und weist dementsprechend bei einem Ausschnitt des Kamerabilds z.B. mit einer Kantenlänge des Punktrasters 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.A further consideration is that the amount of data should be reduced on the way from the camera image to the at least one degree of freedom in order to enable a faster and/or more efficient calculation of the at least one degree of freedom. While the camera image with an image size of 200 x 200 pixels, for example, still has 40,000 values, the basic symbol matrix is already reduced to the position and accordingly only has 225 values for the positions in a section of the camera image with an edge length of the point grid of 15 basic symbols, for example. By deriving the at least one linear function, the amount of data is reduced to the parameters of the linear function.

Hierbei hat sich gezeigt, dass pro Geradenfunktion 6 Parameter optional plus ein Datum ausreichend ist, um den wesentlichen Informationsgehalt der Basissymbol-Matrix bzw. des Kamerabilds auf den Weg zu dem mindestens einen Freiheitsgrad ausreichend ist, so dass die Datenmenge in dem Beispiel von 225 Einträgen auf 12 bzw. 14 Einträge reduziert wird. Dadurch wird die Berechnung des mindestens einen Freiheitsgrads vom Aufwand betrachtet signifikant verringert.It has been shown that 6 parameters (optional) plus one datum per linear function are sufficient to transfer the essential information content of the basic symbol matrix or the camera image to the at least one degree of freedom, so that the amount of data in the example is reduced from 225 entries to 12 or 14 entries. This significantly reduces the effort required to calculate the at least one degree of freedom.

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.A further advantage of the implementation is that the rows and columns of the basic symbol matrix in the code arrangement are arranged parallel to one another and at regular intervals, so that the derivation of the straight line function in the camera image also carries out a type of averaging over the basic symbol matrix, with the straight line functions describing an averaged information of the basic symbol matrix. The straight line functions compress the information while simultaneously improving the information content.

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.The method according to the invention thus allows a computationally efficient implementation of the method for determining at least one degree of freedom of the camera relative to the code arrangement from the camera image. From an application point of view, the determination can be carried out, for example, on a microcontroller, which can determine the at least one degree of freedom at least 100 times per second. In this way, it is possible to carry out real-time applications with the method, for example in production.

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.In a preferred development, the first straight line function is determined on the basis of at least two rows, preferably more than two rows, in particular on the basis of all rows of the basic symbol matrix. Alternatively or additionally, the second straight line function is determined on the basis of at least two columns, preferably more than two columns and in particular on the basis of all columns of the basic symbol matrix. This development underlines that the straight line function carries averaged and/or condensed information across multiple rows or columns.

Bei einer bevorzugten Konkretisierung der Erfindung wird für die Reihen entlang der ersten Hauptrichtungen jeweils eine erste Ausgleichsgerade pro Reihe gebildet. Die erste Geradenfunktion ist auf Basis einer Mehrzahl der ersten Ausgleichsgeraden gebildet. Dadurch, dass durch eine Reihe eine erste Ausgleichsgerade gebildet wird, kann diese erste Ausgleichsgerade an den Verlauf der Reihe angepasst werden, so dass die erste Ausgleichsgerade bereits eine gemittelte und/oder verdichtete Information der zugrundeliegenden Reihe bildet. Die erste Geradenfunktion wird auf Basis einer Mehrzahl der ersten Ausgleichsgeraden gebildet, wobei hier durch eine zweite Mittelung oder Verdichtung erfolgt, so dass die erste Geradenfunktion durch eine zweifache Mittelung der Ursprungsinformationen gebildet ist.In a preferred embodiment of the invention, a first best-fit line is formed for each row along the first main directions. The first straight line function is formed on the basis of a plurality of the first best-fit lines. Because a first best-fit line is formed by a row, this first best-fit line can be adapted to the course of the row, so that the first best-fit line already forms an averaged and/or condensed information of the underlying row. The first straight line function is formed on the basis of a plurality of the first best-fit lines, with a second averaging or condensing taking place here, so that the first straight line function is formed by a double averaging of the original information.

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.Alternatively or additionally, a second best fit line is formed for each column along the second main directions. The second straight line function is formed on the basis of a plurality of the second best fit lines. Because a second best fit line is formed through a column, this second best fit line can be adapted to the course of the column, so that the second best fit line already forms an averaged and/or condensed information of the underlying column. The second straight line function is formed on the basis of a plurality of the second best fit lines, whereby a second averaging or condensing takes place here, so that the second straight line function is formed by a double averaging of the original information.

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.In a preferred implementation, the first function argument is designed as an integer first count value of the rows and/or the second function argument is designed as an integer second count value of the columns. For an integer first count value in the first straight line function, the first straight line thus corresponds to a first best-fit line. In the same way, for an integer second count value as the second function argument in the second straight line function, the second straight line corresponds to one of the columns of the basis symbol matrix. However, the first straight line and/or the second straight line is not exactly the first best-fit line or the second best-fit line, since the straight line function has undergone the second averaging/compression, so that it is a corrected first best-fit line or corrected second best-fit line.

Bei einer bevorzugten Umsetzung werden die Ausgleichsgeraden durch einen Geradenwinkel als Schnittwinkel und mindestens einem Achsenschnittpunkt mit einem oder dem Koordinatensystem des Bildaufnehmers und/oder von dem Kamerabild beschrieben. Für die Ausgleichsgerade sind der Geradenwinkel und der Achsenschnittpunkt von mindestens oder genau einer Koordinatenachse des Koordinatensystems ausreichend, um die Ausgleichsgerade eindeutig in dem Koordinatensystem zu bestimmen.In a preferred implementation, the best-fit lines are described by a straight line angle as the intersection angle and at least one axis intersection point with one or the coordinate system of the image sensor and/or of the camera image. For the best-fit line, the straight line angle and the axis intersection point of at least or exactly one coordinate axis of the coordinate system are sufficient to clearly determine the best-fit line in the coordinate system.

Durch diese Umsetzung werden die Positionen der Ausgleichsgeraden in dem Punktraster der zugehörigen Reihe bzw. Spalte auf zwei Werte reduziert.Through this implementation, the positions of the best-fit lines in the point grid of the corresponding row or column are reduced to two values.

Bei einer bevorzugten Weiterbildung wird die Geradenfunktion durch eine Kombination von einer Geradenwinkelfunktion des Geradenwinkels abhängig von dem Funktionsargument der Geradenfunktion und einer Achsenschnittpunktfunktion des Achsenschnittpunktes abhängig von dem Funktionsargument der Geradenfunktion gebildet. Die Geradenfunktion wird somit ebenfalls durch den Geradenwinkel und mindestens einen Achsenschnittpunkt bestimmt.In a preferred development, the straight line function is formed by a combination of a straight line angle function of the straight line angle depending on the function argument of the straight line function and an axis intersection function of the axis intersection depending on the function argument of the straight line function. The straight line function is thus also determined by the straight line angle and at least one axis intersection.

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.It is preferred that the straight line angle function is designed as a second degree polynomial and/or the axis intersection function is designed as a second degree polynomial, wherein the polynomials have the function argument of the respective straight line function as the function argument. This ensures that the The angle of the line and/or the axis intersection can be determined depending on the function argument. By choosing a second degree polynomial, the approximation can be carried out particularly easily, so that the computational efficiency is further increased.

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.In a preferred embodiment, depending on the straight line angle of the straight line function with the coordinate system, the axis intersection point of the coordinate axis of the coordinate system is selected which leads to a smaller intermediate angle to a perpendicular to the respective coordinate axis. Furthermore, a datum is assigned to the straight line function which encodes the selected coordinate axis. The idea here is that only the axis intersection point of a single coordinate axis is necessary to describe the straight line, but not the axis intersection points with both coordinate axes. In order to achieve the greatest possible information, the axis intersection point is selected whose assigned crossing angle is more perpendicular to the crossed coordinate axis.

Bevorzugt ist in dem Kamerabild 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.A reference point is preferably 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 predetermined by the camera in the coordinate system of the camera and/or in the camera image.

Es wird bevorzugt eine erste Achsenschnittpunktfunktion in dem Koordinatensystem des Kamerabilds von einer ersten Geraden gebildet. Die erste Gerade ist in dem Koordinatensystem der Codeanordnung parallel zu der ersten Hauptrichtung des Punktrasters ausgerichtet. Die Achsenschnittpunktfunktion weist ein erstes Funktionsargument auf, wobei durch Änderung des ersten Funktionsarguments die erste Gerade in dem Koordinatensystem der Codeanordnung parallel in der zweiten Hauptrichtung verschoben wird. Die erste Achsenschnittpunktfunktion definiert in Abhängigkeit des ersten Funktionsarguments einen ersten Achsenschnittpunkt entlang einer ersten Achse des Koordinatensystems des Kamerabilds, wobei die erste Achse durch den Referenzpunkt verläuft. Durch eine Verschiebung der ersten Gerade durch Änderung des ersten Funktionsarguments in dem Koordinatensystem der Codeanordnung wird somit -perspektivisch verzerrt - die erste Gerade in dem Koordinatensystem der Kamera und/oder des Kamerabilds derart verschoben, dass der Achsenschnittpunkt entlang der ersten Achse wandert.A first axis intersection function is preferably formed in the coordinate system of the camera image from a first straight line. The first straight line is aligned in the coordinate system of the code arrangement parallel to the first main direction of the dot matrix. 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 shifted parallel in the second main direction. Depending on the first function argument, the first axis intersection function defines a first axis intersection along a first axis of the coordinate system of the camera image, whereby the first axis runs through the reference point. By shifting the first straight line by changing the first function argument in the coordinate system of the code arrangement, the first straight line in the coordinate system of the camera and/or the camera image is thus shifted - distorted in perspective - in such a way that the axis intersection moves along the first axis.

Ferner wird bevorzugt eine zweite Achsenschnittpunktfunktion in dem Koordinatensystem des Kamerabilds von einer zweiten Geraden gebildet. Die zweite Gerade ist in dem Koordinatensystem der Codeanordnung parallel zu der zweiten Hauptrichtung des Punktrasters ausgerichtet. Die Achsenschnittpunktfunktion weist ein zweites Funktionsargument auf, wobei durch Änderung des zweiten Funktionsarguments die zweite Gerade in dem Koordinatensystem der Codeanordnung parallel in der zweiten Hauptrichtung verschoben wird. Die zweite Achsenschnittpunktfunktion definiert in Abhängigkeit des zweiten Funktionsarguments einen zweiten Achsenschnittpunkt entlang einer zweiten Achse des Koordinatensystems des Kamerabilds, wobei die zweite Achse durch den Referenzpunkt verläuft. Durch eine Verschiebung der zweiten Gerade durch Änderung des zweiten Funktionsarguments in dem Koordinatensystem der Codeanordnung wird somit - perspektivisch verzerrt - die zweite Gerade in dem Koordinatensystem der Kamera und/oder des Kamerabilds derart verschoben, dass der Achsenschnittpunkt entlang der zweiten Achse wandert.Furthermore, a second axis intersection function in the coordinate system of the camera image is preferably formed by a second straight line. The second straight line is aligned in the coordinate system of the code arrangement parallel to the second main direction of the dot matrix. The axis intersection function has a second function argument, whereby by changing the second function argument the second straight line in the coordinate system of the code arrangement is shifted parallel in the second main direction. Depending on the second function argument, the second axis intersection function defines a second axis intersection along a second axis of the coordinate system of the camera image, whereby the second axis runs through the reference point. 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 thus shifted - perspectively distorted - in such a way that the axis intersection moves along the second axis.

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.Based on the axis intersection functions, the first and second function arguments are determined in such a way that the reference point forms the first and second axis intersection points. Figuratively speaking, 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 point lies on the reference point. In the same way, 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 point lies on the reference point.

Nachfolgend wird auf Basis des ersten und des zweiten Funktionsarguments und der Grobposition die Feinposition des Referenzpunkts in dem Koordinatensystem der Codeanordnung in der Ebene der Codeanordnung als weiterer Freiheitsgrad bestimmt. Gedanklich betrachtet wird zunächst die Grobposition des Basissymbols in dem Koordinatensystem der Codeanordnung bestimmt und nachfolgend eine Verschiebung des Basissymbols auf den Referenzpunkt auf Basis der Funktionsargumente bestimmt.Subsequently, based on the first and second function arguments and the coarse position, the fine position of the reference point in the coordinate system of the code arrangement in the plane of the code arrangement is determined as a further degree of freedom. In theory, the coarse position of the base symbol in the coordinate system of the code arrangement is first determined and then a shift of the base symbol to the reference point is determined based on the function arguments.

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.The method has the advantage that the rough position of the base symbol can be determined by decoding the code arrangement. Subsequently, the displacement up to the reference point is calculated on the basis of the axis intersection functions, whereby by using the axis intersection functions the calculation can be carried out with few calculation values and thus computationally efficient. This has the advantage that the method can be carried out in real-time applications even with digital data processing equipment, especially microcontrollers, with low computing power.

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.In a preferred embodiment of the invention, the first function argument is designed as a count value of the rows and/or the second function argument as a count value of the columns in the dot matrix. Figuratively speaking, the position of the base symbol, whose rough position is known, is shifted to the reference point by whole steps or partial steps in the grid dimension of the dot matrix.

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.As already discussed, the reference point is particularly preferably designed as an intersection point of the optical axis of the camera with the image sensor. The reference point is thus defined as a constructive position in the coordinate system of the camera and/or the camera image. However, it is not absolutely necessary for the reference point and/or the intersection point to be located exactly in the middle of the camera image and/or on the camera's image sensor. Rather, the position of the reference point can be defined via calibration.

Bei einer möglichen Ausgestaltung der Erfindung ist die Achsenschnittpunktfunktion als eine Geradenfunktion zur Beschreibung der Geraden ausgebildet, insbesondere wie diese zuvor beschrieben wurde. In diesem Fall umfasst die Achsenschnittpunktfunktion eine vollständige mathematische Beschreibung der Gerade in Abhängigkeit der jeweiligen Funktionsargumente. In one possible embodiment of the invention, the axis intersection function is designed as a straight line function for describing the straight line, in particular as described above. In this case, the axis intersection function comprises a complete mathematical description of the straight line depending on the respective function arguments.

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.Alternatively, a straight line function is used, in particular as described above, which is formed by a combination of a straight line angle function of the straight line angle as the angle of intersection of the straight line with one of the axes of the coordinate system of the camera image depending on the function argument and the axis intersection function. The straight line is thus completely described by an axis intersection and a straight line angle. This division has the advantage that to determine the fine position only the axis intersection function needs to be determined and/or evaluated, without any information about the straight line angle. This design further increases the efficiency of the method.

Auf Basis der Funktionsargumente und einem bekannten Rastermaß des Punktrasters kann dann die Feinposition bestimmt werden. Bildlich gesprochen wird die Feinposition so bestimmt, dass zum Beispiel ausgehend von der Position des Basissymbols mit der bekannten Grobposition ein Bruchteil eines Rastermaßes in der ersten Hauptrichtung und ein Bruchteil des Rastermaßes in der zweiten Hauptrichtung gegangen werden muss, um zu dem Referenzpunkt in dem Koordinatensystem der Codeanordnung zu gelangen. Diese Darstellung ist besonders recheneffizient.
Es wird bevorzugt vorgeschlagen, dass das erste und/oder das zweite Funktionsargument der Geradenfunktion derart bestimmt wird, dass der erste bzw. die zweite Gerade den Referenzpunkt schneidet bzw. schneiden. Beispielsweise werden die erste und die zweite Gerade durch Variation des Funktionsarguments derart verschoben, dass diese den Referenzpunkt schneiden.
The fine position can then be determined based on the function arguments and a known grid size of the dot grid. Figuratively speaking, the fine position is determined in such a way that, for example, starting from the position of the base symbol with the known coarse position, a fraction of a grid size must be moved in the first main direction and a fraction of the grid size in the second main direction in order to get to the reference point in the coordinate system of the code arrangement. This representation is particularly computationally efficient.
It is preferably proposed that the first and/or the second function argument of the straight line function is determined in such a way that the first and the second straight line intersect the reference point. For example, the first and the second straight line are shifted by varying the function argument in such a way that they intersect the reference point.

Ein Drehwinkel Phiz der Kamera um die optische Achse wird als ein Freiheitsgrad der Kamera relativ zu der Codeanordnung auf Basis der ersten und/oder der zweiten Geraden abgeleitet, welche den Referenzpunkt schneiden. Die Ableitung ist möglich, da die Geradenfunktionen in dem Kamerabild definiert sind. Somit ist es möglich, den Drehwinkel Phiz als Geradenwinkel in dem Koordinatensystem der Kamera und/oder des Kamerabilds zu bestimmen. Theoretische Überlegungen haben ergeben, dass der Geradenwinkel in dem Koordinatensystem der Kamera und/oder des Kamerabilds dem Drehwinkel Phiz der Kamera um die Schwenkachse entspricht und zwar ohne dass eine Transformation der Koordinatensysteme von dem Koordinatensystem der Kamera und/oder des Kamerabilds zu dem Koordinatensystem der Codeanordnung durchgeführt werden muss. Somit ist es auf Basis von mindestens einer Geradenfunktion möglich, den Drehwinkel Phiz in einfacher Weise zu bestimmen. Mit der Weiterbildung wird somit ein Weg aufgezeigt, wie der Drehwinkel Phiz höchst 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.A rotation angle Phiz of the camera around the optical axis is derived as a degree of freedom of the camera relative to the code arrangement based on the first and/or the second straight line that intersect the reference point. The derivation is possible because the straight line functions are defined in the camera image. It is thus possible to determine the rotation angle Phiz as a straight line angle in the coordinate system of the camera and/or the camera image. Theoretical considerations have shown that the straight line angle in the coordinate system of the camera and/or the camera image corresponds to the rotation angle Phiz of the camera around the swivel axis, without having to transform the coordinate systems from the coordinate system of the camera and/or the camera image to the coordinate system of the code arrangement. It is thus possible to determine the rotation angle Phiz in a simple manner based on at least one straight line function. The further development thus shows a way in which the rotation angle Phiz can be determined with the greatest precision and without great computational effort. It should be emphasized that the determination is particularly easy if the intersection point of the optical axis of the camera through the camera image or through the image sensor is chosen as the reference point. With this special constellation, the angle of rotation Phiz can be derived particularly easily. The method thus allows a simple and at the same time highly accurate determination of the angle of rotation Phiz from the camera image, which is then available as a degree of freedom of the camera relative to the code arrangement.

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.In a preferred embodiment of the invention, the basic symbol matrix is determined from the camera image, wherein the position of the basic symbols in the camera image is entered in the basic symbol matrix. Thus, a location in the base symbol matrix refers to the position of the base symbol in the point grid, in particular in a coordinate system of the image sensor and/or in a coordinate system of the camera image. The first and/or the second straight line function is preferably determined on the basis of the base symbol matrix.

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.Particularly preferably, a straight line function is used which is formed by a combination of a straight line angle function of the straight line angle as the angle of intersection of the straight line with one of the axes of the coordinate system of the camera image depending on the function argument and an axis intersection function. The axis intersection function defines an axis intersection along an axis of the coordinate system of the camera image depending on the first function argument, the axis running through the reference point. By shifting the straight line by changing the first function argument in the coordinate system of the code arrangement, the straight line is shifted - distorted in perspective - in the coordinate system of the camera and/or the camera image in such a way that the axis intersection moves along the axis. One straight line function or combination of straight line angle function and axis intersection function is assigned to the first main direction and the other straight line function or combination of straight line angle function is assigned to the second main direction. The advantage of the division is that the function argument can be determined via the axis intersection function and subsequently the angle of rotation Phiz can be read out from the straight line angle function based on the determined function argument.

Bei einer bevorzugten Weiterbildung der Erfindung wird aus der ersten Geradenfunktion ein erster Wert für den Drehwinkel Phiz und aus der zweiten Geradenfunktion ein zweiter Wert für den Drehwinkel Phiz bestimmt und nachfolgend der Drehwinkel Phiz als Mittelwert der beiden Werte bestimmt wird. Dadurch, dass der Drehwinkel Phiz aus beiden Geradenfunktionen unabhängig bestimmt werden kann, ergeben sich zwei unabhängige Werte, die dann zur Ermittlung des Drehwinkels Phiz gemittelt werden können, um die Messgenauigkeit zu verbessern. Alternativ hierzu kann auch eine Plausibilitätskontrolle durchgeführt werden und einer der beiden Werte verworfen werden, wenn dieser nicht plausibel oder nicht valide ist.In a preferred development of the invention, a first value for the angle of rotation Phiz is determined from the first straight line function and a second value for the angle of rotation Phiz is determined from the second straight line function, and the angle of rotation Phiz is then determined as the average of the two values. Because the angle of rotation Phiz can be determined independently from both straight line functions, two independent values are obtained, which can then be averaged to determine the angle of rotation Phiz in order to improve the measurement accuracy. Alternatively, a plausibility check can be carried out and one of the two values can be rejected if it is not plausible or not valid.

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.A reference point or the reference point is arranged in the camera image. The reference point is formed as an intersection point of the optical axis with the image sensor and/or with the camera image. The reference point is thus specified by the camera in the coordinate system of the camera and/or in the camera image.

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 Schnittpunkfunktion und/oder die Achsenschnittpunktfunktion bestimmt werden.
From the camera image, the following values are determined as characteristic values in the reference point in a preferred further development:
  • A rotation angle Phiz - also called Z rotation angle - of the camera around the optical axis of the camera is determined. The rotation angle phiz can particularly preferably be determined using the straight line function and/or the intersection point function and/or the axis intersection point function.

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 Schnittpunktfunktion 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.Furthermore, at least one or the local grid dimension of the dot grid in the camera image is determined. The local grid dimension indicates the distance between two adjacent straight lines of the dot grid in the camera image. The local grid dimension can particularly preferably be determined via the straight line function and/or the intersection point function and/or the axis intersection point function. The dot grid in the code arrangement is regular and/or designed with a regular grid dimension. By recording the code arrangement with the camera, which leads to the camera image, the grid dimension is distorted so that the grid dimension changes across the camera image. The local grid dimension at the reference point is understood to be the value of the grid dimension at the reference point.

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 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.Furthermore, at least a first and a second local angular divergence of the dot grid in the camera image is determined. In principle, the straight lines in the dot grid in the code arrangement are arranged parallel to one another. However, the mapping of the code arrangement onto the camera image distorts the dot grid so that the straight lines each assume a difference angle that is not equal to 0 between two adjacent straight lines. The local angular divergence of the dot grid in the camera image is understood to be the difference angle between two adjacent straight lines of the dot grid at the reference point. This is a first local angular divergence for the first main direction and a second local angular divergence for the second main direction. The first and second local angular divergences can be determined in particular via the straight line function and/or the straight line angle function.

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.The above-mentioned parameters describe - from a physical point of view - three degrees of freedom of the camera relative to the code arrangement, namely a distance rz between the code arrangement and the Camera at the reference point and/or along the optical axis as well as two pitch angles phix and phy, which describe an intermediate angle of the optical axis and the plane of the code arrangement in the first and second main directions. The above-mentioned characteristic values are therefore sufficient to determine the above-mentioned three degrees of freedom.

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.A further consideration is that the parameters mentioned can be determined in a simple manner from the camera image. In addition to a "manual" determination of the parameters in the camera image, it is also possible to derive them using digital image processing methods. Knowing the parameters allows conclusions to be drawn about the three degrees of freedom mentioned.

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.By selecting the above-mentioned parameters, a new method for determining the above-mentioned degrees of freedom is proposed, which is characterized by the use of only a few parameters to determine the degrees of freedom. This makes it possible to design the method in a computationally efficient and highly accurate manner.

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.
In a preferred embodiment of the invention, the above-mentioned characteristic values are used in an imaging model which describes the optical imaging of the code arrangement onto the image sensor, taking into account the position and orientation of the camera relative to the code arrangement.
The model describes the physical and thus analytical relationship between the mentioned parameters as input values and the three mentioned degrees of freedom as output values. This relationship thus leads to the determination of the three degrees of freedom.

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.In one possible embodiment of the invention, three equations are determined for the three degrees of freedom, which form a system of equations. It should be emphasized that the three equations represent possible representations of the analytical relationships between the characteristic values and the three degrees of freedom; other mathematical or analytical representations are possible. However, the physical relationship can be represented particularly simply and compactly using the three equations and/or the system of equations.

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.In particular, the equation for determining the first pitch angle phix is a function of the first local angular divergence dalphac0, the distance rz between the code arrangement and the camera and the second pitch angle phiy.

Insbesondere wird der erste Nickwinkel über die folgende Gleichung bestimmt: tan  φ X = d α C 0 r Z c g r i d cos 2 φ Y

Figure DE102023203159A1_0001
mit cgrid: Rasterabstand des Punktrasters in [m] Die Gleichung zur Bestimmung des zweiten Nickwinkels phiy ist insbesondere eine Funktion von der zweiten lokalen Winkeldivergenz dalphac1, dem Abstand rz zwischen der Codeanordnung und der Kamera sowie dem ersten Nickwinkel phix.In particular, the first pitch angle is determined using the following equation: tan φ X = d α C 0 r Z c G r i d cos 2 φ Y
Figure DE102023203159A1_0001
with c grid : grid spacing of the point grid in [m] The equation for determining the second pitch angle phiy is in particular a function of the second local angular divergence dalphac1, the distance rz between the code arrangement and the camera and the first pitch angle phix.

Insbesondere wird der zweite Nickwinkel über die folgende Gleichung bestimmt: tan  φ Y = d α C 1 r Z c g r i d cos  φ X

Figure DE102023203159A1_0002
In particular, the second pitch angle is determined using the following equation: tan φ Y = d α C 1 r Z c G r i d cos φ X
Figure DE102023203159A1_0002

Die Gleichung für den Abstand rz zwischen der Codeanordnung und der Kamera ist insbesondere eine Funktion wie folgt: Alt. 1: rot_status =0 r Z 00 = b c g r i d cos  φ Y g C 0 ( cos  φ Z tan  φ X sin  φ Y sin  φ Z )

Figure DE102023203159A1_0003
r Z 10 = b c g r i d cos  φ X g C 1 cos  φ Z
Figure DE102023203159A1_0004
Alt. 2 rot_status =1 r Z 01 = b c g r i d cos  φ Y g C 0 ( sin  φ Z tan  φ X sin φ Y cos  φ Z )
Figure DE102023203159A1_0005
r Z 11 = b c g r i d cos  φ X g C 1 sin  φ Z
Figure DE102023203159A1_0006

Mit

  • b: Bildweite der Kamera im [m]
  • gC0, gC1: lokales Rastermaß des Punktrasters im Kamerabild, in [m]
In particular, the equation for the distance rz between the code array and the camera is a function as follows: Alt. 1: rot_status =0 r Z 00 = b c G r i d cos φ Y G C 0 ( cos φ Z tan φ X sin φ Y sin φ Z )
Figure DE102023203159A1_0003
r Z 10 = b c G r i d cos φ X G C 1 cos φ Z
Figure DE102023203159A1_0004
Alt. 2 rot_status =1 r Z 01 = b c G r i d cos φ Y G C 0 ( sin φ Z tan φ X sin φ Y cos φ Z )
Figure DE102023203159A1_0005
r Z 11 = b c G r i d cos φ X G C 1 sin φ Z
Figure DE102023203159A1_0006

With
  • b: Image distance of the camera in [m]
  • g C0 , g C1 : local grid size of the point grid in the camera image, 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.The columns refer to two independent variants and the rows refer to two alternatives depending on the definition and/or convention of the angle of rotation 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: r Z = r Z 0 k + r Z 1 k 2

Figure DE102023203159A1_0007
Alternatively or additionally, the distance between the code arrangement and the camera is determined as the average of the variants and/or functions using the following equation: r Z = r Z 0 k + r Z 1 k 2
Figure DE102023203159A1_0007

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.In principle, the system of equations can be solved analytically. In a preferred development of the invention, the system of equations, comprising the three equations, is solved iteratively. Initial values are initially specified and then the degrees of freedom are determined in an optimization routine in iterative steps.

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.In particular, the method can provide that a camera image is first recorded by the camera, then at least one degree of freedom of the camera is determined relative to the code arrangement, and then, for example, an actuator of the automation arrangement is controlled. For example, the at least one degree of freedom can be output on an optical output device, such as a display. The at least one degree of freedom can be used to control and/or regulate the position of the actuator of the automation arrangement by using it as an ACTUAL value. A robot with the sensor unit of the automation arrangement can, for example, determine its absolute position relative to the code arrangement and output this as ACTUAL information or move to a predefinable further position, with the robot continuing to orient itself on the code arrangement with regard to its ACTUAL position.

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.A further subject matter of the invention relates to a control unit and/or an automation arrangement with the control unit, wherein the latter is designed to carry out the method as described above. Optionally, the control unit comprises the camera and/or is connected to it for data purposes.

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.A further subject matter of the invention relates to a computer program which is designed to carry out the method described above when the computer program is executed on a digital data processing device and/or on the control unit.

Ein weiterer Gegenstand der Erfindung betrifft ein maschinenlesbares Speichermedium mit dem Computerprogramm.Another object of the invention relates to a machine-readable storage medium with the computer program.

Weitere Merkmale, Vorteile und Wirkungen der Erfindung ergeben sich aus der nachfolgenden Beschreibung bevorzugter Ausführungsbeispiele sowie der beigefügten Figuren. Diese zeigen:

  • 1 ein Flussdiagramm des Gesamtverfahrens mit einem Ausführungsbeispiel des erfindungsgemäßen Verfahrens;
  • 2 eine schematische Darstellung des optischen Modells in 3D;
  • 3 eine schematische Darstellung des optischen Modells in 2D;
  • 4 eine schematische Darstellung des optischen Modells in 2D;
  • 5, 6, 7 eine schematische Veranschaulichung der Koordinatensysteme;
  • 8 eine schematische Veranschaulichung des Koordinatensystems für das Abbildungsmodell
  • 9 das Abbildungsmodell in der 8 mit verkippter Codeebene;
  • 10 eine Veranschaulichung der Codeanordnung;
  • 11 eine weitere Veranschaulichung der Codeanordnung;
  • 12 ein Punktraster einer Codeanordnung mit zwei beispielhaft eingezeichneten Lesefeldern;
  • 13 verschiedene Winkellagen des Lesefelds;
  • 14 ein Beispiel für ein Lesefeld;
  • 15 einen beispielhaften Aufbau einer Parzelle in der Codeanordnung;
  • 16 weitere beispielhafte Aufbauten einer Parzelle in der Codeanordnung;
  • 17 Flussdiagramm einer Validitätsprüfung;
  • 18 Details der Validitätsprüfung;
  • 19 beispielhaft ein Kamerabild mit einer identifizierten Startbasis und dem Lesefeld;
  • 20 ein Beispiel für eine Basissymbol-Matrix mit eingetragenem Datum der Fläche;
  • 21 ein Flussdiagramm zur Bestimmung der Startbasis;
  • 22 mehrere vordefinierte Startpositionen im Bildfeld der Kamera;
  • 23 Veranschaulichung des Verfahrens zur Bestimmung der Startbasis;
  • 24 Veranschaulichung des Verfahrens zur Bestimmung der Startbasis;
  • 25 Flussdiagramm der Funktion Center_Pos;
  • 26 Veranschaulichung der Funktion Center_Pos;
  • 27a,b Veranschaulichung der Funktion Nearest_dot;
  • 28 Flussdiagramm vom Ablauf zur Erfassung aller Dots/Basissymbole im Lesefeld;
  • 29 a-d Veranschaulichung des Ablaufs zur Erfassung aller Dots/Basissymbole im Lesefeld;
  • 30 Veranschaulichung des Erfassens von Basissymbolen in einem verzerrten Raster;
  • 31 Veranschaulichung der Rektifizierung;
  • 32 Flussdiagramm zur Klassifizierung der Basissymbole;
  • 33 Flussdiagramm zur Bestimmung der Grobposition;
  • 34a,b Basissymbol-Matrix mit eingetragenem Datum und mit Lesespuren;
  • 35 Veranschaulichung der Dekodierung der Grobposition;
  • 36 Veranschaulichung der Ausgleichsgeraden für die Geradenfunktion;
  • 37 Veranschaulichung des Geradenwinkels;
  • 38a-c Veranschaulichung der Ausgleichsgeraden sowie der Geradenfunktion;
  • 39 Veranschaulichung der Bestimmung der Feinposition und des Drehwinkels phiz (Z-Drehwinkel);
  • 40 Flussdiagramm zur Bestimmung des Kamerabstands und der Nickwinkel.
Further features, advantages and effects of the invention emerge from the following description of preferred embodiments and the attached figures. These show:
  • 1 a flow chart of the overall method with an embodiment of the method according to the invention;
  • 2 a schematic representation of the optical model in 3D;
  • 3 a schematic representation of the optical model in 2D;
  • 4 a schematic representation of the optical model in 2D;
  • 5 , 6 , 7 a schematic illustration of the coordinate systems;
  • 8 a schematic illustration of the coordinate system for the imaging model
  • 9 the mapping model in the 8 with tilted code level;
  • 10 an illustration of the code arrangement;
  • 11 a further illustration of the code arrangement;
  • 12 a dot matrix of a code arrangement with two exemplary reading fields drawn in;
  • 13 different angular positions of the reading field;
  • 14 an example of a reading field;
  • 15 an example structure of a plot in the code arrangement;
  • 16 further exemplary structures of a plot in the code arrangement;
  • 17 Flowchart of a validity test;
  • 18 Details of the validity check;
  • 19 example, a camera image with an identified starting base and the reading field;
  • 20 an example of a base symbol matrix with the area date entered;
  • 21 a flow chart for determining the starting base;
  • 22 several predefined starting positions in the camera's field of view;
  • 23 Illustration of the procedure for determining the starting base;
  • 24 Illustration of the procedure for determining the starting base;
  • 25 Flowchart of the function Center_Pos;
  • 26 Illustration of the function Center_Pos;
  • 27a ,b Illustration of the Nearest_dot function;
  • 28 Flowchart of the process for capturing all dots/basic symbols in the reading field;
  • 29 a -d Illustration of the process for detecting all dots/basic symbols in the reading field;
  • 30 Illustration of the detection of basic symbols in a distorted grid;
  • 31 Illustration of rectification;
  • 32 Flowchart for classifying basic symbols;
  • 33 Flowchart for determining the coarse position;
  • 34a ,b Basic symbol matrix with entered date and with reading traces;
  • 35 Illustration of coarse position decoding;
  • 36 Illustration of the best-fit line for the straight line function;
  • 37 Illustration of the straight line angle;
  • 38a -c Illustration of the best-fit line and the straight line function;
  • 39 Illustration of the determination of the fine position and the rotation angle phiz (Z rotation angle);
  • 40 Flowchart for determining camera distance and pitch angles.

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.A method is disclosed as an implementation of an algorithm for precisely determining the absolute 6D position of a camera 1 with respect to a planar code arrangement 2 recorded by the camera 1, wherein the algorithm receives a camera image 3 as input information.

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.Code arrangement 2 serves simultaneously as an analog and digital scale in two dimensions, X and Y. It consists of symbols arranged in a regular grid. Preferably, it is a binary code with two symbols arranged in a square grid: a small round dot for a digital 0 and a large dot for a 1. The dot type contains the digital information, while the dot center contains the analog information.

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 CodeZelle (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.The camera 1 captures a section of the code arrangement 2 and transmits the camera image 3 to a computer or any data processing device. The algorithm selects a reading field in the camera image 3 with the minimum size of a code cell (e.g. 7 x 7 dots) and uses this to calculate the position of the camera 1 in relation to the code arrangement 2 in six dimensions. To do this, the method uses both the digitally coded position information and the precisely measured center positions of all dots in the measuring field or reading field. These form a grid that is distorted by the camera perspective and the distortion of the lens.

Das Verfahren zur Positionserfassung umfasst folgende Schritte (siehe 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 φZ-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.
The position detection procedure includes the following steps (see 1 ):
  • Step 100: Reading camera image 3 into the computer’s memory.
  • Step 200: optional: First check of image quality using parameters such as brightness and contrast.
  • Step 300: XY coarse position evaluation and optional z coarse angle evaluation
  • Step 310: Find a launch pad of 3x3 dots in the reading field
  • Step 320: Detection of dots in a reading field in the camera image
  • Step 330: Precise measurement of the center position and area of the dots
  • Step 340: Optional: Mathematical correction of the lens distortion by rectifying the dot positions. This converts the curved lines of the dot grid in camera image 3 into straight lines.
  • Step 350: Area-based classification of the dots, assignment to the binary digits 0 and 1
  • Step 360: Reading the digital code in the X and Y axis directions, determining the absolute coarse position in the X, Y and optionally φ Z directions as a z-coarse angle evaluation.
  • Step 400: Distortion evaluation
  • Step 410: Fitting a best fit line (beam) to each row and column of the dot grid of the reading field
  • Step 420: Adaptation of a compensation function to a first bunch of straight lines by interpolating all straight lines in the rows and a second compensation function by interpolating all straight lines in the columns of the code grid. Each bunch of straight lines is completely described by 6 interpolation parameters (bunch data). Using the interpolation function, interpolated straight lines can also be calculated that lie between two measured straight lines.

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
Calculation of the 6D camera position from parameters obtained from the measured dot positions that describe the distorted grid in the camera image. The equations for calculating the position result from an inverse optical imaging model of camera 1 and the laws of geometric optics:
  • Step 500: XY fine position evaluation:
    • The position in the X and Y directions is calculated from the XY coarse position and the position of the grid in relation to the position of the optical axis (image center).
  • Step 600: Z-angle evaluation from the angle of the (interpolated) straight line in the image center
  • Step 700: Z position and XY angle evaluation
  • Step 710: Derivation of interpolated parameters from the bunch data that describe the perspective-distorted grid in the image center:
    • - Grid dimension of the straight lines of both straight line bundles
    • - Angular divergence of the lines of both bundles of lines

Die Kamera-Position in Z-Richtung wird hauptsächlich aus dem Rastermaß der Geraden im Bildmittelpunkt bestimmtThe camera position in Z-direction is mainly determined by the grid size of the straight line in the image center

Die Kamera-Winkel φX und φY werden hauptsächlich aus der Winkeldivergenz der beiden Geradenbündel im Bildmittelpunkt ermittelt.The camera angles φ X and φ Y are mainly determined from the angular divergence of the two straight line bundles in the image center.

Ein iterativer Algorithmus löst numerisch das Gleichungssystem, mit dem die Größen Z, φX und φY verknüpft sind.An iterative algorithm numerically solves the system of equations relating the quantities Z, φ X and φ Y.

Schritt 800: Ausgabe der 6D-Positionsinformation und der optionalen Validitätsinformation, die sich aus den Ergebnissen zahlreicher Diagnosefunktionen im Ablauf ergibt.Step 800: Output of the 6D position information and the optional validity information resulting from the results of numerous diagnostic functions in the process.

Mit minimalem Rechenaufwand konzentriert der Algorithmus die Kamerabilddaten auf wenige zur Positionsbestimmung relevante Daten, steigert dabei die Genauigkeit durch Interpolation und verhält sich robust bei Kamerabildstörungen. Von besonderer Bedeutung sind die folgenden Ablaufpositionen (Zahlenwerte als Beispiel): Ablaufposition I: Eingangsdaten Kamerabild (z.B. 200x200 Pixel) 40.000 Werte Ablaufposition II (Schritt 300): wandelt die Kamerabilddaten in Dot-Daten 2.250 Werte Ablaufposition III (Schritt 400/500): wandelt die Dot-Daten in beam-Daten 90 Werte Ablaufposition IV (Schritt 400/500): wandelt die beam-Daten in bunch-Daten 12 Werte Ablaufposition V (Schritt 500/600/700): wandelt die bunch-Daten in eine 6D Position 6 Werte With minimal computing effort, the algorithm concentrates the camera image data on a few pieces of data relevant to position determination, increases accuracy through interpolation and behaves robustly in the event of camera image disturbances. The following sequence positions are of particular importance (numerical values as an example): Expiration position I: Input data camera image (e.g. 200x200 pixels) 40,000 values Process position II (step 300): converts the camera image data into dot data 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

Die Ablaufpositionen II - V besitzen folgende besondere Merkmale. Ablaufposition II:

  1. 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
  2. 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)
  3. 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)
  4. d) Rektifizierung der Dot-Positionen anstatt des gesamten Kamerabildes. → Vorteil: schnell (Rektifizierung von nur 225 Positionen statt aller 40.000 Pixel im Kamerabild)
  5. e) Lokale Normierung der Dot-Fläche auf die Fläche der Dot-Rasterzelle. Zur Klassifizierung der Dots wird die normierte Dot-Fläche verwendet. → Vorteil: robustes Lesen des digitalen Codes (Klassifikation der Dots ist tolerant gegen perspektivische Verzerrung und gegen eine Änderung des Abstandes zwischen Kamera und Dot)
  6. 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.
The drain positions II - V have the following special features. Drain position II:
  1. a) Fast location 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 that have already been measured. → Advantages: Fast location of the dots, no time-consuming search in the pixel grid. Robust against disturbances in the camera image: Dots are classified as "not valid" if they are not found at the expected position. Invalid dots are not processed further, but generally do not hinder the further process
  2. b) Stack-based algorithm for fast and robust search of dots in the code grid of code arrangement 2. → Advantage: fault-tolerant, as the search process does not stop at faulty dots, but encloses them on all sides. Precise (high yield of found dots per reading field) and robust (through prioritized detection of dots with many valid neighbors)
  3. c) Function Center_Pos: fast method for subpixel-accurate position and area determination of dots in the camera image → Advantage: fast (few pixel accesses), accurate (through subpixeling), robust (use of dynamic contrast thresholds instead of gray value thresholds)
  4. d) Rectification of the dot positions instead of the entire camera image. → Advantage: fast (rectification of only 225 positions instead of all 40,000 pixels in the camera image)
  5. e) Local normalization of the dot area to the area of the dot raster cell. The normalized dot area is used to classify the dots. → Advantage: robust reading of the digital code (classification of the dots is tolerant of perspective distortion and a change in the distance between the camera and the dot)
  6. f) Redundant reading of the digital codes, error detection and partial error correction → Advantage: Low error rate in case of disturbances in the camera image, correct reading despite invalid 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).
Expiry position III and IV:
  • g) Compressed and precise representation of the dot positions extracted from camera image 3 as bunch parameters (only 12 values) → Advantage: fast (due to small amount of data), precise (through averaging and best-fit interpolation in two steps: dots to best-fit lines and best-fit lines to bundles of lines), fault-tolerant and robust (through exclusion of invalid dots from further processing).

Ablaufposition V:

  • h) Mathematisches Verfahren zur Transformation der 12 bunch-Parameter in eine 6D Position.
Drain position V:
  • h) Mathematical procedure for transforming the 12 bunch parameters into a 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.
The benefits include 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 calculation steps on a computer. With an embedded computer, typical measurement rates of around 100Hz - 10000Hz are achieved, so that the sensor can also be used in a closed position control loop, for example.

Das Verfahren erzielt eine hohe Lesegeschwindigkeit auch durch Minimierung der Anzahl von Zugriffen auf Kamerabildpunkte (Pixel). Es werden keine zeitintensiven flächenhaften Kamerabildoperationen durchgeführt. Außerdem wird die Datenmenge mit jedem Verarbeitungsschritt deutlich reduziert.

  • • Hohe Lesesicherheit durch redundantes Lesen des Punktecodes. Die Positionserfassung ist auch bei Störungen im Bildfeld der Kamera möglich, wie zum Beispiel bei lokalen Verdeckungen, nicht validen Dots oder unter ungünstigen Beleuchtungsverhältnissen. Durch eine Validitätsprüfung der Verarbeitungsschritte werden fehlerhafte Zustände erkannt und die Ausgabe unzuverlässiger Positionswerte verhindert.
  • • Hohe Genauigkeit der Positionsmessung in allen Freiheitsgraden. Dies wird durch verschiedene Maßnahmen erreicht wie
    • ◯ Mittelung über zahlreiche Dots pro Kamerabild 3, beispielsweise mehr als 100 oder 1000
    • ◯ Klassifizierung von Dots nach Validität, Ausschluss von nicht validen Dots von der weiteren Verarbeitung
    • ◯ Subpixel-genaue Positionsbestimmung der Kanten der Dots
    • ◯ Verwendung von Kontrastschwellen statt Grauwertschwellen, dadurch hohe Robustheit gegenüber lokalen Änderungen der Bildhelligkeit
    • ◯ Runde Dots, daher kaum Mittelpunktsfehler bei Kippung oder Rotation der Codeebene
  • • Unbegrenzter Messbereich in φZ
  • • 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 φX, φY 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.
The method also achieves a high reading speed by minimizing the number of accesses to camera image points (pixels). No time-consuming area-based camera image operations are carried out. In addition, the amount of data is significantly reduced with each processing step.
  • • High reading reliability through redundant reading of the dot code. Position detection is possible even when there are disturbances in the camera's image field, such as local obscurations, 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.
  • • High accuracy of position measurement in all degrees of freedom. This is achieved by various measures such as
    • ◯ Averaging over numerous dots per camera image 3, for example more than 100 or 1000
    • ◯ Classification of dots according to validity, exclusion of invalid dots from further processing
    • ◯ Subpixel-accurate positioning of the edges of the dots
    • ◯ Use of contrast thresholds instead of gray value thresholds, thus high robustness against local changes in image brightness
    • ◯ Round dots, therefore hardly any center errors when tilting or rotating the code plane
  • • Unlimited measuring range in φ Z
  • • Almost unlimited measuring range in X and Y. For example, when using a code with a code cell of 9 x 9 dots and a dot grid of 2.5mm, a measuring range of 550,000km x 550,000km is achieved.
  • • Large angle measuring range φ X , φ Y of approximately +/- 50°, with high accuracy. Extension to 360° through spatially distributed code arrangements on the object.
  • • An inverse imaging model based on geometric optics is used to calculate the position of the camera from the camera image data.
  • • The process does not require active lighting, so that camera images taken under ambient light, for example with a smartphone, can be processed.
  • • Minimum error rate. The procedure determines the validity of a position measurement value by checking each processing step for errors and plausibility using various diagnostic methods. The validity is output together with the position measurement value. The aim is to only output valid measurement values for further processing.

Weitere Vorteile sind:

  • • Ein einzelner Messaufnehmer, insbesondere ausgebildet als Kamera 1, erfasst die Position eines oder mehrerer Objekte in jeweils sechs Dimensionen. Gegenüber einem System mit vielen verteilten Sensoren zur Erfassung einzelner Freiheitsgrade reduziert sich der Installationsaufwand und die Komplexität des Gesamtsystems, was zu Kostenvorteilen führt.
  • • Einsparung von Systemkomponenten durch Erfassung aller 6 Freiheitsgrade. Beispielsweise benötigt ein Drehwinkel-Encoder meist ein Drehlager für die Messachse, damit seitliche Positionsabweichungen der Codescheibe nicht zu Messfehlern führen. Mit dem vorgeschlagenen Verfahren kann die mechanische Führung entfallen, da die volle 6D Lageinformation der Codescheibe als Codeanordnung simultan erfasst wird. Eine seitliche Positionsabweichung des Sensors führt nicht zu einem Fehler in der Winkelmessung. Dadurch werden die Kosten und die mechanische Komplexität des Positionsmesssystems reduziert.
  • • Es kann ein Positioniersystem realisiert werden, bei dem die Aufteilung der Positionssensorik auf mehrere Achsen baulich nicht möglich ist. Beispielsweise kann ein levitierender planarer Roboter realisiert werden, der in sechs Dimensionen positionierbar ist, ohne dass eine bauliche Verbindung zwischen dem Roboter und dem darunter liegenden Stator besteht.
  • • Durch die simultane Erfassung mehrerer Dimensionen werden Messfehler reduziert, die bei verteilten Sensorsystemen durch unterschiedliche Messzeitpunkte entstehen können.
  • • Die Kosten des Sensors sind weitgehend unabhängig von der Anzahl der erfassten Freiheitsgrade. Daher kann er auch vorteilhaft in Anwendungen eingesetzt werden, die weniger als 6 Freiheitsgrade benötigen. Die zusätzlich bereitgestellte Information ermöglicht Zusatzfunktionen, beispielsweise die Eigendiagnose von Systemen oder die permanente Beobachtung des Betriebszustandes („Condition Monitoring“).
  • • Das Verfahren ist skalierbar, z.B. durch Variation des Rastermaßes der Codeanordnung und Anpassung der abbildenden Optik an die Codeanordnung. Die Auflösung kann über viele Größenordnungen variieren, beispielsweise vom Nanometer-Bereich (Anwendungsbeispiel: Nanometer-Positioniersystem) bis in den m-Bereich (Anwendungsbeispiel: Automatisiertes Landen eines Flugzeugs oder einer Drohne auf einem Flugplatz, wobei das Flugfeld mit einer Codeanordnung markiert ist).
  • • Das Verhältnis von Auflösung zu Messbereich kann viele Größenordnungen umfassen. Wird beispielsweise ein Wegmesssystem mit 10nm Auflösung mit einer 10m langen Codeanordnung kombiniert, beträgt das Verhältnis von Auflösung zu Messbereich 1:109.
  • • Ein Sensor mit dem Verfahren besitzt eine hohe Einsatzflexibilität, da er einfach installiert werden kann und durch Parametrierung für spezifische Anwendungen konfiguriert werden kann. Dies ist insbesondere vorteilhaft bei häufig wechselnden Einsatzbedingungen.
  • • Das Verfahren kann Zusatzinformationen lesen, die im Positionscode enthalten sind. Beispielsweise können zusätzlich zur Position Objekt-Identifikationsdaten gelesen werden.
  • • 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.
Further advantages are:
  • • A single 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 the complexity of the overall system are reduced, which leads to cost advantages.
  • • Saving system components by recording all 6 degrees of freedom. For example, 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. With the proposed method, the mechanical guide can be omitted because the full 6D position information of the code disk is recorded simultaneously as a code arrangement. A lateral position deviation of the sensor does not lead to an error in the angle measurement. This reduces the costs and mechanical complexity of the position measuring system.
  • • A positioning system can be implemented in which the division of the position sensors into several axes is structurally impossible. For example, a levitating planar robot can be implemented that can be positioned in six dimensions without a structural connection between the robot and the stator underneath.
  • • The simultaneous recording of several dimensions reduces measurement errors that can arise in distributed sensor systems due to different measurement times.
  • • The costs of the sensor are largely independent of the number of degrees of freedom recorded. It can therefore also be used advantageously in applications that require fewer than 6 degrees of freedom. The additional information provided enables additional functions, such as self-diagnosis of systems or permanent observation of the operating status (“condition monitoring”).
  • • The method is scalable, e.g. by varying the grid size of the code arrangement and adapting the imaging optics to the code arrangement. The resolution can vary over many orders of magnitude, for example from the nanometer range (application example: nanometer positioning system) to the m range (application example: automated landing of an aircraft or a drone at an airfield, where the airfield is marked with a code arrangement).
  • • The ratio of resolution to measuring range can cover many orders of magnitude. For example, if a position measuring system with 10 nm resolution is combined with a 10 m long code arrangement, the ratio of resolution to measuring range is 1:10 9 .
  • • A sensor using this method has a high degree of flexibility in use, as it can be easily installed and configured for specific applications through parameterization. This is particularly advantageous when operating conditions change frequently.
  • • The method can read additional information contained in the position code. For example, object identification data can be read in addition to the position.
  • • With cyclic image acquisition, the method provides an independent position estimate for each individual image; it does not rely on prior information from previous images. Therefore, the measurement rate corresponds to the frame rate.

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.
The method enables the localization of at least one camera 1 in relation to at least one object 8 in six degrees of freedom, with at least one code arrangement being applied to the surface of each object 8. A camera 1 captures the code arrangements 2 on the objects 8 and displays them completely or in sections in the camera image 3. Using the proposed method and other common mathematical/technical methods, the 6D position of the objects 8 is calculated from the camera image 3.
The code arrangement 2 forms a flat, digitally coded scale. It contains several different symbols, preferably circular symbols (dots), which are arranged in a regular, preferably square grid and enable position determination in 6 degrees of freedom.

Die Kamera 1 umfasst mindestens

  • • ein bildgebendes Sensorelement, üblicherweise einen Kamera-Chip, insbesondere den Bildaufnehmer 12.
  • • Ein Abbildungssystem, welches den Maßstab scharf und kontrastreich auf das Sensorelement abbildet, insbesondere das Objektiv 9. Das Abbildungssystem umfasst insbesondere ein Weitwinkelobjektiv als Objektiv 9, da zur Bestimmung aller sechs Freiheitsgrade eine zentralperspektivische Abbildung erforderlich ist.
  • • Eine Schnittstelle zur Ausgabe der Kamerabilddaten und/oder des Kamerabilds 3. Optional umfasst das Kamerasystem der Kamera 1
  • • ein Beleuchtungssystem, insbesondere zur Beleuchtung der Codeanordnungen. Dadurch wird die Kamera 1 unabhängiger von den Beleuchtungsbedingungen in der Umgebung. Im Blitzbetrieb werden kurze Messzeiten ermöglicht, so dass auch schnell bewegte Objekte erfasst werden können. Als Leuchtmittel werden beispielsweise Leuchtdioden eingesetzt.
  • • Mittel zur Abschirmung von Fremdlicht, z.B. eine Blende oder optische Filter. Es kann ein spektrales Filter im Strahlengang des Abbildungssystems vorhanden sein, damit nur das Licht aus einem begrenzten Wellenlängenbereich das Sensorelement erreicht. Idealerweise werden einfarbige Leuchtmittel mit gleicher Wellenlängencharakteristik wie das Farbfilter eingesetzt.
Camera 1 comprises at least
  • • an imaging sensor element, usually a camera chip, in particular the image sensor 12.
  • • An imaging system which images the scale sharply and with high contrast onto the sensor element, in particular the lens 9. The imaging system comprises in particular a wide-angle lens as lens 9, since a central perspective image is required to determine all six degrees of freedom.
  • • An interface for outputting the camera image data and/or the camera image 3. Optionally, the camera system of camera 1 includes
  • • a lighting system, in particular for illuminating the code arrangements. This makes the camera 1 less dependent on the lighting conditions in the environment. In flash mode, short measurement times are possible so that even fast-moving objects can be detected. Light-emitting diodes, for example, are used as lighting sources.
  • • Means for shielding from extraneous light, e.g. a diaphragm or optical filter. A spectral filter can be present in the beam path of the imaging system so that only light from a limited wavelength range reaches the sensor element. Ideally, single-color lamps with the same wavelength characteristics as the color filter are used.

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 addition, a computer system is required as a digital data processing device for information processing, e.g. designed as a control unit. It receives the digitized camera image data of camera image 3 as input information, and at the output it provides the determined 6D positions of the identified objects and optionally an assessment of the validity of the position measurement values.

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).The method is implemented as an algorithm in the computer system. The algorithm is executed either on request from outside or cyclically, for example in a fixed time frame to record the movement paths of objects (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.The computer system can be designed as an embedded system, parallel computer, GPU, FPGA, ASIC or cloud system, for example. A smartphone can also be used as the overall system for position detection, whereby the integrated camera 1, possibly with active lighting, is used to capture images. The method can be implemented in a smartphone application and run embedded in the smartphone or in the cloud.

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 (rX, rY, rZ) und Winkelvektor (φX, φY, φZ) aus. 2 shows a typical arrangement for determining the absolute position in 6 degrees of freedom. The camera 1 records the camera image 3 of a planar code arrangement 2. From the perspective-distorted camera image 3, the method according to the invention calculates the 6D position of the camera in the coordinate system of the code arrangement 2 and outputs it as a position vector (r X , r Y , r Z ) and angle vector (φ X , φ Y , φ Z ).

Die Koordinaten rX und rY 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.The coordinates r X and r Y are indicated in the rectangular coordinate system (X C , Y C ) of the code arrangement 2. They indicate the intersection point 4 of the optical axis 5 of the camera 1 with the plane in which the code arrangement lies. Since the optical axis 5 is perpendicular to the plane of the image sensor 12, it can be designated by a point 7 in the camera image 3.

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.The method determines the intersection point (X, Y) even if the code arrangement 2 is only shown at the edge of the image field and not at the location of the optical axis 5.

Der Abstand rZ 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 rZ mit (XC, YC) im Allgemeinen ein nicht-orthogonales Koordinatensystem. Mit Hilfe des Winkelvektors kann der Positionsvektor (rX, rY, rZ) in ein rechtwinkliges Koordinatensystem transformiert werden.The distance r Z lies on the optical axis 5 and extends from the intersection point 4 to the optical center of the lens of the camera 1. Since the optical axis 5 is not always perpendicular to the code arrangement 2, r Z generally forms a non-orthogonal coordinate system with (X C , Y C ). Using the angle vector, the position vector (r X , r Y , r Z ) can be transformed into a rectangular coordinate system.

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.The method can be used to locate several simultaneously recorded objects 8 in the camera's field of view, even if they partially overlap. In order to be able to read the position, at least one area the size of a code parcel (e.g. 7x7 dots) must be recognizable in the camera image 3.

3 und 4 zeigen schematisch den Strahlengang der Kamera 1. In der 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. 3 and 4 show schematically the beam path of camera 1. In the 3 the camera 1 with a lens 9 and an image sensor 12 can be seen, the viewing direction is directed downwards to the code level of the code arrangement 2. The optical axis 5 is shown as a dash-dotted vertical line, the focal points of the lens 9 as points 10,11.

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.A vector arrow G on the code plane of the code arrangement 2 is imaged as a vector arrow B on the image sensor 12 according to the laws of ray optics. A line of sight 14 intersects the optical axis 5 at a point which is referred to here as the optical center 13 of the objective 9.

In 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

Figure DE102023203159A1_0008
mit:

B
Bildgröße
b
Bildweite
G
Gegenstandsgröße
g
Gegenstandsweite
f
Brennweite
In 4 the complete beam path is shown, the objective 9 is simplified to a lens. Ray optics with the ray theorem and the lens equation forms the basis for the mathematical method for determining position. The following applies: B / G = b / G and 1 / f = 1 / b + 1 / G
Figure DE102023203159A1_0008
with:
B
image size
b
focal length
G
object size
G
object range
f
focal length

5, 6, 7 veranschaulichen die beteiligten Koordinatensysteme: 5 , 6 , 7 illustrate the coordinate systems involved:

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 pgrid auf dem Kamerachip in der Einheit [m/Pixel] multipliziert. Der Pixelabstand pgrid ist eine Eigenschaft des Bildaufnehmers 12. Jeder Pixel liefert einen ganzzahligen Grauwert.The two-dimensional coordinate system 15 of the image sensor 12 is spanned by the axes (X I, Y I ) of the camera chip. A position on the image sensor 12 is specified in image points [pixels], with the pixel rows and columns of the camera chip being numbered consecutively. In this example, an image sensor 12 with 200 x 200 pixels is assumed. The numbering results in an integer X and Y position value for each pixel. Subpixeling, a method for interpolating gray values between neighboring pixels, can also result in real numbers appearing as the camera position during the evaluation. To convert the unit of position from [pixels] to [m], the position is multiplied by the distance between neighboring pixels p grid on the camera chip in the unit [m/pixel]. The pixel spacing p grid is a property of the image sensor 12. Each pixel provides an integer gray value.

Das Koordinatensystem 16 der Codeanordnung 2 (XC, YC) wird durch die Hauptachsen der Codeanordnung 2 aufgespannt, die dem quadratischen Raster der Dots entsprechen. Es wird um eine dritte Achse ZC zu einem dreidimensionalen Koordinatensystem erweitert, die senkrecht auf der Codeanordnung 2 steht, wobei die Codeanordnung 2 bei ZC=0 angeordnet ist. Die Einheit ist entweder [Dots], also die fortlaufende Nummerierung der Dot - Reihen und -Spalten, oder [m] - nach Multiplikation mit dem Dot-Rasterabstand cgrid in [m/Dot]. Die Codeanordnung 2 codiert eindeutig die lokale Position im Koordinatensystem (Xc, YC).The coordinate system 16 of the code arrangement 2 (X C , Y C ) is spanned by the main axes of the code arrangement 2, which correspond to the square grid of the dots. It is extended by a third axis Z C to form a three-dimensional coordinate system, which is perpendicular to the code arrangement 2, with the code arrangement 2 arranged at Z C = 0. The unit is either [dots], i.e. the consecutive numbering of the dot rows and columns, or [m] - after multiplication by the dot grid spacing c grid in [m/dot]. The code arrangement 2 uniquely encodes the local position in the coordinate system (X c , Y C ).

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.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 -Z.

Das Koordinatensystem für das Abbildungsmodell in 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.The coordinate system for the mapping model in 8 corresponds to the camera coordinate system 17 (X, Y, Z). Here, b is the image distance of the camera 1. The image plane is at the height (0, 0, 2b) and is parallel to the X/Y plane of the camera coordinate system 17. As a model, a further "virtual" image plane 18 can be constructed in the (X, Y) plane of the coordinate system 17, whereby the virtual image is mirrored point-symmetrically with respect to the real image on the image sensor 12 in relation to the image center.

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: (rX, rY, rZ) und
  • • in Rotation: (φX, φY, φZ).
The code plane of the code arrangement 2 is located at the height (0, 0, z 0 ) with (z 0 < 0). With the camera orientation (0°, 0°, 0°), the code plane is parallel to the X/Y plane of the camera coordinate system 17 and the axes (X C , Y C ) of the coordinate system 16 of the code arrangement 2 point in the same direction as the axes (X I, Y I ) of the coordinate system 15 of the image sensor 12.
The procedure determines the 6D position of the camera
  • • in translation: (r X , r Y , r Z ) and
  • • in rotation: (φ X , φ Y , φ Z ).

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.The center of rotation to which the tilt and rotation angles phix and phy of camera 1 refer is at the point (0, 0, z 0 ). The roll angle phiz is measured around the optical axis 5.

9 zeigt das Abbildungsmodell mit verkippter Codeebene der Codeanordnung 2. Der Wert rZ ist der Abstand zwischen dem Drehzentrum (0, 0, z0) und dem optischen Zentrum (0, 0, b) des Objektivs, so dass gilt: rZ = b - z0. 9 shows the imaging model with tilted code plane of code arrangement 2. The value r Z is the distance between the center of rotation (0, 0, z 0 ) and the optical center (0, 0, b) of the lens, so that: r Z = b - z 0 .

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: F = ( 0 0 b )
    Figure DE102023203159A1_0009
  • • Zweidimensionale Koordinaten von Dots oder Punkten in der Ebene der Codeanordnung in Koordinatensystem 16 der Codeanordnung 2 P i , j = P 0 + ( i j ) c g r i d = ( x 0 + i c g r i d y 0 + j c g r i d )
    Figure DE102023203159A1_0010
    mit P 0 = ( x 0 , y 0 )
    Figure DE102023203159A1_0011
    dem Flächenschwerpunkt eines ausgewählten Basissymbols und i, j ganzen Zahlen
  • • Räumliche Koordinaten von Dots oder Punkten in dem Kamerakoordinatensystem 17: P i , j = [ R _ ( x 0 + i c g r i d y 0 + j c g r i d 0 ) ] + ( 0 0 z 0 )
    Figure DE102023203159A1_0012
    mit der Rotationsmatrix für Vektoren im dreidimensionalen Raum: R _ = ( R 11 R 12 R 13 R 21 R 22 R 23 R 31 R 32 R 33 ) = ( cos  φ Y cos  φ Z sin  φ X sin  φ Y cos  φ Z + cos  φ X sin  φ Z sin  φ X sin  φ Z cos  φ X sin  φ Y cos  φ Z cos  φ Y sin  φ Z cos  φ X cos  φ Z sin  φ X sin  φ Y sin  φ Z cos  φ X sin  φ Y sin  φ Z + sin  φ X cos  φ Z sin  φ Y sin  φ X cos  φ Y cos  φ X cos  φ Y )
    Figure DE102023203159A1_0013
    Bildpunkt in der virtuellen Bildebene im Kamera-Koordinatensystem 17: B = ( B X B Y 0 )
    Figure DE102023203159A1_0014
  • • Sichtstrahl von F  zu  P i , j :
    Figure DE102023203159A1_0015
    G = F + λ ( P i , j F ) ; λ = 0..1
    Figure DE102023203159A1_0016
  • • Schnittpunkt des Sichtstrahls mit der virtuellen Bildebene 18: ( B X B Y 0 ) = ( 0 0 b ) + λ [ R _ ( x 0 + i c g r i d y 0 + i c g r i d 0 ) + ( 0 0 z 0 ) ( 0 0 b ) ]
    Figure DE102023203159A1_0017
    0 = b + λ ( R 31 ( x 0 + i c g r i d ) + R 32 ( y 0 + j c g r i d ) + z 0 b ) λ = b / ( R 31 ( x 0 + i c g r i d ) + R 32 ( y 0 + j c g r i d ) + z 0 b )
    Figure DE102023203159A1_0018
  • • Virtuelles Bild des Punkts oder Dots: ( B X B Y ) = b ( R 31 ( x 0 + i c g r i d ) + R 32 ( y 0 + j c g r i d ) + z 0 b ) ( R 11 ( x 0 + i c g r i d ) + R 12 ( y 0 + j c g r i d ) R 21 ( x 0 + i c g r i d ) + R 22 ( y 0 + j c g r i d ) )
    Figure DE102023203159A1_0019
  • • 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: ( B X B Y ) = b ( R 31 x 0 + R 32 y 0 + z 0 b ) ( R 11 x 0 + R 12 y 0 R 21 x 0 + R 22 y 0 )
    Figure DE102023203159A1_0020
Based on the ray theorem and geometric optics, the mapping of a point (x 0 , y 0 ) in the code plane to a point (B X , B Y ) in the image plane can be mathematically described as a mapping equation in the camera coordinate system 17:
  • Optical center 13 of the lens 9: F = ( 0 0 b )
    Figure DE102023203159A1_0009
  • • Two-dimensional coordinates of dots or points in the plane of the code arrangement in coordinate system 16 of code arrangement 2 P i , j = P 0 + ( i j ) c G r i d = ( x 0 + i c G r i d y 0 + j c G r i d )
    Figure DE102023203159A1_0010
    with P 0 = ( x 0 , y 0 )
    Figure DE102023203159A1_0011
    the centroid of a selected base symbol and i, j integers
  • • Spatial coordinates of dots or points in the camera coordinate system 17: P i , j = [ R _ ( x 0 + i c G r i d y 0 + j c G r i d 0 ) ] + ( 0 0 z 0 )
    Figure DE102023203159A1_0012
    with the rotation matrix for vectors in three-dimensional space: R _ = ( R 11 R 12 R 13 R 21 R 22 R 23 R 31 R 32 R 33 ) = ( cos φ Y cos φ Z sin φ X sin φ Y cos φ Z + cos φ X sin φ Z sin φ X sin φ Z cos φ X sin φ Y cos φ Z cos φ Y sin φ Z cos φ X cos φ Z sin φ X sin φ Y sin φ Z cos φ X sin φ Y sin φ Z + sin φ X cos φ Z sin φ Y sin φ X cos φ Y cos φ X cos φ Y )
    Figure DE102023203159A1_0013
    Image point in the virtual image plane in the camera coordinate system 17: B = ( B X B Y 0 )
    Figure DE102023203159A1_0014
  • • Visibility of F to P i , j :
    Figure DE102023203159A1_0015
    G = F + λ ( P i , j F ) ; λ = 0..1
    Figure DE102023203159A1_0016
  • • Intersection of the visual ray with the virtual image plane 18: ( B X B Y 0 ) = ( 0 0 b ) + λ [ R _ ( x 0 + i c G r i d y 0 + i c G r i d 0 ) + ( 0 0 z 0 ) ( 0 0 b ) ]
    Figure DE102023203159A1_0017
    0 = b + λ ( R 31 ( x 0 + i c G r i d ) + R 32 ( y 0 + j c G r i d ) + z 0 b ) λ = b / ( R 31 ( x 0 + i c G r i d ) + R 32 ( y 0 + j c G r i d ) + z 0 b )
    Figure DE102023203159A1_0018
  • • Virtual image of the point or dot: ( B X B Y ) = b ( R 31 ( x 0 + i c G r i d ) + R 32 ( y 0 + j c G r i d ) + z 0 b ) ( R 11 ( x 0 + i c G r i d ) + R 12 ( y 0 + j c G r i d ) R 21 ( x 0 + i c G r i d ) + R 22 ( y 0 + j c G r i d ) )
    Figure DE102023203159A1_0019
  • • For the real image, the negative sign must be omitted: For the intersection point 4 with the index (i=0; j=0) you get the image coordinates in the real image: ( B X B Y ) = b ( R 31 x 0 + R 32 y 0 + z 0 b ) ( R 11 x 0 + R 12 y 0 R 21 x 0 + R 22 y 0 )
    Figure DE102023203159A1_0020

2.4.3 Codeanordnung2.4.3 Code arrangement

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 10 2016 216 221 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.The method requires a surface-coded scale in the code arrangement 2, a partial area of which is read with an imaging sensor, for example the camera 1, so that the position of the sensor and/or the camera 1 in relation to the scale can be determined in up to six spatial directions from the image information. Further details on the code arrangement 2 can be found in the publication DE 10 2016 216 221 A1 of the applicant, the content of which is incorporated into the present disclosure via referencing, in particular with regard to the formation of the code arrangement as well as the decoding and the variants.

Der codierte Maßstab wird als sensor-lesbare Markierung ausgebildet als CodeAnordnung 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. The coded scale is designed as a sensor-readable marking as a code arrangement 2 on a surface that extends essentially in two dimensions, but can also have curvatures. For a better description, it is assumed in the following that the coded scale is printed as an optically readable pattern on a flat surface, without restricting the claim to other marking and sensor principles and curved surfaces.

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.The coded scale of code arrangement 2 is formed by arranging different basic symbols in a regular grid. The basic symbols carry two pieces of information: their shape encodes digital information and their center of gravity marks a specific position on the surface.

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.In a simple case, the digital information is encoded in a binary number system with the base b=2. Then only two base symbols 20 are used, e.g. a small and a large circle, which symbolize the values "0" and "1". Their centroid (center of the circle) marks a grid point on the surface.

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 10 mit dem gleichen Basisabstand cgrid benachbarter Symbole in X- und Y-Richtung.The centroids of the basic symbols 20 form a periodic two-dimensional pattern on the scale plane of the code arrangement 2, for example in a square grid as in 10 with the same base spacing c grid of adjacent symbols in X and Y directions.

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. 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 10 eingezeichneten Linien und Quadrate dienen nur der Veranschaulichung und werden in der realen Codeanordnung 2 nicht dargestellt. 11 zeigt eine beispielhafte Codeanordnung 2 ohne Linien mit den Basissymbolen 20 in den Parzellen 19.By dividing the plane into equally sized, area-filling plots 19, the basic symbols within a plot 19 are combined into a logical unit. Square plots 19 are preferably used. 10 shows a dot matrix with square plots 19, each of which can hold 7 x 7 binary symbols, which corresponds to a maximum information content of 49 bits. The 10 The lines and squares shown are for illustrative purposes only and are not shown in the actual code arrangement 2. 11 shows an exemplary code arrangement 2 without lines with the basic symbols 20 in the plots 19.

Die regelmäßige Anordnung der Basissymbole 20 wird von einer regelmäßigen Anordnung von Parzellensymbolen 21 überlagert, indem jede Parzelle 19 auf gleiche Weise mit einem Parzellensymbol 21 markiert wird. Das Parzellensymbol 21 kann beispielsweise durch Weglassen eines Basissymbols 20 dargestellt werden.The regular arrangement of the base symbols 20 is overlaid by a regular arrangement of parcel symbols 21 by marking each parcel 19 in the same way with a parcel symbol 21. The parcel symbol 21 can be represented, for example, by omitting a base symbol 20.

In 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.In 10 , 11 the parcel symbol 21 consists of a blank space in the dot grid, which is located in the middle of each parcel 19. The parcel symbol 21 makes it possible to recognize the position of the parcel 19 in order to read the basic symbols 20 along a reading track in the correct order. Since the parcel symbol 21 occupies a grid space, the information content of a parcel 19 is reduced to 48 bits in this example.

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.A reading field 22 is a field on the coded scale of the code arrangement 2 which is at least the size of a plot 19. It is bound to the point grid, but not to the grid of the plots 19.

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 cgrid variieren. 12 shows a dot grid of a code arrangement 2 with two exemplary reading fields 22. The position of the reading field 2 in the coordinate system of the dot grid is defined by its center position 23. It can vary in integer steps of the base distance c grid .

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 12 ist die Winkellage durch die Markierung einer Ecke des Lesefelds visualisiert. Die möglichen Winkellagen sind in 13 dargestellt. Die in 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° In addition, the reading field 22 has an angular position with respect to the coordinate system of the dot grid, which can vary in steps of 90° in a square grid. In 12 The angle position is visualized by marking a corner of the reading field. The possible angle positions are shown in 13 shown. The 12 The reading fields 22 shown as examples are clearly described by the following information: • Reading field 22, left: Position = (4,11); angular position = 0° • Reading field 22, right: Position = (12,6); angular position = 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 cgrid angegeben (Grobposition). Die Feinposition in Bruchteilen des Basisabstandes cgrid sowie der genaue Winkel in Bruchteilen von 90° ist nicht digital codiert, sie wird durch eine genaue Ortsbestimmung der Basissymbole 20 im Kamera-Koordinatensystem 17 ermittelt.The code of the code arrangement 2 is constructed in such a way that the basic symbols 20 in a reading field 22 contain sufficient information to digitally encode the location (X, Y) and the direction of the reading field 22 in the coordinate system 16 of the code arrangement 2. X and Y are specified in integer multiples of the basic distance c grid (rough position). The fine position in fractions of the basic distance c grid and the exact angle in fractions of 90° are not digitally encoded; they are determined by an exact location determination of the basic symbols 20 in the camera coordinate system 17.

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. 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.

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. 15 shows an example of the structure of a plot 19 with 7x7 grid points. In the middle of the plot 19 is the plot symbol 21. The two fields 24 mark the X plot areas in which the continuous code for the position in the X direction is shown. The X plot areas comprise 24 grid points, accordingly they represent a code with a length of 24 bits.

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).To read the code, the basic symbols 20 are read column by column from left to right and within each column from top to bottom. The reading order in the X-parcel areas 24 (reading track) is in raster point coordinates (X C , Y C ): (0.6); (0.5); (0.4); (1.6); (1.5); (1.4); (2.6); (2.5); (2.4); (3.6); (3.5); (3.4); (3.2); (3.1); (3.0); (4.2); (4.1); (4.0); (5.2); (5.1); (5.0); (6.2); (6.1); (6.0).

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.The two fields 25 mark the Y-plot areas in which the continuous code for the position in the Y direction is shown. The reading order corresponds to that of the X-plot areas 24, but is rotated 90° anti-clockwise. The reading track therefore runs line by line from bottom to top and within each line from left to right.

Der Code aus den X-Parzellenbereichen 24 (X-Code) ist eine Teilsequenz mit t=24 Ziffern Länge aus einer Gesamtsequenz von g Ziffern, wobei g sehr viel größer als t ist. Die Anzahl g ist hinreichend groß, so dass die X-Parzellenbereiche 24 aller in X-Richtung benachbarten Parzellen 19 vollständig gefüllt werden können. Insbesondere ist g größer als fünfzig, insbesondere größer als tausend und im Speziellen größer als eine Million. Die Inhalte der X-Parzellenbereiche 24 von in Y-Richtung benachbarten Parzellen sind identisch. Die Gesamtsequenz ist so ausgebildet, dass jede Teilsequenz von t aufeinanderfolgenden Basissymbolen 20 vorwärts gelesen in der Gesamtsequenz genau einmal enthalten ist und jede rückwärts gelesene Teilsequenz in der Gesamtsequenz vorwärts gelesen nicht enthalten ist.
Der Code aus den Y-Parzellenbereichen 25 (Y-Code) ist invertiert dargestellt, d.h. jede Ziffer z ist ersetzt durch die Ziffer (b-1-z). Für das Binärsystem mit b=2 entspricht das einer Bit-weisen Invertierung. Der invertierte Y-Code ist eine Teilsequenz mit t=24 Bit Länge aus einer Gesamtsequenz, wobei die gleiche Gesamtsequenz verwendet werden kann wie für den X-Code. Auch der invertierte Y-Code kommt nur einmal in der Gesamtsequenz vor und kommt rückwärts gelesen in der Gesamtsequenz nicht vor.
The code from the X-parcel areas 24 (X-code) is a partial sequence with a length of t=24 digits from a total sequence of g digits, where g is much larger than t. The number g is sufficiently large so that the X-parcel areas 24 of all parcels 19 adjacent in the X direction can be completely filled. In particular, g is greater than fifty, in particular greater than a thousand and especially greater than a million. The contents of the X-parcel areas 24 of parcels adjacent in the Y direction are identical. The overall sequence is designed such that each partial sequence of t consecutive basic symbols 20 is contained exactly once in the overall sequence when read forwards and each partial sequence read backwards is not contained in the overall sequence when read forwards.
The code from the Y parcel areas 25 (Y code) is shown inverted, ie each digit z is replaced by the digit (b-1-z). For the binary system with b=2, this corresponds to a bit-wise inversion. The inverted Y code is a partial sequence with t=24 bits in length from an overall sequence, whereby the same overall sequence can be used as for the X code. The inverted Y code also only appears once in the overall sequence and does not appear in the overall sequence when read backwards.

Die Inhalte der Y-Parzellenbereiche 25 von in X-Richtung benachbarten Parzellen 19 sind identisch.The contents of the Y-plot areas 25 of neighboring plots 19 in the X-direction are identical.

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.The overall sequence is designed in such a way that a checksum of a subsequence is less than half of the maximum possible checksum of a subsequence. In particular, the checksum for any subsequence selected from the overall sequence is less than half of the maximum possible checksum of a subsequence. For example, the checksum of any subsequence with length t for a number system with base b is less than 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.The subsequences of the overall sequence encode a coordinate value, for example the X-coordinates of the start position of the reading process. Likewise, a subsequence of the inverted overall sequence encodes a Y coordinate, for example the position from which the partial sequence is read. The X code and the Y code read in a plot 19 are assigned to the X and Y coordinates of a reference point in the plot 19, for example the center of the reading field.

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.Each reading field 22 contains exactly one parcel symbol 21, t basic symbols from X parcel areas 24 and t basic symbols from Y parcel areas 25. The position of the parcel grid and thus the position of the X and Y parcel areas 24, 25 in the reading field 22 as well as the associated reading sequence can be derived from the position of the parcel symbol 21. The basic symbols 20 read according to the reading sequence result in a digit sequence with t positions, which - if necessary after inversion - is a partial sequence of the overall sequence.

Bei unbekannter Orientierung eines Lesefeldes 22 ist zunächst nicht bekannt, welche der beiden Achsen die X-Achse und welche die Y-Achse ist. Dies wird ermittelt, indem die Quersumme des gelesenen Codes errechnet und mit q verglichen wird: die Quersumme eines X-Codes ist kleiner als q, die Quersumme eines Y-Codes ist größer als q. Aus der Richtung der gelesenen Codes in Bezug auf die Gesamtsequenz (vorwärts oder rückwärts) wird die Richtung der Koordinatenachsen des Lesefeldes 22 in Bezug auf die Koordinatenachsen der Codeanordnung 2 eindeutig abgeleitet.If the orientation of a reading field 22 is unknown, it is initially not known which of the two axes is the X-axis and which is the Y-axis. This is determined by calculating the cross sum of the read code and comparing it 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).

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 this way, the position and orientation of a reading field 22 in the coordinate system 16 of the code arrangement 2 can be determined, the position in integer steps of the grid width and the orientation in integer steps of 90°.

In 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. 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.In 16 , on the left, plots 19 with 9 rows and 9 columns are shown. In addition to the plot areas X and Y 24, 25, which represent the position code for the respective axis of the coordinate system 16, a plot area for additional data 26 is provided. It comprises (5x5) grid points, whereby the middle grid point is left out for the plot symbol 21, so that 24 grid points remain, each of which can accommodate a base symbol 20. In this way, 24 bits of additional information can be shown in each plot 19, which are not required for position determination and are read in a fixed order. 16 , on the right shows another code arrangement 2 with additional data. Here, four parcel areas 26 with 10 grid points each are provided for additional data, so that a total of 40 bits of additional information are available per parcel 19.

Der Algorithmus zur Positionsbestimmung ist in 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.The algorithm for determining the position is in 1 as a sequence of data processing steps, which are explained in detail below using examples. Standard methods of mathematics and image processing as well as for diagnosis and error detection are not explained in detail.

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.The method 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.

In der Ablaufposition I im Schritt 100 werden die digitalen Bilddaten als Grauwert-Matrix von der Kamera 1 an den Rechner übertragen. Schritt 200 dient dazu, die Validität der Bilddaten anhand von Kennwerten grob zu überprüfen. Es können weitere Schritte zur Bildverarbeitung folgen, z.B. zur Aufbereitung der Bilddaten oder zur Segmentierung in einzelne Codebereiche. Diese sind hier im Einzelnen nicht dargestellt. Das Datenvolumen ist bei einem 200x200 Kamerabild 3 40.000 Pixel und somit in Grauwerten 40.000 Byte.In process position I in step 100, the digital image data is transferred from camera 1 to the computer as a grayscale matrix. Step 200 is used to roughly check the validity of the image data using key values. Further image processing steps may follow, e.g. to prepare the image data or to segment it into individual code areas. These are not shown in detail here. The data volume for a 200x200 camera image 3 is 40,000 pixels and thus 40,000 bytes in grayscale.

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 the process position, the symbols (dots) contained in the image are localized and entered into a dot matrix according to their arrangement in the dot code grid, which corresponds to the size of a reading field (here: 15x15 dots). Each symbol is measured in terms of its position and area. The positions are rectified to correct lens distortions. The areas of the symbols are standardized to eliminate the influence of perspective distortion. The symbol type is classified based on the standardized area. This reduces the data volume to 225 dots with meta information and thus 9000 bytes. In order to classify unoccupied grid points or incorrectly displayed symbols as such, a local model of the dot code grid in the camera image is created from the positions of the successfully identified symbols. Symbols are searched for at all grid points of the model within the reading field. Due to local occlusions, image errors or the image field limitation, not all symbols can always be identified. In this case, the corresponding raster positions are classified as “not valid”.

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 the sequence position III, best fit lines (beams) are adjusted to the rows and columns of valid dots in the reading field 22. Each best fit line is described by a straight line angle in the image field of the camera 1 and an intersection point with the X or Y axis of the image field coordinate system. Each reading field 22 provides two bundles of best fit lines, corresponding to the two main axis directions of the code arrangement 2. In this example, each bunch of straight lines comprises up to 15 straight lines. In this way, the position data of 15 x 15 = 225 dots is reduced to the data of 15 + 15 = 30 best fit lines.

In der Ablaufposition IV werden die Geraden jedes Bündels durch zwei Polynome zweiten Grades interpoliert: ein Polynom beschreibt die Geradenwinkel, ein zweites die Achsenschnittpunkte der Geraden eines Geradenbündels. Die Polynomparameter der zwei Bündel werden durch 12 reelle Werte repräsentiert, was gegenüber der Geradendarstellung einer Reduktion um den Faktor 5 entspricht.In the sequence position IV, the straight lines of each bundle are interpolated by two second degree polynomials: one polynomial describes the straight line angles, a second the axis intersections of the straight lines of a straight line bundle. The polynomial parameters of the two bundles are represented by 12 real values, which corresponds to a reduction by a factor of 5 compared to the straight line representation.

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.In the sequence position V, an inverse mathematical mapping model is also used to calculate the 6D position of camera 1 from the polynomial parameters of the two straight line bundles. In addition, the validity of the position value is estimated by evaluating a large number of diagnostic results from the individual steps of the program sequence. The 6D camera position and validity are output to the higher-level system in step 800.

Schritt 200 - Prüfung/Validitätstest der BilddatenStep 200 - Review/validity test of image data

Anhand von statistischen Kenndaten wird überprüft, ob ein auswertbares Kamerabild 3 vorliegt (siehe Flussdiagramm in 17). In diesem Beispiel wird die Bildhelligkeit B 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 (18).
Statistical data are used to check whether an evaluable camera image 3 is available (see flow chart in 17 ). In this example, the image brightness B and contrast C are estimated and checked for compliance with specified limits. If the specified limits are exceeded, further evaluation is aborted and the result is classified as invalid.
To save computing time, only a small number of pixels are included in the determination of the key figures, for example the gray values at the intersection points of the straight lines and circles in the intersection point pattern 27 ( 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 the sub-step 210, a set of pixels is selected which are determined according to an arbitrary intersection pattern 27. The pixels at the intersection points in the intersection pattern 27 are used. Thus, G i is a grayscale value of the pixels at the positions i, i = 1..n.

In dem Unterschritt 220 werden die Bildhelligkeit B und der Kontrast C abgeschätzt: B = m e a n ( G i )

Figure DE102023203159A1_0021
C = m a x ( G i ) m i n ( G i ) m a x ( G i ) + m i n ( G i ) + 1
Figure DE102023203159A1_0022
In sub-step 220, the image brightness B and contrast C are estimated: B = m e a n ( G i )
Figure DE102023203159A1_0021
C = m a x ( G i ) m i n ( G i ) m a x ( G i ) + m i n ( G i ) + 1
Figure DE102023203159A1_0022

In dem Unterschritt 230 werden die Bildhelligkeit B und der Kontrast C mit den folgenden Bedingungen bewertet: ( B B m i n )  or  ( B B m a x ) ( C < C m i n )

Figure DE102023203159A1_0023
In sub-step 230, the image brightness B and the contrast C are evaluated with the following conditions: ( B B m i n ) or ( B B m a x ) ( C < C m i n )
Figure DE102023203159A1_0023

Sollte eine der Bedingungen erfüllt sein, wird die weitere Auswertung abgebrochen und das Ergebnis als nicht valide klassifiziert.If one of the conditions is met, further evaluation is aborted and the result is classified as invalid.

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.
Dot data capture/steps 310 to 350:
  • The aim is to identify, measure and classify the dots as basic symbols 20 in a reading field 22 of a predetermined size (here: 15x15 grid points). The result is a two-dimensional dot matrix 29 or generally a basic symbol matrix with the data of the dots, whereby the indices of the matrix 29 are assigned to the rows and columns of the code arrangement 2. Characteristic values are determined for each dot.

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
The Dot.Typ size contains the classification result. If Dot.Typ is positive, the dot was evaluated as valid:
  • • Dot.Type = 2: large dot; logical “1”
  • • Dot. Type = 1: small dot; logical “0”
  • • Dot. Type = 0: missing dot; parcel symbol 21

Falls Dot.Typ negativ ist, konnte der Dot nicht eindeutig identifiziert werden.If Dot.Typ is negative, the dot could not be clearly identified.

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.In sub-step 310, 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 adjacent dots of type 1 or 2.

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. 19 shows an example of a camera image 3 with an identified starting base 28 and the reading field 22 in which - starting from the starting base 28 - the dots are searched for as base symbols 20.

In Teilschritt 320 wird die Startbasis 28 genutzt, um ein lokales Modell des Punktgitters im Umfeld der Startbasis 28 aufzubauen. An den vom Modell prädizierten benachbarten Gitterplätzen werden weitere Dots gesucht, bei Erfolg präzise vermessen und als valide Dots in die Dot-Matrix 29 eingetragen. Dieser Vorgang wird zyklisch wiederholt, so dass um die Startbasis 28 herum immer mehr valide Dots registriert werden, bis das Lesefeld 22 von 15x15 Dots vollständig erfasst ist. Der Suchvorgang ist robust gegen lokale Lesefehler: wenn einzelne Dots nicht eindeutig identifizierbar sind oder den Bildfeldrand überschreiten, werden diese in der Dot-Matrix 29 als nicht valide gekennzeichnet und von der weiteren Verarbeitung ausgeschlossen. 20 zeigt das Ergebnis einer erfolgreich klassifizierten Dot-Matrix 29 auf Basis des Kamerabilds 3 in der 19.In sub-step 320, the starting base 28 is used to build a local model of the point grid in the area surrounding the starting base 28. Additional dots are searched for at the neighboring grid locations predicted by the model, precisely measured if successful, and entered into the dot matrix 29 as valid dots. This process is repeated cyclically so that more and more valid dots are registered around the starting base 28 until the reading field 22 of 15x15 dots is completely covered. The search process is robust against local reading errors: if individual dots cannot be clearly identified or exceed the edge of the image field, they are marked as invalid in the dot matrix 29 and excluded from further processing. 20 shows the result of a successfully classified dot matrix 29 based on the camera image 3 in the 19 .

In Teilschritt 330 werden die Mittelpunktspositionen und Flächen der Dots vermessen.In substep 330, the center positions and areas of the dots are measured.

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.Sub-step 340 converts the measured positions of all valid dot positions in the reading field 22 into rectified coordinates. This step serves to compensate for the distortion errors of the wide-angle lens (barrel distortion). After rectification, points that lie on a straight line in the code coordinate system 16 also lie on a straight line in the rectified image in the coordinate system of the image sensor 15. Instead of computer-assisted rectification, optical rectification can also be carried out with a corresponding lens 9, so that sub-step 340 is optional.

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.Based on the measured data, the dots are classified in sub-step 350. Then, in sub-step 360, the digital code is read in both spatial directions and, using 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.

Zu Teilschritt 310 - Ermittlung der StartbasisTo substep 310 - Determination of the starting base

Der Ablauf zur Bestimmung der Startbasis 28 ist im Flussdiagramm 21 dargestellt.The process for determining the starting base 28 is shown in the flow chart 21 shown.

Unterschritt 310.1: Zunächst wird eine Startposition 30 zur Suche des ersten Dots der Startbasis 28 festgelegt. 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.Substep 310.1: First, a starting position 30 is determined to search for the first dot of the starting base 28. 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, and so on, until sub-step 310.1 can be successfully completed. If all starting positions have been used and no search was successful, sub-step 310.1 is aborted with a negative result.

Unterschritt 310.2: Ausgehend von der Startposition P S t a r t / 30

Figure DE102023203159A1_0024
wird der nächstgelegene Dot gesucht. In 23 wird ein Dot an Position P 0
Figure DE102023203159A1_0025
als Startbasissymbol gefunden.Substep 310.2: Starting from the starting position P S t a r t / 30
Figure DE102023203159A1_0024
the nearest dot is searched for. In 23 a dot is placed at position P 0
Figure DE102023203159A1_0025
as starting base symbol.

Unterschritt 310.3: Anschließend wird ausgehend von P 0

Figure DE102023203159A1_0026
der nächstgelegene Dot gesucht und mit P 1
Figure DE102023203159A1_0027
als erster Hilfsstartbasisymbol bezeichnet.Sub-step 310.3: Then, starting from P 0
Figure DE102023203159A1_0026
the nearest dot is searched and with P 1
Figure DE102023203159A1_0027
referred to as the first auxiliary start base symbol.

Unterschritt 310.4: Danach wird ein Verbindungsvektor E 1 = ( P 1 P 0 )

Figure DE102023203159A1_0028
gebildet.Substep 310.4: Then a connection vector E 1 = ( P 1 P 0 )
Figure DE102023203159A1_0028
formed.

Unterschritt 310.5: Ausgehend von P 0

Figure DE102023203159A1_0029
wird der nächstgelegene Dot in orthogonaler Richtung zum Verbindungsvektor E 1 = ( P 1 P 0 )
Figure DE102023203159A1_0030
gesucht und mit P 2
Figure DE102023203159A1_0031
als zweites Hilfsstartbasissymbol bezeichnet.Substep 310.5: Starting from P 0
Figure DE102023203159A1_0029
the nearest dot in the orthogonal direction to the connection vector E 1 = ( P 1 P 0 )
Figure DE102023203159A1_0030
searched and with P 2
Figure DE102023203159A1_0031
referred to as the second auxiliary starting base symbol.

Unterschritt 310.6: Die drei Punkte P 0 , P 1  und  P 2

Figure DE102023203159A1_0032
spannen ein schiefwinkliges Koordinatensystem mit den Achsen E 1 = ( P 1 P 0 )
Figure DE102023203159A1_0033
und E 2 = ( P 2 P 0 )
Figure DE102023203159A1_0034
auf, wobei P 0
Figure DE102023203159A1_0035
den Ursprung des Koordinatensystems bildet.Substep 310.6: The three dots P 0 , P 1 and P 2
Figure DE102023203159A1_0032
span an oblique coordinate system with the axes E 1 = ( P 1 P 0 )
Figure DE102023203159A1_0033
and E 2 = ( P 2 P 0 )
Figure DE102023203159A1_0034
on, whereby P 0
Figure DE102023203159A1_0035
forms the origin of the coordinate system.

Unterschritt 310.7: Falls es sich um ein linkshändisches Koordinatensystem handelt ( Bedingung:  ( E 1 × E 2 ) < 0 ) ,

Figure DE102023203159A1_0036
wird es durch Tausch der Achsen E 1
Figure DE102023203159A1_0037
und E 2
Figure DE102023203159A1_0038
in ein rechtshändisches Koordinatensystem überführt, siehe 24, links.Substep 310.7: If it is a left-handed coordinate system ( Condition: ( E 1 × E 2 ) < 0 ) ,
Figure DE102023203159A1_0036
it is done by exchanging the axles E 1
Figure DE102023203159A1_0037
and E 2
Figure DE102023203159A1_0038
converted into a right-handed coordinate system, see 24 , left.

Unterschritt 310.8: Durch Linearkombination der Vektoren E 1

Figure DE102023203159A1_0039
und E 2
Figure DE102023203159A1_0040
werden alle acht zu P 0
Figure DE102023203159A1_0041
benachbarten Dot-Positionen abgeschätzt (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 (24, zweites von rechts, rechts).Substep 310.8: By linear combination of vectors E 1
Figure DE102023203159A1_0039
and E 2
Figure DE102023203159A1_0040
all eight will be P 0
Figure DE102023203159A1_0041
neighboring dot positions are estimated ( 24 , second from the left) and used as starting field 28 for searching and measuring dots. As a result, a starting base 28 of 3x3 dots is available ( 24 , second from the right, right).

Unterschritt 310.9: Falls bei diesem Ablauf ein Dot nicht gefunden wird, wird angenommen, dass es sich um ein Parzellensymbol 21 handelt (fehlender Dot).Substep 310.9: If a dot is not found during this procedure, it is assumed that it is a parcel symbol 21 (missing dot).

In dem Unterschritt 310.10 wird dann P 0

Figure DE102023203159A1_0042
um eine Dot-Position in die zum fehlenden Dot gegenüberliegende Richtung verschoben und der Ablauf wird mit der erneuten Suche von P 1
Figure DE102023203159A1_0043
und P 2
Figure DE102023203159A1_0044
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.In sub-step 310.10, P 0
Figure DE102023203159A1_0042
shifted by one dot position in the direction opposite to the missing dot and the process is continued with the new search of P 1
Figure DE102023203159A1_0043
and P 2
Figure DE102023203159A1_0044
continued. In the second run, it can be assumed that all 3x3 dots are identified, since the next parcel symbol 21 is one parcel 19 away (here: 7 dots) and the starting base is only 3x3 dots in size.

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.Subsequently, a sub-step 310.11 can 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.

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.As part of the previously described process, the challenge is to identify a dot in the image field of camera 1 starting from an estimated starting position and to measure its position and area with subpixel accuracy. In order to achieve a short measurement time, this process must be carried out very quickly, since a total of 225 dots must be identified in a reading field 22.

Zu diesem Zweck wird die nachfolgend beschriebene Funktion Center_Pos eingesetzt, die auf minimale Anzahl von Pixel-Zugriffen optimiert ist. 25 zeigt das Flussdiagramm.For this purpose, the Center_Pos function described below is used, which is optimized for a minimal number of pixel accesses. 25 shows the flow chart.

Bei Aufruf der Funktion Center_Pos wird die geschätzte Mittelpunktsposition des Dots P 0

Figure DE102023203159A1_0045
übergeben. Falls P 0
Figure DE102023203159A1_0046
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 26 a - h:

  • a) Mit einem grauwertbasierten zweidimensionalen Gradientenverfahren wird aus P 0
    Figure DE102023203159A1_0047
    ein optimierter Startpunkt P 1
    Figure DE102023203159A1_0048
    berechnet, der näher am Zentrum des Dots liegt. Für die Berechnung des Gradienten sind lediglich 4 Pixel-Zugriffe im Umfeld des Startpunktes P 0
    Figure DE102023203159A1_0049
    erforderlich.
  • b) Ausgehend vom optimierten Punkt P 1
    Figure DE102023203159A1_0050
    wird in +X- und -X-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstand von P 1
    Figure DE102023203159A1_0051
    zum rechten Rand ist r0, zum linken Rand r1.
  • c) P 1
    Figure DE102023203159A1_0052
    wird auf der X-Achse in Bezug auf die linke und rechte Kante zentriert, daraus ergibt sich der optimierte Punkt P 2
    Figure DE102023203159A1_0053
  • d) Ausgehend vom Punkt P 2
    Figure DE102023203159A1_0054
    wird in +Y- und -Y-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstand von P 2
    Figure DE102023203159A1_0055
    zum oberen Rand ist r2, zum unteren Rand r3.
  • e) P 2
    Figure DE102023203159A1_0056
    wird auf der Y-Achse in Bezug auf die obere und untere Kante zentriert, daraus ergibt sich der optimierte Punkt P 3 .
    Figure DE102023203159A1_0057
  • f)Ausgehend vom Punkt P 3
    Figure DE102023203159A1_0058
    wird erneut in +X- und -X-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstand von P 3
    Figure DE102023203159A1_0059
    zum rechten Rand ist r4, zum linken Rand r5.
  • g) P 3
    Figure DE102023203159A1_0060
    wird auf der X-Achse in Bezug auf die linke und rechte Kante zentriert. Daraus ergibt sich der optimierte Punkt P 4 ,
    Figure DE102023203159A1_0061
    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 π 4
    Figure DE102023203159A1_0062
    zur Umrechnung der quadratischen Fläche in eine Kreisfläche bzw. elliptische Fläche: D o t . A r e a = ( r 2 + r 3 ) ( r 4 + r 5 ) π 4
    Figure DE102023203159A1_0063
When the function Center_Pos is called, the estimated center position of the dot P 0
Figure DE102023203159A1_0045
handed over. If P 0
Figure DE102023203159A1_0046
outside the search area, the search is aborted and a negative result is returned. Otherwise, the 8 steps a) - h) are carried out, see also 26 a - h:
  • a) Using a gray value based two-dimensional gradient method, P 0
    Figure DE102023203159A1_0047
    an optimized starting point P 1
    Figure DE102023203159A1_0048
    which is closer to the center of the dot. To calculate the gradient, only 4 pixel accesses are required in the vicinity of the starting point P 0
    Figure DE102023203159A1_0049
    necessary.
  • b) Starting from the optimized point P 1
    Figure DE102023203159A1_0050
    The edge of the dot is searched for in the +X and -X directions using edge detection methods. The distance from P 1
    Figure DE102023203159A1_0051
    to the right edge is r 0 , to the left edge r 1 .
  • c) P 1
    Figure DE102023203159A1_0052
    is centered on the X-axis with respect to the left and right edges, resulting in the optimized point P 2
    Figure DE102023203159A1_0053
  • d) Starting from the point P 2
    Figure DE102023203159A1_0054
    The edge of the dot is searched for in the +Y and -Y directions using edge detection methods. The distance from P 2
    Figure DE102023203159A1_0055
    to the upper edge is r 2 , to the lower edge is r 3 .
  • e) P 2
    Figure DE102023203159A1_0056
    is centered on the Y-axis with respect to the upper and lower edges, resulting in the optimized point P 3 .
    Figure DE102023203159A1_0057
  • f)Starting from the point P 3
    Figure DE102023203159A1_0058
    The edge of the dot is searched again in the +X and -X directions using edge detection methods. The distance from P 3
    Figure DE102023203159A1_0059
    to the right edge is r 4 , to the left edge r 5 .
  • G) P 3
    Figure DE102023203159A1_0060
    is centered on the X-axis with respect to the left and right edges. This results in the optimized point P 4 ,
    Figure DE102023203159A1_0061
    which is output as the center position of the dot with subpixel accuracy.
  • h) The area of the dot is calculated as the area of the surrounding rectangle, multiplied by the factor π 4
    Figure DE102023203159A1_0062
    to convert the square area into a circular area or elliptical area: D O t . A r e a = ( r 2 + r 3 ) ( r 4 + r 5 ) π 4
    Figure DE102023203159A1_0063

Als Teil des zuvor beschriebenen Ablaufes besteht außerdem die Herausforderung, im Kamerabild 3 den zu einer Startposition P 0

Figure DE102023203159A1_0064
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
rmin
minimaler Suchradius
rmax
maximaler Suchradius
As part of the previously described process, there is also the challenge of finding the starting position in camera image 3 P 0
Figure DE102023203159A1_0064
to find the nearest dot. This task can be solved using the Nearest_dot function described below. The function receives the input data
starting position
rmin
minimum search radius
rmax
maximum search radius

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.
ND Boolean size (ND = "neighbor dot"):
  • If the start position is within a dot and ND = false, the dot at the location of the start position is output. If ND = true, the dot at the location of the start position is ignored and the nearest neighboring dot is output.

Ausgehend vom Startpunkt P 0

Figure DE102023203159A1_0066
tastet die Funktion das Bildfeld entlang von 16 Suchstrahlen 31 im Winkelabstand von 22,5° ab (27a, b). Der Radius aller Suchstrahlen 31 wird schrittweise erhöht, beginnend mit dem Radius rmin, bis zum maximalen Radius rmax.
Falls ND = false (27a), werden sowohl Kanten gesucht, die in einen Dot hineinführen als auch Kanten, die aus einem Dot herausführen. Falls ND = true ( 27b), werden nur Kanten gesucht, die in einen Dot hineinführen. Sobald eine Kante gefunden wurde, wird die Suche abgebrochen. Die Kante befindet sich an der Position P 1
Figure DE102023203159A1_0067
sie gehört zu dem gesuchten nächstgelegenen Dot. Ausgehend von P 1
Figure DE102023203159A1_0068
wird mit der Funktion Center_Dot die Mittelpunktsposition und die Fläche des gefundenen Dots bestimmt und ausgegeben.Starting from the starting point P 0
Figure DE102023203159A1_0066
The function scans the image field along 16 search beams 31 at an angular distance of 22.5° ( 27a , b). The radius of all search beams 31 is increased step by step, starting with the radius r min , up to the maximum radius r max .
If ND = false ( 27a) , both edges leading into a dot and edges leading out of a dot are searched for. If ND = true ( 27b) , only edges that lead into a dot are searched for. As soon as an edge is found, the search is aborted. The edge is located at the position P 1
Figure DE102023203159A1_0067
it belongs to the nearest dot we are looking for. Starting from P 1
Figure DE102023203159A1_0068
The Center_Dot function is used to determine and output the center position and the area of the found dot.

Teilschritt 320 - Erfassen der Dots im LesefeldSubstep 320 - Detecting the dots in the reading field

Das Flussdiagramm in 28 zeigt den Ablauf zur Erfassung aller Dots im Lesefeld 22. Als Eingangsinformation dient die zuvor ermittelte Startbasis 28 von z. B. 3x3 Dots. The flow chart in 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.

Zudem ist der Schritt 330: Präzise Messung der Mittelpunktsposition und Fläche der Dots in den Teilschritt 320 integriert.In addition, step 330: Precise measurement of the center position and area of the dots is integrated into sub-step 320.

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 29a).In the first sub-step 320.1, 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 recorded. This is usually the case when the center of the reading field 22 is in the center of the code area. If the code area takes up the entire image area, as in the present example, the center position 32 of the reading field is placed as close to the center of the image as possible (see 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.At the beginning of the procedure, only the 3x3 dots of the starting base 28 are known. All other dots in the reading field 22 are still unknown, i.e. their exact position and area have not yet been measured. The aim of the procedure is to gradually measure and classify the unknown dots.

Unterschritt 320.2: Für jeden bekannten Dot werden die Vektoren Dot. C 1

Figure DE102023203159A1_0069
und Dot. C 2
Figure DE102023203159A1_0070
bestimmt (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 Dot. C 1
Figure DE102023203159A1_0071
und Dot. C 2
Figure DE102023203159A1_0072
können die Rasterpositionen der unbekannten benachbarten Dots abgeschätzt werden. Die Positionsschätzung für einen unbekannten Dot kann verbessert werden, indem die Schätzwerte von mehreren validen Nachbarn extrapoliert und gemittelt werden.
Je mehr valide Nachbarn ein unbekannter Dot besitzt, umso besser kann dessen Position geschätzt werden. Um die Zuverlässigkeit des Lesevorgangs zu erhöhen, werden nur unbekannte Dots untersucht, die mindestens zwei valide Nachbarn haben. Für jeden unbekannten Dot wird die Anzahl der validen Nachbarn gezählt. Diese kann zwischen 0 und 8 liegen, siehe 29c): die mittlere Dot-Position hat 8 Nachbarpositionen (dunkel).Substep 320.2: For each known dot, the vectors Dot. C 1
Figure DE102023203159A1_0069
and Dot. C 2
Figure DE102023203159A1_0070
certainly ( 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 tion of the vectors Dot. C 1
Figure DE102023203159A1_0071
and Dot. C 2
Figure DE102023203159A1_0072
The grid positions of the unknown neighboring dots can be estimated. The position estimation for an unknown dot can be improved by extrapolating and averaging the estimates from several valid neighbors.
The more valid neighbors an unknown dot has, the better its position can be estimated. To increase the reliability of the reading process, only unknown dots that have at least two valid neighbors are examined. The number of valid neighbors is counted for each unknown dot. This can be between 0 and 8, see 29c ): the middle dot position has 8 neighboring positions (dark).

Zu Beginn der Suche sind nur die 3x3 Dots der Startbasis valide. Die einzigen unbekannten Dots mit 2 oder mehr validen Nachbarn sind in 29b) verstärkt dargestellt. 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.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 in 29b) shown in a more prominent way. 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) have no valid neighbors yet.

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.The algorithm is based on a stack, where in substep 320.3 all unknown dots with at least 2 valid neighbors are entered into the stack.

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 Dot. C 1
    Figure DE102023203159A1_0073
    und Dot. C 2
    Figure DE102023203159A1_0074
    werden für diesen Dot berechnet und eingetragen.
  • • Unterschritt 320.8: Für alle 8 Nachbarn des neuen validen Dots wird die Zahl der validen Nachbarn um 1 erhöht. Falls dadurch ein unbekannter Dot zwei oder mehr valide Nachbarn hat, wird dieser zur Vermessung auf den Stack gelegt.
  • • Unterschritt 320.9: Dieser Ablauf wird wiederholt, bis der Stack leer ist. Dann wurden alle Dots des Lesefeldes bearbeitet.
  • • Unterschritt 320.10: Falls nicht genügend Dots zur Positionsbestimmung gefunden wurden, wird der Lesevorgang als nicht valide bewertet.
The stack is processed in a loop:
  • • Substep 320.3: The top entry is popped from the stack as an unknown dot and processed in the following steps.
  • • Substep 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. If the unknown dot is within the expected reading field 22, it is identified and measured at the estimated position using the Center_Pos function.
  • • Substep 320.5: If the unknown dot cannot be identified, it is classified as defective (substep 320.6) and the next unknown dot is popped from the stack.
  • • Step 330/sub-step 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. The vectors Dot. C 1
    Figure DE102023203159A1_0073
    and Dot. C 2
    Figure DE102023203159A1_0074
    are calculated and entered for this dot.
  • • Substep 320.8: For all 8 neighbors of the new valid dot, the number of valid neighbors is increased by 1. If this results in an unknown dot having two or more valid neighbors, it is placed on the stack for measurement.
  • • Sub-step 320.9: This process is repeated until the stack is empty. Then all dots of the reading field have been processed.
  • • Substep 320.10: If not enough dots were found to determine the position, the reading process is evaluated as invalid.

Zu Teilschritt 340 - RektifizierungTo sub-step 340 - rectification

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.Imaging with the wide-angle lens can result in a barrel-shaped distortion of the image field. Lines of dots that lie on a straight line in the code plane of the code arrangement 2 may lie on a curved line in the camera image 3.

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. 31 zeigt beispielhaft ein nicht rektifiziertes Raster (33) und ein rektifiziertes Raster (34).This curvature can be eliminated by a mathematical procedure, called rectification. For computing time reasons, rectification is only applied to the center positions 32 of the dots, not to all pixels of the input image. 31 shows an example of a non-rectified grid (33) and a rectified grid (34).

Das Zentrum der Verzeichnung I C

Figure DE102023203159A1_0075
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 P
Figure DE102023203159A1_0076
im Bildfeld der Kamera 3 in die rektifizierte Position R
Figure DE102023203159A1_0077
umgerechnet: R = ( p 0 + p 1 D + p 2 D 2 ) D + I C
Figure DE102023203159A1_0078
mit

Position in Bezug auf das Zentrum der Verzeichnung
Abstand zum Zentrum der Verzeichnung
The center of distortion I C
Figure DE102023203159A1_0075
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. A position is determined using a 2nd order polynomial. P
Figure DE102023203159A1_0076
in the image field of camera 3 into the rectified position R
Figure DE102023203159A1_0077
converted: R = ( p 0 + p 1 D + p 2 D 2 ) D + I C
Figure DE102023203159A1_0078
with
position relative to the center of distortion
distance to the center of distortion

Die Verzeichnung ändert nur die Länge des Vektors D ,

Figure DE102023203159A1_0081
nicht dessen Richtung. Die Polynomparameter p0, p1, p2 sind spezifisch für das Objektiv 9 und werden in einem Kalibriervorgang an dieses angepasst. Alternativ hierzu kann ein verzerrungsfreies Objektiv 9 verwendet werden.The distortion only changes the length of the vector D ,
Figure DE102023203159A1_0081
not its direction. The polynomial parameters p 0 , p 1 , p 2 are specific to the lens 9 and are adapted to it in a calibration process. Alternatively, a distortion-free lens 9 can be used.

Zu Teilschritt 350 - Klassifizierung der DotsTo substep 350 - Classification of 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 32 dargestellt.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 32 shown.

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.Perspective distortion has a strong influence on the area of the dots in the image field. For example, dots further away are shown smaller, and circular dots on an inclined plane are shown as an ellipse.

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 Dot. C 1

Figure DE102023203159A1_0082
und Dot. C 2
Figure DE102023203159A1_0083
am Ort des Dots, also die Abstandsvektoren vom Dot zu den in den Hauptachsenrichtungen 1 und 2 benachbarten Dots, aufspannen.Substep 350.1: To compensate for these effects, the area of the dots is normalized with respect to the area of their dot cell. The dot cell is the parallelogram that contains the vectors Dot. C 1
Figure DE102023203159A1_0082
and Dot. C 2
Figure DE102023203159A1_0083
at the location of the dot, i.e. the distance vectors from the dot to the neighboring dots in the main axis directions 1 and 2.

30 zeigt einen perspektivisch verzerrten Dot in einem verzerrten Raster, das lokal durch die Vektoren Dot. C 1

Figure DE102023203159A1_0084
und Dot. C 2
Figure DE102023203159A1_0085
aufgespannt wird. Die Fläche der Zelle ist | D o t . C 1 × D o t . C 2 | .
Figure DE102023203159A1_0086

Die normierte Fläche des Dots wird folgendermaßen berechnet: D o t . A r e a s c a l e d = D o t . A r e a / | D o t . C 1 × D o t . C 2 |
Figure DE102023203159A1_0087
30 shows a perspectively distorted dot in a distorted grid, which is locally defined by the vectors dot. C 1
Figure DE102023203159A1_0084
and Dot. C 2
Figure DE102023203159A1_0085
The area of the cell is | D O t . C 1 × D O t . C 2 | .
Figure DE102023203159A1_0086

The normalized area of the dot is calculated as follows: D O t . A r e a s c a l e d = D O t . A r e a / | D O t . C 1 × D O t . C 2 |
Figure DE102023203159A1_0087

Unterschritt 350.2: Der Schwellwert wird mit statistischen Verfahren aus den normierten Flächen Dot. Areascaled aller Dots bestimmt.Substep 350.2: The threshold value is determined using statistical methods from the normalized areas Dot. Area scaled of all dots.

Unterschritt 350.3: Anschließend werden alle Dots klassifiziert:

  • • Fehlender Dot: Typ 0
  • • Normierte Fläche kleiner als Schwellwert: Typ 1; sonst: Typ 2.
Substep 350.3: All dots are then classified:
  • • Missing Dot: Type 0
  • • Normalized area smaller than threshold: Type 1; otherwise: Type 2.

Unterschritt 350.3: Falls Fehler auftreten wird der Status auf invalid gesetzt, falls keine Fehler auftreten ist der Dot valid.Substep 350.3: If errors occur, the status is set to invalid; if no errors occur, the dot is valid.

Zu Teilschritt 360 - Lesen des CodesTo substep 360 - Reading the code

Nach der Klassifizierung der Dots enthält die Dot-Matrix 29 alle Informationen, um die 6D Position zu ermitteln.After the dots are classified, the dot matrix 29 contains all the information to determine the 6D position.

Die Dot-Matrix 29 enthält die folgenden Informationen: Dot Daten Beschreibung Daten werden durch die folgenden Schritte bereitgestellt: D o t i , j . P

Figure DE102023203159A1_0088
Genaue Dot-Mittelpunkte in den originalen Bildkoordinaten Teilschritt 310 und 320, Funktion: Center_Pos: Subpixel genaues Erfassen des Dot-Mttelpunkts D o t i , j . R
Figure DE102023203159A1_0089
Dot-Mittelpunkte in den rektifizierten Bildkoordinaten Teilschritt 340, Funktion: Rectify: Rektifizierung der
D o t i , j . P
Figure DE102023203159A1_0090
D o t i , j . C 1   D o t i , j . C 2
Figure DE102023203159A1_0091
Lokaler Distanzvektor zwischen benachbarten Dots in der ersten und der zweiten Rasterrichtung. Teilschritt 310 und 320, berechnet aus den Dot-Mittelpunkten in den originalen Bildkoordinaten
D o t i , j . P
Figure DE102023203159A1_0092
Dot i,j . Area Dotfläche in den originalen Bildkoordinaten [Pixel] Teilschritt 310 und 320, Center_Pos: Dotflächenerfassung Dot i,j . Typ Klassifizierter DotTyp Teilschritt 340, Dot-Klassifizierung auf Basis der Dot-Fläche Dot i,j . VN Anzahl der validen Nachbardots Teilschritt 310 und 320, Zählung der validen Nachbarn The dot matrix 29 contains the following information: Dot data Description Data is provided through the following steps: D O t i , j . P
Figure DE102023203159A1_0088
Exact dot centers in the original image coordinates Substep 310 and 320, Function: Center_Pos: Subpixel accurate detection of the dot center
D O t i , j . R
Figure DE102023203159A1_0089
Dot centers in the rectified image coordinates Substep 340, Function: Rectify: Rectification of the
D O t i , j . P
Figure DE102023203159A1_0090
D O t i , j . C 1 D O t i , j . C 2
Figure DE102023203159A1_0091
Local distance vector between neighboring dots in the first and second raster direction. Substeps 310 and 320, calculated from the dot centers in the original image coordinates
D O t i , j . P
Figure DE102023203159A1_0092
Dot i,j . Area Dot area in the original image coordinates [pixels] Substep 310 and 320, Center_Pos: Dot area detection Dot i,j . Type Classified DotType Substep 340, Dot classification based on the dot area Dot i,j . VN number of valid neighboring dots Substeps 310 and 320, counting the valid neighbors

Das Flussdiagramm dazu ist in 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.The flow chart is in 33 The digital coarse position in X and Y directions is determined by reading the X and Y bit chains in the dot matrix.

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.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. If several entries with type 0 are included, these can be checked against each other because the “empty dot” repeats regularly in the parcel grid (here: 7x7 dots).

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. 34a) zeigt beispielhaft die Dot-Typen, die in der DotMatrix eingetragen sind. Das Parzellensymbol (Typ 0) ist grau unterlegt. in 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.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. 34a) shows examples of the dot types that are entered in the dot matrix. The parcel symbol (type 0) is highlighted in grey. in 34b) The reading track for the two axes is also marked. The reading tracks of the two axes are rotated by 90° to each other, with the parcel symbol 21 forming the center of rotation.

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).Since the reading field (15x15 dots) is significantly larger than a parcel (7x7), the code can be read redundantly: A copy of Code_0 is located in the parcels adjacent in the j-direction (35a), a copy of Code_1 is located in the parcels adjacent in the i-direction (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.Redundancy also exists in the length of the readable code. A code length of 24 bits in each direction is sufficient for determining the location, i.e. the content of a 7x7 parcel. However, the larger reading field with 15x15 dots delivers 51 or 54 bits in each direction. The redundant information is used to detect and correct individual incorrectly read bits in Code_0 and Code_1.

In diesem Beispiel werden die folgenden Codes gelesen:

  • • Code_0: 111.111.011.111.011.111.111.111.111.111.111.111.011.011.111.111.111.111
  • • Code_1: 000.000.000.101.000.001.000.000.000.000.100.110.000.000.000.000.000.000
In this example, the following codes are read:
  • • Code_0: 111.111.011.111.011.111.111.111.111.111.111.111.011.011.111.111.111.111
  • • Code_1: 000,000,000,101,000,001,000,000,000,000,100,110,000,000,000,000,000,000

Unterschritt 360.3: Aus Code_0 wird ein beliebiger Abschnitt mit t=24 aufeinanderfolgenden Bits ausgewählt und auf Vollständigkeit geprüft.Substep 360.3: An arbitrary section with t=24 consecutive bits is selected from Code_0 and checked for completeness.

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.Substep 360.4: The checksum of Code_0 is then calculated. If this is less than t/2 = 12, Code_0 is the X code and Code_1 is the Y code. If it is greater than t/2, Code_0 is the Y code and Code_1 is the X code. The Y code is inverted. The X code remains unchanged.

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 35 schematisch dargestellt:

  • - Es wird ein wird ein beliebiger Abschnitt mit t=24 aufeinanderfolgenden Bits ausgewählt und auf Vollständigkeit geprüft: 000100000000001010100000
Sub-step 360.5: Then Code_0 and Code_1 are searched for in the code table using an error-tolerant string search. The bit position with the best match is output as the search result; if the deviation is too great, the search result is assessed as invalid. In order to transform Code_0 and Code_1 into integer location coordinates (X, Y), the bit position of the codes is converted into a spatial position according to the code structure, as shown in the example in 35 shown schematically:
  • - An arbitrary section with t=24 consecutive bits is selected and checked for completeness: 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.
This is searched in the code table in forward direction and found at bit position 37 as underlined:
  • 010101010000000010000000000100010000000010000000000101010000000010000 00001000101000000001 ...
  • - Each X-Dot is assigned a bit position within the code table.
  • - The bit position corresponds to the starting point of the reading order within a parcel.
  • - Each Y-dot is assigned a bit position within the code table.

360.6 Validitätsprüfung360.6 Validity Check

Gemäß der 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.

Figure DE102023203159A1_0093
According to the 35 this corresponds to the dot position Xc=10=Pos 0 . The Yc value for Pos 1 is determined in an analogous manner. The reading direction (Dir_0 and Dir_1) is also determined for both codes by searching for the codes in both directions in the code table: 0 = found in the forward direction, 1 = found in the backward direction. From the reading directions of Code_0 and Code_1, the rough orientation of the reading window 22 is determined in steps of 90° according to the following table.
Figure DE102023203159A1_0093

Als Ergebnis von Teilschritt 360 steht die ganzzahlige Grob-Position (rX,int, rY,int) und die Orientierung des Lesefensters 22 bereit.As a result of sub-step 360, the integer coarse position (r X , int , r Y,int ) and the orientation of the reading window 22 are available.

Schritt 400 - Ermittlung der Beam-DatenStep 400 - Determining the beam data

Um die Fein-Position zu ermitteln, werden die rektifizierten Positionsdaten der validen Dots in der Dot-Matrix 29 ausgewertet. 36 zeigt beispielhaft die Dots eines Lesefeldes im Kamerabild nach der Rektifizierung.To determine the fine position, the rectified position data of the valid dots in the dot matrix 29 are evaluated. 36 shows an example of the dots of a reading field in the camera image after rectification.

Schritt 410: Anpassung von AusgleichsgeradenStep 410: Adjustment of best-fit lines

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.For this purpose, best fit lines (beams) are adjusted to the rows and columns of valid dots in the reading field 22. The best fit line is calculated using standard mathematical methods to minimize errors from the position data of the valid dots in the respective row or column. Invalid dots are excluded from the process.

Jede Ausgleichsgerade i des bunches k = 0..1 wird durch folgende Parameter beschrieben (37):

  • ◯ SXki Schnittpunkt mit der XI-Achse
  • ◯ SYki Schnittpunkt mit der YI-Achse
  • ◯ αki Winkel der Gerade i im Bildfeld
Each regression line i of the bunch k = 0..1 is described by the following parameters ( 37 ):
  • ◯ SX ki intersection point with the X I axis
  • ◯ SY ki intersection with the Y I axis
  • ◯ α ki angle of the line i in the image field

Die an die Dot-Reihen angepassten Ausgleichsgeraden bilden ein erstes Geradenbündel (bunch0) 36, wobei die Geraden parallel zu der Yc-Achse sind. Die Geraden der Dot-Spalten bilden ein zweites Geradenbündel (bunch1) 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.The best-fit lines fitted to the dot rows form a first bundle of lines (bunch 0 ) 36, where the lines are parallel to the Y c axis. The lines of the dot columns form a second bundle of lines (bunch 1 ) 37, where the lines are parallel to the X c axis. In this way, the position data of 15 x 15 = 225 dots are reduced to the data of 15 + 15 = 30 best-fit lines.

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.The interpolation also has the effect of averaging the dot positions on each line, so that the best fit lines are robust against individual fluctuations in the individual dot positions. This increases the stability and accuracy of the 6D position value.

In 36 sind die Ausgleichsgeraden für ein Lesefeld mit 15x15 Dots dargestellt, die Geraden aus bunch0 als 36 und die Geraden aus bunch1 als 37.In 36 The best-fit lines for a reading field with 15x15 dots are shown, the lines from bunch 0 as 36 and the lines from bunch 1 as 37.

Schritt 420 - Ermittlung der Bunch-DatenStep 420 - Determining the bunch data

In diesem Schritt werden die drei Geraden-Parameter SXki, SYki, αki 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.In this step, the three line parameters SX ki , SY ki , α ki of each bundle of regression lines 36, 37 are interpolated with a second degree polynomial. The interpolation process only takes valid lines into account. Invalid lines, for which there are too few valid dots available for interpolation, are excluded from the bunch interpolation. For this purpose, a weighted interpolation is carried out using standard mathematical methods, which is based on the minimization of error squares. Valid lines are given a weight of 1.0, while invalid lines are given a weight of 0.0 and are thus hidden.

Ansatz Interpolationsfunktion:

  • • SXk(i) = psxk0 + i · psxk1 + i2 · psxk2
  • • SYk(i) = psyk0 + i · psyk1 + i2 · psyk2
  • • αk(i) = pαk0 + i · pαk1 + i2 · pαk2
Approach interpolation function:
  • • SX k (i) = psx k0 + i · psx k1 + i 2 · psx k2
  • • SY k (i) = psy k0 + i · psy k1 + i 2 · psy k2
  • • α k (i) = pα k0 + i · pα k1 + i 2 · pα k2

Dabei ist i die fortlaufende Nummer der Geraden (Geradenindex) im jeweiligen Geradenbündel.Here, i is the consecutive number of the straight line (line index) in the respective straight line bundle.

Allgemeiner Ansatz zur Interpolation der Geradenparameter: P k ( i ) = p k 0 + i p k 1 + i 2 p k 2 ;  mit  P k ( i ) = S X k ( i ) , S Y k ( i )  or  α k ( i )

Figure DE102023203159A1_0094
General approach to interpolation of line parameters: P k ( i ) = p k 0 + i p k 1 + i 2 p k 2 ; with P k ( i ) = S X k ( i ) , S Y k ( i ) or α k ( i )
Figure DE102023203159A1_0094

Für eine mathematisch eindeutige Beschreibung einer Geraden ist es ausreichend, nur einen der beiden Achsenschnittpunkte SXki oder SYki zusammen mit dem Geradenwinkel αki 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 [ 1 4 π ,   1 4 π ]
    Figure DE102023203159A1_0095
    oder [ 3 4 π ,   5 4 π ]
    Figure DE102023203159A1_0096
    liegt (Sektoren auf der XI-Achse in 38a)), handelt es sich um eine flache Gerade. Dann wird für alle Geraden in Bündel 0 (36) der Schnittpunkt SX0i mit der X-Achse spezifiziert und für alle Geraden in Bündel 1 (37) der Schnittpunkt SY1i mit der Y-Achse (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 38 a)), handelt es sich um eine steile Gerade. Dann wird für alle Geraden in Bündel 0 (36) der Schnittpunkt SY0i mit der Y-Achse spezifiziert und für alle Geraden in Bündel 1 (37) der Schnittpunkt SX1i mit der X-Achse ( 38c)). Als Merker wird rot_status auf 1 gesetzt.
For a mathematically unambiguous description of a straight line, it is sufficient to specify only one of the two axis intersection points SX ki or SY ki together with the line angle α ki . Ideally, the intersection point is specified with the axis that is as perpendicular to the straight line as possible: for flat straight lines, the intersection point with the Y axis is preferably specified, and for steep straight lines, the intersection point with the X axis. Therefore, the following procedure is used:
  • • In bundle 1, a reference line is selected which is located close to the center 32 of the reading field 22.
  • • If the angle of the reference line is in the range [ 1 4 π , 1 4 π ]
    Figure DE102023203159A1_0095
    or [ 3 4 π , 5 4 π ]
    Figure DE102023203159A1_0096
    (sectors on the X I axis in 38a) ), it is a flat line. Then the intersection point SX 0i with the X-axis is specified for all lines in bundle 0 (36) and the intersection point SY 1i with the Y-axis ( 38b) ). As a flag, rot_status is set to 0.
  • • If the angle of the reference line is outside the specified range (sectors on the Y I axis in 38 a) ), it is a steep line. Then the intersection point SY 0i with the Y-axis is specified for all lines in bundle 0 (36) and the intersection point SX 1i with the X-axis ( 38c )). As a flag, rot_status is set to 1.

Durch diesen Schritt wird der Datenumfang weiter reduziert: ein Bündel von Geraden wird durch nur 6 Parameter beschrieben, drei Parameter für αki und drei Parameter für einen der Achsenschnittpunkte, SXki oder SYki. Bei zwei Bündeln sind es 12 Parameter sowie der Merker rot_status.This step further reduces the amount of data: a bundle of straight lines is described by only 6 parameters, three parameters for α ki and three parameters for one of the axis intersection points, SX ki or SY ki . For two bundles, there are 12 parameters plus the marker 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.Two bundles 36, 37 are always described by 12 parameters and the Boolean variable rot_status, regardless of the number of straight lines or the size of the measuring field. In the next step, the 6D position is calculated from these parameters.

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.The interpolation also has the effect of averaging the straight lines of each bundle and thus all dots, so that the interpolated values are robust against individual fluctuations of individual straight lines or dots. This increases the stability and accuracy of the 6D position value.

Schritt 6 - Berechnung der 6D KamerapositionStep 6 - Calculating the 6D camera position

Aus den 12 Interpolationsparametern der Geradenbündel (Tabelle 9.1) werden die 6 Koordinaten der Kameraposition berechnet, in folgender Reihenfolge:

  • • Teilschritt 500: Position rX und rY
  • • Teilschritt 710: Berechnung von Kennwerten des verzerrten Rasters
  • • Teilschritt 600: Kamera-Winkel φZ
  • • Teilschritt 700: Position rz
  • • Teilschritt 700: Kamera-Winkel φX und φY
  • • Teilschritt 700: Iterativer Algorithmus zur Lösung des Gleichungssystems für φX, φY und rZ
From the 12 interpolation parameters of the straight line bundles (Table 9.1), the 6 coordinates of the camera position are calculated in the following order:
  • • Substep 500: Position r X and r Y
  • • Substep 710: Calculation of characteristics of the distorted grid
  • • Substep 600: Camera angle φ Z
  • • Substep 700: Position r z
  • • Substep 700: Camera angle φ X and φ Y
  • • Substep 700: Iterative algorithm for solving the system of equations for φ X , φ Y and r Z

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.The calculation includes the derivation of parameters that describe the measured grid at the location of the optical axis 5. These parameters are linked to the 6D camera position via a system of equations that results from the imaging model and the laws of ray optics.

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.The camera position is determined by solving the system of equations. In addition, the validity of the position values is estimated by evaluating a large number of diagnostic results from the individual steps of the program sequence.

Zu Teilschritt 500 - Berechnung der Kameraposition rX und rY To substep 500 - Calculating the camera position r X and r Y

Die Kameraposition in X und Y wird als Summe der ganzzahligen Grobposition (rX,int, rY,int) und eines reellen Bruchteils [0..1] (Feinposition) berechnet, multipliziert mit dem Dot-Rasterabstand: r X = ( r X , i n t + r X , f r a c t ) c g r i d   ; Einheit:  [ m ]

Figure DE102023203159A1_0097
r Y = ( r Y , i n t + r Y , f r a c t ) c g r i d   ; Einheit:  [ m ]
Figure DE102023203159A1_0098
mit  ( r X , i n t , r Y , i n t ) : Ganzzahlige Position des Lesefeldes in  [ Dot ] ,  wie in Schritt 300 ermittelt
Figure DE102023203159A1_0099
( r X , f r a c t , r Y , f r a c t ) :  reeller Bruchteil der Lesefeld-Position in  [ Dot ]
Figure DE102023203159A1_0100
c g r i d : Dot Rasterabstand in  [ m / Dot ] .
Figure DE102023203159A1_0101
The camera position in X and Y is calculated as the sum of the integer coarse position (r X,int , r Y,int ) and a real fraction [0..1] (fine position), multiplied by the dot grid spacing: r X = ( r X , i n t + r X , f r a c t ) c G r i d ; Unit: [ m ]
Figure DE102023203159A1_0097
r Y = ( r Y , i n t + r Y , f r a c t ) c G r i d ; Unit: [ m ]
Figure DE102023203159A1_0098
with ( r X , i n t , r Y , i n t ) : Integer position of the reading field in [ Dot ] , as in Step 300 determined
Figure DE102023203159A1_0099
( r X , f r a c t , r Y , f r a c t ) : real fraction of the reading field position in [ Dot ]
Figure DE102023203159A1_0100
c G r i d : Dot Grid spacing in [ m / Dot ] .
Figure DE102023203159A1_0101

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 (2, Punkt (4) bzw. Abbildung des Schnittpunkts 4 Bildmittelpunkt/Image center 4 in 39). Dieser Bildmittelpunkt IC (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 (ICX, ICY) im Programm hinterlegt. Die Bruchteile rX,fract und rY,fract 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: S k ( i ) = p s k 0 + i p s k 1 + i 2 p s k 2 ;  mit  S k ( i ) = S X k ( i )  oder  S Y k ( i ) ,  abhängig von rot_status .

Figure DE102023203159A1_0102
The reference point for measuring the camera position is the intersection point 4 of the optical axis 5 with the code arrangement 2, in the camera image 3 the intersection point of the optical axis 5 with the image sensor 12 ( 2 , point (4) or image of the intersection point 4 Image center 4 in 39 ). This image center IC (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 stored in the program as a constant two-dimensional vector (IC X , IC Y ). We calculate the fractions r X,fract and r Y,fract as the intersection point of the interpolated line with the image center 4. For the two beams of rays k = 0 and k = 1 (36, 37), the interpolation equation for the axis intersection point applies: S k ( i ) = p s k 0 + i p s k 1 + i 2 p s k 2 ; with S k ( i ) = S X k ( i ) or S Y k ( i ) , depending on red_status .
Figure DE102023203159A1_0102

Im Bild 39 sind die Mittelpunktsgeraden für beide Geradenbündel k = 0 und k = 1 dargestellt.
Es gilt ·  für rot _ status = 0 : ( S 0 ( r X , f r a c t ) S 1 ( r Y , f r a c t ) ) = ( I C X I C Y )

Figure DE102023203159A1_0103
·  für rot _ status = 1 : ( S 0 ( r X , f r a c t ) S 1 ( r Y , f r a c t ) ) = ( I C Y I C X )
Figure DE102023203159A1_0104
Figure 39 shows the center lines for both bundles of lines k = 0 and k = 1.
It is · for red _ status = 0 : ( S 0 ( r X , f r a c t ) S 1 ( r Y , f r a c t ) ) = ( I C X I C Y )
Figure DE102023203159A1_0103
· for red _ status = 1 : ( S 0 ( r X , f r a c t ) S 1 ( r Y , f r a c t ) ) = ( I C Y I C X )
Figure DE102023203159A1_0104

Durch geeignete Wahl der Interpolationsparameter (i, j) wird der Achsschnittpunkt für beide Mittelpunktsgeraden in den Bildmittelpunkt I C

Figure DE102023203159A1_0105
verschoben. Dies wird erfüllt durch die Gleichungen ·  für Geradenbündel  0 :   r X , f r a c t 2 + r X , f r a c t 2 p s 01 p s 01 + ( p s 00 T X ) p s 02 = 0
Figure DE102023203159A1_0106
·  für Geradenbündel 1 :   r Y , f r a c t 2 + r Y , f r a c t 2 p s 11 p s 12 + ( p s 10 T Y ) p s 12 = 0
Figure DE102023203159A1_0107
·  mit  ( T X , T Y ) = { ( I C X ,   I C Y ) f ü r   r o t _ s t a t u s = 0 ( I C Y ,   I C X ) f ü r   r o t _ s t a t u s = 1
Figure DE102023203159A1_0108
By suitable choice of the interpolation parameters (i, j) the axis intersection point for both center lines is placed in the image center I C
Figure DE102023203159A1_0105
This is fulfilled by the equations · for straight line bundles 0 : r X , f r a c t 2 + r X , f r a c t 2 p s 01 p s 01 + ( p s 00 T X ) p s 02 = 0
Figure DE102023203159A1_0106
· for straight line bundle 1 : r Y , f r a c t 2 + r Y , f r a c t 2 p s 11 p s 12 + ( p s 10 T Y ) p s 12 = 0
Figure DE102023203159A1_0107
· with ( T X , T Y ) = { ( I C X , I C Y ) f ü r r O t _ s t a t u s = 0 ( I C Y , I C X ) f ü r r O t _ s t a t u s = 1
Figure DE102023203159A1_0108

Die Lösung der Gleichungen führt auf die gesuchten Bruchteile der Geradenindizes rX,fract und rY,fract: ·   r X , f r a c t = 1 2 p s 02 ( s i g n ( p s 01 ) p s 01 2 4 p s 02 ( p s 00 T X ) p s 01 )

Figure DE102023203159A1_0109
·   r Y , f r a c t = 1 2 p s 12 ( s i g n ( p s 11 ) p s 11 2 4 p s 12 ( p s 10 T Y ) p s 11 )
Figure DE102023203159A1_0110
The solution of the equations leads to the desired fractions of the line indices r X,fract and r Y,fract : · r X , f r a c t = 1 2 p s 02 ( s i G n ( p s 01 ) p s 01 2 4 p s 02 ( p s 00 T X ) p s 01 )
Figure DE102023203159A1_0109
· r Y , f r a c t = 1 2 p s 12 ( s i G n ( p s 11 ) p s 11 2 4 p s 12 ( p s 10 T Y ) p s 11 )
Figure DE102023203159A1_0110

Zu Teilschritt 710 - Berechnung von Kennwerten des verzerrten RastersTo substep 710 - Calculation of characteristics of the distorted grid

Aus den Interpolationsgleichungen werden weitere Kennwerte gewonnen, die das verzerrte Raster charakterisieren. Die Feinpositionen rX,fract und rY,fract werden in die Interpolationsgleichungen eingesetzt, um die Kennwerte im Bildmittelpunkt zu erhalten. Die Kennwerte werden zur Bestimmung der Position in den Dimensionen rZ, φx, φY und φZ benötigt.Further parameters that characterize the distorted raster are obtained from the interpolation equations. The fine positions r X,fract and r Y,fract are inserted into the interpolation equations to obtain the parameters in the image center. The parameters are required to determine the position in the dimensions r Z , φ x , φ Y and φ Z .

a) Rastermaß der Achsenschnittpunkte der Geraden für beide Geradenbündel: gc0, gc1.a) Grid size of the axes intersection points of the straight lines for both bundles of straight lines: g c0 , g c1 .

Das Rastermaß wird durch Ableitung der Interpolationsfunktion für den Achsenschnittpunk Sk(i) nach dem dimensionslosen Geraden-Index i am Ort des Bildmittelpunktes bestimmt: für  b u n c h k :   g C k = p g r i d s k ( i ) i | i = r f r a c t = p g r i d ( p s k 1 + 2 r f r a c t p s k 2 )

Figure DE102023203159A1_0111
mit  r f r a c t = { r X , f r a c t   f o r   k = 0 r Y , f r a c t   f o r   k = 1
Figure DE102023203159A1_0112
The grid dimension is determined by deriving the interpolation function for the axis intersection point S k (i) with respect to the dimensionless straight line index i at the location of the image center: for b u n c h k : G C k = p G r i d s k ( i ) i | i = r f r a c t = p G r i d ( p s k 1 + 2 r f r a c t p s k 2 )
Figure DE102023203159A1_0111
with r f r a c t = { r X , f r a c t f O r k = 0 r Y , f r a c t f O r k = 1
Figure DE102023203159A1_0112

b) Geradenwinkel im Bildmittelpunkt: αc0, αc1 (siehe 37), ergibt sich aus der Interpolationsfunktion für den Geradenwinkel: für  b u n c h k :   g C k = α k ( r f r a c t ) = α k 0 + r f r a c t α k 1 + r f r a c t 2 α k 2 2

Figure DE102023203159A1_0113
b) Straight line angle in the image center: α c0 , α c1 (see 37 ), results from the interpolation function for the straight line angle: for b u n c h k : G C k = α k ( r f r a c t ) = α k 0 + r f r a c t α k 1 + r f r a c t 2 α k 2 2
Figure DE102023203159A1_0113

c) Winkeldivergenz der Geradenbündel im Bildmittelpunkt: dαC0, dαC1. 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 i am Ort des Bildmittelpunktes: für  b u n c h k :   d α C k = α k ( i ) i | i = r f r a c t = α k 1 + 2 r f r a c t α k 2

Figure DE102023203159A1_0114
c) Angular divergence of the bundles of straight lines in the image center: dα C0 , dα C1 . This is the angle difference between adjacent straight lines close to the image center. It results from the derivative Determination of the interpolation function for the line angle according to the dimensionless line index i at the location of the image center: for b u n c h k : d α C k = α k ( i ) i | i = r f r a c t = α k 1 + 2 r f r a c t α k 2
Figure DE102023203159A1_0114

Zu Teilschritt 600 - Berechnung des Kamerawinkels φZ To substep 600 - Calculation of the camera angle φ Z

Wir ermitteln den Geradenwinkel φZ aus der in 2.4.2 hergeleiteten Abbildungsgleichung: ( B X B Y ) = b ( R 31 x 0 + R 32 y 0 + r Z ) ( R 11 x 0 + R 12 y 0 R 21 x 0 + R 22 y 0 ) ;  mit  r Z = z 0 b : Abstand Codeebene / opt .  Zentrum

Figure DE102023203159A1_0115
We determine the straight line angle φ Z from the mapping equation derived in 2.4.2: ( B X B Y ) = b ( R 31 x 0 + R 32 y 0 + r Z ) ( R 11 x 0 + R 12 y 0 R 21 x 0 + R 22 y 0 ) ; with r Z = z 0 b : distance code level / opt . center
Figure DE102023203159A1_0115

Durch Ableiten der Bild-Koordinaten BX und BY nach der Coderaster-Koordinate x0 erhalten wir B X x 0 = b ( R 11 R 32 R 12 R 31 ) y 0 + R 11 r Z ( R 31 x + R 32 y 0 + r Z ) 2 ; B Y x 0 = b ( R 21 R 32 R 22 R 31 ) y 0 + R 21 r Z ( R 31 x + R 32 y 0 + r Z ) 2

Figure DE102023203159A1_0116
By deriving the image coordinates B X and B Y with respect to the code raster coordinate x 0 we obtain B X x 0 = b ( R 11 R 32 R 12 R 31 ) y 0 + R 11 r Z ( R 31 x + R 32 y 0 + r Z ) 2 ; B Y x 0 = b ( R 21 R 32 R 22 R 31 ) y 0 + R 21 r Z ( R 31 x + R 32 y 0 + r Z ) 2
Figure DE102023203159A1_0116

Die Steigung einer Gerade des Geradenbündels bunch1 im Kamerabild ist m 1 = B Y / x 0 B X / x 0 = ( R 21 R 32 R 22 R 31 ) y 0 + R 21 r Z ( R 11 R 32 R 12 R 31 ) y 0 + R 11 r Z = ( sin  φ X  sin  φ Z cos  φ X  sin  φ Y  cos  φ Z ) y 0 cos  φ Y  sin  φ Z r Z ( sin  φ X  cos  φ Z cos  φ X  sin  φ Y  sin  φ Z ) y 0 + cos  φ Y   c o s   φ Z r Z

Figure DE102023203159A1_0117
The slope of a straight line of the straight line bundle bunch 1 in the camera image is m 1 = B Y / x 0 B X / x 0 = ( R 21 R 32 R 22 R 31 ) y 0 + R 21 r Z ( R 11 R 32 R 12 R 31 ) y 0 + R 11 r Z = ( sin φ X sin φ Z cos φ X sin φ Y cos φ Z ) y 0 cos φ Y sin φ Z r Z ( sin φ X cos φ Z cos φ X sin φ Y sin φ Z ) y 0 + cos φ Y c O s φ Z r Z
Figure DE102023203159A1_0117

Wir betrachten die Steigung im Zentrum bei y0 = 0 und erhalten m1|y0=0 = - tan(φZ). m1|y0=0 ist die Steigung der Geraden von bunch1 im Bildmittelpunkt. Sie entspricht dem Kennwert αC1 aus 6.2 b), d.h. m1|y0=0 = tan(αC1).We consider the slope in the center at y 0 = 0 and obtain m 1 | y 0 =0 = - tan(φ Z ). m 1 | y 0 =0 is the slope of the line from bunch 1 in the image center. It corresponds to the characteristic value α C1 from 6.2 b), ie m 1 | y 0 =0 = tan(α C1 ).

Das führt auf die Gleichung für den Kamerawinkel φZ: φZ = αC1 This leads to the equation for the camera angle φ Z : φ Z = α C1

Zu Teilschritt 700 - Berechnung der Kameraposition rZ To substep 700 - Calculation of the camera position r Z

Die Kameraposition rZ wird aus dem Rasterabstand der Achsenschnittpunkte gCi für beide Geradenbündel bunchi ermittelt. Da es in jedem Bild zwei Geradenbündel gibt, können grundsätzlich zwei rZ Positionen ermittelt werden. Mit den Fällen rot_status = k ergeben sich vier Werte rZik mit (i, k = 0..1). Es gilt die Abbildungsgleichung zur 9: ( B X B Y ) = b ( R 31 x 0 + R 32 y 0 + r Z ) ( R 11 x 0 + R 12 y 0 R 21 x 0 + R 22 y 0 ) ; mit  r Z = b z 0 :  Abstand Codeebene / opt . Zentrum

Figure DE102023203159A1_0118
The camera position r Z is determined from the grid spacing of the axis intersection points g Ci for both straight line bundles bunch i . Since there are two straight line bundles in each image, two r Z positions can be determined in principle. With the cases rot_status = k, four values r Zik with (i, k = 0..1) result. The mapping equation for 9 : ( B X B Y ) = b ( R 31 x 0 + R 32 y 0 + r Z ) ( R 11 x 0 + R 12 y 0 R 21 x 0 + R 22 y 0 ) ; with r Z = b z 0 : distance code level / opt . center
Figure DE102023203159A1_0118

Beispielhaft wird der Wert rZ00 aus dem gemessenen Rasterabstand gC0 der Achsenschnittpunkte auf der BX Achse für rot_status = 0 ermittelt. Auf der BX Achse gilt: BY = 0, aus der Abbildungsgleichung folgt R 21 x 0 + R 22 y 0 = 0 y 0 = R 21 R 22 x 0

Figure DE102023203159A1_0119
 
Figure DE102023203159A1_0120
For example, the value r Z00 is determined from the measured grid spacing g C0 of the axis intersections on the B X axis for rot_status = 0. On the B X axis, the following applies: B Y = 0, from the mapping equation follows R 21 x 0 + R 22 y 0 = 0 y 0 = R 21 R 22 x 0
Figure DE102023203159A1_0119
Figure DE102023203159A1_0120

Durch Einsetzen dieses Terms in die Gleichung für BX erhalten wir B X = b ( R 11 R 22 R 12 R 21 ) x 0 ( R 22 R 31 R 21 R 32 ) x 0 + R 22 r Z 00

Figure DE102023203159A1_0121
 
Figure DE102023203159A1_0122
By inserting this term into the equation for B X we get B X = b ( R 11 R 22 R 12 R 21 ) x 0 ( R 22 R 31 R 21 R 32 ) x 0 + R 22 r Z 00
Figure DE102023203159A1_0121
Figure DE102023203159A1_0122

Der Rasterabstand gC0 entspricht der Ableitung B X x 0

Figure DE102023203159A1_0123
bei x 0 = 0 ;
Figure DE102023203159A1_0124
mit x 0 = x 0 c g r i d
Figure DE102023203159A1_0125
Geradenindex in [dots]
Daraus folgt B X x 0 = B X x 0 c g r i d = b c g r i d ( R 11 R 22 R 12 R 21 ) R 22 r Z 00 ( ( R 22 R 31 R 21 R 32 ) x 0 + R 22 r Z 00 ) 2
Figure DE102023203159A1_0126
Bei x0 = 0 erhalten wir g C 0 = B X x 0 | x 0 = 0 = b c g r i d ( R 11 R 22 R 12 R 21 ) R 22 r Z 00 ,
Figure DE102023203159A1_0127
und aufgelöst nach r Z 00 : r Z 00 = b c g r i d ( R 11 R 22 R 12 R 21 ) g C 0 R 22
Figure DE102023203159A1_0128
The grid spacing g C0 corresponds to the derivative B X x 0
Figure DE102023203159A1_0123
at x 0 = 0 ;
Figure DE102023203159A1_0124
with x 0 = x 0 c G r i d
Figure DE102023203159A1_0125
line index in [dots]
It follows B X x 0 = B X x 0 c G r i d = b c G r i d ( R 11 R 22 R 12 R 21 ) R 22 r Z 00 ( ( R 22 R 31 R 21 R 32 ) x 0 + R 22 r Z 00 ) 2
Figure DE102023203159A1_0126
For x 0 = 0 we get G C 0 = B X x 0 | x 0 = 0 = b c G r i d ( R 11 R 22 R 12 R 21 ) R 22 r Z 00 ,
Figure DE102023203159A1_0127
and dissolved after r Z 00 : r Z 00 = b c G r i d ( R 11 R 22 R 12 R 21 ) G C 0 R 22
Figure DE102023203159A1_0128

Durch Einsetzen der Matrixelemente Rij erhalten wir die Gleichung für rZ00 : r Z 00 = b c g r i d cos φ Y g C 0 ( cos  φ Z tan  φ X  sin  φ Y  sin  φ Z )

Figure DE102023203159A1_0129
By inserting the matrix elements R ij we obtain the equation for r Z00 : r Z 00 = b c G r i d cos φ Y G C 0 ( cos φ Z tan φ X sin φ Y sin φ Z )
Figure DE102023203159A1_0129

In gleicher Weise wird die Position rZ01 für rot_status=1 berechnet, Ansatz: g C 0 = B Y x 0 | x 0 = 0

Figure DE102023203159A1_0130
In the same way, the position r Z01 is calculated for rot_status=1, approach: G C 0 = B Y x 0 | x 0 = 0
Figure DE102023203159A1_0130

 

Figure DE102023203159A1_0131
Figure DE102023203159A1_0131

Die Positionen rZ1k werden aus gC1 abgeleitet, Ansatz für r Z 10 :   g C 1 = B Y y 0 | y 0 = 0 ;

Figure DE102023203159A1_0132
für r Z 11 : g C 1 = B X y 0 | y 0 = 0
Figure DE102023203159A1_0133
The positions r Z1k are derived from g C1 , approach for r Z 10 : G C 1 = B Y y 0 | y 0 = 0 ;
Figure DE102023203159A1_0132
for r Z 11 : G C 1 = B X y 0 | y 0 = 0
Figure DE102023203159A1_0133

Die Ergebnisse sind in Tabelle 10.1 zusammengefasst. Tabelle: Berechnung der Kamera-Positionswerte rZik rot_status rZ0k (abgeleitet aus bunch0) rZ1k (abgeleitet aus bunch1) 0 r Z 00 = b c g r i d cos  φ Y g C 0 ( cos  φ Z tan  φ X sin  φ Y sin  φ Z )

Figure DE102023203159A1_0134
r Z 10 = b c g r i d cos  φ X g C 1 cos  φ Z
Figure DE102023203159A1_0135
1 r Z 01 = b c g r i d cos  φ Y g C 0 ( sin  φ Z tan  φ X sin  φ Y cos  φ Z )
Figure DE102023203159A1_0136
r Z 11 = b c g r i d cos  φ X g C 1 sin  φ Z
Figure DE102023203159A1_0137
The results are summarized in Table 10.1. Table: Calculation of the camera position values r Zik red_status r Z0k (derived from bunch 0 ) r Z1k (derived from bunch 1 ) 0 r Z 00 = b c G r i d cos φ Y G C 0 ( cos φ Z tan φ X sin φ Y sin φ Z )
Figure DE102023203159A1_0134
r Z 10 = b c G r i d cos φ X G C 1 cos φ Z
Figure DE102023203159A1_0135
1 r Z 01 = b c G r i d cos φ Y G C 0 ( sin φ Z tan φ X sin φ Y cos φ Z )
Figure DE102023203159A1_0136
r Z 11 = b c G r i d cos φ X G C 1 sin φ Z
Figure DE102023203159A1_0137

Durch Einführung des Winkels β = r o t _ s t a t u s π 2

Figure DE102023203159A1_0138
können die Gleichungen zusammengefasst werden: r Z 0 k = b c g r i d cos  φ Y g C 0 ( cos ( φ Z + β ) tan  φ X sin  φ Y sin ( φ Z + β ) ) r Z 1 k = b c g r i d cos  φ X g C 1 cos ( φ Z β )
Figure DE102023203159A1_0139
By introducing the angle β = r O t _ s t a t u s π 2
Figure DE102023203159A1_0138
the equations can be summarized: r Z 0 k = b c G r i d cos φ Y G C 0 ( cos ( φ Z + β ) tan φ X sin φ Y sin ( φ Z + β ) ) r Z 1 k = b c G r i d cos φ X G C 1 cos ( φ Z β )
Figure DE102023203159A1_0139

Um nur einen Wert rZ pro Bild auszugeben, wird der Mittelwert beider z-Werte berechnet: r Z = r Z 0 k + r Z 1 k 2

Figure DE102023203159A1_0140
rZ To output only one value r Z per image, the mean of both z-values is calculated: r Z = r Z 0 k + r Z 1 k 2
Figure DE102023203159A1_0140
r Z

Zu Teilschritt 700 - Berechnung der Kamerawinkel φX, φY To substep 700 - Calculation of the camera angles φ X , φ Y

Die Winkel φX, φY werden aus der Winkeldivergenz r Z = r Z 0 k + r Z 1 k 2

Figure DE102023203159A1_0141
der beiden Geradenbündel bunchk im Bildzentrum abgeleitet. Im Schritt 600 haben wir die Geradensteigung m1 für das Geradenbündel bunch1 als Funktion des Geradenindex y0 hergeleitet: m 1 ( y 0 ) = ( sin  φ X sin  φ Z cos  φ X sin  φ Y cos  φ Z ) y 0 cos  φ Y sin  φ Z r Z ( sin  φ X cos  φ Z cos  φ X sin  φ Y sin  φ Z ) y 0 + cos  φ Y c o s   φ Z r Z
Figure DE102023203159A1_0142
The angles φ X , φ Y are calculated from the angle divergence r Z = r Z 0 k + r Z 1 k 2
Figure DE102023203159A1_0141
of the two straight line bundles bunch k in the image center. In step 600 we derived the straight line slope m 1 for the straight line bundle bunch 1 as a function of the straight line index y 0 : m 1 ( y 0 ) = ( sin φ X sin φ Z cos φ X sin φ Y cos φ Z ) y 0 cos φ Y sin φ Z r Z ( sin φ X cos φ Z cos φ X sin φ Y sin φ Z ) y 0 + cos φ Y c O s φ Z r Z
Figure DE102023203159A1_0142

Daraus berechnen wir den Geradenwinkel α1(y0) = tan(m1(y0)) und leiten diesen nach y 0 = y 0 c g r i d

Figure DE102023203159A1_0143
[dots] ab, um die Winkeldivergenz zu erhalten: α 1 ( y 0 ) y 0 = α 1 ( y 0 ) y 0 c g r i d = c g r i d cos  φ X sin  φ Y cos  φ Y r Z ( y 0 sin  φ X r Z cos  φ Y ) 2 + y 0 2 cos 2 φ X sin 2 φ Y
Figure DE102023203159A1_0144

  • ▪ Im Bildzentrum y0 = 0 ist die Winkeldivergenz α 1 ( y 0 ) y 0 | y 0 = 0 = c g r i d cos  φ X tan  φ Y r Z
    Figure DE102023203159A1_0145
  • ▪ Gleichsetzen mit der gemessenen Winkeldivergenz dαC1 ergibt die Gleichung für φ Y : tan  φ Y = d α C 1 r Z c g r i d cos  φ X
    Figure DE102023203159A1_0146
From this we calculate the straight line angle α 1 (y 0 ) = tan(m 1 (y 0 )) and derive it according to y 0 = y 0 c G r i d
Figure DE102023203159A1_0143
[dots] to obtain the angular divergence: α 1 ( y 0 ) y 0 = α 1 ( y 0 ) y 0 c G r i d = c G r i d cos φ X sin φ Y cos φ Y r Z ( y 0 sin φ X r Z cos φ Y ) 2 + y 0 2 cos 2 φ X sin 2 φ Y
Figure DE102023203159A1_0144
  • ▪ At the image center y 0 = 0 the angular divergence is α 1 ( y 0 ) y 0 | y 0 = 0 = c G r i d cos φ X tan φ Y r Z
    Figure DE102023203159A1_0145
  • ▪ Equating with the measured angular divergence dα C1 gives the equation for φ Y : tan φ Y = d α C 1 r Z c G r i d cos φ X
    Figure DE102023203159A1_0146

In gleicher Weise ergibt sich der Winkel φX aus der Steigung m0 einer Geraden in bunch0. Analog zur Rechnung in 600 erhalten wir m 0 ( x 0 ) = ( sin  φ X sin  φ Z + cos  φ X sin  φ Y cos  φ Z ) x 0 + ( cos  φ X cos  φ Z sin  φ X sin  φ Y sin  φ Z ) r Z ( sin  φ X cos  φ Z + cos  φ X sin  φ Y sin  φ Z ) x 0 + ( cos  φ X sin  φ Z + sin  φ X sin  φ Y c o s   φ Z ) r Z

Figure DE102023203159A1_0147

  • ▪ Wir leiten den Winkel α0(x0) = tan(m0(x0)) nach x 0 = x 0 c g r i d
    Figure DE102023203159A1_0148
    ab und erhalten die Winkeldivergenz α 0 ( x 0 ) x 0 = α 0 ( x 0 ) x 0 c g r i d = c g r i d sin  φ X  cos  φ X  cos 2 φ Y r Z ( x 0 + r Z cos  φ X ) 2 x 0 2 cos 2   φ X
    Figure DE102023203159A1_0149
  • ▪ Im Bildzentrum x0 = 0 ist die Winkeldivergenz α 0 ( x 0 ) x 0 | x 0 = 0 = c g r i d cos 2   φ Y  tan  φ X r Z
    Figure DE102023203159A1_0150
  • ▪ Gleichsetzen mit der gemessenen Winkeldivergenz dαC0 ergibt die Gleichung für φ X : tan  φ X = d α C 0 r Z c g r i d cos 2 φ Y
    Figure DE102023203159A1_0151
In the same way, the angle φ X results from the slope m 0 of a straight line in bunch 0 . Analogous to the calculation in 600 we obtain m 0 ( x 0 ) = ( sin φ X sin φ Z + cos φ X sin φ Y cos φ Z ) x 0 + ( cos φ X cos φ Z sin φ X sin φ Y sin φ Z ) r Z ( sin φ X cos φ Z + cos φ X sin φ Y sin φ Z ) x 0 + ( cos φ X sin φ Z + sin φ X sin φ Y c O s φ Z ) r Z
Figure DE102023203159A1_0147
  • ▪ We derive the angle α 0 (x 0 ) = tan(m 0 (x 0 )) according to x 0 = x 0 c G r i d
    Figure DE102023203159A1_0148
    and obtain the angle divergence α 0 ( x 0 ) x 0 = α 0 ( x 0 ) x 0 c G r i d = c G r i d sin φ X cos φ X cos 2 φ Y r Z ( x 0 + r Z cos φ X ) 2 x 0 2 cos 2 φ X
    Figure DE102023203159A1_0149
  • ▪ At the image center x 0 = 0 the angular divergence is α 0 ( x 0 ) x 0 | x 0 = 0 = c G r i d cos 2 φ Y tan φ X r Z
    Figure DE102023203159A1_0150
  • ▪ Equating with the measured angular divergence dα C0 gives the equation for φ X : tan φ X = d α C 0 r Z c G r i d cos 2 φ Y
    Figure DE102023203159A1_0151

Zu Teilschritt 700 - Iterative Berechnung der Kameraposition Z und der Kamerawinkel φX , φY To substep 700 - Iterative calculation of the camera position Z and the camera angles φ X , φ Y

Zwischen den Funktionen φX, φY und Z gibt es gegenseitige Abhängigkeiten: φ X = f ( φ y , r Z ) ; φ Y = f ( φ X , r Z ) φ Z = f ( φ X , r y )

Figure DE102023203159A1_0152
There are mutual dependencies between the functions φ X , φ Y and Z: φ X = f ( φ y , r Z ) ; φ Y = f ( φ X , r Z ) φ Z = f ( φ X , r y )
Figure DE102023203159A1_0152

Daher werden die Gleichungen in einem iterativen Ablauf gelöst. Mit jedem Iterationsschritt steigt die Genauigkeit der Kameraposition Z und der Kamerawinkel φX und φY. Der Algorithmus ist im Flussdiagramm 40 dargestellt.

  • Unterschritt 700.1: Berechnung der reellen Bruchteile der Lesefeld-Position in [Dot] (rX,fract, rY,fract)
  • Unterschritt 700.2: Berechnung der Position rx und ry
  • Unterschritt 700.3: Berechnung der Kamerarotation/Kamerawinkels φZ
  • 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 rZOk 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
Therefore, the equations are solved in an iterative process. With each iteration step, the accuracy of the camera position Z and the camera angles φ X and φ Y increases. The algorithm is shown in the flow chart 40 shown.
  • Substep 700.1: Calculation of the real fractions of the reading field position in [Dot] (r X,fract , r Y,fract )
  • Substep 700.2: Calculating the position r x and r y
  • Substep 700.3: Calculation of the camera rotation/camera angle φ Z
  • Substep 700.4: Initialize the camera angles phix = 0; phiy = 0
  • Substep 700.5: Initialize a counter for iterations with e.g. 4
  • Substep 700.6: Calculate r ZOk and r Z1k and finally r Z =(r Z0k +r Z1k )/2
  • Substep 700.7: Calculation of camera angle phix, phiy
  • Substep 700.8: Counter = 0? Recalculation, otherwise abort the iteration
  • Substep 700.9: Error query

Der Algorithmus konvergiert schnell, nach etwa 4 Iterationen ist das Ergebnis hinreichend stabil. Schließlich werden folgende Ergebnisse ausgegeben:

  • • Kameraposition (rx, ry, rz)
  • • Kamerawinkel (φX, φY, φZ)
  • • Validitätsinformationen
The algorithm converges quickly, after about 4 iterations the result is sufficiently stable. Finally, the following results are output:
  • • Camera position (r x , r y , r z )
  • • Camera angle (φ X , φ Y , φ Z )
  • • Validity information

Bezugszeichenliste:List of reference symbols:

11
Kameracamera
22
Codeanordnungcode arrangement
33
BildPicture
44
Schnittpunkt der optischen Achse 5 mit der Codeanordnung 2; Aufpunkt;Intersection point of the optical axis 5 with the code arrangement 2; reference point;
55
optische Achseoptical axis
66
leerempty
77
Schnittpunkt der optischen Achse mit dem Bildaufnehmerintersection of the optical axis with the image sensor
88
Objekte mit mindestens einer Codeanordnung 2Objects with at least one code arrangement 2
99
Objektivlens
1010
Brennpunkt des Objektivs 9focal point of the lens 9
1111
Brennpunkt des Objektivs 9focal point of the lens 9
1212
Bildaufnehmerimage sensor
1313
optisches Zentrum des Objektivs 9optical center of the lens 9
1414
Sichtstrahlline of sight
1515
Koordinatensystem (XI, YI) des Bildaufnehmers 12 in der Ebene des Bildaufnehmers 12Coordinate system (X I, Y I ) of the image sensor 12 in the plane of the image sensor 12
1616
Koordinatensystem (XC, YC) der Codeanordnung 2 in der Ebene der Codeanordnung 2Coordinate system (X C , Y C ) of code arrangement 2 in the plane of code arrangement 2
1717
Koordinatensystem (X, Y, Z) der Kamera 1coordinate system (X, Y, Z) of camera 1
1818
virtuelle Bildebenevirtual image plane
1919
Parzelleplot
2020
Basissymbolbase symbol
2121
Parzellensymbolparcel symbol
2222
Lesefeldreading field
2323
Mittelpunkts-Positioncenter position
2424
X-ParzellenbereicheX-plot areas
2525
Y-ParzellenbereicheY-plot areas
2626
Parzellenbereich für Zusatzdatenparcel area for additional data
2727
Schnittpunktmusterintersection pattern
2828
Startfeld/Startbasis/launch padlaunch pad
2929
Dot-Matrixdot matrix
3030
Startpositionenstarting positions
3131
Suchstrahlensearch beams
3232
Mittelpunktsposition des Lesefeld 22center position of reading field 22
3333
nicht-rektifiziertes Punktrasternon-rectified dot matrix
3434
rektifiziertes Punktrasterrectified dot matrix
3535
Lesespur in einer ersten Code-Richtungreading track in a first code direction
3636
Lesespur in einer zweiten Code-Richtungreading track in a second code direction
3737
erstes Geradenbündel/bunch0 first straight line bundle/bunch 0
3838
zweites Geradenbündel/bunch1 second straight bundle/bunch 1

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of documents listed by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • DE 102016216221 A1 [0003, 0007, 0174]DE 102016216221 A1 [0003, 0007, 0174]
  • DE 102016216196 A1 [0004, 0007]DE 102016216196 A1 [0004, 0007]

Claims (17)

Verfahren zur Ermittlung von mindestens einem Freiheitsgrad einer Kamera (1) relativ zu einer Codeanordnung (2) aus einem Kamerabild der Kamera (1), wobei die Codeanordnung (2) ein Punktraster mit einer Mehrzahl von Basissymbolen (20) aufweist, wobei in der Codeanordnung (2) eine Grobposition der Basissymbole (20) codiert ist, wobei 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 Grobposition von mindestens einem der Basissymbole (20) in der Codeanordnung und/oder die Grobposition des Koordinatensystems des Punktrasters als zwei Freiheitsgrade der Kamera relativ zu der Codeanordnung (2) ermittelt wird.Method for determining at least one degree of freedom of a camera (1) relative to a code arrangement (2) from a camera image of the camera (1), wherein the code arrangement (2) has a dot matrix with a plurality of base symbols (20), wherein a rough position of the base symbols (20) is encoded in the code arrangement (2), wherein a start field (28) is determined with base symbols (20), wherein the start field (28) has at least three base symbols (20), wherein two independent main directions along the dot matrix in the camera image are estimated via the base symbols (20) of the start field (28), wherein the base symbols (20) of the start field form valid base symbols, wherein in a search step, starting from at least one valid base symbol (20), further base symbols (20) are searched for along at least one of the main directions, and wherein, if the search is successful, the further base symbols (20) are considered valid base symbols (20), wherein the search step is carried out several times, wherein on the basis of the valid basic symbols (20) or a subset thereof the rough position of at least one of the basic symbols (20) in the code arrangement and/or the rough position of the coordinate system of the point grid is determined as two degrees of freedom of the camera relative to the code arrangement (2). Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Basissymbole (20) des Startfelds (28) zwei Verbindungsvektoren in den zwei unabhängigen Hauptrichtungen entlang des Punktrasters in dem Kamerabild definieren.procedure according to claim 1 , characterized in that the base symbols (20) of the start field (28) define two connection vectors in the two independent main directions along the point grid in the camera image. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass zu den Basissymbolen (20) die jeweilige Mittelpunktsposition des Basissymbols (20) in dem Kamerabild bestimmt wird, wobei der Suchschritt ausgehend von der Mittelpunktsposition des jeweiligen Basissymbols (20) durchgeführt wird.procedure according to claim 1 or 2 , characterized in that the respective center position of the base symbol (20) in the camera image is determined for the base symbols (20), wherein the search step is carried out starting from the center position of the respective base symbol (20). Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Fläche der Basissymbole (20) in dem Kamerabild bestimmt wird, wobei die Fläche ein Datum in der Codierung der Codeanordnung (2) bildet.Method according to one of the preceding claims, characterized in that the area of the base symbols (20) in the camera image is determined, wherein the area forms a datum in the coding of the code arrangement (2). Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass in einem Vorschritt zur Erstellung des Startfelds (28) mindestens eine Startposition (30) festgelegt wird und entlang von Suchstrahlen (31) ein benachbartes Basissymbol (20) ausgehend von der Startposition (30) als Startbasissymbol gesucht wird.Method according to one of the preceding claims, characterized in that in a preliminary step for creating the starting field (28) at least one starting position (30) is determined and an adjacent base symbol (20) is searched for as a starting base symbol along search rays (31) starting from the starting position (30). Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass ausgehend von der Position des Startbasissymbols entlang von Suchstrahlen (31) ein benachbartes Basissymbol (20) als erstes Hilfsstartbasissymbol gesucht wird.procedure according to claim 5 , characterized in that starting from the position of the starting base symbol along search rays (31) an adjacent base symbol (20) is searched for as a first auxiliary starting base symbol. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass ausgehend von dem Startbasissymbol und dem ersten Hilfsstartbasissymbol in einer Richtung senkrecht zu einer Verbindung zwischen dem Startbasissymbol und dem ersten Hilfsstartbasissymbol ein zweites Hilfsstartbasissymbol gesucht wird.procedure according to claim 6 , characterized in that starting from the starting base symbol and the first auxiliary starting base symbol, a second auxiliary starting base symbol is searched for in a direction perpendicular to a connection between the starting base symbol and the first auxiliary starting base symbol. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass ausgehend von dem Startbasissymbol alle unmittelbar benachbarten Basissymbole (20) des Startbasissymbols auf Basis der Verbindung zwischen dem Startbasissymbol und dem ersten Hilfsstartbasissymbol und der Verbindung zwischen dem Startbasissymbol und dem zweiten Hilfsstartbasissymbol durch Linearkombination der Verbindungen gesucht werden.procedure according to claim 7 , characterized in that starting from the starting base symbol, all immediately adjacent base symbols (20) of the starting base symbol are searched for on the basis of the connection between the starting base symbol and the first auxiliary starting base symbol and the connection between the starting base symbol and the second auxiliary starting base symbol by linear combination of the connections. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass ausgehend von dem Startfeld (28) und/oder den validen Basissymbolen (20) benachbarte Basissymbole (20) gesucht werden, welche mindestens zwei valide Nachbarn in den Hauptrichtungen oder in den Diagonalrichtungen aufweisen.Method according to one of the preceding claims, characterized in that starting from the starting field (28) and/or the valid basic symbols (20), adjacent basic symbols (20) are searched for which have at least two valid neighbors in the main directions or in the diagonal directions. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass ein Lesefeld (22) in dem Kamerabild und/oder flächigen Punktraster definiert und eine dazu korrespondierende Basissymbol-Matrix gebildet wird, wobei jedem Punkt im Lesefeld (22) 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 (20) 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.Method according to one of the preceding claims, characterized in that a reading field (22) is defined in the camera image and/or planar dot matrix and a basic symbol matrix corresponding thereto is formed, wherein each point in the reading field (22) is assigned an entry in the basic symbol matrix, wherein the position and the in particular standardized area or the datum of the basic symbols (20) are entered in the basic symbol matrix, wherein the rough position of the coordinate system of the dot matrix and/or of at least one basic symbol in the code arrangement is determined as the two degrees of freedom on the basis of the basic symbol matrix. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass auf Basis der Basissymbol-Matrix eine erste Geradenfunktion mit einem ersten Funktionsargument in einem Koordinatensystem des Kamerabilds für eine erste Gerade abgeleitet wird, wobei die erste Gerade in dem Koordinatensystem der Codeanordnung (2) parallel zu der ersten Hauptrichtung ausgerichtet ist, wobei durch Änderung des ersten Funktionsarguments die erste Gerade parallel in dem Koordinatensystem der Codeanordnung (2) in der zweiten Hauptrichtung verschoben wird, und/oder eine zweite Geradenfunktion mit einem zweiten Funktionsargument in einem Koordinatensystem des Kamerabilds für eine zweite Gerade abgeleitet wird, wobei die zweite Gerade in dem Koordinatensystem der Codeanordnung (2) parallel zu der zweiten Hauptrichtung ausgerichtet ist, wobei durch Änderung des zweiten Funktionsarguments die zweite Gerade parallel in dem Koordinatensystem der Codeanordnung (2) in der ersten Hauptrichtung verschoben wird, wobei mindestens ein weiterer Freiheitsgrad der Kamera auf Basis von mindestens einer der Geradenfunktionen ermittelt wird.Method according to one of the preceding claims, characterized in that on the basis of the basic symbol matrix a first straight line function with a first function argument is derived in a coordinate system of the camera image for a first straight line, wherein the first straight line in the coordinate system of the code arrangement (2) is aligned parallel to the first main direction, wherein by changing the first function argument the first straight line is shifted parallel in the coordinate system of the code arrangement (2) in the second main direction, and/or a second straight line function with a second function argument is derived in a coordinate system of the camera image for a second straight line, wherein the second straight line in the coordinate system of the code arrangement (2) is aligned parallel to the second main direction, wherein by changing the second function argument the second straight line is shifted parallel in the coordinate system of the code arrangement (2) in the first main direction, wherein at least one further degree of freedom of the camera is determined on the basis of at least one of the straight line functions. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass in dem Kamerabild ein Referenzpunkt angeordnet ist, mit einer ersten Achsenschnittpunktfunktion in dem Koordinatensystem des Kamerabilds von einer ersten Geraden, wobei die erste Gerade in dem Koordinatensystem (XC, YC) der Codeanordnung parallel zu der ersten Hauptrichtung (2) des Punktrasters ausgerichtet ist, mit einem ersten Funktionsargument, wobei durch Änderung des ersten Funktionsarguments die erste Gerade in dem Koordinatensystem (XC, YC) der Codeanordnung parallel in der zweiten Hauptrichtung verschoben wird, wobei die erste Achsenschnittpunktfunktion in Abhängigkeit des ersten Funktionsarguments einen ersten Achsenschnittpunkt entlang einer ersten Achse des Koordinatensystems (XI, YI) des Kamerabilds bestimmt, wobei die erste Achse durch den Referenzpunkt verläuft, mit einer zweiten Achsenschnittpunktfunktion in dem Koordinatensystem des Kamerabilds von einer zweiten Geraden, wobei die zweite Gerade in dem Koordinatensystem (XC, YC) der Codeanordnung parallel zu der zweiten Hauptrichtung ausgerichtet ist, mit einem zweiten Funktionsargument, wobei durch Änderung des zweiten Funktionsarguments die zweite Gerade in dem Koordinatensystem (XC, YC) der Codeanordnung parallel in der ersten Hauptrichtung verschoben wird, wobei die zweite Achsenschnittpunktfunktion in Abhängigkeit des zweiten Funktionsarguments einen zweiten Achsenschnittpunkt entlang einer zweiten Achse des Koordinatensystems (XI, YI) des Kamerabilds bestimmt, wobei die zweite Achse durch den Referenzpunkt verläuft, wobei auf Basis der Achsenschnittpunktfunktionen das erste und das zweite Funktionsargument derart bestimmt wird, dass der Referenzpunkt den ersten und den zweiten Achsenschnittpunkt bildet, wobei auf Basis des ersten und des zweiten Funktionsarguments und der Grobposition die Feinposition des Referenzpunkts in dem Koordinatensystem (XC, YC) der Codeanordnung (2) in der Ebene der Codeanordnung (2) als mindestens ein weiterer Freiheitsgrad bestimmt wird.Method according to one of the preceding claims, characterized in that a reference point is arranged in the camera image, with a first axis intersection function in the coordinate system of the camera image of a first straight line, wherein the first straight line in the coordinate system (X C , Y C ) of the code arrangement is aligned parallel to the first main direction (2) of the dot matrix, with a first function argument, wherein by changing the first function argument the first straight line in the coordinate system (X C , Y C ) of the code arrangement is shifted parallel in the second main direction, wherein the first axis intersection function determines a first axis intersection along a first axis of the coordinate system (X I, Y I ) of the camera image depending on the first function argument, wherein the first axis runs through the reference point, with a second axis intersection function in the coordinate system of the camera image of a second straight line, wherein the second straight line in the coordinate system (X C , Y C ) of the code arrangement is aligned parallel to the second main direction, with a second function argument, wherein by changing the second function argument, the second straight line in the coordinate system (X C , Y C ) of the code arrangement is shifted parallel in the first main direction, wherein the second axis intersection function determines a second axis intersection along a second axis of the coordinate system (X I, Y I ) of the camera image as a function of the second function argument, wherein the second axis runs through the reference point, wherein on the basis of the axis intersection functions the first and the second function argument are determined such that the reference point forms the first and the second axis intersection, wherein on the basis of the first and the second function argument and the coarse position the fine position of the reference point in the coordinate system (X C , Y C ) of the code arrangement (2) in the plane of the code arrangement (2) is determined as at least one further degree of freedom. Verfahren nach einem der Ansprüche 11 oder 12, 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.Method according to one of the Claims 11 or 12 , characterized in that the first and/or the second function argument is determined such that the first and the second straight lines intersect the reference point, wherein an angle of rotation (phiz) of the camera about the optical axis is derived as a degree of freedom of the camera (1) relative to the code arrangement (2) on the basis of the first and/or the second straight line. 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; - 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.Method according to one of the preceding claims, characterized in that a or the reference point is arranged in the camera image, the reference point being formed as an intersection point of the optical axis of the camera with the image sensor and/or the camera image, the following values being determined as characteristic values from the camera image in the reference point: - a or the angle of rotation (phiz) of the camera about the optical axis of the camera; - a first local grid dimension (gc0) of the point grid in the camera image in the first main direction and/or a second local grid dimension (gc1) of the point grid in the camera image in the second main direction; - a first local angular divergence (dalphac0) of the dot matrix in the camera image in the first main direction, wherein the first local angular divergence (dalphac0) describes the difference angle between two adjacent straight lines in the first main direction in the dot matrix - a second local angular divergence (dalphac1) of the dot matrix in the camera image in the second main direction, wherein the second local angular divergence (dalphac1) describes the difference angle between two adjacent straight lines in the second main direction in the dot matrix; wherein the following further three degrees of freedom of the camera relative to the code arrangement are determined on the basis of the characteristic values: - a distance (rz) between the code arrangement and the camera; - two independent pitch angles (phix; phy) of the optical axis to the code arrangement. 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.Electronic control unit or automation arrangement with the electronic control unit, wherein the control unit is designed in terms of programming and/or circuitry to carry out the method according to one of the preceding claims. Computerprogramm, wobei das Computerprogramm ausgebildet ist, das Verfahren nach einem der Ansprüche 1 bis 14 durchzuführen, wenn das Computerprogramm auf einem Computer oder auf Steuereinheit oder der Automatisierungsanordnung nach Anspruch 15 ausgeführt wird.Computer program, wherein the computer program is designed to carry out the method according to one of the Claims 1 until 14 to be carried out if the computer program is installed on a computer or on a control unit or the automation device according to claim 15 is executed. Maschinenlesbares Speichermedium, wobei auf dem Speichermedium das Computerprogramm nach Anspruch 16 gespeichert ist.Machine-readable storage medium, on which the computer program is stored according to claim 16 is stored.
DE102023203159.0A 2023-04-05 2023-04-05 Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement Pending DE102023203159A1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE102023203159.0A DE102023203159A1 (en) 2023-04-05 2023-04-05 Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement
PCT/EP2024/057152 WO2024208574A1 (en) 2023-04-05 2024-03-18 Method for ascertaining at least one degree of freedom of a camera, computer program, machine-readable storage medium, and electronic control unit or automation assembly
KR1020257036963A KR20250170656A (en) 2023-04-05 2024-03-18 Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium, and electronic control unit or automation device
EP24713422.4A EP4690114A1 (en) 2023-04-05 2024-03-18 Method for ascertaining at least one degree of freedom of a camera, computer program, machine-readable storage medium, and electronic control unit or automation assembly
CN202480024504.9A CN120958484A (en) 2023-04-05 2024-03-18 Methods, computer programs, machine-readable storage media, and electronic control units or automated devices for determining at least one degree of freedom of a camera.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102023203159.0A DE102023203159A1 (en) 2023-04-05 2023-04-05 Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement

Publications (1)

Publication Number Publication Date
DE102023203159A1 true DE102023203159A1 (en) 2024-10-10

Family

ID=90417450

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023203159.0A Pending DE102023203159A1 (en) 2023-04-05 2023-04-05 Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement

Country Status (5)

Country Link
EP (1) EP4690114A1 (en)
KR (1) KR20250170656A (en)
CN (1) CN120958484A (en)
DE (1) DE102023203159A1 (en)
WO (1) WO2024208574A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040942A1 (en) * 2004-12-23 2008-02-21 Renishaw Plc Position Measurement
US20170068879A1 (en) * 2015-09-03 2017-03-09 Hexagon Technology Center Gmbh Absolute surface coding / encoding an area in absolute terms
DE102016216221A1 (en) 2016-08-29 2018-03-01 Robert Bosch Gmbh Two-dimensional code arrangement, working arrangement and method for operating the working arrangement
DE102016216196A1 (en) 2016-08-29 2018-03-01 Robert Bosch Gmbh Sensor system with an optical sensor unit and an automation system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994008314A1 (en) * 1992-09-28 1994-04-14 Olympus Optical Co., Ltd. Dot code and information recording/reproducing system for recording/reproducing dot code
SE517445C2 (en) * 1999-10-01 2002-06-04 Anoto Ab Position determination on a surface provided with a position coding pattern

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040942A1 (en) * 2004-12-23 2008-02-21 Renishaw Plc Position Measurement
US20170068879A1 (en) * 2015-09-03 2017-03-09 Hexagon Technology Center Gmbh Absolute surface coding / encoding an area in absolute terms
DE102016216221A1 (en) 2016-08-29 2018-03-01 Robert Bosch Gmbh Two-dimensional code arrangement, working arrangement and method for operating the working arrangement
DE102016216196A1 (en) 2016-08-29 2018-03-01 Robert Bosch Gmbh Sensor system with an optical sensor unit and an automation system

Also Published As

Publication number Publication date
WO2024208574A1 (en) 2024-10-10
CN120958484A (en) 2025-11-14
EP4690114A1 (en) 2026-02-11
KR20250170656A (en) 2025-12-05

Similar Documents

Publication Publication Date Title
EP3290861B1 (en) Sensor unit with an optical sensor unit and automation system
EP2417561B1 (en) Two-dimensional code and method
DE112010005008B4 (en) System and method for determining camera calibration in runtime
DE102015011914B4 (en) Contour line measuring device and robotic system
DE112012005350B4 (en) Method of estimating the pose of an object
DE102016120775B4 (en) System and method for detecting lines in an image with a vision system
DE69431677T2 (en) Procedure and method for geometric measurement
DE102017116952A1 (en) SYSTEM AND METHOD FOR IMPROVED SCORING OF 3D LAYERS AND REMOVAL OF DISTURBANCES IN 3D IMAGE DATA
DE102018109774A1 (en) Image processing system, image processing device and image processing program
DE112010004767T5 (en) Point cloud data processing device, point cloud data processing method and point cloud data processing program
DE102016013274A1 (en) IMAGE PROCESSING DEVICE AND METHOD FOR RECOGNIZING AN IMAGE OF AN OBJECT TO BE DETECTED FROM ENTRY DATA
DE102006055758B4 (en) Method for calibrating cameras and projectors
DE102016216221A1 (en) Two-dimensional code arrangement, working arrangement and method for operating the working arrangement
DE102017113615A1 (en) System, method and marker for determining the position of a moving object in space
DE102019201526A1 (en) Method and system for detecting and measuring the position of a component relative to a reference position and the displacement and rotation of a component moving relative to a reference system
DE102018123393A1 (en) Detection of parking areas
EP2627968A1 (en) Device and method for three-dimensional image capturing
DE102023203164A1 (en) Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement
DE102020119243A1 (en) Method and system or device for recognizing an object in an electronic image
WO2020178198A1 (en) Estimating the movement of an image position
DE102023203159A1 (en) Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement
DE102023203160A1 (en) Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement
DE102023203165A1 (en) Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement
DE102023203162A1 (en) Method for determining at least one degree of freedom of a camera, computer program, machine-readable storage medium and electronic control unit or automation arrangement
DE19632058C1 (en) Opto electronic identification or target element

Legal Events

Date Code Title Description
R163 Identified publications notified