Patent Description:
Pixel-based encoders offer several advantages over traditional optical encoders, such as higher resolution, higher accuracy, much more robustness, higher flexibility and the possibility of multi-dimensional 2D, 3D,. 6D position measurements just to mention a few. While traditional optical encoders use only a few photoreceptors, pixel-based encoders use tens- or hundreds of thousands of photoreceptors (pixels). The large number of pixels allow pixel-based encoders to go beyond the fundamental limits of traditional encoders in terms of most important encoder specifications.

In the context of the present application, pixels may have any type of sensor elements (e.g. photon, electron, radiation, or e-beam sensor elements).

Prior art solutions use pixel-based encoders with two-dimensional positioning codes consisting of a two-dimensional regular (or in other word repetitive) pattern and an absolute positioning code which is interlaced with the two-dimensional regular pattern. The absolute positioning code can be read for establishing the absolute code of the current position, while the two-dimensional regular pattern serves for enhancing resolution; the position of the two-dimensional regular pattern with respect to the pixel-arrangement of the encoder can be determined and thus the resolution highly enhanced. The combination of two, i.e. an absolute code and a code pattern position with respect to the two-dimensional arrangement of the pixels can be used together to measure precisely the absolute position of the positioning code with respect to the detector device. The regular pattern enables a high-spatial-resolution, short-range (local or non-absolute) measurement, while absolute positioning code enables a low-spatial-resolution, long-range (global or absolute) measurement. The basic idea of these prior art solutions is to combine the advantages of the two, thereby providing a combined code for high-spatial-resolution, long-range (global or absolute) measurement. Such solutions are disclosed e.g. in <CIT>, <CIT>, <CIT> and <CIT>.

The disadvantages of the above prior art solutions are the following. As the absolute code occupies the space between the spacings of the regular pattern, this positioning code has a relatively low signal-to-noise ratio. Namely, position measurement of the two-dimensional regular pattern with respect to the pixel arrangement of the encoder starts with a horizontal and vertical summing of the pixel values (or averaging, which is considered an equivalent in the context of the present application), and in this way the 2D image is reduced to two vectors. The position is then determined on the basis of the values of the two vectors. As the absolute code appears within the spacings, thereby lowers the accuracy of determining the position of the regular pattern. Another disadvantage is that the interlaced pattern results in a relatively "perforated" mask, the layout of which is hardly compatible with metal mask and other mask technologies. The minimum dimensions of separations between holes (pitch) impose limitations on the pattern and reduce precision and resolution.

In addition to finding a more favourable code pattern, the major challenge of pixel-based encoders with respect to traditional encoders is the speed, or latency of the encoder, because the computing- and power needs to process a large number of pixels are orders of magnitudes beyond that of conventional encoders. Also the attainable frame-rates of conventional image sensors are orders of magnitude below than needed for high-speed optical encoder applications. The reading of the absolute code and the detecting of the position of the pattern with respect to the pixel arrangement necessitates combined and complicated reading steps.

<CIT> discloses a detection device enabling a combined reading of pixels, but this device enables accessing row-sums and column-sums of pixels only, and information carried by individual pixels is lost, thereby it is not suitable to read the absolute code. Namely, all pixels in a row are connected by one wiring and all pixels in a column are connected by one wiring. Connected/wired pixels become 'one long pixel', one electrical node, and the photo-current of all connected/wired pixels is summed up. Wiring makes it impossible to access/read-out individual pixels. Image variations along the wirings are not detectable. In an MxN wired pixel array there are only M+N effective pixels: M long pixels in one dimension and N long pixels in the other dimension. In a typical example, M=N=<NUM>, M*N=256x256=<NUM>,<NUM>, M+N=<NUM>+<NUM>=<NUM>. Therefore the wiring reduces the effective pixels from <NUM>,<NUM> to <NUM>, only row-sums and column-sums can be accessed, information carried by individual pixels is lost. Furthermore, this known detection device only enables sequential read-out by means of its shift register, integrator, CDS, and A/D converter. With sequential read-out the reachable frame-rate is strongly reduced; <NUM> is reported in many related publications, while a <NUM>-times higher frame-rate is generally desired.

Further detector devices are disclosed in <CIT> and <CIT>.

There is a need to provide technical solutions enabling.

There is also a need to provide a positioning code resulting in a higher signal-to-noise ratio row-sum and column-sum and enabling the lowering of the pitch still being compatible with masking technologies.

