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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30204—Marker
- G06T2207/30208—Marker matrix
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30244—Camera 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
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
Die Druckschrift
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
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
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
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
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
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).
- 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.
- 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.
- 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 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 einemCoderastermaß von 2,5mm
- aktuell 1 µm und 0,01 ° Wiederholbarkeit (
- - 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
- - 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.
- - 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:
- a) Die Mittelpunkte der Basissymbole bilden in der Codeebene ein zweidimensionales Punktraster mit regelmäßig angeordneten geradlinigen Reihen und Spalten
- b) Die Kamera bildet die Codeebene perspektivisch verzerrt auf dem Bildsensor ab. Im Kamerabild erscheinen die Reihen im Allgemeinen als aufgefächerte Linien, die einen gemeinsamen Fluchtpunkt besitzen. Gleiches gilt auch für die Spalten.
- c) Durch Verzeichnung des Objektives erscheinen die Reihen und Spalten im Kamerabild als gekrümmte Linien.
- a) The centers of the basic symbols form a two-dimensional dot grid in the code plane with regularly arranged straight rows and columns
- b) The camera images the code plane on the image sensor with a distorted perspective. In the camera image, the rows generally appear as fanned-out lines that have a common vanishing point. The same applies to the columns.
- c) Due to distortion of the lens, the rows and columns in the camera image appear as curved lines.
Verfahrensschritte im Kamera-Koordinatensystem:
- a) Durch Rektifizierung wird die Verzeichnung des Objektives mathematisch eliminiert, die gekrümmten Linien werden in gerade Linien überführt.
- b) Durch lineare Interpolation werden Geraden an die Reihen angepasst und mit einem ganzzahligen Index als Funktionsargument entsprechend ihrer Abfolge nummeriert. Sie bilden ein erstes Geradenbündel. Sinngemäß wird mit den Spalten verfahren, sie bilden ein zweites Geradenbündel.
- c) Jede Gerade wird durch einen Geradenwinkel und einen Achsenabschnittswert beschrieben. Die Geradenwinkel eines Bündels bilden eine Zahlenfolge, die durch quadratische Interpolation angenähert wird. Als Funktionsargument dient der ganzzahlige Geradenindex. Das Polynom besitzt drei Interpolationsparameter. Sinngemäß wird mit dem Achsenabschnittswert verfahren, woraus sich drei weitere Interpolationsparameter ergeben. Jedes Geradenbündel wird also von sechs Interpolationsparametern vollständig und kompakt beschrieben.
- d) Durch Einsetzen rationaler Funktionswerte in die Interpolationsfunktion können auch Geraden berechnet werden, die zwischen zwei Reihen oder Spalten liegen.
- a) By rectification, the distortion of the lens is mathematically eliminated, the curved lines are converted into straight lines.
- 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.
- 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.
- 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.
- 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:
Insbesondere wird der zweite Nickwinkel über die folgende Gleichung bestimmt:
Die Gleichung für den Abstand rz zwischen der Codeanordnung und der Kamera ist insbesondere eine Funktion wie folgt:
Mit
- b: Bildweite der Kamera im [m]
- gC0, gC1: lokales Rastermaß des Punktrasters im Kamerabild, in [m]
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:
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 inder 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.
-
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 the8 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
Die Codeanordnung 2 dient gleichzeitig als analoger und digitaler Maßstab in zwei Dimensionen, X und Y. Sie besteht aus Symbolen, die in einem regelmäßigen Raster angeordnet sind. Bevorzugt ist es ein binärer Code mit zwei Symbolen, die in einem quadratischen Raster angeordnet sind: einem kleinen runden Punkt (Dot) für eine digitale 0 und einem großen Dot für eine 1. Der Dot-Typ beinhaltet die digitale Information, während der Dot-Mittelpunkt die analoge Information beinhaltet.
Die Kamera 1 erfasst einen Ausschnitt der Codeanordnung 2 und überträgt das Kamerabild 3 an einen Rechner oder eine beliebige Datenverarbeitungseinrichtung. Der Algorithmus wählt ein Lesefeld in dem Kamerabild 3 mit der Mindestgröße einer 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
Das Verfahren zur Positionserfassung umfasst folgende Schritte (siehe
- 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.
- 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
0 and 1binary digits - 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
- 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):
Die Ablaufpositionen II - V besitzen folgende besondere Merkmale. Ablaufposition II:
- a) Schnelles Auffinden der
Dots im Kamerabild 3 durch mathematische Modellierung des perspektivisch verzerrten Coderasters in derCodeanordnung 2. Das Verfahren stützt sich auf die bereits gemessenen Dot-Positionen. → Vorteile: schnelles Auffinden der Dots, die zeitaufwändige Suche im Pixelraster entfällt. Robust gegenüber Störungen im Kamerabild: Dots werden als „nicht valide“ klassifiziert, falls sie an der erwarteten Position nicht gefunden werden. Nicht valide Dots werden nicht weiterverarbeitet, behindert jedoch im Allgemeinen nicht den weiteren Ablauf - b) Stack-basierter Algorithmus zur schnellen und robusten Suche der Dots im
Coderaster der Codeanordnung 2. → Vorteil: fehlertolerant, da das Suchverfahren bei fehlerhaften Dots nicht abbricht, sondern diese allseitig umschließt. Präzise (hohe Ausbeute an gefundenen Dots pro Lesefeld) und robust (durch priorisierte Erfassung von Dots mit vielen validen Nachbarn) - c) Funktion Center_Pos: schnelles Verfahren zur Subpixel-genauen Positions- und Flächenbestimmung von Dots im Kamerabild → Vorteil: schnell (wenig Pixelzugriffe), genau (durch Subpixeling), robust (Verwendung dynamischer Kontrastschwellen statt Grauwertschwellen)
- d) Rektifizierung der Dot-Positionen anstatt des gesamten Kamerabildes. → Vorteil: schnell (Rektifizierung von nur 225 Positionen statt aller 40.000 Pixel im Kamerabild)
- e) Lokale Normierung der Dot-Fläche auf die Fläche der Dot-Rasterzelle. Zur Klassifizierung der Dots wird die normierte Dot-Fläche verwendet. → Vorteil: robustes Lesen des digitalen Codes (Klassifikation der Dots ist tolerant gegen perspektivische Verzerrung und gegen eine Änderung des Abstandes zwischen Kamera und Dot)
- f) Redundantes Lesen der digitalen Codes, Fehlererkennung und z.T. Fehlerkorrektur → Vorteil: Geringe Fehlerrate bei Störungen im Kamerabild, korrektes Lesen trotz nicht valider Dots.
- a) Fast location of the dots in the
camera image 3 by mathematical modeling of the perspective-distorted code grid in thecode 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 - 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) - 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)
- 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)
- 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)
- 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).
- 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.
- 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.
- • 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
- ◯ Mittelung über zahlreiche Dots pro
- • 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.
- • 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
- ◯ Averaging over numerous dots per
- • 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.
- • 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
The
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 einWeitwinkelobjektiv 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.
- • 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 aslens 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 ofcamera 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
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
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
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
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
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
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
In
- B
- Bildgröße
- b
- Bildweite
- G
- Gegenstandsgröße
- g
- Gegenstandsweite
- f
- Brennweite
- B
- image size
- b
- focal length
- G
- object size
- G
- object range
- f
- focal length
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
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
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
Das Koordinatensystem für das Abbildungsmodell in
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 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
Ausgehend von dem Strahlensatz und der geometrischen Optik kann die Abbildung eines Punktes (x0, y0) in der Codeebene auf einen Punkt (BX, BY) in der Bildebene mathematisch als Abbildungsgleichung im Kamera-Koordinatensystem 17 beschrieben werden:
- •
Optisches Zentrum 13 des Objektivs 9: - • Zweidimensionale Koordinaten von Dots oder Punkten in der Ebene der Codeanordnung in Koordinatensystem 16 der Codeanordnung 2
mit dem Flächenschwerpunkt eines ausgewählten Basissymbols und i, j ganzen Zahlen - • Räumliche Koordinaten von Dots oder Punkten in dem Kamerakoordinatensystem 17:
mit der Rotationsmatrix für Vektoren im dreidimensionalen Raum: Bildpunkt in der virtuellen Bildebene im Kamera-Koordinatensystem 17: - • Sichtstrahl von
- • Schnittpunkt des Sichtstrahls mit der virtuellen Bildebene 18:
- • Virtuelles Bild des Punkts oder Dots:
- • Für das reale Abbild muss das negative Vorzeichen weggelassen werden:
Für den Schnittpunkt 4 mit dem Index (i=0; j=0) erhält man die Bildkoordinaten im realen Bild:
- •
Optical center 13 of the lens 9: - • Two-dimensional coordinates of dots or points in the plane of the code arrangement in coordinate system 16 of code arrangement 2
with the centroid of a selected base symbol and i, j integers - • Spatial coordinates of dots or points in the camera coordinate system 17:
with the rotation matrix for vectors in three-dimensional space: Image point in the virtual image plane in the camera coordinate system 17: - • Visibility of
- • Intersection of the visual ray with the virtual image plane 18:
- • Virtual image of the point or dot:
- • 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:
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
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
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
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
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
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.
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
In
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
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
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
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
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
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
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-
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
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
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
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
In
Der Algorithmus zur Positionsbestimmung ist in
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
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
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
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
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 (
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 (
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
In dem Unterschritt 220 werden die Bildhelligkeit B und der Kontrast C abgeschätzt:
In dem Unterschritt 230 werden die Bildhelligkeit B und der Kontrast C mit den folgenden Bedingungen bewertet:
Sollte eine der Bedingungen erfüllt sein, wird die weitere Auswertung abgebrochen und das Ergebnis als nicht valide klassifiziert.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) dieDots 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 derMatrix 29 den Reihen und Spalten der Codeanordnung 2 zugeordnet sind. Zu jedem Dot werden Kennwerte ermittelt.
- The aim is to identify, measure and classify the dots as
basic symbols 20 in areading 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 thematrix 29 are assigned to the rows and columns of thecode 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
- • 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
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.
In Teilschritt 330 werden die Mittelpunktspositionen und Flächen der Dots vermessen.In
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
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
Zu Teilschritt 310 - Ermittlung der StartbasisTo substep 310 - Determination of the starting base
Der Ablauf zur Bestimmung der Startbasis 28 ist im Flussdiagramm
Unterschritt 310.1: Zunächst wird eine Startposition 30 zur Suche des ersten Dots der Startbasis 28 festgelegt.
Unterschritt 310.2: Ausgehend von der Startposition
Unterschritt 310.3: Anschließend wird ausgehend von
Unterschritt 310.4: Danach wird ein Verbindungsvektor
Unterschritt 310.5: Ausgehend von
Unterschritt 310.6: Die drei Punkte
Unterschritt 310.7: Falls es sich um ein linkshändisches Koordinatensystem handelt
Unterschritt 310.8: Durch Linearkombination der Vektoren
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
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
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
Zu diesem Zweck wird die nachfolgend beschriebene Funktion Center_Pos eingesetzt, die auf minimale Anzahl von Pixel-Zugriffen optimiert ist.
Bei Aufruf der Funktion Center_Pos wird die geschätzte Mittelpunktsposition des Dots
- a) Mit einem grauwertbasierten zweidimensionalen Gradientenverfahren wird aus
ein optimierter Startpunkt berechnet, der näher am Zentrum des Dots liegt. Für die Berechnung des Gradienten sind lediglich 4 Pixel-Zugriffe im Umfeld des Startpunktes erforderlich. - b) Ausgehend vom optimierten Punkt
wird in +X- und -X-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstandvon zum rechten Rand ist r0, zum linken Rand r1. - c)
wird auf der X-Achse in Bezug auf die linke und rechte Kante zentriert, daraus ergibt sich der optimierte Punkt - d) Ausgehend vom Punkt
wird in +Y- und -Y-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstandvon zum oberen Rand ist r2, zum unteren Rand r3. - e)
wird auf der Y-Achse in Bezug auf die obere und untere Kante zentriert, daraus ergibt sich der optimierte Punkt - f)Ausgehend vom Punkt
wird erneut in +X- und -X-Richtung mit Methoden zur Kantenerkennung der Rand des Dots gesucht. Der Abstandvon zum rechten Rand ist r4, zum linken Rand r5. - g)
wird auf der X-Achse in Bezug auf die linke und rechte Kante zentriert. Daraus ergibt sich der optimierte Punkt der als Mittelpunktsposition des Dots mit Subpixel-Genauigkeit ausgegeben wird. - h) Die Fläche des Dots wird als Fläche des umschreibenden Rechtecks berechnet, multipliziert mit
dem Faktor zur Umrechnung der quadratischen Fläche in eine Kreisfläche bzw. elliptische Fläche:
- a) Using a gray value based two-dimensional gradient method,
an optimized starting point 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 necessary. - b) Starting from the optimized point
The edge of the dot is searched for in the +X and -X directions using edge detection methods. The distance from to the right edge is r 0 , to the left edge r 1 . - c)
is centered on the X-axis with respect to the left and right edges, resulting in the optimized point - d) Starting from the point
The edge of the dot is searched for in the +Y and -Y directions using edge detection methods. The distance from to the upper edge is r 2 , to the lower edge is r 3 . - e)
is centered on the Y-axis with respect to the upper and lower edges, resulting in the optimized point - f)Starting from the point
The edge of the dot is searched again in the +X and -X directions using edge detection methods. The distance from to the right edge is r 4 , to the left edge r 5 . - G)
is centered on the X-axis with respect to the left and right edges. This results in the optimized point 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
to convert the square area into a circular area or elliptical area:
Als Teil des zuvor beschriebenen Ablaufes besteht außerdem die Herausforderung, im Kamerabild 3 den zu einer Startposition
- Startposition
- rmin
- minimaler Suchradius
- rmax
- maximaler Suchradius
- 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.
- 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
Falls ND = false (
If ND = false (
Teilschritt 320 - Erfassen der Dots im LesefeldSubstep 320 - Detecting the dots in the reading field
Das Flussdiagramm in
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
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
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
Unterschritt 320.2: Für jeden bekannten Dot werden die Vektoren Dot.
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
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
Zu Beginn der Suche sind nur die 3x3 Dots der Startbasis valide. Die einzigen unbekannten Dots mit 2 oder mehr validen Nachbarn sind in
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. und Dot. 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.
- • 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 readingfield 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. and Dot. 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
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.
Das Zentrum der Verzeichnung
- Position in Bezug auf das Zentrum der Verzeichnung
- Abstand zum Zentrum der Verzeichnung
- position relative to the center of distortion
- distance to the center of distortion
Die Verzeichnung ändert nur die Länge des Vektors
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
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.
Die normierte Fläche des Dots wird folgendermaßen berechnet:
The normalized area of the dot is calculated as follows:
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.
- • 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
Die Dot-Matrix 29 enthält die folgenden Informationen:
Das Flussdiagramm dazu ist in
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
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.
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
- • 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
- - Es wird ein wird ein beliebiger Abschnitt mit t=24 aufeinanderfolgenden Bits ausgewählt und auf Vollständigkeit geprüft: 000100000000001010100000
- - 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.
- 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
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
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.
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
Jede Ausgleichsgerade i des bunches k = 0..1 wird durch folgende Parameter beschrieben (
- ◯ SXki Schnittpunkt mit der XI-Achse
- ◯ SYki Schnittpunkt mit der YI-Achse
- ◯ αki Winkel der Gerade i im Bildfeld
- ◯ 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
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
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
- • 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:
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 amMittelpunkt 32 des Lesefeldes 22 befindet. - • Falls der Winkel der Referenz-Geraden im Bereich
oder liegt (Sektoren auf der XI-Achse in38a) ), 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.
- • In
bundle 1, a reference line is selected which is located close to thecenter 32 of the readingfield 22. - • If the angle of the reference line is in the range
or (sectors on the X I axis in38a) ), 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
- • 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
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:
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 (
Im Bild 39 sind die Mittelpunktsgeraden für beide Geradenbündel k = 0 und k = 1 dargestellt.
Es gilt
It is
Durch geeignete Wahl der Interpolationsparameter (i, j) wird der Achsschnittpunkt für beide Mittelpunktsgeraden in den Bildmittelpunkt
Die Lösung der Gleichungen führt auf die gesuchten Bruchteile der Geradenindizes rX,fract und rY,fract:
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:
b) Geradenwinkel im Bildmittelpunkt: αc0, αc1 (siehe
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:
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:
Durch Ableiten der Bild-Koordinaten BX und BY nach der Coderaster-Koordinate x0 erhalten wir
Die Steigung einer Gerade des Geradenbündels bunch1 im Kamerabild ist
Wir betrachten die Steigung im Zentrum bei y0 = 0 und erhalten m1|y
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
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
Durch Einsetzen dieses Terms in die Gleichung für BX erhalten wir
Der Rasterabstand gC0 entspricht der Ableitung
Daraus folgt
It follows
Durch Einsetzen der Matrixelemente Rij erhalten wir die Gleichung für rZ00 :
In gleicher Weise wird die Position rZ01 für rot_status=1 berechnet, Ansatz:
Die Positionen rZ1k werden aus gC1 abgeleitet, Ansatz für
Die Ergebnisse sind in Tabelle 10.1 zusammengefasst. Tabelle: Berechnung der Kamera-Positionswerte rZik
Durch Einführung des Winkels
Um nur einen Wert rZ pro Bild auszugeben, wird der Mittelwert beider z-Werte berechnet:
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
Daraus berechnen wir den Geradenwinkel α1(y0) = tan(m1(y0)) und leiten diesen nach
- ▪ Im Bildzentrum y0 = 0 ist die Winkeldivergenz
- ▪ Gleichsetzen mit der gemessenen Winkeldivergenz dαC1 ergibt die Gleichung für
- ▪ At the image center y 0 = 0 the angular divergence is
- ▪ Equating with the measured angular divergence dα C1 gives the equation for
In gleicher Weise ergibt sich der Winkel φX aus der Steigung m0 einer Geraden in bunch0. Analog zur Rechnung in 600 erhalten wir
- ▪ Wir leiten den Winkel α0(x0) = tan(m0(x0)) nach
ab und erhalten die Winkeldivergenz - ▪ Im Bildzentrum x0 = 0 ist die Winkeldivergenz
- ▪ Gleichsetzen mit der gemessenen Winkeldivergenz dαC0 ergibt die Gleichung für
- ▪ We derive the angle α 0 (x 0 ) = tan(m 0 (x 0 )) according to
and obtain the angle divergence - ▪ At the image center x 0 = 0 the angular divergence is
- ▪ Equating with the measured angular divergence dα C0 gives the equation for
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:
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
- 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
- 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
- • 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 thecode 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 theimage 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 ofcode 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)
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)
| 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)
| 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 |
-
2023
- 2023-04-05 DE DE102023203159.0A patent/DE102023203159A1/en active Pending
-
2024
- 2024-03-18 CN CN202480024504.9A patent/CN120958484A/en active Pending
- 2024-03-18 KR KR1020257036963A patent/KR20250170656A/en active Pending
- 2024-03-18 WO PCT/EP2024/057152 patent/WO2024208574A1/en not_active Ceased
- 2024-03-18 EP EP24713422.4A patent/EP4690114A1/en active Pending
Patent Citations (4)
| 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 |