The above objectives have been achieved by the positioning code according to claim <NUM> and by the position detecting method according to claim <NUM>.

The invention provides a method to read out the pixel array at the highest possible speed, by introducing simultaneous row-wise and column-wise parallelism, to calculate row-sums (or row-mean), column-sums (or column-mean) and to facilitate fast decoding of the absolute code. The novel image sensor, in which row-wise and column-wise operations and readout are made in parallel, is a concept which allows fast-enough image readout and processing for high-speed multidimensional encoders. The inventive positioning code is quasi-periodic, and enables to read the absolute code information, and at the same time to enhance resolution by enabling the precise measurement of the position of the pattern with respect to the pixel arrangement of the detector device applied.

The 2D position (or phase, in case of a periodic pattern) of the code pattern can be measured based on the sum (or mean) of the column-wise pixel intensities and on the sum (or mean) of the row-wise pixel intensities. Absolute positioning code information can be obtained by decoding the code, which is encoded either in the shape parameters of the markings (e.g. horizontal, vertical or diagonal marking orientations, marking widths, marking heights, or any other detectable parameters) and/or in the sizes of the spacings between the markings. Preferred embodiments enable to generate the row-sum and the column-sum in one step, locating the rows and columns of the markings in the pattern at the same time, and to read the markings in a quick way in the located rows and columns.

An example of the absolute position is given in the following. A 2D code according to e.g. <FIG>, <FIG> can be provided for covering the surface of the Earth with <NUM> period markings. A 9x9 period window (<NUM> x <NUM>) of such code contains always a unique binary pattern anywhere on the surface of the Earth. By reading this 9x9 bit code the absolute position on Earth can be determined with a <NUM> resolution. Measuring the precise pattern position within the window sub-micrometer resolution can be achieved for the absolute position measurement.

In the following, preferred embodiments of the invention will be discussed in details with reference to the drawings, in which.

The invention can be used with a detector device that aims at maximum speed combined with maximum flexibility for reading a quasi-periodic absolute code pattern. Quasi-periodic means that the centre of gravity of the markings of the pattern are positioned on a grid, wherein the spacings between the lines defined by the centres of gravity are not necessarily equal.

In the context of the present application, the terms rows and columns describe two orthogonal directions of an arrangement. It is conceivable that the row and column denominations can be exchanged with each other depending on the actual point of view, so those are non-limiting expressions merely denominating the two orthogonal directions of the arrangement.

A general schematic structure of an applicable detector device is shown in <FIG>. The detector device has photosensitive or other type of pixels <NUM>, <NUM> in a two-dimensional arrangement, the arrangement having a row direction and a column direction along which the pixels <NUM>, <NUM> are aligned in rows and columns. As depicted schematically in <FIG> and in more details in <FIG>, each of the pixels <NUM>, <NUM> comprises a sensor element <NUM> and an output <NUM> for outputting an electric signal corresponding to an intensity of radiation incident on the sensor element <NUM>. The radiation can be e.g. light. The electric signal can be e.g. current, or the pixels may output asynchronous pulses rather than currents. In the latter case pulses outputted by the pixels <NUM>, <NUM> are summed up and transmitted for processing. Furthermore, each of the pixels <NUM>, <NUM> comprises a readout selection input <NUM> by means of which the pixel <NUM>, <NUM> can be selected for outputting.

The analogue-to-digital converters <NUM>, <NUM> serve for providing a digital signal for further processing. The input of these elements are the electric signals on the row readout wirings <NUM> and column readout wirings <NUM>. The electric signals can be preferably currents, but voltages, pulses or any combination of these are also conceivable. In case of pulses, the analogue-to-digital converters <NUM>, <NUM> can have a form of counters providing the digital sum of the arriving pulses.

Advantages of the detector device are that maximum readout speed can be combined with maximum flexibility. By enabling to select any set of rows/columns within the range of <NUM> and all rows/columns, simultaneous row- and column-parallel readout of any pixel up to all pixels is possible, so pattern position/absolute code can be read at a high-speed with the same detector device.

Column and row pixels can be grouped from <NUM> to all. In case of selecting a group of <NUM> row or <NUM> column: all individual pixels are read out in N steps in a 2xNxN pixel array. Column-parallel read-out and row-parallel read-out are carried out simultaneously. I case of selecting a group of ~T/<NUM>, where T is the pattern period in pixels, an ideal high-speed, n-step read-out of N<NUM> bit absolute code is possible. In case of selecting a group of N/<NUM>, the sum of half columns and sum of half rows can be read out in <NUM> steps, which is ideal to measure image rotation in addition to the 2D position, as detailed later. In case of selecting a group of N, i.e. all rows and columns, ideal highest-speed, <NUM> step readout of column-sums and row-sums for 2D position is enabled.

The inventive pixel layout allows to interlace the row pixels <NUM> and the column pixels <NUM> in a single array allowing simultaneous row-wise and column-wise operations in parallel. An m x n pixel array, i.e. n pixel columns are connected to the n column-parallel analogue-to-digital converters (ADCs) <NUM> (thin lines). In an interlaced manner, another m x n pixel array, i.e. m pixel rows are connected to the m row-parallel ADCs <NUM> (thick lines).

According to an aspect depicted in <FIG>, the two-dimensional arrangement of the pixels has two diagonal directions, intersecting the row direction, the column direction and each other, along which the pixels are diagonally aligned, and along which the row pixels <NUM> and column pixels <NUM> are alternatingly arranged.

Preferably, the pixels have a rhomboid-like shape, the <NUM> sides of which are in parallel with the diagonal directions, wherein the pixels are arranged with a spacing smaller than the length of the side <NUM> of the rhomboid-like shape. In this way a large effective surface can be ensured for the detector device, together with an interlaced "view" of the same area by the row and column pixels <NUM>, <NUM>.

In some applications, pixels are to be read more than one times. As detailed later, the 2D position of the pattern can be measured by reading in one step all rows and columns, and subsequently the absolute code can be read by targeted binning of pixel-groups. For such applications it is important that pixels keep their values after the first read, i.e. that they enable a non-destructive readout. So, as depicted in <FIG>, according to a second aspect, the pixels further comprise a non-destructive readout circuit <NUM> between the sensor element <NUM> and the output <NUM>. The non-destructive readout circuit <NUM> preferably comprises a transconductance unit <NUM>.

The readout selection input <NUM> is preferably a gate terminal of a MOSFET <NUM> constituting a select switch, wherein the output <NUM> of the pixel is connected to the source of the MOSFET and the drain of the MOSFET is connected to the respective row readout wiring <NUM> or column readout wiring <NUM>. <FIG> depicts the inherent capacitance of the sensor element <NUM>, being typically a photodiode, and the general transconductance unit <NUM>. <FIG> is the symbolic representation of the transconductance unit <NUM>, while <FIG> is an example of a two-CMOS transistor transconductance unit.

Alternatively to the pixel array of <FIG>, as depicted in <FIG>, each pixel may be a row pixel <NUM> and a column pixel <NUM> at the same time, e.g. like a conventional pixel matrix, in which case each pixel comprise two readout selection inputs <NUM> and two outputs <NUM> for enabling both row-wise and column-wise readout.

As shown in <FIG>, the column and row selecting device can be a programmable address generator and sequencer unit <NUM>, which is connected to the column select wirings <NUM> and to the row select wirings <NUM>, and can be programmed to activate the wirings according to the desired readout. Assuming an nxn (n times n) pixel arrangement, all possible row select, column select configurations can be performed in each clock cycle using n bit row address and n bit column address. As detailed later, columns and rows of code-markings may be located in a first position determining step, and even a rotation-measurement can be carried out, the outcomes of which may influence the subsequent addressing of the column select wirings <NUM> and to the row select wirings <NUM>. Therefore, the address generator and sequencer unit <NUM> may receive feedback information from the readout-results, and the addressing may at least partly be based on the feedback information. For the sake of simplicity, the DA converters are not depicted in this Fig..

A more compact implementation is depicted in <FIG>, which uses writeable registers <NUM> for selecting rows and columns in an arbitrary manner. In one clock cycle only one register <NUM> is written, so l clock cycles are needed to write l registers. i = ceil(log<NUM>(l)) address bits are needed to address all registers <NUM>. One register <NUM> can select k rows or columns. The data bits written to the register <NUM> determine the selected rows or columns by that register. k rows or columns can be addressed in an arbitrary manner by j = ceil(log<NUM>(k)) data bits. In a typical example three address bits can address eight <NUM>-bit registers, each register <NUM> can address <NUM> rows or columns. The eight registers <NUM> can be programmed in eight clock cycles. An ADC conversion takes typically <NUM>-<NUM> clock cycles. During the conversion of one group of rows or columns the new row / column select vectors can be written to the registers <NUM>. Again, the programing of the registers <NUM> may at least partly be based on a feedback information from the readout-results.

<FIG> depicts some subsequent processing elements and possibilities, mainly for the case if no non-destructive readout is possible. As already described, the row-sum - being a row-sum vector <NUM> - are preferably generated in a single step, together with the column-sum - being a column-sum vector <NUM>. These vectors can be used for measuring the position of the pattern with respect to the pixel arrangement (or in other words with respect to the corresponding detector device), and also for locating rows and columns of markings for targeted and high-speed readout of the absolute code. The summing circuits <NUM> and <NUM> depict the summing functionality in case all pixels can be read only once. At the same time of summing, mxn pixel memories <NUM>, <NUM> can be filled in n (n > m) steps, which can be used to detect absolute code or other information. The pixel memories <NUM>, <NUM> contain redundant information, so their content can be used to verification purposes as well by a <NUM> processing unit.

<FIG> depicts the general positioning code structure of prior art solutions. According to the known techniques, pixel-based encoders are used with a two-dimensional positioning code consisting of a two-dimensional regular (repetitive) pattern, being a periodic set of squares in the depicted example, and an absolute code, being a set of diagonal sections in the example, which is interlaced with two-dimensional regular pattern. The absolute code is coded by the diagonal orientations of the sections, and can be read for establishing the absolute code, while the two-dimensional regular pattern serves for enhancing resolution. The position of the two-dimensional regular pattern with respect to the pixel-arrangement of the encoder can be determined and thus the resolution highly enhanced. The prior art positioning code thus enables both high-spatial-resolution, and absolute measurement.

An idea of the invention is to eliminate the two-dimensional regular pattern, and to use the absolute code pattern also for determining the position of the two-dimensional regular pattern with respect to the pixel-arrangement of the encoder.

In the context of the present application, the term 'positioning code' and 'markings' are used in the sense that those are the code and its markings imaged onto the surface of the pixel arrangement of a detector device. The code can be fixed to a suitable element of the position determining application, and the imaging can be effected by any suitable means. Markings have a different optical and/or physical property than their background.

Thus, <FIG> depicts an example of an inventive positioning code for use with a detector device having pixels <NUM>, <NUM> in a two-dimensional arrangement, the pixel arrangement having a row direction and a column direction along which the pixels <NUM>, <NUM> are aligned in rows and columns. The code consists of markings <NUM> in an arrangement having a row direction and a column direction along which the markings <NUM> are arranged in spaced rows and/or spaced columns. In the context of the present application, markings aligned along two orthogonal logarithmic spirals or other orthogonal curves are also considered to be arranged along a row direction and a column direction; these embodiments are especially advantageous if the code area has a large radial extent. The spacings <NUM> are marking-free, and the absolute positioning code is coded by the shape parameters of the markings <NUM> and/or by the distances determined by the spacings <NUM>. In this context, the term 'shape parameters of the markings' covers any visual feature of the markings that can be used for the coding purpose, e.g. different dimensional parameters, orientations, geometry, shape-features or shapes can be used for coding.

<FIG> show the advantages of the inventive positioning code with respect to the prior art code. It is conceivable from the diagrams of the vertical mean values of the pixels that 2x better S/N (signal-to-noise) ratio can be achieved by the inventive code pattern, as the 'contrast' is higher by eliminating the periodic pattern. The quality of the summing (averaging) is better for the inventive pattern, because.

The advantages of the inventive code pattern are the following:.

<FIG> depict preferred, non-limiting examples of markings that can be used in the inventive positioning code. Of course, other suitable marking can also be applied.

<FIG> shows a one dimensional PPM (pulse position modulation) code, wherein the shapes of the markings <NUM> are identical and the absolute positioning code is coded by the distances determined by the spacings <NUM>.

<FIG> shows a one dimensional PWM (pulse width modulation) code, wherein the spacings <NUM> determine identical distances and the absolute positioning code is coded by the widths of the markings <NUM>. In this case the absolute positioning code is coded by the shape parameters of the markings <NUM>, namely by their widths.

In the positioning codes in <FIG>, one period encodes one bit, so N periods encode N bits in the array, enabling to encode <NUM>N absolute positions.

<FIG> shows a two-dimensional code comprising markings <NUM> positioned along two orthogonal X and Y dimensions of a code coordinate system. The X extensions and the X positions of all markings <NUM> in a column are equal, and the Y extensions and the Y positions of all markings <NUM> in a row are equal. The absolute positioning code is coded by dij distances in the two orthogonal X and Y dimensions determined by the extensions of the markings <NUM> and by the spacings <NUM> between the markings <NUM>. In this code pattern, being a two-dimensional PPWM (pulse position and width modulation) code one column-period encodes one bit and one row-period encodes one bit. 2N periods encode 2N bits in the array, enabling to encode <NUM>2N absolute positions. The markings <NUM> can have any suitable geometry (e.g. rectangle, triangle, pentagon, hexagon, octagon, etc., circle, ellipse, star, random shape, etc.). The code patterns of <FIG> have the advantage that the readout of the absolute code and that of the position of the pattern with respect to the pixel arrangement - by reading e.g. with a detector device discussed above - can be carried out in a single step, so no multiple readout of pixels is necessary and the non-destructive circuits are not necessary in the pixels. <FIG> shows a two-dimensional code comprising markings <NUM> having the same shape and having spacings <NUM> therebetween, the markings are elongated and have a larger longitudinal size L than their crosswise size W, their crosswise size W is larger than the row-parallel and column-parallel dimensions of a pixel <NUM>, <NUM>. The absolute positioning code is coded by the row-parallel or column-parallel orientations of the markings <NUM>, the orientation is thus being the shape parameter used for coding purposes. In this positioning code, one marking <NUM> in a row-period encodes one bit, one marking <NUM> in a column-period encodes one bit, so N<NUM> periods encode N<NUM> bits in the array, enabling to encode <NUM>N·N absolute positions. <FIG> also shows the coded bit values of the exemplary code pattern.

<FIG> shows a code pattern similar to that of <FIG>, comprising markings <NUM> that may have two additional orientations, namely any of the two diagonal orientations. One marking <NUM> has four states and encode log<NUM>(<NUM>) = <NUM> bits. So, one marking <NUM> in a row-period encodes <NUM> bits, one marking <NUM> in a column-period encodes <NUM> bits, thus N<NUM> periods encode <NUM>·N<NUM> bits in the array, enabling to encode <NUM><NUM>·N·N absolute positions.

In <FIG> the distances of the centres of the markings are d1 and d2 in the column and row directions. In a preferred embodiment d1 = d2.

<FIG> shows the first and the kth steps of reading out all pixels of a pixel arrangement of a detector device. The detector device has pixels <NUM>, <NUM> in a two-dimensional arrangement, the arrangement having a row direction and a column direction along which the pixels <NUM>, <NUM> are aligned in rows and columns. The detector device can be that discussed above, but also conventional detector devices having a suitable pixel-arrangement can be used. In the latter case, the row- and column-parallel readout is not hardware-supported, but can be carried out by a computer program on a pixel memory in which all pixel values are read in a conventional way. Accordingly, the inventive method is suitable for conventional detector devices as well.

A code pattern consisting of markings <NUM> is used, the markings <NUM> being in an arrangement having a row direction and a column direction along which the markings <NUM> are arranged in marking rows and/or marking columns, wherein the row and column directions of the marking arrangement are aligned with the row and column directions of the pixel arrangement. The term 'aligned' in this context means that the row and column directions of the marking arrangement coincide with the row and column directions of the pixel arrangement or are slightly rotated with respect to each other to an extent still enabling the detection functionalities. It has been found that both position detection functionalities (pattern position and absolute code) can be carried out - in the given case with the help of rotation-measurement and compensation described later - if the rotation angle α < arctan(d/(N*d)) = arctan(<NUM>/N); where d is the spacing between pattern rows/columns and N is the number of pattern periods in the measured region (the region where row/column sums are calculated). It is noted that this is also an advantage with respect to prior art solutions, that larger rotation can be handled.

The inventive method serves both for detecting a code pattern position with respect to the two-dimensional arrangement of the pixels <NUM>, <NUM>, and an absolute code coded by the code pattern. As described above, the markings <NUM> are arranged in the code pattern in spaced rows and/or spaced columns, wherein the spacings <NUM> between the rows and/or columns are marking-free, and wherein an absolute positioning code is coded by the shape parameters - in the depicted case the orientations - of the markings <NUM>. As described earlier, absolute positioning code can also be coded additionally or only by the distances determined by the spacings <NUM>.

If necessary, as depicted in <FIG>, individual pixels can be read by selecting the first row of column pixels <NUM> and generating the corresponding column-sum vector <NUM>, and by selecting the first column of row pixels <NUM> and generating the corresponding row-sum vector <NUM>. Values of individual pixels can be found in the vector values. If carried out with an above discussed detector device, the two readings in the first column of the Fig. can be carried out simultaneously, in step <NUM>. In step k, the kth row of column pixels and the kth column of row pixels are selected for readout. In n steps n column pixel vectors and n row pixel vectors, altogether <NUM> x n x n pixel matrix values can be obtained.

As depicted in <FIG>, the code pattern position is detected by generating a column-sum vector <NUM> and a row-sum vector <NUM> of the pixel values, and on the basis of the values of the column sum vector <NUM> and the row-sum vector <NUM>, the positions of the marking columns and marking rows with respect to the two-dimensional arrangement of the pixels <NUM>, <NUM> are detected. These positions may be defined as the positions of the centre lines <NUM> of the marking columns and marking rows. These positions constitute the code pattern position. In the context of the present application, in case the positions (of the centre lines <NUM>) are periodic, the code pattern position with respect to the two-dimensional arrangement of the pixels can also be characterized with a phase value (calculated with respect to the pixel arrangement), being in one-to-one relationship with the marking row and column (or their centre lines <NUM>) positions. Accordingly, the term 'positions of marking rows and columns' is considered in this context to be equivalent with the corresponding phase value.

The positions of the of marking rows and columns, preferably those of their centre lines <NUM>, can be calculated by means of any know techniques from the values of the vectors.

In case of using an above discussed detector device, for detecting the code pattern position, the row-sum vector <NUM> is generated by selecting all columns of the row pixels <NUM> for row-parallel readout, and the column-sum vector <NUM> is generated by selecting all rows of column pixels <NUM> for column-parallel readout.

Next, the absolute code is decoded by reading the code pattern. In case of positioning codes according to <FIG>, the row-sum vector <NUM> and the column-sum vector <NUM> generated by selecting all rows/columns is suitable for reading, decoding the absolute code.

In case of markings as in <FIG>, separate reading steps are necessary for the absolute code. To this end, before the decoding step, the rows of markings <NUM> and the columns of markings <NUM> are located on the basis of the values of the row-sum vector <NUM> and the column-sum vector <NUM> generated. The term 'locating' means that information is available in the vectors relating to the positions and dimensions of the marking rows and columns, which can be effectively used to maximum speed, targeted reading of the individual markings. This location information, combined with a priori knowledge of the positioning code pattern markings, can be used for reading the absolute code.

Preferably, absolute code decoding is carried out by.

The above discussed detector device enables that at least one row of markings <NUM> and one column of markings <NUM> are read simultaneously, as depicted in <FIG>. Preferably, the columns/rows are read in pairs, resulting a considerably speedup of detecting.

In case if diagonal markings <NUM> are used, in the reading steps of each of the rows and columns of the markings <NUM>, a column pixel <NUM> row being spaced from the centre line <NUM> of the respective row of markings <NUM> and a row pixel <NUM> column being spaced from the centre line <NUM> of the respective column of markings <NUM> are selected for reading. The N<NUM> bits of absolute code is read out in N steps. N is the number of marking rows and columns. In this example each marking <NUM> encodes one bit.

Accordingly, the initial 2D position measurement yields the position and location of marking columns and marking rows. A row of column pixels <NUM> and a column of row pixels <NUM> are selected in such a way that those sample the upper half (or equivalently the lower half) of the marking row and the marking column respectively. This way pixel activity is asymmetric with respect to the centre line <NUM> of the marking rows and centre line <NUM> of marking columns, respectively.

The images show examples of the code reading. in the upper left image, the selected row of column pixels <NUM> results asymmetric pixel activity, for bit <NUM>,<NUM> (upper left marking <NUM>, logical <NUM> value) the activity is higher on the right side of the centre line <NUM>, while for bit <NUM>,<NUM> (lower left marking <NUM>, logical <NUM> value) the activity is larger on the left side on the centre line <NUM>. It is noted that the parallel read-out column-wise and row-wise is redundant, each bit is read out by two independent readings, allowing consistency check and error detection.

There are various possibilities to increase redundancy and improve consistency check. one row/column can be sampled in two positions symmetrically with respect to the centre lines <NUM>, yielding a more robust differential signal for the bit reading.

<FIG> shows the one-step readout of the position, and the subsequent N steps of the code-reading in the case of another marking orientations. N<NUM> bits of absolute code is read out in N steps. N is the number of marking rows and columns. In this example each marking encodes one bit. Codes with two bits per marking are also possible, if the additional diagonal orientations are also used.

The first step yields the position/location of marking columns and marking rows. In the image only those pixel columns/rows are shown, which are used to determine marking orientation. Other pixel columns/rows may be selected, but are preferably not taken into account. those column/row ADCs can be disabled or sum values can be ignored by the next processor stage. It is noted again that the read-out of the markings column-wise and row-wise is redundant.

Thus, a positioning code according to <FIG> is used, and in the reading steps of the rows and columns of the markings <NUM>, neighbouring column pixel <NUM> rows having a total height and neighbouring row pixel <NUM> columns having a total width being closer to the longitudinal size L of the markings <NUM> than to their crosswise size W are selected for reading. In this way, as depicted in <FIG>, the different dimensions of the markings <NUM> can be detected in a straightforward way. Preferably, in the targeted readout, vertical cross pixels C1-C4 go through (or as close as possible to) the vertical symmetry axis of markings <NUM>, while horizontal cross pixels R1-R4 go through (or as close as possible to) the horizontal symmetry axis of markings <NUM>. If markings <NUM> are sampled at the cross pixels, orientation can be detected by comparing sums of horizontal cross pixels by sums of vertical cross pixels as follows:
bit = sign((c1+c2+c3+c4) - (r1+r2+r3+r4)). The sum of vertical cross pixels c1-c4 and the sum of horizontal cross pixels r1-r4 are preferably read out in one step, by means of the detector device. <FIG> shows the set of markings <NUM> with the targeted readout pixels, and the corresponding bit values.

In case if the row and column directions of the marking arrangement are not perfectly aligned with the row and column directions of the pixel arrangement, i.e. there is a rotation between the directions, preferably a rotation measurement is carried out in the code pattern position measurement step. The rotation measurement is used to establish the extent of any rotation of the rows and columns of the markings <NUM>, <NUM> with respect to the rows and columns of the pixels <NUM>, <NUM>. The rotation measurement comprises a first step of selecting for parallel readout a subset of the rows of column pixels <NUM> and generating a first column-sum vector <NUM>, and simultaneously selecting for parallel readout a subset of the columns of row pixels <NUM> and generating a first row-sum vector <NUM>, and calculating a first code pattern position on the basis of the first column-sum vector <NUM> and the first row-sum vector <NUM>. Next, a second step follows, selecting for parallel readout another subset of the rows of column pixels <NUM> and generating a second column-sum vector <NUM>, and simultaneously selecting for parallel readout another subset of the columns of row pixels <NUM> and generating a second row-sum vector <NUM>, and calculating a second code pattern position on the basis of the second column-sum vector <NUM> and the second row-sum vector <NUM>.

The code pattern position is calculated as a function of the first and second code pattern positions obtained in the first and second steps, and the rotation is calculated on the basis of the difference between the first and second code pattern positions, also taking into account the dimensions of the pixel arrangement and the position of rows/cols used in the rotation measurement.

A preferred embodiment is to use as subsets the half of all rows and columns, and averaging the obtained position values. However, there is no significance of having exactly <NUM>%, i.e. half of the pixel area. The subsets can be any number between <NUM> and n. There is no need to have consecutive rows/columns either, e.g. every <NUM>nd can be taken. The positions of the subsets is taken into account in the calculation of the position.

Reading out half-columns and half-rows or any other subset of columns and rows in two steps, in addition to the code pattern position, image rotation can be also measured very precisely, typically <NUM>µrad rotation can be detected with a few mm<NUM> pixel array.

As depicted in <FIG>, the rotation calculated can be used in selecting for readout the one or more column pixel <NUM> rows for reading the rows of markings <NUM>, and in selecting for readout the one or more row pixel <NUM> columns for reading the columns of markings <NUM>. Namely, the positions of the target pixel sets can be adjusted according to the rotation measured.

On the left side of <FIG>, a rotated image without compensated cross-pixel-positions is shown. The sampling of the markings <NUM> is not in the right position, reading the absolute code is not possible. On the right side of the Fig., rotated image with compensated cross-pixel-positions is shown. The sampling of the markings is in the right position, reading the absolute code is possible.

Thus, the preferred embodiment allows the read-out of rotated image, e.g. due to a mounting tolerance of the sensor, e.g. when the sensor is rotated around its normal. The preferred embodiment allows the compensation of not only static image rotation but also dynamic image rotation because rotation angle measurement is intrinsic in the method, e.g. two step readout or row/column pixels with rotation measurement. This allows cross-pixel position adaptation in every measurement cycle according to the measured rotation. The absolute code read-out can be performed with the rotation-compensated cross pixel positions. Measurement of rotation at each frame and the compensation of the dynamically changing image rotation are necessary in eccentricity compensation of e.g. in Hollow Shaft Encoders.

In case of rotation measurement, a <NUM> step readout is used for the row-sums and column-sums for pattern position measurement and rotation measurement, and additional N steps are used for selective reading out of N<NUM> bits of a 2D absolute code, being in altogether N+<NUM> steps. , reading out 8x8 pattern periods encoding <NUM> bit absolute code is possible in <NUM> steps.

<FIG> shows a case when the X,Y coordinate system of the code is parallel with a Xa, Ya coordinate system of the given application. In this case the absolute position of the two dimensions of the application are independent, Xa is encoded only in the rows, Ya is encoded only in the columns. This not a problem when the scale lengths in the two dimensions are in the same order of magnitude. However, when the scale length in one dimension is much longer than in the other dimension, preferably a "code-sharing" is provided for PPWM codes, as depicted in <FIG>.

In the code sharing, if a positioning code according to <FIG> is used, the two-dimensional code pattern and the detector device is rotated by <NUM>° with respect to a coordinate system of a position-determining application, and the two dimensions Xa, Ya of the absolute position in the position-determining application are encoded by both the rows of markings <NUM> and the columns of markings <NUM>.

In this case the absolute position of the two dimensions of the application are not independent, both Xa and Ya dimensions are encoded by the rows and the columns. In this case the there is a "code-sharing" between the dimensions. Code-sharing has a great significance when the needed scale lengths in the Xa and Ya dimensions are not in the same order of magnitude. As an example, considering a situation where the needed Xa scale length is <NUM> while Ya scale length is <NUM>, there are <NUM> orders of magnitude between them. With a pattern period of <NUM> we would need > <NUM> bit code in dimension Xa, and ><NUM> bit code in dimension Ya. With the code-sharing we can distribute the <NUM> bit code between the two scale dimensions and having more balanced reading / decoding with <NUM> and <NUM> bit code lengths.

It is noted that code sharing is also possible with the positioning codes according to <FIG>, <FIG>, even without a rotation by <NUM>° with respect to the coordinate system of the application.

The rotated code can be folded on an arbitrary trajectory needed for the application, e.g. on a circular code-disc. In this case, in a possible preferred embodiment the rows and columns may follow straight lines. In another embodiment the rows and columns may follow a spiral or logarithmic spiral especially if the code area has a large radial extent. Rows and columns of the pattern can be read by the rows and columns of the detector device, the pixel-arrangement of which is also depicted in the <FIG>.

<FIG> shows markings arranged along two orthogonal log spirals to obtain for the detector device a locally as close to a square grid as possible on a circular code-disc, e.g. holes in a metal mask or transparent circles on a non-transparent substrate.

Advantages of the invention and of preferred embodiments of the invention can be summarized as follows:.

Claim 1:
A positioning code for use with a detector device having pixels (<NUM>, <NUM>) in a two-dimensional arrangement, the pixel arrangement having a row direction and a column direction along which the pixels (<NUM>, <NUM>) are aligned in rows and columns, the code consisting of markings (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>), the markings (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>) being in an arrangement having a row direction and a column direction along which the markings (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>) are arranged,
characterized in that the markings (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>) are absolute positioning code coding markings (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>) which are arranged in spaced rows and/or spaced columns, wherein the spacings (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>) are marking-free, and wherein the absolute positioning code is coded by shape parameters of the markings (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>) and/or by distances determined by the spacings (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>).