WO1992017859A1 - Position-sensing apparatus - Google Patents

Position-sensing apparatus Download PDF

Info

Publication number
WO1992017859A1
WO1992017859A1 PCT/GB1992/000594 GB9200594W WO9217859A1 WO 1992017859 A1 WO1992017859 A1 WO 1992017859A1 GB 9200594 W GB9200594 W GB 9200594W WO 9217859 A1 WO9217859 A1 WO 9217859A1
Authority
WO
WIPO (PCT)
Prior art keywords
pattern
sub
sequence
sensing apparatus
location
Prior art date
Application number
PCT/GB1992/000594
Other languages
French (fr)
Inventor
John Burns
Sheelagh Anne Lloyd
Original Assignee
Hewlett Packard Company
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB919106990A external-priority patent/GB9106990D0/en
Application filed by Hewlett Packard Company filed Critical Hewlett Packard Company
Priority to EP92907613A priority Critical patent/EP0578692B1/en
Priority to DE69202975T priority patent/DE69202975T2/en
Priority to US08/117,200 priority patent/US5442147A/en
Priority to JP4506964A priority patent/JPH06506080A/en
Publication of WO1992017859A1 publication Critical patent/WO1992017859A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/0304Detection arrangements using opto-electronic means
    • G06F3/0317Detection arrangements using opto-electronic means in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface
    • G06F3/0321Detection arrangements using opto-electronic means in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface by optically sensing the absolute position with respect to a regularly patterned surface forming a passive digitiser, e.g. pen optically detecting position indicative tags printed on a paper sheet

Definitions

  • the pattern features serve to encode a first windowing sequence of elements notionally extending parallel to said first coordinate axis and a second windowing sequence of elements notionally extending parallel to said second coordinate axis.
  • said sequences may be selected from the group of sequences comprising:
  • the spatial information provided to said sub-pattern detector means may only be partial and in such cases the detector means can be made operative to assume an unchanging direction of movement of said sensor means across said pattern unless and until, following initial position determination, an inconsistency is determined between said pattern data and sub-pattern data.
  • the rectangular patterns described hereinafter are encodings either of two dimensional windowing arrays or of pairs of orthogonal windowing sequences; in the former case, a sub-pattern takes the form of a rectangular area of the pattern, whereas in the latter case, a sub-pattern takes the form of two orthogonal linear segments of the pattern.
  • the sensing stylus 11 serves the dual function of an indicator element for pointing to a particular location on the pattern 20, and a sensor for sensing the indicia J-5 in the locality of the stylus in order to detect a sub-pattern at the location pointed to by the stylus 11.
  • Figures 4A, 4B, 4C and 4D illustrate for the sub-pattern of Figure 3, these four possible orientations starting with 0° relative orientation between the axes A P and A, in Figure 4A and progressing at 90° intervals to a 270° relative orientation in Figure 4D.
  • This ambiguity of orientation of the sensed sub-pattern can lead to incorrect location determination as the pattern may contain more than one instance of a sub-pattern if all orientations are considered.
  • transitions in the horizontal direction are given by the functions ho and h u and in the vertical direction (positive direction of axis B p by functions v 0 and v t where the suffixes "0" and "1" refer to the value of the X or Y sequence element to be encoded.
  • three monochromatic light sources T 1 , T 2 , and T 3 powered by driver electronics 300 are arranged to launch optical signals of respective wavelengths x 1 , x 2 and x 3 into respective optical fibres 301, 302 and 303 for the purpose of illuminating the pattern 20.
  • the fibress 301, 302 and 303 together with reflected-radiation fibres 304, 305 and 306 are formed into a flexible bundle 307 that extends from the stationary opto-electronics block 80 to the probe 11.
  • the fibres terminate juxtaposed a focusing lens and jointly constitute therewith the sensing head 16.
  • the fibres may be spliced together.
  • each bit B0 to B3 of the four-bit code output on line 81 has a particular significance. More particularly:
  • the form of the colour interpreter 311 depends on whether the pattern 20 is of the Figure 12 or Figure 15 form. Where the pattern is of the Figure 12 form in which the colours C1 to C4 each directly encode one X-bit and one Y-bit, the colour interpreter can take the form of a simple decoding matrix translating each colour C1 to C6 into a corresponding set of values for bits B0 to B3 in accordance with table 87 shown in Figure 21. Where the pattern is of the Figure 15 form in which the colours C1 to C4 are used to implement transitional encoding of the X- and Y- sequence elements values, then a suitable form for the colour interpreter 311 is as shown in Figure 22.
  • the state machine 82 thus effects one cycle of operation from the Idle state, via its Latch, I-Enable and Reset states and back to its Idle state, whenever the sensing head 16 encounters a colour square 21 after having crossed a separating zone 26, 27 subsequent to the last resetting of the LZ latch, that is, subsequent to the last cycle of operation of the state machine.
  • the state machine 82 brings about me transfer of an X and/or Y sequence bit value to the processor sub-system 51 and then sets up the low-level hardware to recognize a new X and/or Y bit.
  • the functionality provided by the sub-system 51 encompasses part of the functionality of the sub-pattern image processing unit 12 of Figure 1 as well as all of the functionality of the position-determining unit 13.
  • the sub-system 51 can be implemented using a suitable multi-tasking processor system as will be apparent to persons skilled in the art. Considering the operation of the processor sub-system 51 in more detail, the subsystem 51 interfaces with the low-level hardware 50 through an X/Y bit input buffer 64 in the form of a first-in, first-out (FIFO) buffer.
  • FIFO first-in, first-out
  • Figure 24 is a flow chart of the absolute tracking routine 100.
  • the new X bit value stored in NEW-X is entered into the initial X-position register 69 (step 120) to be accumulated with other X bit values to form a window length pattern for the X-sequence.
  • the total number of XBIT values currently accumulated in the register 69 is held in count Cn1.
  • Step 121 tests whether count Cn1 has yet reached the value N indicating that a window length sequence of X bits has been accumulated in the shift register 69.
  • FIG 25 is a flow chart of the incremental tracking routine 101.
  • This tracking routine works on the basis that once the absolute X-position has been established, each new X bit can simply be used to increment the X-position by 1, the routine working on the assumption that the direction of X movement remains unaltered from mat which was associated with the initial absolute position determination. However, in order to check the validity of this assumption, the value of each new bit as supplied from the low-level hardware 50 is compared with the value of the next X-sequence bit as predicted from the X-sequence stored in the register 66 given the current X-position and direction of movement (as indicated by the pointer in the pointer list 68). This check is carried out by step 130 in the Figure 25 flow chart.
  • step 131 If the actual and predicted values of the new X-sequence bit match (step 131) then the assumption about direction of movement is assumed valid and the X-position pointer held in the list 68 is incremented in the direction of movement indicated by the associated direction flag (step 132). Thereafter the new X-position is stored in the output FIFO 76 with the associated Defer Flag not set (step 133) and the value "S" is stored in RESULT (step 134). If, however, the value of the new X-position actually sensed differs from mat predicted from the stored X-sequence, then a reversal of X-direction movement is assumed to have taken place and reversal recovery is initiated with the reversal recovery start-up routine (RR startup 103) being called.
  • RR startup 103 the reversal recovery start-up routine
  • the pointer (p 0 -1) is retained as possibly pointing to the current actual position of the sensing head 16. However, if the test for hypothesis 1 is failed, then the pointer (p 0 -1) is discarded because it is known that the current actual position of the head 16 cannot be at the bit pointed to by that pointer.
  • the hypothesis can be subjected to two tests, the first test being one corresponding to the tests carried out for hypothesis 2 and 1 by which the value of the bit pointed to by pointer po is compared with the value of the bit pointed to by the pointer that according to the hypothesis, indicates the current actual position; the hypothesis is discarded if these bit values are equal.
  • the second test for hypothesis 3 is whether the values of the bits enclosed between the incorrectly assumed position and the hypothesised actual position are equal (the bit value on the side of the postulated reversal position nearest position D 0 being a true indicator of the value of the corresponding sensed bit).
  • the pointer list 68 contains a set of pointers to a number of hypothesized acmal positions which have passed the initial validity tests.
  • the tracking mode is changed to reversal recovery so that upon the sensing head 16 sensing a new X-sequence bit, the reversal recovery routine 102 will be entered.
  • step 166 the total number of pointers remaining in the list is examined. If no pointers remain in the list, then an irrecoverable situation has been encountered; this may have arisen either due to sensing errors or because the direction of movement has been reversed again during the reversal recovery process. In any case, the value "L" is assigned to RESULT (step 167) and the reversal recovery routine is exited.
  • the output process 62 should preferably lag behind that of the XBIT and YBIT processes 60 and 61 so that a queue of entries builds up in the FIFOs 76,77 enabling the XBIT or YBIT process to set previously processed entries to Defer upon detection of reversal in either the X or Y coordinate direction. Nevertheless, where valid entries exist in the FIFOs 76,77 these should not be allowed to remain dormant forever. It will therefore be appreciated that the output process 62 needs to take account of a number of conflicting requirements and provide some satisfactory practical compromise in its operation.
  • next entry in the list under examination is older (i.e has a lower sequence number) than the next entry in the older list.
  • edge is labelled with We see, therefore that a path tiirough the graph can be thought of as a sequence where successive windows of the sequence correspond to the successive edge labels. All sequences of length m except the all zero and the all one sequence occur as edge labels. These do not occur because they would link a vertex to itself, which is not allowed.
  • An orientable sequence can be tiiought of as a path through the deBruijn graph which has the property that if an edge occurs in the path, then the edge with the reverse label does not occur. In particular, no edge with a palindrome label may occur.
  • Our task involves finding Eulerian paths (that is paths which use each edge exactly once) in a directed graph. It is generally straightforward to find an Eulerian path in a graph and several algorithms exist (see, for example, Frank Harary. Graph Theory. Addison-Wesley, Reading, Mass., 1972.)
  • a directed graph has a Eulerian path if it is connected, and each vertex (except possibly the start and end vertices) has the same number of edges coming into it as going out from it.
  • ⁇ i is equal to zero or one.
  • Addition is performed componentwise, so it looks like bitwise exclusive or. Multiplication is harder - elements are multiplied as polynomials in ⁇ , and then higher powers of ⁇ are reduced using a primitive polynomial
  • So and its inverse must be calculated. So is calculated by running the shift register until the first k states are obtained. It is a binary k by k matrix, so finding the inverse should be straightforward.
  • the matrix S r must be calculated by. running the shift register until the next (k - 1) states are obtained. This matrix must be multiplied by the matrix

Abstract

Position-sensing apparatus is provided which includes a passive coded surface formed by a pattern element (14) with an arrangement of indicia that together form a two-dimensinal windowing pattern (20); by 'windowing pattern' is meant a pattern having the property that any local portion of the pattern of given size in terms of pattern features (a 'sub-pattern'), when considered in isolation, is so characterized by its features as to permit the location of the sub-pattern to be determined, for at least one orientation of the sub-pattern relative to said pattern. The apparatus further includes an indicator element (11) movable across the pattern (20), and a sub-pattern detector (12) with a sensor (16) for sensing the pattern indicia in the locality of the indicator element (11). The detector (12) is operative to process the output of the sensor (16) to derive sub-pattern data representative of a sub-pattern local to the indicator element (11) in an orientation enabling its position to be uniquely determined. The sub-pattern data is passed to a position-determining unit (13) which uses this data, together with data on the overall pattern, to determine the position of the indicator element (11) relative to the pattern element (14).

Description

POSITION-SENSING APPARATUS
TECHNICAL FIELD
The present invention relates to position-sensing apparatus and in particular, but not exclusively, to apparatus for sensing the position of an indicator element over a two-dimensional patterned surface by detecting pattern features of the surface. BACKGROUND ART
It is known to detect linear position by providing a linear pattern that encodes a pseudo-random binary sequence (PRBS, also known as an "m-sequence") and then using the window property of such a sequence to effect position detection by detecting a window-length subsequence of the pattern. An example of such a system is described in the article "New Pseudorandom/Natural Code Conversion Method" by E. M. Petriu appearing in Electronic Letters 27th October 1988 Vol.24 No.22.
By "window property" is meant the property that for a PRBS of length (2k-1), where k is an integer, any subsequence of length k will be unique and therefore uniquely locatable in the sequence; this and other properties of PRBSs are described, for example, in the article "Pseudo-Random Sequences and Arrays" by F. Jessie Mac Williams and Neil J. A. Sloane appearing in the Proceedings of the IEEE, Vol.64, No.12 December 1976.
The prior-art systems utilising the window-property of a PRBS for position sensing are essentially limited to linear position-sensing, although the path followed by the PRBS pattern may, of course, be other than rectilinear (for example, circular or serpentine). It is an object of the present invention to provide position-sensing apparatus for sensing position over a two-dimensional surface. DISCLOSURE OF THE INVENTION
According to one aspect of the present invention, thereis provided position-sensing apparatus comprising:
- a pattern element with an arrangement of indicia that together present a two-dimensional pattern having features that make said pattern a windowing pattern in that any local portion of the pattern of given extent in terms of its features (herein a "sub-pattern"), when considered in isolation, is so characterized by said features as to permit the location of the sub-pattern to be determined, for at least one orientation of the sub-pattern relative to said pattern;
- an indicator element movable relative to said pattern element across said arrangement of indicia;
- sub-pattern detector means including sensor means for sensing said indicia in the locality of said indicator element, the detector means being operative to process the output of the sensor means to derive sub-pattern data representative of a sub-pattern local to said indicator element in a said at least one orientation of the sub-pattern relative to said pattern; and
- position-determining means including a memory holding pattern data representative of said windowing pattern, the position-determining means being responsive to the sub-pattern data derived by said detector means to determine, by reference to said pattern data, the position of said indicator element relative to said pattern element.
Preferably, in said position-sensing apparatus:
(a) said features of the pattern discernibly form a regular arrangement for which when any given sub-pattern of said pattern is considered in isolation from the pattern, that sub-pattern may be in any of M possible orientations relative to the pattern where M is a positive integer greater than zero; (b) said windowing pattern is such that any given sub-pattern can be correctly located in the pattern for N of said M possible orientations where N is a positive integer in the range 0 < N < M; and
(c) said sub-pattern detector means is responsive to the said regular arrangement of features to identify a said sub-pattern in the locality of said indicator element, and to provide sub-pattern data to said position- determining means which is representative of the said sub-pattern in one of said N of said M possible orientations relative to the pattern in which it can be correctly located.
Advantageously, said features are discernibly arranged in rows and columns extending parallel to respective first and second coordinate axes with each feature being presented in a notional cell that has line contact with a plurality of neighbouring such cells. A rectangular pattern of cells is preferred for which each said cell has line contact wtih four neighbouring cells, M has a value 4, and N has one of the values 1,2 and 4.
Said features may serve to encode at least part of a two-dimensional windowing array having rows and columns of elements notionally extending parallel to said first and second coordinate axes respectively. One suitable form of array is a pseudo-random binary array. Another suitable form of array can be formed from first and second binary sequences of length m and n respectively, where m and n are positive integers greater than zero, by forming a first column of the array from said first sequence, and forming each subsequent (i)th column, where "i" is an integer in the range from 2 to
2n+1, by considering the value of the (i-l)th element of the second sequence, and - if the (i-l)th element has a first binary value, forming the said (i)th column from said first sequence unshifted relative to the (i-l)th column, - if the (i-l)th element has a second binary value, forming the said (i)th column from said first sequence circularly shifted by one position relative to the (i-l)th column.
A further form of array can be formed by combining together two windowing sequences that extend parallel to respective ones of said first and second coordinate axes, each element of said array representing a particular combination of values of corresponding elements of said sequences. Where the features serve to encode an array, the value of each element of said array is preferably encoded as a corresponding feature value.
Preferably, the pattern features serve to encode a first windowing sequence of elements notionally extending parallel to said first coordinate axis and a second windowing sequence of elements notionally extending parallel to said second coordinate axis. In this case, said sequences may be selected from the group of sequences comprising:
(a) de Bruijn sequences;
(b) pseudo-random binary sequences;
(c) orientable binary sequences each having the property that if a window- length subsequence appears in the sequence, then its reversal does not; and
(d) complement-orientable binary sequences each having the property that if a window-length subsequence appears in the sequence, then the reverse of the bitwise complement of the subsequence does not.
Advantageoulsy , where two sequences are encoded, each element of each said sequence is encoded as a corresponding change in feature value when moving between neighbouring cells in a direction parallel to the direction of extent of the corresponding said sequence. In one implementation, the encoding of said element values is such as to ensure that each said feature is distinguished by its value from at least one specific neighbour with which it has line contact; in fact, said encoding may be such as to distinguish each feature by value from all its neighbours with which it makes line contact. Indeed, the encoding of said element values may also ensure that each said feature is also distinguished by its value from its neighbours with which it has point contact. Alternatively, each said feature may be separated from at least one neighbouring feature with which it has line contact by a corresponding separator zone that is detectable as such by said sub-pattern detector means. that is detectable as such by said sub-pattern detector means.
Preferably, said sensor means is movable with said indicator element and is operative to sense a portion of said pattern corresponding to a single said feature, said apparatus including spatial-information means for providing said sub-pattern detector means with spatial information regarding the relative disposition of adjacent element- value encoding features, and said sub-pattern detector means being operative to use said spatial information to build up said sub-pattern data relating to a whole sub-pattern as the sensor means is moved over the pattern. Advantageously, said spatial-information means comprises features of said pattern sensible by said sensor means as it is moved between said element-value encoding features; in particular, said spatial-information can be encoded into the values represented by said element-value encoding features. In certain implementations, the spatial information provided to said sub-pattern detector means may only be partial and in such cases the detector means can be made operative to assume an unchanging direction of movement of said sensor means across said pattern unless and until, following initial position determination, an inconsistency is determined between said pattern data and sub-pattern data.
Generally, the relative orientation of the sensor means to said arrangement of indicia, about an axis orthogonal to said arrangement, will be variable. Prferably , therefore, said apparatus includes orientation-information means for providing said sub-pattern detector means with orientation information about said relative orientation, the sub-pattern detector means utilizing this information in deriving said sub-pattern data representative of a sub-pattern orientated in a said at least one orientation. Advantageously, said orientation-information means comprises features of said pattern sensible by said sensor means as it is moved between said element-value encoding features; in particular, said orientation information may be encoded into the values represented by said element- value encoding features. Preferably, following an initial determination of the location of said indicator element, any incremental change in the pattern portion sensed by said sensing means, is used by said position-determining means to provide an updated location based on the incremental change in location of the indicator element indicated by said change in the sensed pattern portion. In case where said pattern is an encoding of two windowing sequences of elements notionally extending along respective first and second coordinate axes, said position-determining means is advantageously operative to update the location of said indicator element along said first and second coordinate axes separately, based on any incremental change in location along the corresponding coordinate axis indicated by a change in the element or elements of the corresponding sequence represented by said sensed pattern portion; said position-determining means in incrementing the location of said indicator element along at least one said coordinate axis, assuming an unchanged direction of movement therealong unless and until the said element or elements of the sequence extending along said one coordinate axis that are represented by said sensed pattern portion, differ from that predicted from the stored pattern data relating to that sequence having regard to the current location in the sequence as previously determined by said position-determining means, said position-determining means upon detecting a difference between the sensed and predicted sequence elements, being further operative to enter a recovery process to recover its location along said one coordinate axis, said recovery process involving deriving at least one candidate location for the indicator element on the basis that the direction of movement of the indicator element has been reversed, and directly or indirectly comparing the element or elements sensed along the track of the indicator element with those predicted to lie along the indicator-element track in reaching the or each said candidate location whereby to test the validity of the or each such location. Preferably, said indicator element is a hand-holdable stylus carrying said sensor means.
In one embodiment, the pattern element is a planar member carrying said indicia, both the planar member and said indicia being transparent to visible light whereby to permit viewing of items through the pattern element. In another embodiment, the pattern element is a planar member carrying said indicia, said indicia being transparent to visible light and said stylus being a marking stylus capable of depositing a marking substance on a surface of said planar member at which said indicia can be sensed by said sensor means, said working substance being optically visible but permitting the sensing of said indicia therethrough. In a still further embodiment, the pattern element is a planar member carrying said indicia, said apparatus further comprising a markable sheet positioned over said planar member, said sheet being at least partially opaque and permitting said indicia to be sensed therethrough by said sensor means, and said stylus being a marking stylus capable of depositing a marking substance on said sheet which substance is optically discernible against said sheet but permits the sensing of said indicia therethrough.
It will be appreciated that the present invention also separately encompasses pattern elements per se for use in position-sensing apparatus, the pattern elements having the characteristics described above in relation to the apparatus as a whole.
BEST MODE FOR CARRYING OUT THE INVENTION
General Form of Position-sensing Apparatus As shown in Figure 1, the position-sensing apparatus comprises a pattern element 10 marked with a two-dimensionalpattern 20, a sensing stylus 11 for sensing a sub-pattern of the pattern 20, a sub-pattern image processing unit 12 fed with the output of the stylus 11, and a position-determining unit 13 connected to the outputofthe unit 12 and operative to provide an output signal indicative of the position of the stylus over the pattern 20.
The pattern element 10 takes the form ofa planar support member 14 carrying on one surface an arrangement of indicia 15 (see inset in Figure 1 which is an enlarged view of a portion of the surface of the member 14); the indicia 15 together present the pattern 20.
In the Figure 1 embodiment, the pattern 20 is made up of a rectangular arrangement of indicia 15, the indicia being in the form of printed markings sensible by their optical/infra-red reflective characterisitcs. However, it is to be understood that the indicia may be arranged in a variety of other configurations and may be sensible by any suitable characteristic including by their surface roughness, magnetic parameters, electrical parameters, optical/infra-red transmissivity etc.
The pattern 20 is a windowing pattern in the sense that any local portion ofthe pattern of given extent in terms of its pattern features, when considered in isolation, is so characterised by its features as to permit the location of that pattern portion to be determined in the pattern, atleastfor a known orientation ofthe pattern portion relative to the pattern as a whole. A pattern portion of such an extent as to permit its location to be determined is referred to herein as a "sub-pattern".
In its broadest conception, the windowing pattern 20 may be constituted, for example, by a picture of an irregular subject (such as a portrait or landscape) since a sub-area of such a picture, provided it is of sufficient extent, will be uniquely locatable within the picture. However, the primary focus of the present invention is on patterns with a regular arrangement of features that encode underlying mathematical arrays or sequences with known properties. Of particular interest are windowing patterns with rectangular arrangements of features (that is, features running in rows and columns parallel to respective coordinate axes - note that although these axes may or may riot be normal to each other, the term "rectangular pattern" is used herein to cover both situations). The rectangular patterns described hereinafter are encodings either of two dimensional windowing arrays or of pairs of orthogonal windowing sequences; in the former case, a sub-pattern takes the form of a rectangular area of the pattern, whereas in the latter case, a sub-pattern takes the form of two orthogonal linear segments of the pattern. The sensing stylus 11 serves the dual function of an indicator element for pointing to a particular location on the pattern 20, and a sensor for sensing the indicia J-5 in the locality of the stylus in order to detect a sub-pattern at the location pointed to by the stylus 11. In the present embodiment, the stylus is intended to be handheld and is movable freely over the pattern without any constraint being placed on its orientation about an axis perpendicular to the pattern. However, other embodiments are possible where the stylus is mounted, for example, on a X-Y carriage and has a fixed orientation relative to the pattern; furthermore, the two functions of the sensing stylus 11 need not be performed by the same physical unit. The stylus 11 includes a sensing head 16 of a form suitable to detect the indicia physical property used to provide the pattern features; in the present embodiment the sensing head 16 is an optical sensor. Processing of the output of the sensing head is effected by the sub-pattern image processing unit 12. Given that the objective is to detect a complete sub-pattern in the locality of the stylus 11, three main approaches are possible to pattern sensing. The first approach is to sense an area of the pattern 20 sufficiently large as to include a whole sub-pattern at one time (the resolution of the sensing head 16 being adequate to resolve the characteristic features of the pattern). The sub-pattern image so sensed is processed by the sub-pattern image processing unit 12 to extract data on the salient features of the pattern and derive the sub-pattern data characterisic of the sub-pattern in the locality of the stylus 11.
The second approach is to sense a pattern area smaller than a sub-pattern, but containing a number of pattern features, and then to scan the sensing head 16 across the pattern 20 to sense a sufficient part of the adjacent portion of the pattern to be able to build up a full sub-pattern. In this case, the process of building up a complete sub- pattern is facilitated by the fact that the direction of scanning of the sensing head 16 can be readily ascertained by examining successive sensed images so that features sensed at different times can be correctly inter-related. The process of pattern-feature extraction and the building up of a sub pattern (or, more generally, data representative of a sub-pattern), is effected by the sub-pattern image processing unit 12.
The third approach to pattern sensing is to sense ony a single pattern feature at a time and then to scan the sensing head 16 across the pattern to permit the full sub-pattern to be built up in the sub-pattern image-processing unit 12 (this approach is termed "single pixel" sensing herein). In this case, the problem of correctly inter-relating successively scanned pattern features is more difficult as information on the direction of scanning is required. One solution to this problem is to make such information implicitly available from the sensed pattern, either in a homogenous manner or by the use of explicit movement-direction indicia (both approaches will be more fully explained below). An alternative solution is to provide external scan-direction sensing means providing an input to the unit 12; however, the extra cost involved in this solution makes it undesirable. Another solution is to assume that the sensing head 16 is being scanned in a straight line across the pattern so that successively sensed features can be readily inter-related. Sub-pattern data is then assembled by the unit 12 and passed to the position-determining means 13; as successive positions are determined it will readily become apparent when the assumption about straight line movement is incorrect and the corresponding false position readings can be discarded.
Whatever sensing method is used, the sub-pattern image-processing unit 12 is operative to output sub-pattern data to the position-determining unit 13. This latter unit then determines the location of the sub-pattern within the overall pattern 20 by reference to pattern data, representative of the pattern 20, held in a pattern data memory 17. The unit 13 may effect this location determination in a variety of different ways, for example, by pattern matching techniques, by use of an index accessed by the sub- pattern locations, or by calculation in cases where the pattern is an encoding of mathematically processible sequences or arrays. It will be appreciated from the foregoing that the pattern data held in memory 17, whilst representative of the pattern, need not be a direct representation but can be an indirect representation such as a series of index entries or a mathematical definition of the pattern. The pattern data need only represent the windowing pattern in a manner sufficient to permit absolute pattern position to be established from data characteristic of a sub-pattern.
Having described the general arrangement and operation of the Figure 1 position- sensing apparatus, a more detailed consideration will now be given to the form, construction and sensing of rectangular windowing patterns.
Rectangular Windowing Patterns
As illustrated in Figure 2, the rectangular windowing patterns to be described hereinafter are based upon a rectangular arrangement of pattern features in correspondence with cells C disposed in rows and columns respectively parallel to pattern coordinate axes Ap and Bp. For ease of description hereinafter the axis \ is referred to as the horizontal axis and movement parallel to it as horizontal movement; similarly, the axis Bp is referred to as the vertical axis and movement parallel to it as vertical movement. A cell at column coordinate "i" on the horizontal axis Ap and row coordinate "j" on the vertical axis Bp is designated Cij. Each cell is assigned one of a number of possible different values and these cell values constitute pattern features which are physically represented by indicia 15 appropriate for the sensing method to be employed. Thus, for example, the values assigned to the cells may be represented in the final pattern by respective colours.
The cell values are used to encode an underlying two-dimensional windowing array or pair of windowing sequences that impart a windowing property to the pattern 20; in fact, sub-pattern position determination will generally be effected by recovering windowing sub-arrays or sub-sequences from the sensed sub-pattern. The nature of the encoding used will be more fully described hereinafter but for now it may be noted that two main forms of encoding are used, namely absolute encoding in which the cell value directly represents the value of the underlying array or sequence, and transitional encoding in which the change in value in moving between cells represents the value of underlying sequences. Depending on the encoding scheme used, certain other information may also be derivable from the cell value pattern, as will become clear below.
An important issue in sensing a sub-pattern and determining the position of the sub- pattern in the overall pattern (whether or not rectangular) is that of relative orientation of the sensed sub-pattern to the pattern 20. This issue is considered below, with reference to Figures 3 and 4, in relation to rectangular patterns.
Figure 3 shows a pattern 20 made up of a rectangular array of pattern features F (each illustrated feature F corresponds to a cell Cij of Figure 2, it not of course being necessary for the feature to occupy the whole cell area, though as will become clear below, this is generally desirable where for single-pixel sensing is employed). The pattern features mn in rows parallel to the vertical axis Ap and in columns parallel to the vertical axis Bp. If a sub-pattern of the Figure 3 pattern is composed of an arrangement of 3 by 3 features, then one of the many possible sub-patterns identifiable in the pattern is that constituted by features Fl to F9. This sub-pattern has three rows, composed of features (F1, F2, F3), (F4, F5, F6) and (F7, F8, F9) respectively, that run parallel to a first coordinate axis As of the sub-pattern, and three columns, composed of features (F1, F4, F7), (F2, F5, F8) and (F3, F6, F9) respectively, that mn parallel to a second coordinate axis Bs of the sub-pattern. When the sub-pattern is considered in situ in the pattern 20 as shown in Figure 2, then the coordinate axes Bp and Bs are parallel; the sub-pattern is in its normal orientation relative to the pattern in which its combination of pattern features is unique within the pattern for the given pattern orientation.
However, in the general case the sub-pattern sensed by the sensing head 16 will not have any particular orientation - it will just be a sub-pattern image. Of course, it will be possible to discern the rectangular nature of the sub-pattern. However, this will not permit a resolution to be made between the four possible orientations, at 90° intervals, in which the rectangular sub-pattern could equally lie. Figures 4A, 4B, 4C and 4D illustrate for the sub-pattern of Figure 3, these four possible orientations starting with 0° relative orientation between the axes AP and A, in Figure 4A and progressing at 90° intervals to a 270° relative orientation in Figure 4D.
This ambiguity of orientation of the sensed sub-pattern can lead to incorrect location determination as the pattern may contain more than one instance of a sub-pattern if all orientations are considered.
Windowing patterns for which a sub-pattern can only be correctly located if the sub- pattern is considered in the same orientation as the pattern, are herein termed " 1-orientable" patterns. In fact, windowing patterns exist in which a sub-pattern can be correctly located in the pattern regardless of its relative orientation; such patterns are herein termed "4-orientable" patterns. Intermediate 1-orientable and 4-orientable patterns, there are patterns which can be correctly located in the pattern for two of the four possible relative orientations; these patterns are herein called "2-orientable" patterns.
For the rectangular windowing patterns considered herein, whether a pattern is 1,2 or 4 - orientable depends on whether the underlying array/sequences represented by the pattern are themselves 1,2, or 4 - orientable.
For a 4-orientable pattern, the potential problem of incorrectly locating a pattern due to an unknown orientation of the sub-pattern relative to the pattern, clearly does not exist. However, this problem does exist for 2-orientable and 1-orientable patterns and in these cases, it is necessary to obtain sub-pattern orientation information to enable the sub-pattern to be appropriately oriented before its location is determined. One way of obtaining the required orientation information would be to provide a separate orientation sensor for sensing the orientation of the sensing heads about an axis perpendicular to the pattern 20; however, such an approach is costly. Another possibility would be to ensure that the sub-pattern is always sensed in a fixed orientation relative to the pattern by arranging for the sensing head to be non-rotatable about an axis perpendicular to the pattern 20; again, this approach is not preferred due to the practical limitations of such an arrangement. The preferred approach to orientation sensing is to encode orientation information into the pattern either as part of the basic array/sequence encoding or by providing special orientation indicia integrated into the pattern 20 and sensible by the sensing head 16. This orientation information is then sensed by the unit 12 and used to derive sub-pattern data that represents the sub-pattern in an orientation in which it can be uniquely located in the pattern by the unit 13.
Windowing Arrays and Sequences
Having considered the general form of rectangular windowing patterns, suitable windowing arrays and sequences upon which such patterns can be based, will now be discussed. Although the arrays and sequences discussed below are all binary (that is, the constituent elements of the arrays and sequences can only be one of two possible values), this is merely preferred for ease of implementation and ternary and higher order arrays and sequences can also be used as the basis for windowing patterns. Two Dimensional Arrays - Two dimensional arrays of elements can be constructed which have a windowing property in relation to sub-arrays of given extent. Thus, a 1-orientable array (from which a 1 -orientable pattern can be constructed) can be formed by writing a PRBS diagonally within a two-dimensional array structure. Such arrays are disclosed in the article by MacWilliams and Sloane referred to above and, as noted in that article, these arrays exhibit a windowing property.
Another type of binary array that can be used to constmct 1-orientable, 2-orientable or 4-orientable patterns is disclosed in Appendix A. This type of array is constructed from first and second binary sequences of length m and n respectively, where "m" and "n" are integers, by forming a first column of the array from said first sequence, and forming each subsequent (i)th column, where "i" is an integer in the range from 2 to 2n + 1, by considering the value of the (i-l)th element of the second sequence, and if the (i-l)th element has a first binary value, forming the said (i)th column from said first sequence unshifted relative to the (i-l)th column,
if the (i-l)th element has a second binary value, forming the said (i)th column from said first sequence circularly shifted by one position relative to the (i-l)th column. Where the binary sequences are PRBS's, then the resultant arrays will be 1-orientable; where one or both binary sequences are reversible orientable binary sequences (see below), the resultant array will be 2 or 4-orientable.
Orthogonal Sequences - By using two binary sequences, each possessing the windowing property, it is possible to constmct rectangular windowing patterns. Generally, one sequemce is used to determine pattern changes when moving parallel to one pattern axis, whilst other sequence controls pattern changes when moving parallel to the other pattern axis. As a result, positioning along each pattern axis can be determined by reference to corresponding sequence. Such patterns may be 1 -orientable, or 2-orientable (but generally not 4-orientable as it is necessary to distinguish between the two sequences before effecting position determination). For a pattern to be 2- orientable both binary sequences must not only be windowing but at least after encoding, must not give rise to the same windowing sub-sequence when read in both directions. Four types of usable sequences can be identified:
Type 1 - deBruijn sequeunces;
Type 2 - Pseudo-random sequences;
Type 3 - Orientable sequences (that is, sequences for which each window sub-sequence of length m occurs only once, and its reverse does not);
Type 4 - Complement-orientable sequences (that is, sequences for which each window sub-sequence of length m occurs only once and its complement reversed does not). All four types are windowing, the first two types producing 1-orientable patterns and the second two types, 2-orientable patterns. The suitability of each type of sequence depends on the encoding employed and the sensing method used.
The first two types of sequences have been well-studied in the literature whilst the second two types do not seem to have received attention before. It is of course relatively straightforward to perform computer searches to find orientable and complement-orientable binary sequences, but it is very time-consuming for even moderate window lengths; it would be useful, therefore to be able to construct these sequences algorithmically and Appendix B considers how this may be done.
Pattem Construction - General Considerations
Precisely what information needs to be recoverably contained in the pattern 20 to enable sub-pattern sensing and position determination depends on the nature of the underlying array/sequences, the encoding method used, and on the sensing method employed. However, in general terms information is required as to: array/sequence element value
cell delineation
cell inter-relationship in forming a pattern
pattern orientation
As depicted in Figure 5, information on these items can be provided in three basic ways, namely inherently in the cell values that encode the underlying array/sequence (see line 200); as explicit auxiliary pattern features combined with the encoding represented by the cell values (see line 201), and independently of the pattern (see line 202).
The interrupted dashed connections between the information items of pattern orientation, cell inter-relationship and cell delineation on the one hand and the three methods 200, 201, 202 of providing this information on the other, is intended to indicate the variety of combinations possible. Each of the above-listed information items is discussed below.
For convenience, hereinafter the value of each cell will be taken to be represented in the pattern 20 as a colour unique to each possible value, it being appreciated that the teaching given below generally applies to any other form of physical presentation of cell value.
Array/Sequence Value Encoding - There are two main encoding techniques, one being to allot each cell Cij a colour representing the absolute value of a corresponding element of the array to be encoded, and the other being to encode a sequence element value as a change in colour between two cells when moving in a direction aligned with the pattern axis associated with the sequence. A more detailed consideration of transitional encoding is given further on. Cell Delineation - It is important to be able to detect transition from one cell to another, that is, to be able to detect cell boundaries. Cell boundary information can be encoded with cell values (method 200 of Figure 5) by use of an encoding scheme which ensures that neighbouring cells do not have the same colour (even if, in the case of absolute value encoding, the same element value of the underlying array or sequence is being encoded). In the simplest case, each cell can be considered as having four neighbours, two horizontally and two vertically (diagonal transitions being either prevented or otherwise detected, or the apparatus being designed to tolerate errors that may result from such transitions). Figure 6 illustrates the absolute- value encoding of a binary arrays using four colours, two each to represent each binary value "1" and "0". If transitions to diagonal neighbours are also be be reliably detected, then the encoding scheme must additionally ensure that these diagonal neighbours will always be differently coloured to the cell under consideration.
Cell boundary information can also be encoded by providing auxiliary pattern features (method 201 of Figure 5) and, in particular, by providing separator zones between the value-defining area of each cell. Figure 7 illustrates the absolute-value encoding of the same binary array as encoded in Figure 6 using three colours - a first, background colour represented by blank spaces in the Figure, a second colour corresponding to a first binary value (for example "0") and represented by hatching in a first direction in Figure 7, and a third colour corresponding to the second binary value (for example " 1 ") and represented by hatching in a second direction in Figure 7. The value of each cell Cij is represented by a square 21 of the corresponding second or third colour, this square of colour (an indicia) being smaller than the pattern cell size and being centrally positioned in its cell to leave a border all around, in the first colour, that provides separator zones between the colour squares 21 so that neighbouring squares can be the same colour without causing problems. With the relative dimensioning of separator zones and colour squares shown in Figure 7, there is some risk that a single-pixel sensing head 16 could travel at least part way across the pattern along the background and therefore fail to detect correctly the value-representing colour squares 21. However, provided the separator zones are kept relatively narrow, the chances of this happening to a significant extent are small. With the Figure 6 pattern there is, of course, no risk of the sensing head missing the value representing cell areas. Cell boundary information can also be provided by a combination of encoding with cell value (as in Figure 6) and the use of separator zones (as in Figure 7). For example, transitions in the horizontal direction could be rendered detectable by ensuring a change in cell colour whilst transitions could be marked by separator zones.
The use of pattern-independent means to delimit cell boundaries is also possible, for example, by providing means that register movement of the sensing head 16 by vertical and horizontal distances corresponding to the vertical and horizontal pitch of the cells. Such arrangements are not preferred.
Cell Inter-Relationship Information - It is, of course, necessary to be able to positionally relate a sensed cell to previously sensed cells in order to ascertain the relative locations of array/ sequence elements decoded from the sensed pattern thereby to accurately construct a windowing sub-array or sub-sequences. Where the, sensing head 16 senses more than one cell at a time, the inter-relationship of the sensed cells can be readily derived from the sensed image, the cell inter-relationship information being directly conveyed. However, where a single-pixel sensing head is used, the cell inter-relationship information must be conveyed by one (or more) of the three general methods 200, 201, 202 of Figure 5, or else an assumption must be made regarding sensing head movement (for example, that it is moving in a straight line) and the resultant decoded array/ sequence then checked for consistency with this assumption. In fact, for single-pixel sensing an acceptable solution may lie in providing some inter-relationship information and also making some assumptions as to direction of movement.
Encoding of full cell inter-relationship information along with cell value information
(method 200) requires that each neighbour cell of any given cell all present different colours from than cell and the other neighbours cells, regardless of the underlying element values being encoded. Even if only horizontal and vertical transitions are considered (and not diagonal transitions), a mimimum of nine colours are required; when diagonal transitions are taken into account, at least seventeen colours are needed which is not preferred due to the demands placed on the sensing head 16 and associated colour detection circuitry.
Cell inter-relationship information can be incorporated in auxiliary pattern elements (method 201 of Figure 5), a preferred way of doing this being to colour code separator zones provided to delineate cell boundaries. Thus, Figure 8 illustrates part of a pattern in which the value of each cell is represented by an appropriate coloured square 21 and separator zones 23 and 24 are used to delimit each cell. The separator zones 23 delimit each cell in a vertical direction and the separator zones 24 delimit each cell in a horizonal direction. The zones 23 are of a different colour to the zones 24 and both zone colours are different from the colours used for the colour squares 21. Such an arrangement gives horizontal and vertical relationship information during transition from one cell to another but does not indicate whether the new cell lies above/below (for vertical movement) or to the right/left (for horizontal movement). For the Figure 8 pattern, it is therefore necessary to make an assumption in respect of this direction information. Figure 9 shows a pattern similar to Figure 8 but for which it is unnecessary to make any assumptions as to direction. In Figure 11, colour squares 21 are again used to encode array/sequence element values although in this case, the colouring of the square 21 is not shown for ease of illustration. The colour squares 21 are separated from each other by separate zones 25 each coloured in one of four possible separator zone colours distinct from the colours used for the squares 21. The separator zones separating adjacent squares 21 in rows running parallel to the horizontal axis Ap are alternatively coloured in two of the four possible separator zone colours whilst the zones 25 separately adjacent square 21 in columns running parallel to the vertical axis Bp are alternatively coloured in the other two of the four possible separator zone colours. Whenever a single pixel sensing head 16 transits from one colour square 21 to another, it will cross a zone 25 the colour of which uniquely indicates the direction of movement of the sensing head 16. Furthermore, since diagonal transitions will generally involve crossing the ends of two separator zones, one of each type, the inter-relationship of starting and finishing cells in a diagonal transition can also be determined.
The provision of cell inter-relationship information by means independent of the pattern itself (method 202 of Figure 5) is, of course, feasible (for example by sensing direction of movement of the sensing head 16 over the pattern) but will generally not be preferred.
Pattern Orientation Information - Depending on the orientation characteristics of the underlying array/sequences, differing amounts of orientation information need to be provided. Thus, for patterns based on 4-orientable arrays, no orientation information is needed whilst for patterns constructed from orientable or complement-orientable sequences, it is generally only necessary to identify which sequence runs in the horizontal direction and which runs in the vertical direction.
As with the oth er types of information, pattern orientation information can be made available in accordance with any one (or more) of the methods 200, 201, 202 of Figure 5. However, it may be noted that orientation information is closely related to cell inter-relation information and can generally be provided jointly with the latter. For example, for the Figure 8 pattern the separator zones 23, 24 already identify vertical and horizontal transitions respectively, and this is all the orientation information required for 2-orientable pattern (in fact, the separator zones 23, 24 need only have identified different transition directions to give the desired cell inter-relationship information - the association of separator zones 23 with vertical transitions and zones 24 with horizontal transitions actually provides the additional orientation information).
Where cell inter-relationship information is not specifically provided (for example, because it is apparent upon inspection as with a sensing head 16 that senses more man one cell at a time), then of course the orientation information cannot be incorporated with the cell inter-relationship information and specific means must be used to carry the orientation information. Figure 10 illustrates one such way of providing orientation information (by method 201 of Figure 5). More particularly, Figure 10A illustrates how a colour square 21 such as is used in Figure 7,8 and 9 to encode array/sequence element value information, can be marked in its comer directed towards the origin of axes Ap and Bp, with an orientation indicia 22 of a different colour to the colours used for the colour square 21. If all the colour squares of a pattern were marked in this way, then upon a sub-pattern being sensed, it is a relatively easy matter to determine the orientation of the sub-pattern. Thus, for example, the sub-pattern shown in Figure 10B (which corresponds to the first three rows and columns of the Figure 7 pattern with orientation indicia added) can be seen to be rotated through 270° relative to the pattern orientation of Figure 10A. Orientation indicia 22 of the Figure 10 form are, of course, only applicable to cases where the sensing head 16 provides sufficient resolution to discern the relationship between at least one such indicia and its associated colour square 21. Example Encodings
Having discussed the types of information, requiring to be provided for pattern recovery and given examples of how each information type might be encoded, several complete encoding schemes are next considered for recoverably encoding both arrays and sequences. All the encoding schemes considered below encode the required information within the pattern 20 (that is, by use of methods 200, 201 of Figure 5); provision of information independently of the pattern 20 is generally not preferred as is would require a supplementary sensing system. Encoding of Arrays - Two dimensional arrays are preferably encoded by absolute value encoding of their element values. For example, for a 2-orientable array, an encoding scheme such as used for the Figure 8 pattern is suitable. In the Figure 8 pattern, array element values are encoded by an appropriate one of two colours for the colour squares 21; cell delineation is provided by the separator zones 23,24; cell inter-relationship information (vertical, horizontal and diagonal relationships) for single-pixel sensing is provided by differently colouring the zones 23 and 24; and orientation information is provided by knowing which zone colour is associated with vertical transitions and which with horizontal transitions.
Encoding of Sequences using Absolute- Value Encoding - For patterns based on pairs of orthogonal sequences, one extending horizontally and the other vertically, the sequences must first be combined into a two-dimensional array for absolute-value encoding to be readily applicable. Figure 11 illustrates two possible ways of deriving a suitable array from two orthogonal sequences (in the illustrated examples, the sequences are two PRBSs referred to as PRBS-1 and PRBS-2).
In Figure 11 A, PRBS-1 has been written out parallel to the horizontal axis Ap and PRBS-2 has been written out parallel to the vertical axis Bp. Within each cell Cij has been written the ordered pair of element values from PRBS-1 and PRBS-2, corresponding to that cell. There are four possible such ordered pairs, these being (0,0), (0, 1), (1,0) and (1,1). By assigning a value to each different ordered pair, it is possible to assign one of four possible values to each cell. It is this cell value that is subsequently translated into a corresponding pattern feature.
In Figure 11B the two PRBS's have again been written out along the axes Ap and Bp respectively. However, this time the elements of PRBS-2 have been written at a spacing of two rows between adjacent elements, starting at the second row. Each odd numbered row of the cell array (the first row being numbered row one) is filled with a copy of PRBS-1. Each even row is filled with the corresponding element value from PRBS-2. The value of each cell is thus either one or zero as each cell is only associated with an element from one of the two PRBSs.
Figure 12 illustrates a pattern produced by an absolute value encoding of an array formed by combining two orientable (reversible) binary sequences in the manner illustrated in Figure 1 IA (it will be appreciated that the array and resultant pattern are 2-orientable). The pattern cells can take on four possible values and accordingly four colours are used for encoding array element values. Cell boundary information, cell inter-relationship information and pattern orientation information are all provided by white and black separator zones 26, 27 in the same manner as the zone 23, 24 of the Figure 8 pattern (as the pattern is 2-orientable, it is only necessary to be able to distinguish between horizontal and vertical orientations). In all, six colours are used in the Figure 12 pattern. With regard to cell inter-relationship information, although it is possible to distinguish between horizontal, vertical and diagonal transitions, with a single-pixel sensing head 16 it is not possible to ascertain the direction of a detected transition. However, it is practical to proceed on the basis that the direction of movement of the sensing head remains unchanged; this assumption will only be incorrect in the case of direction reversal and such an event can be quickly detected due to the resultant mismatches with the expected pattern. Where a sensing head with a multi-cell field of view is used, then all necessary movement direction information can be derived from the sensed image. Figure 13, like Figure 12 illustrates a pattern produced by an absolute value encoding of an array based on two orientable (reversible) binary sequences; however, in this case the sequences have been combined into an array in the manner illustrated in Figure 11B whereby each cell has only two possible values (in fact, Figure 13 is an encoding of the sequences shown in Figure 11B). In the Figure 13 example, the cell boundary issue is tackled by the use of colours squares 21 on a differently coloured background (reference Figure 7); as a result, only two colours are needed to represent cell value, one for each possible binary value. The background is represented by two further colours with the cells in odd pattern rows having a first background colour 28 and cells in even pattern rows having a second background colour 29. As a result, the colour squares 21 appear against a striped background that provides both some limited cell inter-relationship informtion, as well as orientation information sufficient to indicate which row relates to which of the two underlying reversible sequences.
In the Figure 11B arrangement for combining the Ap-axis sequence and the Bp-axis sequence into an array, each altemate row contains cells representing the same element of the Bp-axis sequence; similarly, each altemate row of the Figure 13 pattern contains colour squares 21 representing the same element of the Bp-axis sequence. As a result, it is possible to modify the Figure 13 pattern by running together the colour squares 21 in the same Bp-axis sequence row. Indeed, at the cost of using one extra colour, each row being used to represent an element value of the Bp-axis sequence, can do so by being fully coloured with one of two unique colours depending on the binary value of the value of the element being represented (these colours would be different to the ones used to represent the elements values for the Ap-axis sequence). Colour squares 21 would then no longer be used to represent the Bp-axis seqeunce. Furthermore, the colour squares 21 used to represent the Ap-axis sequence can now be extended parallel to the Bp-axis to the edge of the adjacent rows because these rows can be guaranteed to be of a different colour to the Ap-axis sequence squares 21; the background zones separating the Ap-axis sequence squares 21 in the direction parallel to the axis Ap would, however, be retained to ensure discrimination between adjacent cells. Thus, in this modified form of the Figure 13 pattern, the cell boundary detection issue is dealt with by the Figure 6 technique when moving along Ap-axis sequence rows and by the Figure 7 technique when moving between rows.
Encoding of Sequences using Transitional Encoding - Where a pattern 20 is directly based on two underlying orthogonal windowing sequences, one (herein the horizontal sequence) for position determination along the horizontal pattern axis Ap and the other (the vertical sequence) for position determination along the vertical pattern axis Bp, then it is convenient to use a transitional encoding scheme to encode sequence values. More particularly, changes in cell value during horizontal cell-to-cell transitions in the pattern are used to encode element values of the horizontal sequence, whilst changes in cell value during vertical cell-to-cell transitions are used to encode element values of the vertical sequence. As transitional encoding schemes appear of practical significance, a general review of such schemes is given below after which three example encodings are considered. The review covers both schemes with and without separator zones; where separator zones (or, for brevity, just "separators") are provided, then any colour coding of the separators to convey cell inter-relationship or pattern orientation information is done on an absolute value basis, not a transitional basis. Schemes that do not employ separators are referred to as 'no separator' schemes. Schemes in which only horizontal, or only vertical, transitions are marked by separators are referred to as 'one separator' schemes. Schemes in which both horizontal and vertical transitions are marked by respectively coloured separators, are referred to as 'two separator' schemes (schemes in which a single colour of separator is used to mark both vertical and horizontal transitions are not considered).
In the following discussion, a first binary windowing sequence (the X-sequence) is to be encoded running parallel to the horizontal pattern axis Ap and a second binary windowing sequence the (Y-sequence) it to be encoded running parallel to the vertical pattern axis Bp.
Suppose that the transitions in the horizontal direction (positive direction of axis Ap) are given by the functions ho and hu and in the vertical direction (positive direction of axis Bp by functions v0 and vt where the suffixes "0" and "1" refer to the value of the X or Y sequence element to be encoded. This means that if the current cell is coloured with colour c, then the next cell in a horizontal direction is coloured with colour ho(c) or h1(c) according to the value of the corresponding sequence element. The conditions on these functions are that the resultant pattern must encode element value information, must delineate the pattern cells (by colour change between neighbouring cells if no separator is present), and must permit adequate cell inter-relationship and pattern orientation information to be recovered; with regard to the cell inter-relationship and pattern orientation information, me minimum amount of information that must be recoverable shall be taken to be that enabling horizontal and vertical movements to be distinguished and identified. A further condition is that the encoding must be well defined (that is, whatever path is taken across the pattern, application of the encoding functions produce a consistent coding for any given destination cell).
These conditions alone lead to some conclusions about the minimum number of colours necessary for certain types of encoding scheme. Thus, for the coding to be well defined: hi(Vj(c)) = Vj(hi(c)) for all colours x and i,j€ {0, 1},
for otherwise there would be a conflict when determining the colour of the cell diagonally adjacent to a cell coloured c. Furthermore, for decoding to be possible, it must be possible to distinguish between h0(c) and h1(c)) and between v0(c) and v1(c); In other words:
h0(c)≠ h,(c) for all colours c and
v0(c)≠ Vι(c) for all colours c.
If there are no separators, there must be no adjacent cells coloured with the same colour (here "adjacent" is taken as vertically or horizontally adjacent, not diagonally) and horizontal movement must be distinguishable from vertical movement by cell colour so that:
c,h0(c),h1(c),v0(c),vi(c) must all be different for each colour c.
If there is just one set of separators then:
c,h0(c),h1(c) must all be different for each colour c; or c,v0(c),v1(c) must all be different for each colour c.
Where two sets of separators are provided, adjacent cells can, of course, be the same colour.
On the basis of the foregoing:
- If there are no separators, then at least 5 colours are needed.
- If there is just one set of separators, then at least 4 colours are needed. - If there are two sets of separators, then at least 4 colours are needed.
The above discussion only considered horizontal and vertical transitions. Where diagonal transitions are allowed, when such a move is made, there are two bits of information to be determined one for each of the sequences X-sequence, Y-sequence, and referred to below as the X-bit and the Y-bit respectively. There are several levels of information possible depending on the encoding scheme used. Thus, it might only be possible to tell that a diagonal move has been made, or it might also be possible to tell that the X-bit and Y-bit are equal (or unequal), or even what the values of both the X-bit and Y-bit are; another possibility is that it is possible to ascertain either the information that the X-bit and Y-bit are equal, or the value of both bits.
In terms of the functions hi and Vj the colours in the following set may occur a diagonal move away from a cell coloured c:
{(h0( v0 (c)) ,h0(V1(c)),h1 (c)),h1(v1(c))} .
Note that this set has at least two elements, because h0(vj(c)))≠ h1(Vj(c)) and hi(v0(c)) ≠ hi(v1(c)). The size of this set determines me amount of information that can be obtained once it is known that a diagonal move has taken place. An encoding scheme will be said to be r-diagonal (where r = 2,3,4) if the size of this set if equal to r). the problem of detecting diagonal moves is different depending on the number of separators. If there are two sets of separators, then diagonal moves are automatically detected by the separators. At the other extreme, if there are no separators, then the diagonal values must not be the same as any horizontal or vertical ones: in other words, the following condition must be satisfied for each where c:
{c,h0(c ,h1 (c),v0(c),v1 )}∩ {h0(v0(c)),h0(v1(c)),h1(v0(c)),h1(v1(c))} = Ø If there is one set of separators, say separating cells in a vertical direction, then crossing a separator indicates either a vertical or a diagonal move has occurred. For one separator scheme, therefore, the following condition must be satisfied for each colour c:
{v0(c),v1(c)}∩ {h0(v0(c)),h0(v1(c)),h1(v0(c)),h,(v1(c))} = Ø
The above-stated additional conditions resulting from a consideration of diagonal transitions means that:
- If there are no separators, then the following numbers of colours are required: 8 for a 2-diagonal encoding; 8 for a 3-diagonal encoding; and 9 for a 4-diagonal encoding.
- If there is just one set of separators, then the following numbers of colours are required: 5 for a 2-diagonal encoding; 6 for a 3-diagonal encoding; and 7 for a 4-diagonal encoding.
- If there are two sets of separators, then the following numbers of colours are required: 4 for a 2-diagonal encoding; 5 for a 3-diagonal encoding; and 6 for a 4-diagonal encoding.
Where diagonal transitions are permitted, schemes providing 4-diagonal properties are preferred as they facilitate recovery of X-bit and Y-bit information.
The foregoing conditions placed on the encoding functions do not guarantee that full cell inter-relationship or pattern orientation information will be recoverable. Whilst it is usually adequate to make the assumption that the direction of movement remains unchanged until an inconsistency is detected, this still leaves a deficiency of orientation information for 1-orientable sequences (deBruijn sequences and PRBSs). Furthermore, for both orientable and complement-orientable sequences, further conditions must be placed on the encoding functions in order to present the 2-orientable property. These further requirements of the four types of sequences are considered below:
Considering for example the horizontal dimension in which the X-sequence is encoded, then the only possible transitions from a given cell of colour c are ho(c), h,(c), h0 -1(c),h1 -1(c) where the superscript "-1" indicates a reverse transition. The further conditions to be placed on the encoding function are then: de Bruijn sequences - in order to give full orientation information h0(c),h1(c). ho -1(c),- ho -1(c) are all different
PRBS - in order to give full orientation information:
h0(c) = ho -1(c );h1 (c)≠ h1 -1(c)
(in this case, any window sequence will contain a
" 1" and the encoding of this " 1 " gives direction information on reading)
Orientable Sequences in order to present the 2-orien table property:
ho(c) = ho -1(c);h1(c) = h1 -1(c)
Complement Orientable in order to present the 2-orientable property:
h0 = h1 -1(c)
It may be noted that the above conditions placed on the encoding of the de Bruijn sequences does provide full cell inter-relationship and pattern orientation information so that no assumptions are needed regarding the movement direction; schemes satisfying the stated conditions do, however, require a substantial number of colours.
Having considered the conditions generally required to be fulfilled by the encoding function, two types of such functions are described followed by examples. More particularly, the following two types of functions have been found of use:
"Addition modulo N": h0(c)=c+a (mod N),h1(c)=c-a (mod N), v0(c)=c+b (mod N),V1(c)=c-b (mod N), where a,b≠ 0
"Bitwise Exclusive-OR": h0(c) = c.XOR.a ; h,(c) c.XOR.b v0(c) = c.XOR.d ; v,(c) c.XOR.e where a,b,d,e≠ 0,
a≠ b and d≠ e First Example
Fig 14. No separators, Five colour encoding
h0(c)=c+1 (mod 5) ; h1(c)=c-1 (mod 5), v0(c)=c+2 (mod 5) ; v,(c)=c-2 (mod 5)
No diagonal properties
Suitable for compliment-orientable sequences
This encoding scheme produces the simplest pattern in the sense that it uses only five colours and has no separators. However, because it has no diagonal properties, the scheme is only suitable for situations where diagonal transitions do not occur or occur ony infrequently. Figure 14A gives the encoding table for the scheme, each horizontal row giving the result of applying each of the encoding functions to one particular colour (the five possible colours are referenced C1 to C5). Figure 14B illustrates a portion of a pattern generated by applying the encoding scheme to encode the X- and Y-sequence sections shown in that Figure. Figure 14C is a decoding table which given the old and new cell colours, decodes a transition into an X-bit or Y-bit, the bit values shown in the table being followed by X or Y to indicate the sequences to which they belong.
Second Example
Fig 15. Two separators, six colour encoding
h0(c) = c ; h1(c) = c.XOR.1
v0(c) = c ; v1(c) = c.XOR.2
Four diagonal properties
Suitable for orientable sequences
This encoding scheme realises the minimum number of colours for a 4-diagonal coding and when used to encode two orientable sequences, produces a pattern of significant practical utility (even though full cell inter-relationship is not provided, requiring the assumption to be made that the direction of movement remains constant until otherwise proven). Of the six colours, two are used for the separators (one for the separators crossed when moving vertically and the other for separators crossed when moving horizontally); the remaining four colours are used to carry sequence element value information. Figure 15A shows an encoding table for the scheme, the four colours, used for carrying the element value information being referenced C1,C2,C3,C4 with respective binary values of 00,01,10,11. Figure 15B represents a pattern portion derived from using the encoding scheme to encode the portions of me X-and Y- sequences shown in that Figure (it will be appreciated what in Figure 15B the separators have not been depicted - the actual form of the pattern being similar to mat shown in Figure 12 with the colours C1 to C4 being the colours of the colour squares 21). Figure 15C shows a decoding table for deriving X- and Y- bit values from colour transitions read from a pattern encoded according to the scheme. The decoding table is divided into three sections "Horizontal", "Vertical" and "Diagonal", the section relevant to a particular transition being dependent on the direction of movement of the sensing head as determined by the colour of the separator (or separators) crossed in the course of the transition. A diagonal transition does of course produce both an X-bit and a Y-bit value whilst horizontal and vertical transactions only produce an X-bit and Y-bit respectively. Third Example
Fig 16. No separators, 8 colour encoding
h0(c) = c.XOR.4 ; h,(c) = c.XOR.2
v0(c) = c.XOR.1 ; v,(c) = c.XOR.7
Two diagonal properties
Suitable for orientable sequences
In this encoding scheme, eight colours C1 to C8 are used with respective binary vlaues of (000) to (111). Figure 16A shows an encoding table for the scheme. Figure 16B represents a portion of a pattern encoded according to the scheme, and Figure 16C shows a partial decoding table (unfilled boxes in the table indicate diagonal transitions, but as the encoding scheme has only two diagonal properties, X-bit and Y-bit values are not immediately derivable).
Further Examples
Almough the use of sequences that are neither orientable nor complement-orientable, is not preferred, for completeness suitable encoding functions for de Bmijn sequences and PRBSs are: de Bmijn: h0(c)=c+ 1 (mod 5), h1(c )=c+2 (mod 5),
PRBS v0(c) = c (mod 3), v1(c) =c+ 1 (mod 3).
These functions only apply, of course, to one dimension and merely serve to illustrate the availability of functions satisfying the conditions previously given for obtaining full cell inter-relationship information for a particular sequence.
Pattern Sensing and Position Determination
The general functioning of the sensor 11, sub-pattern image processing unit 12 and position determining unit 13 have already been described.
For the patterns described above, the sub-pattern data passed from me sub-pattern image processing unit 12 to the position-determining unit 13, will generally be in the form of binary data representing the sub-array/sub-sequences underlying the sensed sub-pattern in an orientation in which the location of the sub-array/sub-sequences can be uniquely determined within the pattern. As indicated above, position determination can be effected by a matching process, by use of an index relating sub-pattern data to pattern position or by calculation. Position determination by calculation provides a good compromise between speed and cost, especially for large arrays and sequences. Where the windowing pattern is based on a combination of two PRBSs, then the location of each window-length subsequence sensed can be determined within its respective PRBS by using a computing machine to implement the method disclosed in Appendix C. Where the windowing pattern is based on a pseudo-random array, then position determination can be carried out by using a computing machine to implement the method disclosed in Appendix D. As previously noted, following initial determination of the location of the stylus 11 , the position determination unit 13 can be arranged to change its mode of operation to one in which any change in the pattern sensed by the stylus is used to provide an updated location based on the incremental change in location indicated by the change in sensed pattern. Operation in this mode depends on the apparatus being able to assess correctly the direction of movement of the stylus; altematively, the apparatus may operate by assuming an unchanging direction of movement until a mismatch between a sensed pattern element and that predicted by the stored pattern indicates otherwise, the apparatus thereafter effecting a position recovery operation. In order to avoid an error in the detection of an incremental change giving rise to a progressively increasing position error as subsequent position changes are accumulated, an absolute position determination may be effected at appropriate intervals. Of course, whenever the stylus 11 is lifted off the pattern and replaced in a different position, an absolute position determination should be effected. Stylus lift-off can be readily detected by an appropriate sensor or simply by recognizing a loss of pattern image by the sensing head 16.
Example Implementation
A more detailed description will now be given, with reference to Figures 17 to 30, of a processor-based embodiment of the position-sensing apparatus which employs a single-pixel sensing head 16 to detect pattern features of a two separator six-colour pattern 20 that encodes two orientable binary sequences, and which utilizes incremental position updating following initial absolute-position determination. With certain differences (to be described) in the low-level processing effected by the Figure 17 apparams, the apparatus can be used both with a pattern of the Figure 12 form in which sequence values are encoded in absolute terms, and with a pattern of the Figure 15 form in which sequence values are encoded by transitions.
In the following description of the Figure 17 apparatus, the two orientable binary sequences encoded in the pattern will be referred to as the X-sequence (providing position information in the horizontal co-ordination direction Ap) and the Y-sequence (providing position information in the vertical co-ordinate direction Bp).
The Figure 17 apparatus comprises a pattern 20 (of the Figure 12 or 15 form) a single-pixel sensing head 16, low-level hardware 50 for generating outputs indicative of the values of successively traversed X and Y bits, and a processor sub-system 51 for effecting high level processing of the outputs of the low level hardware 50 to track the movement of the sensor head 16 over the pattern 20.
The low-level hardware 50 is illustrated in functional block diagram form in Figure 18 and comprises opto-electronics block 80 operative to provide an output indicative of the colour sensed by the sensor head 16, a colour interpreter 311 outputting a four-bit code on bus 81 indicative of X and Y bit values and the presence of separating zones, a control state machine 82 controlling operation of the low-level hardware 50, a latch 85 for holding the X and Y bit values of a colour square 21 sensed by the head 16, a zone memory 84 for storing data on separating zones 26, 27 previously traversed by the head 16, an interrupt generator 83 for generating interrupts to cause the high level processor sub-system 51 to indicate to the low-level hardware 50 when it has finished servicing the last interrupt generated by the interrupt generator 83.
The opto-electronics block 80 is shown in greater detail in Figure 19. Both the Figure 12 and Figure 15 patterns use six colours (here referred to as C1 to C6) with four of these colours C1 to C4 being used for the colour squares 21 that represent X,Y value pairs, and two of the colours C5, C6 for the separating zones 26, 27 (separators) separating the squares. In this embodiment, the six different colours C1 to C6 to be detected in the pattern 20 are composed from three different mono-chromatic colour of wavelengths x1 , x2 and x3 respectively (it will be appreciated that these wavelengths will generally be in the visible or near-visible spectrum, including infra-red). More particularly, three of the pattern colours correspond to respective individual ones of the monochromatic colours whilst the other three pattern colours correspond to a respective monochromatic colour pairing that is (x1, x2), (xj, x3) and (x2, x3). Where a pattern element is represented in a particular colour, men this element is effective to reflect light incident on the element that is of a wavelength corresponding to the or each monochromatic component colour of the pattern colour concerned. To determine the colour of a pattern element, therefore simply requires the element to be illuminated by all three monochromatic colours and the reflected radiation analysed to determine which monochromatic colour or pair of colours has been substantially reflected from the pattern element.
Thus, in Figure 19 three monochromatic light sources T1, T2, and T3 powered by driver electronics 300 are arranged to launch optical signals of respective wavelengths x1, x2 and x3 into respective optical fibres 301, 302 and 303 for the purpose of illuminating the pattern 20. The fibress 301, 302 and 303 together with reflected-radiation fibres 304, 305 and 306 are formed into a flexible bundle 307 that extends from the stationary opto-electronics block 80 to the probe 11. The fibres terminate juxtaposed a focusing lens and jointly constitute therewith the sensing head 16. The fibres may be spliced together. The fibres 304, 305 and 306 pick up radiation reflected from the pattern and pass this radiation via respective filters F1, F2 and F3 to respective photo-diodes 308 where the filtered radiation is detected. Figure 20 shows the transmissivity of the filters F1, F2 and F3 as a function of wavelength together with the envelope of the radiation transmitted by me light sources T1, T2 and T3. As can be seen, filter F1 passes light from the source T, filter F2 passes light from the source T2 and filter F3 passes light from the source T3.
The photo-diode signals are amplified and level detected in signal conditioning circuiting 309 to produce three monochromatic colour output signals indicative of the presence or absence of wavelength components x1, x2 and x3 in the reflected radiation.
These output signals are passed to colour determining circuitry 310 which serves to translate the colour components into the corresponding one of the six colours Cl to C6 of the pattern 20 and to energize an appropriate one of six outputs of the circuitry 310; these outputs form the outputs of the opto-electronics circuitry 80 with the output representing the currently - sensed colour being at a logical " 1" level and the other outputs being at a logical "0" level.
It will be appreciated that the opto-electronics 80 can be arranged in a variety of different ways to that described with reference to Figures 19 and 20. Thus, for example, me monochromatic light sources T1, T2 and T3 could be pulsed to enable greater instantaneous power levels to be achieved and/ or modulated and synchronously detected to improve noise immunity. Again, the three separate monochromatic sources T1, T2 and T3 could be replaced by a broadband light source (a "white light" source). In this case, it would also be possible to represent the six pattern colours by respective, single wavelengths with the pattern colour then being detected directly by an arrangement of six filters and photo-detectors (care would, of course, need to be taken to ensure sufficient discrimination between adjacent colours). Furthermore, the light sources and detectors could all be packaged into the probe 11 and an appropriate cordless link (for example, a radio link) provided to pass detection signals to the remainder of the low-level hardware 50.
Returning now to a consideration of Figure 18, the six colour outputs of the optoelectronic are fed to the colour interpreter 311 where a four-bit code is produced on line. Each bit B0 to B3 of the four-bit code output on line 81 has a particular significance. More particularly:
B0 - indicates whether the head 16 is over a colour square 21 (in which case B0 = '0') or a separating zone 26, 27 (in which case B0 = '1');
B1 - indicates the identity of the separating zone sensed by the head 16, having a value '0' when a zone 26 (traversed by the movement along the X-sequence) is encountered, and a value T when a zone 27 (traversed by movement along me Y-sequence) is encountered - it will be appreciated that the value of Bl is only valid when BO = ' 1';
B2 - indicates the X-sequence bit value '0' or ' 1' represented by a colour square 21, or transition to that square, as sensed by the head 16 - the value of B2 is only valid when B0 = '0'; and
B3 - indicates the Y-sequence bit value ('0' or '1') represented by a colour square, or transition to that square, as sensed by the head 16 - the value of B3 is only valid when B0 = '0'.
The form of the colour interpreter 311 depends on whether the pattern 20 is of the Figure 12 or Figure 15 form. Where the pattern is of the Figure 12 form in which the colours C1 to C4 each directly encode one X-bit and one Y-bit, the colour interpreter can take the form of a simple decoding matrix translating each colour C1 to C6 into a corresponding set of values for bits B0 to B3 in accordance with table 87 shown in Figure 21. Where the pattern is of the Figure 15 form in which the colours C1 to C4 are used to implement transitional encoding of the X- and Y- sequence elements values, then a suitable form for the colour interpreter 311 is as shown in Figure 22. In the Figure 22 form of the colour interpreter 311, the separating zone colours C5 to C6 are used to generate the output bits B0 and B1. More particularly, the colour signal lines for colours C5 and C6 are both fed to an OR gate 320 the output of which provides bit BO (a logical " 1 " whenever the sensing head is over a separating zone, and otherwise "0"). The signal on the colour signal line for colour C6, directly provides bit B1. With regard to the colour-square colours C1 to C4, 'old' and 'new' indications of the colour sensed by the sensing head 16 before and after it transits across a separating zone (or zones) are held in respective stores 322 and 321. Both stores are clocked off a " 1 " to "0" transition of the bit B0 so that upon the sensing head moving to a position above a new colour square, the colour of that square is stored in store 321 whilst the colour previously held in that store is transferred to store 322. The colours held in stores 321 and 322 are then used to drive a decoding matrix 323 to provide bits B2 and B3. The decoding matrix 323 implements the "Diagonal" section of the decoding table of Figure 15C. Whilst, of course, not all transitions made by the sensing head 16 are diagonal transitions, it is possible to use just the "Diagonal" section of the decoding table because the X-bit and Y-bit information contained in this section is consistent with the "Horizontal" and "Vertical" sections, and the selection of whether the X-bit, Y-bit, or both are to be taken can be made subsequently by reference to bits B0 and B1. The zone-related bits B0, B1 of the code output by the colour interpreter 311 are fed via the bus 81 to the zone memory unit 84. This unit 84 is provided with two 2-bit memory latches 91 and 92 (respectively labelled 'LZ' and 'PZ' in Figure 18) which are both reset to '00' in a manner to be described hereinafter, following each successive intemipt-initiated transfer of an X and/or Y bit value to the sub-system 51. Subsequent to each resetting, as the sensing head 167 is moved across the pattern 20 and encounters one or more zones 26, 27, the LZ latch 91 is used to store the identity of the last zone (hence 'LZ' latch) traversed by the sensing head 16 and the PZ latch 92 is used to store the identity of the last but one zone (that is, the penultimate zone and hence 'PZ' latch) traversed by the head 16. To this end, the unit 84 is further provided with a zone comparator 89 and a latch control unit 90. The zone comparator 89 is enabled when B0 = ' 1' (i.e when the head 16 is over a zone 26, 27) and in mis state is operative to compare the current value of the pair of bits B0 and B1 as provided on bus 81, with the value stored in the LZ latch 91. If these values are the same, men the output of the comparator remains low (which is also its condition when the comparator is not enabled); if the compared values differ, the output of the comparator goes high and this transition causes the latch control unit 90 first to clock the contents of the LZ latch 91 into the PZ latch 92, and then to clock the current values of bits B0, B1 into the LZ latch 91.
The behaviour of the zone memory unit 84 following the resetting of the latches 91 and 92 is therefore as follows. Initially, the LZ and PZ latches 91 and 92 both hold '00'. This situation remains unaltered until the sensing head 16 traverses a separating zone 26, 27. At this point the comparator 89 is enabled and because the value of the bit pair B0, Bl inevitably differs from the contents of the LZ latch 91, the latch control unit 90 is triggered causing the current values of B0, B1 to be stored in the latch 91. The contents of the LZ and PZ latches thereafter remain unchanged unless and until latches 91, 92 are reset or the sensing head 16 traverses a zone having an identity (as indicated by bit B1) different from mat of the zone in respect of which bits B0 and Bl were previously stored in LZ latch 91. In this latter case, the zone comparator 89 will trigger the latch control unit to store the contents of the LZ latch 91 into the PZ latch 92 and store the new current values of B0 and B1 into LZ latch 91.
It will be noted that the zone memory unit 84 does not register the second occurrence of a separating zone with the same identity as a previously stored zone. The reason for this is that such a second occurrence should not, in fact, occur in practice before the latches 91, 92 are reset so that any apparent second occurrence can generally be ignored. The value of the B0, B1 bit pair stored in the LZ latch 91 is output as signal LZ and similarly, the value of the BO, Bl bit pair stored in the PZ latch 92 is output as signal PZ.
The control state machine 82 has four states (Idle, Latch, I-Enable, Reset) inter-related in the manner indicated by the state transition diagram shown within the box representing the state machine 82 in Figure 18. The conditions causing transitions between the states are indicated on the arcs linking the states, these conditions and the actions associated with each state, are described below.
Idle State - Entered from the Reset state one clock pulse after the latter has been entered (as indicated by T on the arc linking the Idle and Reset states). No action associated with this state.
Latch State - Entered from the Idle state when BO = '0' (i.e. the sensing head 16 is over a colour square 21) and, at the same time, the contents of the LZ latch is other than '00'. Upon entry into this state, a signal 'LATCH' is output from the state machine to latch the values of bits B2 and B3 into the two-cell latch 85 (bit B2 being the X bit value and bit B3 the Y bit value); latching actually occurs following a small delay sufficient to ensure B2 and B3 have settled.
I-Enable State Entered from the Latch state one clock pulse after the latter has been entered. Upon entry into this state, a signal 'INT ENABLE' is output from the state machine 82 to enable the interrupt generator 83 to initiate transfer of one or both of the bit values held in latch 85 to the processor sub-system 51.
Reset State - Entered from the I-Enable state when the value FLAG of the flag register 86 equals ' 1' (that is, following completion of a bit-value transfer to the processor sub-system 51). Upon entry into this state, a signal 'RESET' is output from the state machine to reset the LZ and PZ latches 91, 92, the X/Y latch 85 and the flag register 86 ready for a new cycle of operation.
The state machine 82 thus effects one cycle of operation from the Idle state, via its Latch, I-Enable and Reset states and back to its Idle state, whenever the sensing head 16 encounters a colour square 21 after having crossed a separating zone 26, 27 subsequent to the last resetting of the LZ latch, that is, subsequent to the last cycle of operation of the state machine. During execution of a cycle of operation, the state machine 82 brings about me transfer of an X and/or Y sequence bit value to the processor sub-system 51 and then sets up the low-level hardware to recognize a new X and/or Y bit.
The interrupt generator 83 determines whether an X bit, a Y bit or both are to be transferred to the processor sub-system 51 and initiates this transfer, when enabled by the signal ENT ENABLE from the state machine 82, by asserting an appropriate one of three interrupts. The interrupt generator 83 is built around decoding logic that determines whether an X and/or Y bit is to be transferred in dependence on the values of the signals LZ and PZ, this determination being in accordance with the truth table 88 shown within the box representing the interrupt generator 83 in Figure 18. In this truth table 88, the values of LZ and PZ have been shown as ordered pairs of binary values, the first value corresponding to the stored value of BO, and the second to the stored value of Bl. Because the signals LZ and PZ cannot take on the value '01', entries in the table 88 corresponding to this value have been struck through. Furthermore, entries corresponding to LZ = '00' are given as 'N.A' ('no action') because no bit transfer can take place in such circumstances as the interrupt generator cannot be enabled by the state machine 82 to generate an interrupt, the latter being held in its Idle state until LZ changes from '00'. However, when PZ = '00' and LZ equals '10', the X bit value (but not the Y bit value) held in latch 85 should be transferred; this is because the LZ and PZ signals show that the only separating zone traversed since the last transfer is one indicating that the head 16 has been moved along the X-sequence whereby a new X bit value (but not a new Y bit value) is available.
Similarly, when PZ = '00' and LZ equal ' 11' the Y bit value (but not the X bit value) held in latch 85 should be transferred (the LZ and PZ signals show that only a zone indicating traversal of the Y-sequence have been encountered since the last transfer). When both LZ and PZ have their BO bit equal to ' 1 ' (implying that zones indicating movement along both the X and Y sequences have been encountered since the last transfer), then both the X and Y bits in latch 85 should be transferred.
Upon the interrupt generator 83 being enabled by the signal 'INT ENABLE' from the state machine 82, the generator 83 asserts one of three interrupts as indicated by the truth table 88. Thus, if only the X bit value is to be transferred from the latch 85, an interrupt 'Take-X' is asserted. If only the Y bit value is to be transferred from the latch 85, an interrupt 'Take-Y' is asserted. If both the X and Y values are to be transferred, an interrupt 'Take Both' is asserted.
Two examples of the overall behaviour of the low-level hardware 50 will now be given for the Figure 12 pattern with reference to the two sensing-head movement tracks A and B shown in that Figure.
Consider, first, movement of the head 16 along track A from an initial square 21 A having a colour representing X and Y sequence bit values of 1' and '0' respectively (see C3 in table 87 of Figure 21). It will be seen that track A is parallel to the AP axis, that is, along the X sequence only. Assuming that the control state machine 84 has just completed a cycle of operation so that the latches 91, 92 and 85 and the flag register 86 are all in a reset state, then the code value '0010' output on bus 81 from the colour interpreter 311 causes no action, the state machine 82 being in its Idle state needing LZ to change from '00' and the zone memory being disabled awaiting the traversal of a separating zone. As the sensing head 16 moves along track A, it encounters an X-sequence separating zone 26A (colour C5) causing the colour interpreter 311 to output a code value ' 1000'. As a result, the zone memory 84 is activated and bits B0 and Bl of the code ('10') are latched into the LZ latch 91 (the PZ latch PZ continues to hold '00'); the state machine 82 remains in its Idle state. The sensing head 16 next encounters colour square 21B having a colour (colour C1) representing X and Y sequence bit values of '0' and '0' respectively. As a result, the colour interpreter 311 outputs a code value '0000' on bus 81. Because LZ now equals ' 10', when the code value '0000' is placed on bus 81, the state machine 82 is caused to transit from its Idle state first to its Latch state to latch in the X and Y bit values ('0' and '0') into the X/Y latch 85, and then to its I-Enable state in which it enables the interrupt generator 83. With LZ and PZ having values of ' 10' and '00' respectively, the interrupt generator 83 asserts the 'Take-X' interrupt to tell the processor sub-system that a new X bit value is available and should be fetched. After the sub-system 51 has fetched the X-bit value from latch 85, it sets FLAG = T thereby causing the state machine 82 to transit to its Reset state, resetting elements 85, 86, 91 and 92 and then to its Idle state.
Considering, next, movement of me head 16 along track B from square 21A with the elements 95, 86, 91 and 92 having just been reset by the state machine 82 on its way to retu rning to its Idle state. Operation of the low level hardware proceeds as described above as the sensing head is moved from square 21 A and across the X- sequence separating zone 26A; thus, the value ' 10' becomes stored in the LZ latch 91 whilst the PZ latch 92 retains '00' and the state machine remains in its Idle state. Next, however, the sensing head 16 as it moves along track B, instead of encountering a new colour square (which would have triggered a transfer operation as described above), encounters a Y-sequence separating zone 27A (colour C6). This causes the colour interpreter to output a code value ' 1100' on bus 81 which, in mm, causes the zone memory to transfer the contents ('10') of the LZ latch 91 to the PZ latch 92, and store the values of B0 and Bl on bus 81 ('11') into the LZ latch 91. In due course, the sensing head 16 is moved along track B to colour square 21C which has a colour (colour C2) representing X and Y sequence bit values of '0' and T respectively. The colour interpreter 311 outputs a code '0001' onto bus 81 which triggers the control state machine from its Idle state and results in the interrupt generator being enabled and asserting the 'Take Both' interrupt to indicate to the processor sub-system that both new X and new Y bit values are available. Upon the processor sub-system completing the transfer of the X and Y bit values, the low level hardware is reset and its cycle of operation re-initiated.
The operation of the low level hardware when following tracks similar to tracks A and B across a pattern of the Figure 15 form is substantially the same as that described above except, of course, with regard to the operation of the colour interpreter 311.
The ability of the Figure 18 hardware 50 to cope with tracks that cross two separating zones 26, 27 in succession without an intervening colour square 21, enables the hardware 50 to deal with most tracks across the pattern, particularly since the size of the colour squares shown in the Figure 12 pattern can generally be increased relative to that of the zones 26, 27. However, if the sensing head 16 is moved along an abnormal track for which the low-level hardware is not designed, the apparatus as a whole would, in the worst case, simply have to re-initiate location acquisition which is not, in itself, a severe penalty.
The low-level hardware 50 is further operative to generate a lift-off interrupt signal when it detects that the sensing head 16 has been moved away from the pattern 20; this functionality has not been represented in Figure 18 for reasons of clarity. Circuitry for implementing the low level hardware will be apparent to persons skilled in the art and will therefore not be described in further detail herein.
Turning now to be a consideration of the high level processor sub-system 51, this subsystem is operative to mn several processes concurrently, these being a process 60 (the XBIT process) for effecting position determination in the X co-ordinate direction on the basis of the X bit values supplied by the low-level hardware 50, a process 61 (me YBIT process) for effecting position determination in the Y co-ordinate direction on the basis of the Y bit values supplied by the hardware 50, and an output process 62 for outputting absolute position information on the basis of me X and Y positions determined by processes 60 and 61. The output process 62 interfaces with the XBIT and YBIT processes 60 and 61 through an output buffer 63 in the form of two first-in, first-out FIFOs 76,77 buffer operative to store a series of absolute X and Y positions respectively. Each entry in the FIFOs 76,77 comprises a new X or Y position as appropriate, a sequence number indicating the order of generation of the X and Y entries, and an associated flag bit (the X/Y flag) and each entry having a second associated flag (the Defer Flag) which, if set, indicates that the entry is only provisional and not yet to be output. The purpose of the Defer Flag will be explained more fully hereinafter.
It will be appreciated that the functionality provided by the sub-system 51 encompasses part of the functionality of the sub-pattern image processing unit 12 of Figure 1 as well as all of the functionality of the position-determining unit 13. The sub-system 51 can be implemented using a suitable multi-tasking processor system as will be apparent to persons skilled in the art. Considering the operation of the processor sub-system 51 in more detail, the subsystem 51 interfaces with the low-level hardware 50 through an X/Y bit input buffer 64 in the form of a first-in, first-out (FIFO) buffer. Upon the 'Take X' interrupt being asserted by the hardware 50 to indicate the availability of a new X-sequence bit value, the sub-system 51 executes an interrupt service routine ISR-1 that loads the X bit value in latch 85 into the buffer 64 together with an indication that it is an X bit value. Similarly, upon the 'Take-Y' interrupt being asserted to indicate the availability of a new Y-sequence bit value, the sub-system 51 executes an interrupt service routine ISR- 2 that loads the Y bit value in latch 85 into me buffer 64, together with an indication that it is a Y bit value. When the 'Take Both' interrupt is asserted by the hardware 50, the sub-system 51 executes an interrupt service routine ISR-3 that loads the X and Y bit values in latch 85 into the buffer 64 in that order together with respective indications of the sequence with which each is associated.
The buffer 64 thus forms an input queue of X and Y bit values and the XBIT and YBIT processes 60 and 61 take bits from me head of this queue for processing, X bit values being taken only by the XBIT process 60 and Y bit values being taken only by the YBIT process 61.
Finally with regard to the interaction of the low-level hardware 50 with the sub-system 51, the lift off interrupt generated by the low-level hardware 50 causes the sub-system 51 to execute an interrupt service routine ISR-4 that resets all three main processes 60, 61, 62 and clears the buffers 63 and 64.
The XBIT process 60 will next be described, it being appreciated that the YBIT process 61 is essentially the same except that it operates on Y sequence bits rather tiian X sequence bits.
The XBIT process utilizes four main data structures, these being:
- an X-sequence register 66 storing the X-sequence bit pattern;
- an X-sequence window index 67 which for each possible window length sequence (N bits in length) present in the X-sequence (taking both directions of reading), provides a pointer into the X-sequence indicating the position of the last bit of the window-length sequence (in terms of an offset from the start of the X-sequence) together with a direction flag indicating the direction of reading of the X-sequence;
- an X-pointer list 68 for holding one or more X-position pointers (and their associated direction flags) for indicating the current actual X position (during normal operation), or current candidate X positions (during a reversal recovery process to be described below);
- an initial X-position shift register 69 of length N used to assemble a window- length sequence of N bits from the sensed X-sequence bits during an initial absolute position determination phase of operation of the apparatus.
The YBIT process utilizes corresponding data structures, namely a Y-sequence register 70, a Y-sequence window index 71, a Y pointer list 72, and an initial Y-position register 73. Figure 23 illustrates the XBIT process 60 in the form of a flow chart. The XBIT process controls position tracking in the X co-ordinate direction with the actual tracking being effected by appropriate sub-routines. There are three basic tracking modes, these being: - an "absolute" tracking mode in which absolute position determination is effected by building up a window length sequence of X bits in register and then using the window index 67 to identify an absolute position, this tracking mode being used initially to ascertain an initial absolute position;
- an "incremental" tracking mode in which each new X bit received is assumed to increment the current X position in the direction indicated by the direction flag associated with the current position pointer, this mode being used once an initial absolute position has been established and until the actual next X-bit sensed does not match the next X-sequence bit in the direction indicated by the direction flag (generally such a mismatch will have occurred due to a direction of movement reversal); and
- a "reversal recovery" tracking mode in which an attempt is made to recover from a mismatch occurring in the incremental tracking mode by assuming that a movement direction reversal has occurred and then seeking to identify at what position the reversal took place.
Tracking in the "absolute", "incremental" and "reversal recovery" tracking modes is effected by routines 100, 101, 102 respectively with a further routine 103 ("RR Startup") being associated with the reversal recovery routine 102 as an initialization routine. A global variable TMODE serves to identify the currently operative tracking mode, this variable being assigned one of the values 'A', T, 'R' to indicate the "absolute", "incremental" or "reversal recovery" tracking mode respectively. A further global variable RESULT is used to indicate whether the tracking routines have been successful in their tasks, this variable having possible values 'S' to indicate success, 'D' to indicate that judgement needs to be deferred and 'L' to indicate that the routine has irrecoverably lost track of the current position. Three counts Cn1, Cn2 and Cn3 are also used in the operation of the XBIT process and its sub-routines as will become clear below.
Considering next the Figure 23 flow chart in more detail, after start-up of the XBIT process, an initialization step 105 is instigated. During step 105 the X pointer list 68 is reset to empty, the initial X-position register 64 is reset to zero and the output FIFOs 76,77 are flushed. In addition, the value of "A" is assigned to the variable TMODE to start the tracking process in the absolute tracking mode, the value "L" is assigned to the variable RESULT to indicate that tracking is to be started from a completely lost condition, and the value '0' is assigned to the counts Cn1, Cn2 and Cn3.
Thereafter, the XBIT process 60 executes step 106 in which it examines the top entry in the X/Y bit buffer 64 and if this is an X bit value it removes the value from the buffer 64 and stores it in variable NEW-X. On the other hand, if the top entry in the buffer 64 is not an X bit value, then the step 106 is repeated at intervals until an X value appears at the head of buffer 64 (this reiteration is internal to step 106).
The XBIT process 60 now proceeds to select and execute the appropriate tracking routine, this selection being effected in decision step 107 in dependence on the current value of the variable TMODE. Immediately following start-up of the XBIT process
60, the absolute tracking routine 100 is selected and executed since, of course, the value "A" has been assigned to TMODE during step 105. However, as will be seen below, as tracking continues the values stored in TMODE may change to "I" or "R" in which case the decision step 107 will select the incremental tracking routine 101 or the reversal recovery routine 102 respectively.
Whichever tracking routine 100, 101 and 102 is executed, upon completion of the selected routine the XBIT process 60 proceeds to decision step 108 where it tests the value of the variable RESULT used to indicate the success or otherwise of the executed tracking routine. If the value "L" is returned in RESULT, then this is taken as indicating that position tracking has irrecoverably failed and must be started again from scratch by returning to the initialization step 105. If the value "S" is returned in RESULT, then this indicates that the current X position is known with certainty in which case the incremental tracking mode can be implemented (this being brought about in step 109 by the value "I" being assigned to the variable TMODE). If the value "D" is returned in RESULT, then this indicates that the current X position is not known for certain, but is in the process of being ascertained; this situation can occur either when the XBIT process is in its absolute tracking mode and insufficient bits have yet been accumulated to enable the absolute tracking routine 60 to effect an absolute determination of the current X position, or when the process 60 is in its reversal recovery tracking mode and the current X position has not been unambiguously determined. Generally, when RESULT is returned with "D", the tracking mode will not be changed so that the variable TMODE is unaltered. However, when reversal recovery is first initiated, this is effected by the incremental tracking routine 101 directly initiating the RR start-up routine 103 without the variable TMODE being set to "R"; in this circumstance the variable TMODE is set to the value "R" in step 110 when it is determined that RESULT has a value D and the previous value of TMODE was "V (step 111).
When either the value "S" or "D" is returned in RESULT, then after any appropriate value assignment to variable TMODE, the XBIT process returns to step 106 to fetch a new X bit value.
The absolute incremental and reversal recovery tracking routines 100, 101 and 102 will now be described.
Figure 24 is a flow chart of the absolute tracking routine 100. Upon entry into this routine, the new X bit value stored in NEW-X is entered into the initial X-position register 69 (step 120) to be accumulated with other X bit values to form a window length pattern for the X-sequence. The total number of XBIT values currently accumulated in the register 69 is held in count Cn1. Step 121 tests whether count Cn1 has yet reached the value N indicating that a window length sequence of X bits has been accumulated in the shift register 69. If count Cn1 is less than N, then the count is incremented (step 122) to take account of the newly added XBIT value, an X position entry is made in the output FIFO 76 with the associated Defer Flag set (step 123) for reasons which will become clear later, and the value "D" is assigned to RESULT (step 124) to indicate that a window length sequence is still being accumulated; thereafter the absolute tracking routine is exited.
If the test carried out in step 121 indicates from the value of count Cn1 that a window length sequence of N bits has been accumulated in the register 69, then the absolute tracking routine proceeds to step 125 where it looks up the value of the window length sequence stored in register 69 in the X-window index 67 with a view to ascertaining the current absolute X position. If the window length sequence is successfully found in the index 67, then a pointer to the corresponding position in the X-sequence is entered into the X-pointer list 68, together with a direction flag indicating the direction of reading of the X-sequence giving the window length sequence (step 127). An X position entry is also made in the output FIFO 76 with the associated Defer Flag not set, indicating that the entry is unconditional. Because the current position in the X- sequence is now known, it is possible to replace the last (N-l) X entries flagged as Defer entries in the output FIFO 76 with actual X-position values and this is also done in step 127. Since any X entries flagged as Defer, that are positioned ahead of the replaced X entries in FIFO 76 cannot be successively recovered, such entries must be deleted (again, this is carried out in step 127). In step 128, the value "S" is assigned to RESULT to indicate that the X-position has been successfully found and the incremental tracking mode may now be entered.
If the window length sequence accumulated in register 69 is not found in index 67 (steps 125 and 126) then this indicates that one or more of the accumulated bits are in error so that the accumulation process must be continued. In this case, steps 123 and 124 are next executed before the absolute tracking routine 100 is exited. Note that it is not necessary to increment the count C1 because N bits have ready been accumulated and further processing takes place on the basis of losing the oldest bit accumulated in the register 69 as each new X bit is added to the register (the register 69 being of window length N). In due course the errored bit or bits will become shifted out of the register 69 and the window length sequence remaining in the register will be successfully located in the index 67.
Figure 25 is a flow chart of the incremental tracking routine 101. This tracking routine works on the basis that once the absolute X-position has been established, each new X bit can simply be used to increment the X-position by 1, the routine working on the assumption that the direction of X movement remains unaltered from mat which was associated with the initial absolute position determination. However, in order to check the validity of this assumption, the value of each new bit as supplied from the low-level hardware 50 is compared with the value of the next X-sequence bit as predicted from the X-sequence stored in the register 66 given the current X-position and direction of movement (as indicated by the pointer in the pointer list 68). This check is carried out by step 130 in the Figure 25 flow chart. If the actual and predicted values of the new X-sequence bit match (step 131) then the assumption about direction of movement is assumed valid and the X-position pointer held in the list 68 is incremented in the direction of movement indicated by the associated direction flag (step 132). Thereafter the new X-position is stored in the output FIFO 76 with the associated Defer Flag not set (step 133) and the value "S" is stored in RESULT (step 134). If, however, the value of the new X-position actually sensed differs from mat predicted from the stored X-sequence, then a reversal of X-direction movement is assumed to have taken place and reversal recovery is initiated with the reversal recovery start-up routine (RR startup 103) being called.
Before describing the RR start-up routine 103 and the main reversal recovery routine 102, with reference to the flow charts of these routines shown in Figures 28 and 29 respectively, a general description will first be given of the reversal recovery process. Considering first the Figure 12 pattern, Figure 26A shows a series of seven colour squares 21 extending in the X-sequence direction, the squares representing X-sequence bits b0 to b7. The colour squares 21 are separated by separating zones 26. Track C shows the course of the sensing head 16 as it is moved over the squares representing bits b0, b1, b2 and b3 at which point the direction of movement of the sensing head is reversed and it returns over squares representing bits b2, b1 and b0. The dashed line marked track D is the track that the tracking process assumes the head 16 has followed from bit b3 until evidence is produced to the contrary.
With the tracking in its incremental mode, as the sensing head 16 moves along the initial portion of track C over the squares representing bits b0, b1, b2 and b3 each successive bit value sensed by the head 12 is matched with the corresponding bit predicted from the X-sequence held in register 66. When the direction of movement of the sensing head 16 is reversed over the square 21 representing bit b3, the next actual bit encountered is bit b2 whereas the next predicated bit is bit b4. In the current example, the X-sequence portion being traversed is such that the value of bit b2 equals that of bit b4. As a result, the bit value predicted by the incremental tracking routine matches that actually sensed so that the routine is not alerted to the fact that a reversal of direction took place over the square representing bit b3. The incremental tracking routine therefore assumes that the sensing head 16 is following track D. In due course the head 16 moves over the square representing bit b1 and the incremental tracking routine tests the value of the sensed bit with the value of the sequence bit b5 over which it believes the head 16 is now positioned. In the present example, me values of bits bl and b5 are the same so that the incremental tracking routine again fails to detect the reversal of movement direction that occurred over the square representing bit b3. The sensing head 16 continues its movement along track C and reaches the square representing bit b0. In the present example the value of this bit b0 is different from that of b6 so that when the incremental tracking process tests the value of the next predicted bit along track D (this being bit b6), it discovers that the predicted bit value differs from the sensed bit value; at this time, therefore, the incremental tracking process detects that the sensing head 16 has reversed its direction of movement at some earlier stage. However, the tracking process has no means of directiy ascertaining the point at which reversal took place. Figure 26B is similar to Figure 26A in that it shows the seven colour squares of the Figure 12 pattern that represent bits b0 to b7, but in this case track C has been drawn to show direction reversal occurring over a separating zone 26 rather than over a colour square 21. In the illustrated example, direction reversal occurs over the zone 26 separating the squares representing bits b3 and b4. The first square encountered by the sensing head 16 after this reversal is the square representing bit b3 whereas the incremental tracking process assumes that the encountered square is that representing bit b4. In the present example, the value of bit b3 equals that of b4 so that the incremental tracking process does not detect the reversal when it compares the actual value of bit b3 with the predicted value. Similarly, the next subsequent square encountered by the head 16 is that representing bit b2 and in the present example this has a value corresponding to the bit b5 so that again, the tracking process does not detect the direction reversal. However, in due course the head 16 moves over the square representing bit bl which the tracking process tries to match with the predicted value of bit b6; in the present example me value of bits bl and b6 differ so that at this point the tracking process detects that a direction reversal has occurred.
Considering next the Figure 15 pattern, Figure 26C is generally similar to Figures 26A and B in that it shows a series of seven colour squares 21 extending in the X-sequence direction and separated by zones 26; now, however, it is the transitions between the squares that represent the X-sequence bits (here, bl to b6). Track C shows the course of the sensing head 16 as it effects transitions representing bits b1, b2 and b3 at which point the direction of movement of the sensing head is reversed over a colour square and the sensing head, now moving in the opposite direction, effects transitions representing bits b3, b2 and b1. The dashed line marked track D is the track that the tracking process assumes the head 16 has followed from bit b3 until evidence is produced to the contrary.
With the tracking in its incremental mode, as the sensing head 16 moves along the initial portion of track C sensing bits bl, b2 and b3, each successive bit value sensed by the head 12 is matched with the corresponding bit predicted from the X-sequence held in register 66. When the direction of movement of the sensing head 16 is reversed, the next actual bit sensed is bit b3 whereas the next predicted bit is bit b4. In the current example, the X-sequence portion being traversed is such that the value of bit b2 equals that of bit b4. As a result, the bit value predicted by the incremental tracking routine matches that actually sensed so that the routine is not alerted to the fact that a reversal of direction took place over the square common to the transitions representing bits b3 and b4. The incremental tracking routine therefore assumes that the sensing head 16 is following track D. In due course the head 16 effects the transition representing bit b2 and the incremental tracking routine tests the value of the sensed bit with the value of the sequence bit b5 which it believes the head 16 has just sensed. In the present example, the values of bits b2 and b5 are the same so that the incremental tracking routine again fails to detect the reversal of movement direction that occurred over the square common to the transitions representing bits b3 and b4. The sensing head 16 continues its movement along track C and in due course senses bit bl. In the present example the value of this bit bl is different from mat of b6 so that when the incremental tracking process tests the value of the next predicted bit along track D (this being bit b6), it discovers that the predicted bit value differs from the sensed bit value; at this time, therefore, the incremental tracking process detects that the sensing head 16 has reversed its direction of movement at some earlier stage. However, the tracking process has no means of directly ascertaining the point at which reversal took place.
Figure 26D is similar to Figure 26C but in this case track C has been drawn to show direction reversal occurring over a separating zone 26 rather than over a colour square 21. In the illustrated example, direction reversal occurs over the zone 26 in the transition representing bit b4. The first square encountered by the sensing head 16 after this reversal is the square last encountered by the head 16 with the result that a bit of value "0" is decoded (see table in Figure 15C), whereas the incremental tracking process assumes that the sensed bit is bit b4. In the present example, the value of bit b4 equals "0" so that the incremental tracking process does not detect the reversal when it compares the actual value of the sensed bit with the predicted value. Similarly, the next subsequent bit sensed by the head 16 is bit b3 and in the present example this has a value corresponding to the bit b5 so that again, the tracking process does not detect the direction reversal. However, in due course the head 16 senses bit b2 which the tracking process tries to match with the predicted value of bit b6; in the present example the value of bits bl and b6 differ so that at this point the tracking process detects that a direction reversal has occurred.
For both the Figure 12 and the Figure 15 pattern examples of Figures 26A to D, all the tracking process is aware of is that at bit b6 a discrepancy has occurred between the sensed bit value and the predicted bit value. The tracking process does not know whether the assumed direction reversal has occurred over a colour square or a separating zone. The only limitation that can be assumed on where reversal occurred is that it must have taken place within N/2 bits of the bit b6 (where N is the window length of the X sequence) in a direction opposite to that previously assumed as the directional movement of me sensing head 16.
However, the actual sequence bit values over the preceding N bits, place certain constraints on where the reversal could have occurred because, of course, the succession of bit values that occur in the sequence from the reversal position but in the opposite direction to that assumed (i.e in the actual direction of movement) must be identical to the sequence of bits actually sensed. It is therefore possible to postulate a number of different reversal positions (with each of which there is an associated current actual position) and to carry out an initial elimination process by comparing the succession of bit values that would have been encountered from each reversal position (as predicted from the stored copy of the sequence) with the bit values actually sensed. In fact, in the present embodiment, rather than storing the values of the bits sensed for use in the aforesaid elimination process, use is made of the fact that, for each proposed reversal position, the relevant sensed bit values can be derived directiy from the segment of the sequence extending from the proposed reversal position to the currently-predicted (but erroneous) position, the sensed bit values being:
(i) the same as me segment bit values from the proposed reversal position to the position immediately preceding the currently-predicted one (this is true since otherwise, a reversal would have been detected sooner);
(ii) for the current bit, the opposite value to that given by the sequence segment (this is so because at the current bit, a reversal was detected as a result of the predicted bit value differing from the sensed bit value).
Aldiough the present embodiment carries out the elimination of proposed reversal positions by using the stored sequence as a means of deriving the bit values actually sensed, it will be appreciated that embodiments that directly store the last N bit values actually sensed are also possible.
The initial elimination process of potential reversal positions as carried out by the present embodiment, is illustrated in Figure 23, the process itself being implemented by the RR Start-up routine 103.
In order to eliminate certain reversal positions, a number of hypotheses are constructed each postulating that direction reversal took place at a sequence bit or between two such bits; the possible reversal positions are represented in Figure 27 by the sequence structure abstraction shown on the right-hand side of that Figure and composed of sequence bit squares sb0 to sb6 (corresponding to bits bO to b6) and intermediate zones
I between the sequence bit squares, direction reversal being possible at both sequence bit squares and intermediate zones I. In terms of the Figure 12 pattern (absolute value encoding) direction reversal at a sequence bit square or at an intermediate zone respectively corresponds to a reversal at a colour square or at a separating zone, whilst in terms of the Figure 15 pattern (transitional encoding), direction reversal at a sequence bit square or at an intermediate zone respectively corresponds to reversal at a separating zone (in as much as a bit is represented by a transition across such a zone) or at a colour square. The sequence structure abstraction of Figure 27 is thus applicable to botii absolute-value encoding and transition encoding and as the RR Start-up routine 103 and Reversal Recovery routine 102 both operate to this abstraction, these routines are also applicable to both absolute-value encoding and to transitional encoding.
To construct and test the reversal-position hypotheses, pointers are generated for each of the possible current actual X-sequence positions. For the purposes of the present explanation, if p0 represents the pointer pointing to the sequence bit square (Sb6 in the example) at which a reversal is detected, then the pointer pointing to the preceding sequence bit square (sb5 in the example) is referenced (p0-1), the pointer pointing to the sequence bit square before that (sb4 in the example) is referenced (P0-2) and so on. In practice, each pointer points to the sequence bit represented by the corresponding sequence bit square of the sequence stmcmre abstraction and in the following description the sequence bits themselves are generally referred to rather than the corresponding sequence bit square abstraction.
Of all the possible hypotheses regarding reversal position, there is one that has a special character in that it can be discounted for the Figure 12 pattern and is initially untestable for the Figure 15 pattern; this hypothesis (hypothesis 0) is that direction reversal has occurred at the current bit position. It will be appreciated that this hypothesis does not have significance for the Figure 12 pattern; however, for the Figure 15 pattern, it corresponds to reversal occurring over a separating zone (as in Figure 26D). Hypothesis 0 is not initially testable for the Figure 15 pattern because there is no information on which to carry out any test. Hypothesis 0 must therefore be retained as possibly true in the case of the Figure 15 pattern (and, in fact, can also be retained for the Figure 12 pattern as subsequent tests will generally eliminate it). As hypothesis 0 is not initially tested, it has not been shown in Figure 27.
The first testable hypothesis (hypothesis 1 shown in block 140, Figure 23) is that reversal occurred at the intermediate zone I intermediate the sequence bits pointed to by the pointers p0, (p0-1). this zone being indicated by the expression "I (p0, (p0-1))" shown in Figure 27. Further according to hypothesis 1, the current actual position of the sensing head along the X-sequence is at the position pointed to by pointer (p0-1), that is, bit b5 in the example. This hypothesis can be immediately rejected if the value of the bit pointed to by the pointer (p0-1) is the same as the value of the bit pointed to by the pointer p0 (in the example if b5 = b6) since it is known that the value of the corresponding sensed bit differs from that of the bit pointed to by the pointer pb. It should be noted that in Figure 27 the convention is used that where a pointer is enclosed in square brackets it is the value of the bit pointed to by that pointer that is being referenced.
If the test for hypothesis 1 to be true is passed, then the pointer (p0-1) is retained as possibly pointing to the current actual position of the sensing head 16. However, if the test for hypothesis 1 is failed, then the pointer (p0-1) is discarded because it is known that the current actual position of the head 16 cannot be at the bit pointed to by that pointer.
Having tested hypothesis 1, hypothesis 2 (shown in block 141 in Figure 23) is next considered. Hypothesis 2 is that reversal took place at the bit pointed to by pointer (p0-1) and that the current actual position of the sensing head is at the bit pointed to by the pointer (p0-2). Again, the hypothesis is tested by comparing the value of the bit pointed to by pointer p0 with that at the hypothesized actual position, that is, the position indicated by pointer (p0-2). If the tested bit values are equal then hypothesis 2 can be rejected since it is known that the value of the corresponding sensed bit differs from that of the bit pointed to by P0. Pointer (p0-2) is, in this case, discarded. On the other hand if the tested bit values are different, then hypothesis 2 is not rejected and pointer (p0-2) is retained as a possible indicator of the current actual position. After hypothesis 2 has been tested, hypothesis 3 (block 142) is next considered. This hypothesis postulates that reversal occurred over the zone I separating the bits pointed to by pointer (p0-1) and (p0-2), the current actual position of the sensing head being at the bit pointed to by pointer (p0-3). This time, the hypothesis can be subjected to two tests, the first test being one corresponding to the tests carried out for hypothesis 2 and 1 by which the value of the bit pointed to by pointer po is compared with the value of the bit pointed to by the pointer that according to the hypothesis, indicates the current actual position; the hypothesis is discarded if these bit values are equal. The second test for hypothesis 3 is whether the values of the bits enclosed between the incorrectly assumed position and the hypothesised actual position are equal (the bit value on the side of the postulated reversal position nearest position D0 being a true indicator of the value of the corresponding sensed bit). In other words, the value of the bit pointed to by pointer (p0-1) is compared with the value of the bit pointed to by pointer (P0-2) and the hypothesis 3 is rejected and pointer (p0-3) is discarded as a potential actual position indicator if the compared bit values differ. Next, hypothesis 4 (block 143 in Figure 23) is constmcted and tested, this hypothesis being that reversal occurred at the bit pointed to by pointer (pb-2) and that the actual current position is indicated by the pointer (po-4). The testing of this hypothesis proceeds in essentially the same manner as for hypothesis 3 and will therefore not be described in detail. Similarly, further hypotheses are constmcted and tested for reversal positions and actual current positions successively further away from the position pointed to by pointer po. It will be appreciated that for each hypothesised reversal position and corresponding hypothesised actual current position, there will be:
(i) in every case (except in respect of hypothesis 0), a first test involving the comparison of the bit values at the hypothesised actual current position (p0-Cn2) and at the position pointed to by p0 (the hypothesis being rejected if those values are the same as the corresponding sensed bit must have a value different to that of the bit pointed to by po);
(ii) for cases where the hypothesised reversal position is spaced by at least one bit from the hypothesised current position, one or more second tests in which the bit values of the bits of the or each pair of bits symmetrically disposed about the hypothesised reversal position are compared (the hypothesis being rejected if these values differ as the bit of each pair which lies nearer p0 has a value equal to the corresponding sensed bit).
Clearly the further away that the hypothesized actual position is from position p0, the more opportunities there are to test the hypothesis concerned since the number of enclosed bit pairs which are subject to the second test, increases the greater the separation of the hypothesized actual position is from p0. In due course all relevant hypotheses will have been constmcted and tested (a relevant hypothesis being one for which the hypothesized acmal position lies within the window length range of position p0). At the end of this process there will only be a few remaining valid hypotheses, these hypotheses being represented by the pointers to their hypothesized current acmal position.
As already indicated the process generally described above with reference to Figure 27 is implemented by the RR start-up routine 103 that is initiated by die incremental tracking routine 101 upon discovery of a mismatch between a sensed bit value and the predicted bit value. Figure 28 shows a flow chart of the RR start-up routine 103. Upon entering into the routine, the value " 1" is assigned to count Cn2, the value "0" is assigned to count Cn3, and the pointer po is placed in the pointer list 68 (step 150). Next, a pointer (p0-Cn2) is created, this being a pointer to a hypothesized current actual position (step 151). Thereafter, the tests possible for checking validity of the hypothesized current actual position are carried out (step 152), these being the first and second tests described above.
If one or more of me test or tests available for testing the currently hypothesized actual position is failed, then the corresponding pointer (p0-Cn2) is discarded (step 153). On the other hand if all tests for the hypothesized current acmal position are passed, then the hypothesized current acmal position pointer is stored in the pointer list 68 (step 154) with its associated direction flag indicating a direction opposite to that associated with pointer p0.
After storage or discardal of the pointer (p0-Cn2), count Cn2 is incremented to keep track of however many pointers to hypothesized current acmal positions have been created and tested (step 155). If the incremented value of count Cn2 exceeds the window length N of the X-sequence, then no further pointers to hypothesized current acmal position are created (see step 156). At this stage, the pointer p0 may be discarded from the pointer list 68 if the pattern 20 is of the Figure 12 form. If the value of count Cn2 is less than N when tested in step 156, then the routine loops back to step 151 to create another pointer to a new hypothesized current actual position, the process of steps 151 to 155 being repeated until pointers to all possible current actual positions have been created and tested.
Next, the Defer Flags of the preceding N/2 X position entries in the output FIFO 76 are set to indicate that one or more of these position values is incorrect and that updated values will be provided as soon as they are available (step 158). A new X-position entry with its Defer Flag set is also made in FIFO 76 in respect of the currently sensed bit on the basis of which reversal was detected. Thereafter, the value of "D" is assigned to RESULT (step 159) and the RR start-up routine 103 is exited.
Upon the RR start-up routine 103 being exited, the pointer list 68 contains a set of pointers to a number of hypothesized acmal positions which have passed the initial validity tests. As a consequence of the value "D" being assigned to RESULT on exiting of the RR start-up routine 103, the tracking mode is changed to reversal recovery so that upon the sensing head 16 sensing a new X-sequence bit, the reversal recovery routine 102 will be entered. The newly provided X-sequence bit enables further testing of the hypothesized acmal current positions represented by the pointers stored in the pointer list 68 because the sensed bit value can be compared with the value predicted by taking each hypothesized current acmal position in mm. Thus, referring to the flow chart of the reversal recovery routine shown in Figure 29, in step 161 the first/next pointer in the pointer list 68 is taken and the value of the next bit predicted from this point is compared with the acmal sensed bit value (step 162). If there is a mismatch between the predicted and sensed bit values, then the corresponding pointer is discarded from the pointer list 68 (step 163). On the other hand, if the predicted and sensed bit values correspond, then the relevant pointer is incremented and restored to the pointer list 68 (step 164). Thereafter a check is made to see if there are any further pointers to be processed in the pointer list 68 (step 165) and, if so, the routine loops back to the step 161.
Once all the pointers in the list 68 have been processed, the total number of pointers remaining in the list is examined (step 166). If no pointers remain in the list, then an irrecoverable situation has been encountered; this may have arisen either due to sensing errors or because the direction of movement has been reversed again during the reversal recovery process. In any case, the value "L" is assigned to RESULT (step 167) and the reversal recovery routine is exited.
However, if the number of pointers remaining in the pointer list 68 is only 1 , then it is assumed that this pointer correctly points to the current actual position of the sensing head. Accordingly, the routine 102 proceeds to derive actual X-position values for all the X-entries that have had their Defer Flags set in the output FIFO 76, these new position values being entered into the FIFO 76 together with the current acmal position (step 168). Thereafter the value "S" is assigned to RESULT and the reversal recovery routine is exited.
If there are still multiple entries in the pointer list 68 so that it is not yet possible to decide what the acmal current X-position really is, then subject to certain criteria to be explained below, the reversal recovery routine makes a deferred entry into the output FIFO 76 by setting the defer flag of a new X entry (step 172) and assigns the value "D" to RESULT before exiting the reversal routine. Thereafter, the reversal recovery routine is executed as each new X bit value is read in until all pointers other than the correct one have been eliminated from the pointer list.
If only one reversal has occurred and there are no reading errors, then the elimination process should be successful within (N-2) iterations of the reversal recovery routine.
Failure to isolate the correct pointer within (N-2) iterations indicates that the X-position has been irrecoverably lost. In order to detect this situation the count Cn3 is incremented each time the test (step 166) is exited on the branch corresponding to multiple pointer entries in the list 68, this incrementing being effected in step 170. Thereafter, the value of count Cn3 is compared to the value (N-2) (step 171) and only if Cn3 is less than or equal to (N-2) are steps 172 and 173 executed. If the value of count Cn3 is greater than (N-2) then the value "L" is assigned to RESULT (step 174) and the reversal recovery routine 180 is exited.
In summary, it can be seen that the XBIT process 60 after having established an initial position by execution of the absolute tracking routine 100, proceeds to keep track of the current X-position by the incremental process implemented by incremental tracking routine 101. If the incremental tracking routine detects a discrepancy between the actual sensed bit value and the value of the next predicted bit of the X-sequence, then a reversal is assumed to have occurred and the reversal recovery process is initiated by execution of the RR start-up routine 103 to establish a set of pointers to possible current acmal X-positions and to carry out initial validity tests on these pointers. Thereafter, the reversal recovery 102 is executed as each new X bit value is read in and used to carry out further validity tests on the sets of possible pointers to the current acmal X-position. In due course the current X-position will either be established by routine 102 or a decision is made that the X-position has been irrecoverably lost.
The YBIT process 61 operates in an analoguous manner for movement along the Y- sequence. The outputs of the XBIT and YBIT processes 60 and 61 are fed to the output buffer 63 as a succession of X and Y position entries for storage in the output FIFOs 76 and 77 respectively. The order in which X and Y position entries are received by the buffer 63 is kept track of by means of a sequence number generator 179 that is incremental each time a new X or Y entry is received, each new entry being stamped with this sequence number (by the number being stored togemer with the entry in the corresponding FIFO 76,77). As previously noted, each entry also has an associated Defer Flag which can be set to indicate that the entry is only a provisional one and should not be output from the processor sub-system 51. In fact, an entry flagged Defer may not initially have a corresponding position value, this value being supplied later (this is the case both when the absolute tracking routine 100 is building up a window sequence prior to establishing an initial absolute position, and when the reversal recovery routine 102 is still eliminating pointers from the set of possible pointers stored in the list 68).
The XBIT and YBIT processes 60 and 61 can independently write to their corresponding FIFOs though if they both do so within a short time interval of each other, then both entries (the X and Y entries) are given sthe same sequence number. The output process 62 is prevented from colliding with the processes 60 and 61 and vice versa by an appropriate system of semaphores. The output process 62 will now be described with reference to the flow chart shown in Figure 30. The basic operation of the output process is to take the head X and Y- position entries off the output FIFOs 76,77 and output them as the current coordinates of the sensing head 16. However, the process is complicated by the possibility of entries flagged Defer in the FIFOs 76,77. Not only is the output process 62 required to suspend output when a Defer entry is encountered, but the operation of the output process should preferably lag behind that of the XBIT and YBIT processes 60 and 61 so that a queue of entries builds up in the FIFOs 76,77 enabling the XBIT or YBIT process to set previously processed entries to Defer upon detection of reversal in either the X or Y coordinate direction. Nevertheless, where valid entries exist in the FIFOs 76,77 these should not be allowed to remain dormant forever. It will therefore be appreciated that the output process 62 needs to take account of a number of conflicting requirements and provide some satisfactory practical compromise in its operation.
Turning now to a consideration of Figure 30, the first step executed by the output process is to examine the head entry of each of the output FIFOs 76,77 (step 180). If the Defer flag of the head entry is set (tested in step 181), then the output process loops back to step 180 and continues to check the head entry until the Defer flag is reset by the XBIT or YBIT process or until the entry is cancelled.
If neither head entry has its Defer Flag set, then the output process next goes on to check the number of entries in each FIFO (step 182). If there are more than N/2 entries, the output process outputs the head entry of the FIFOs 76,77 as an X/Y coordinate pair. Thereafter, one or both head entries are removed according to criteria described below (step 186) and the output process then loops back to step 180. A typical output sequence of X/Y pairs and the process of removing entries from the head of the FIFOs 76,77 will next be described, by reference to the following two lists giving typical contents of the FIFOs 76,77.
X O/P FIFO 76 Y O/P FIFO 77 x0 y0
x3 y1
x5 y2
x7 y4
y6
y7
In these lists, the top entry corresponds to the head entry of each FIFO and the entry suffixes correspond to the sequence number assigned to the entries. Each time step 185 is executed, the head entries of the two FIFOs are output as an X/Y coordinate pair. Thereafter, in step 186, the head entry of each list is examined and is deleted if: either the next entry in both lists are of equal age (as indicated by their suffixed sequence numbers),
or the next entry in the list under examination is older (i.e has a lower sequence number) than the next entry in the older list.
The two lists are examined simultaneously in the sense that when considering whether to delete the head of one list, comparison is made with the other ist prior to any removal of the head entry of that other list. Furthermore, the head entry of a list is not removed if tiisi would leave the list empty.
The foregoing deletion criteria has the effect of ensuring that every list entry is used and is used with the last value of the other list that was valid at the time it was taken. For the example lists given, the sequence of output of X/Y coordinate pairs would be as follows:
x0, y0
x0, y1
x0, y2
x3, y2
x3, y4
x5, y4
x5, y6
x7, y7
Returning now to a consideration of Figure 30 if the check carried out in step 182 shows that the number of entries in the FIFO 63 is less than N/2, then a timer is started (step 183) and a time out tested for (step 184). If the timer is still timing then the process loops back to test 182. However, if the timer has timed out, the process proceeds to step 185 in which it processes the head entry of the FIFO. Steps 182 to 184 seek to ensure that generally there are at least N/2 entries in each of the FIFOs 76,77 (this number of entries being referred to as the 'target queue' length) but that if the rate of input of entries becomes very low, the entries towards the head of the FIFOs do not lie dormant but are shifted through at some rate determined by the period timed by steps 183 and 184. The target FIFO queue length of N/2 is chosen on the basis that when a reversal is detected, the preceding N/2 entries for the X (or
Y) position are, if possible, set to Defer. However, since when a reversal is detected, it will generally only be the more recent of the last N/2 entries that are in error, target queue lengths of less than N/2 may be acceptable depending on the perceived relative importance of the factors involved. Finally with respect to the Figure 17 apparams, when the lift-off interrupt is asserted causing the interrupt service routine ISR-4 to be executed, the XBIT, YBIT and output processes 60, 61 and 62 are all re-initiated and the buffer 64 and output FIFOs 76,77 are flushed. The low-level hardware 50 is also reset in these circumstances.
Many variations are, of course, possible to the above-described arrangement. Generally, it may be noted that the complexity of the apparams will depend on the form of the pattern being sensed and, in particular, how much information is directiy supplied by the pattern and how much must be deduced.
Applications
The described pattern-sensing apparams can be used in a number of different applications.
For example, the basic apparams of Figure 1 can be used as a graphics tablet. In such an application, if pattern features (cells) of 0.5 mm can be detected and the tablet has a surface of 500mm by 1000mm, then a binary sequence of 2000 elements can be used to construct a pattern of the type in which two binary sequences are arranged orthogonally (the same sequence can be used for both)
This implies a window-length of eleven or twelve elements, depending on whether a PRBS or a reversible sequence is used; the sub-pattern length will therefore be 5.5 or 6mm in both directions. Where single pixel (pattern feature) sensing is employed, the position of the stylus can thus be determined with only a small movement of the stylus.
Of course, where an area 6mm square is sensed at one time, then no stylus movement is required.
Figure 31 illustrates use of the position-sensing apparams as an overlay for a screen 30 of a workstation monitor 31 (shown in section). The pattern-carrying member 14 is made of a material transparent to visible light and the pattern itself is printed on the member 14 in an infra-red reflective substance that is also transparent to visible light. As a result, the screen display can be viewed through the pattern 20 and member 14. To indicate a particular position on the screen (for example, for the purpose of selecting a particular function), the stylus 11 is used to point to the location. The sensing head 16 of the stylus is arranged to be sensitive to the infra-red reflectivity and can therefore read the pattern 20. The functions of the sub-pattern image processing unit 12 and the position determining unit 13 of Figure 1 , are carried out by the processing unit 32 of the workstation. In a similar manner to Figure 31, a transparent document overlay can be provided to permit a document to be traced into an electronic format.
Figure 32 illustrates use of the position-sensing apparams as an electronic "whiteboard". In this application, the pattern-carrying member 14 is provided with an opaque white surface to which the pattern 20 is applied. The pattern takes the form of infra-red sensible markings which can either be transparent to visible light (to show the white background member 14) or white themselves (to blend in with the white background member 14). To write on the white board composed of the member 14 and the applied pattern 20, the head of stylus 11 is provided with a marking element 33 (see inset in Figure 32) which is operative to deposit a marking substance on the white board. This marking substance is infra-red transparent but optically visible (in Figure 32 the letter "J" has been shown written up on the white board). The sensing head 16 of the stylus 11 is arranged to sense the infra-red pattern markings which are not obscured by writing on the white board. In this manner, the position of the stylus over the white board can be sensed so that it becomes possible to build up an image of what has been written on the white board (for example, by an appropriately programmed work station 32).
Figure 33 illustrates use of the position-sensing apparatus as a "flip-chart" . In this application, the pattern-carrying member 14 is marked with a pattern 20 which may be optically visible. A markable sheet 35 is then placed over the pattern 20. This sheet 35 provides at least a semi-opaque background upon which a person can write; however, the sheet 35 permits the sensing of the pattern 20 through it by a suitable sensing head 16 of the stylus 11. As with the Figure 32 embodiment, the stylus has a marking element which is operative to deposit a marking substance on the sheet 35. This marking substance has the characteristic that it permits a sensing of the pattern 20 through it whilst at the same time still being optically visible against the background of the sheet 35.
An alternative implementation of the Figure 33 flip-chart would be to place the pattern 20 on the reverse of each sheet 15 rather than on the member 14.
Variants
Many variations of the above-described position-sensing apparams will be apparent to a person skilled in the art. For example, although the patterns and their underlying arrays have been described in terms of a rectangular arrangement of cells, this is not the only possible cell arrangement. Two other possible partitionings are those based on triangular and hexagonal grids formed by dividing a surface into congment regular triangles and hexagons respectively. Both these grids have potential advantages in certain situations. - In a triangular grid, each cell has only three neighbours (together with three other cells which it touches in a point). In a rectangular grid each cell has four neighbour cells and four cells which it touches in a point. Given an encoding scheme in which each cell transition must involve a colour change and in which each neighbour of a given cell must have a difference 'colour' ie. as illustrated in Figure 6, a triangular grid offers the potential to derive patterns with fewer colours. This could reduce the cost and complexity of the sensing head 16. - In a hexagonal grid, each cell has six neighbours (and no cells which it touches in only a point). In certain 'single pixel' sensing environments, the possibility of the sensing head moving directly from one cell to another cell which it touches only in a point cannot be ruled out. In these circumstances, the hexagonal grid again offers the possibility of encoding schemes with fewer colours (and/or shades of grey).
By way of example, Figure 34 illustrates a portion of a hexagonal grid with a central hexagonal cell 350 and the six hexagonal cells 351 to 356 that surround it. A "horizontal" axis Ap and a "vertical" axis Bp are defined and the hexagonal cells mn in rows parallel to these axes. The cells are to be coloured to represent the element values of two binary sequences extending parallel to the axes Ap, Bp respectively; element values "i" and "j" for the horizontally-extending sequence and "k" and "1" for the vertically-extending sequence, are shown in Figure 34. For implementing a transitional encoding scheme, four encoding functions ho, h,, v0, v,, are defined in a manner similar to the rectangular pattern case described above in detail. If the central hexagonal cell 350 is coloured "c" then the colours of the surrounding cells are as given in Figure 34 where, for example, vk -1(c) means the colour "y"which has the property that vk(y) = c. Note that a single function application is needed to determine the colour of the cells adjacent cell 350 along the horizontal and vertical axes, but that a double function application is needed to determine the colour of the cells 356 and 353. These latter cells are effectively in the same relation to the cell 350 as diagonal cells in the rectangular pattern case.
If the four encoding functions have the following form:
h0(c) = c+ 1 (mod 9)
h1(c) = c-1 (mod 9)
v0(c) = c+3 (mod 9)
vt(c) = c-3 (mod 9)
then the other transitions from a cell, effectively along its diagonal are c+2, c-2, c+4, c-2.
In fact, hexagonal cells are like square cells where it is only permissible to go on one diagonal (for example, diagonally up and left or down and right but not up and right or down and left). Thus, any encoding scheme that works for a rectangular grid (no separators) where diagonal movements are allowed, will also work for hexagonal grids. It will be appreciated that for a pattern based on a hexagonal arrangement of cells, a sub-pattern can be lined up with the pattern in six different orientations, rather than the four orientations possible for a rectangular pattern. Account must, of course, be taken of this when determining what orientation information needs to be provided. Where two orientable sequences are encoded in the hexagonal pattern as in the example given above, then the sub-pattern must be detected in one of the two orientations out of the possible six, and orientation information enabling this must be provided by any of the three methods 200,201,203 described above with reference to Figure 5.
As has already been noted, the physical parameter used to encode pattern features need not be optical/infra-red but could be surface roughness, magnetic permeability, or any one or more of a whole range of other possible physical characteristics.
The means used to sense the pattern 20 need not be integral with the element used to point to a particular position on the pattern whose location is to be found. For example, a fixed (or pivotiy mounted) sensor could be used whilst the pointing element could be a pair of cross wires (either real or constituted by an electronic image moved across an image of the pattern 20).
It will be appreciated that the orientable and complement orientable binary sequences described above can also be used where linear position sensing is required rather than position sensing over an area.
Appendices The following four Appendices are included as an integral part of this description: Appendix A - A method of constructing binary arrays with the windowing property Appendix B - Derivation of orientable and complement orientable sequences Appendix C - Finding the position of a sequence
Appendix D - Position finding in a pseudo-random array
APPEND I X A
A method of constructing binary arrays with the windowing property
1 Introduction
We want to construct binary arrays with the property that each k1 x k2 subarray appears a: most once in the array. It is easy to construct binary sequences of length 2k - 1 such, that every subsequence of length k appears at most once, and such sequences are called m-sequences. We shall use a pair of m-sequences to construct an array with the windowing property. It is of interest to be able to find the position of a subarray within the array, and we shall give a procedure for this. A harder problem is to do the same when the orientation of the array is unknown. We shall also give a method for constructing arrays where, given a k 1 x k2 subarray, it is possible to determine not only the position in the array, but also the orientation of the array. This construction will require a sequence in which each subsequence of length k appears at most once, and if such a sequence occurs, then its reversal does not. These sequences are called orientable m-sequences.
2 Construction
Let s = (s0, s1, .. . . s0k1-2) and t = (t0, t1, ... , t2k2-1 -2) be binary m-sequences. We construct a (2k1 - 1) x 2k2-1 array as follows. The first column of the array is just the sequence s. To form the second and subsequent columns, we look at the sequence t. If to = 0, then the second column is just i again, while if t0 = 1» then the second column is s circularly shifted down by one place, that is {s2k1 -2. so, .. . ,s2k1-3). The remaining columns are constructed is a similar way: if f,_ι = 0, then the (i + l)th column is the tth column again, while if ti-1 = 1, then the (i + l)th column is the tth column circularly shifted down by one place.
3 Finding the position
We now give a procedure for determining the position of a given &ι x jfe2 subarray, as- suming that we have a method for finding the positions of subsequences of £ of length
Ai, and of subsequences of t of length k2 - 1. Suppose that our subarray has columns u0, u1, ... , uk2-1. Then u0 is a subsequence of s of length k1, and so we can find its position r say. We now look at the other columns of our subarray, and determine their relative shifts. This is straightforward because, for each t, either ui- = ui+1, in which case the shift is zero, or ui≠ 3ui+1, m which case the shift is one. We are thus able to construct a subsequence of t of length k2 - 1, and so we can find its position to, sa Then the horizontal position of our subarray is just XD. If we keep a table of cumulativ shifts (calculated by adding successive elements of t), we can look up the shift of the wth coiumn, and add it to r modulo 2k1 - 1 to obtain the vertical position of our subarray.
4 Example
Suppose that k1 = k2 = 3. We choose 3 = (0,0, 1, 0, 1, 1, 1), and t = (0, 1, 1). Then the array is
0 0 1 1
0 0 0 1
1 1 0 0
0 0 1 0
1 1 0 1
1 1 1 0
1 1 1 1
Suppose that we want to find the position of the subarray
1 0 0
0 1 0
1 0 1
The first column is (1, 0, 1), which appears at position 2 in ι. The pattern of shifts is
(1, 1), which appears at position 1 in i. The table of cumulative shifts is (0, 0, 1,2), and so the vertical position of the subarray is 2 + 0 = 2. The position of the subarray is then (1/2), which may easily be checked to be correct.
5 Orientable arrays
It is possible to construct orientable m-sequences . These will allow us to construct arrays in which it is possible not only to determine tne position of a subarray, but al so to tell whether it is upside down or not.
If we perform the construction described above with t an orientable m- sequence, then the orientation of the subsequence of £ tells as which way up the subarray is. Alternatively, £ js an orientable m-sequence, then the orientation of the first column as a subsequence of i also gives us this information.
It would also be useful to be able to tell if the subarray has been rotated through 90º. In this case, the columns will no longer be subsequences of i, so we cannot use the above methods. This situation should be reasonably easy to identify, however, once k1 and A2 axe of reasonable size. This is because the chance of subsequent rows in the original subarray all being either equal or shifted by one is extremely remote. APPENDIX B
Derivation of Orientable and Complement-Orientable Sequences We shall express the task of finding orientable and complement-orientable sequences in terms of finding a path through a directed graph; this is standard practice in the area of deBruijn sequences. If we are looking for sequences with window length m, we construct a directed graph, usually called the deBruijn graph, whose vertices are labelled with the sequences of length (m-1) and whose edges are labelled with the sequences of length m, as follows. An edge is drawn from a vertex labelled with (a0,a1,....,a m-2) to a different vertex labelled with (b0,b1, .....,bm-2) if and only if:
a1 = b0,a2 = b1 , ..... ,a m-2 = bm-3 .
If this condition is satisfied, then the edge is labelled with We see, therefore that a path tiirough the graph can be thought of as a sequence where successive windows of the sequence correspond to the successive edge labels. All sequences of length m except the all zero and the all one sequence occur as edge labels. These do not occur because they would link a vertex to itself, which is not allowed.
Orientable Sequences
We can obtain a crude upper bound on the length of an orientable sequence of window length m. The total number of windows of length m is 2m. If m is even, then the number of palindromes of length m is equal to 2m/2, whereas if m is odd, then the number of palindromes is 2(m+1)/2. The remainder of the windows may be grouped into pairs, each one with its reverse. The maximum length of an orientable sequence is then
Figure imgf000078_0001
It seems, however, that this upper bound is never attained.
An orientable sequence can be tiiought of as a path through the deBruijn graph which has the property that if an edge occurs in the path, then the edge with the reverse label does not occur. In particular, no edge with a palindrome label may occur. Our task involves finding Eulerian paths (that is paths which use each edge exactly once) in a directed graph. It is generally straightforward to find an Eulerian path in a graph and several algorithms exist (see, for example, Frank Harary. Graph Theory. Addison-Wesley, Reading, Mass., 1972.) A directed graph has a Eulerian path if it is connected, and each vertex (except possibly the start and end vertices) has the same number of edges coming into it as going out from it. This is indeed the case for the deBruijn graph. We know that we are not allowed to use edges with palindrome labels, so we must remove them. In order to preserve the Euler property, we must actually remove complete cycles containing palindromes. This is the first step, therefore, to construct and remove cycles containing palindromes. The second stage is to find a path through the remaining graph. A standard method is first to construct a spanning tree, mark all edges in this tree, and then trace a path backwards dirough the graph, always choosing an unmarked edge if possible.
We can also construct orientable sequences of window length 2m + 1 recursively from orientable sequences of window length 2m, using the Lempel homomorphism. This maps binary sequences of length t to binary sequences of length t-1 and is defined by:
(x0,.....,xt-1)→ (x0⊕ x1,....,xt-2⊕xt-1).
The inverse image of (y0, .... ,yt-2) is the set { (u0, .... , Ut-1), (v0, .... , vt-1) } where
UQ = 0, v0 = 1 and
Figure imgf000079_0001
and
Figure imgf000079_0002
(vi if yi = 1
If we have an orientable sequence of length M and window length 2m which starts with 2m - 1 zeros and ends with 2m - 1 ones, and look at its inverse image under the Lempel homomorphism, we obtain two sequences, one starting with 2m zeros and finishing with a string of 2m alternating zeros and ones, and the other equal to the complement of this. If we reverse the second sequence, and glue the two sequences together, amalgamating the string of alternating zeros and ones, to obtain a sequence of length 2M + 2 - 2m which is orientable with window length 2m+ 1.
An example orientable sequence of window length 10 is given below:
10000000100001010001000001010010000001100010000110
01000001100110100000111000100010010010101000011010
00100110100100011010011000101001100111000010011100 01100111100000110101000101110000110110010010111001 01001011010100110101010001110101010100111101000011 11010101101100010110110111000111101100011111001000 11111101001101110100111001111011101011001110101111 0111110011011111010110111111100101101110111001001100
Complement-orientable Sequences
In this case, we are able to construct maximal length sequences when the window length is odd, but are not able to do any better than in the orientable case if the window length is even. If the window length m is odd, then a sequence of length m may be arranged in pairs by associating each sequence with the reverse of its complement, and any complement-orientable sequence may contain at most one of each pair as a subsequence.. The number of these pairs is clearly 2m-1. A sequence of length n contains n - m + 1 subsequences of length m, so if n is the length of a complement-orientable sequence with window length m, then we may deduce that:
n - m + 1 < = 2m-1
and so
n < = 2m-1 + m - 1. If we could construct a windowing sequence whose subsequences each contain more zeros than ones, then it would automatically be complement-orientable, since the reverse of the complement of any subsequence would have more ones tiian zeros, and so not be a subsequence itself. We shall do this by looking at a subgraph of the deBruijn graph. This subgraph consists of all vertices and edges whose labels have at most (m-1)/2 ones. Then any Eulerian path through this directed graph yields a maximal length complement-orientable sequence. The following algorithm constructs a maximal length complement-orientable sequence. The successive windows of the sequence are given by w.
o Set w = (w(0),w(1),...,w(m - 1)) to be (0,...,0).
o If (w(1),...,w(m - 1) contains fewer than (m-1)/2 ones then
- if we haven't already seen (w(l),...,w(m - 1), 1) then
* set w = (w(1),...,w(m - 1), 1)
- else if we haven't already seen (w(l),...,w(m - 1),0) then
* set w = (w(1),...,w(m - 1),0)
- else
* stop
o else
- else if we haven't already seen (w(1),...,w(m - 1),0) then
* set w (w(1),...,w(m - 1),0)
- else
* stop.
In other words, we add 1 to the sequence whenever we can and add 0 otherwise. If the window length is even, then we could simply look at the subgraph of the deBruijn graph where each label has at most (m-2)/2 ones, which would guarantee complement-orientableness. This, however, does not yield long sequences, because of all the sequences with m/2 ones which are not complement-palindromes, but have been excluded from consideration by this method. APPENDIX C Finding the position of a sequence
1 Introduction
This Appendix describes the computations necessary to determine the position of a sequence in the output of a linear feedback shift register, A similar approach is dlsclosed in Equivalence of Nonlinear Shift-Registers" by J.L. Mossey and R. W. Liu ; lEEE Transactions on Information Theory VcL IT-10, Number 4 , October 1964,pages 378 -379.
2 Notation
Suppose that we have a linear feedback shift register with coefficients c0, c1, c2, ... ,ek-1. Let C be the matrix
Figure imgf000082_0001
Let the states of the shift register be s0, ..,sn-1. and for each r, let Sτ be the matrix obtained by writing each of sτ,...,sτ+k-1 as a column and putting them together to form a A by A binary matrix.
3 GF{2k)
The field GF(2k) consists of all polynomials of degree less than A with binary coefficients. So an element of CF{2k) looks like .
α0 + α1α + ... + α -1αk-1 where each of the αi is equal to zero or one. Of course, they can be thought of as binary strings of length A. Addition is performed componentwise, so it looks like bitwise exclusive or. Multiplication is harder - elements are multiplied as polynomials in α, and then higher powers of α are reduced using a primitive polynomial
f(α) = c0+ c1α +... + ck-1αk-1k = 0. Let P be the k by k matrix with entries in GF{2k)
Figure imgf000083_0001
then P has the property that P-1CP is diagonal.
4 The algorithm
The algorithm is in two parts: the first reduces the problem to that of discrete logarithms in GF(2k), and the second calculates the discrete logarithm. Both parts of the algorithm consist of a precomputation phase and a phase which must be done each time. There are several different ways of calculating discrete logs, and it is not clear which would be the best in this case. The Coppersmith algorithm is efficient for large fields, but is fairly complicated, and involves factorising polynomials. The Pohlig- Silver- Hellman algorithm is much simpler, and it is described below.
4.1 First part
4.1.1 Precomputation
So and its inverse must be calculated. So is calculated by running the shift register until the first k states are obtained. It is a binary k by k matrix, so finding the inverse should be straightforward.
4.1.2 Remainder of computation
From the current state 3,, the matrix Sr must be calculated by. running the shift register until the next (k - 1) states are obtained. This matrix must be multiplied by the matrix
SQ 1 to obtain X = SτS0 -1. These are both k by Jfe binary matrices.
The next item to be calculated is 2, the element in the first row and first column of
P-1XP. In order to do this, the first column of XP must be calculated. Now X is a binary k by k matrix, and P is a k by k matrix with entries in GF(2k). so this should take at most k2 additions in GF{2k). To calculate x then requires k multiplications and k additions in GF{2k).
This element z is now given to the second part of the algorithm. 4.2 Second part (due to Pohlϊg, Silver and Hell-man)
For ease of notation, write Q for 2k - 1. Q can be written as the product of its prime factors
Q = IIpi ni
The aim of this part of the algorithm is to find r such that x = a
4.2.1 Precomputation
For each of the p,-, a table of p,-th roots of unity must be calculated. This consists of the elements
Figure imgf000084_0001
for 4 = 0, 1, ... , (pi - 1).
4.2.2 Remainder of computation
The idea here is to compute r modulo each of the pf' in turn, and then use the Chinese Remainder Theorem to combine the results to obtain r.
Let p = pi, and suppose that ni = 1. Then the quantity
Figure imgf000084_0002
y must be calculated. This can be done in the usual way by repeated squaring and multiplication. Now y is a pth root of unity, so it can be looked up in the precalculated table. If
Figure imgf000084_0003
y ^, then τ≡t (mod p).
If m > 1, then the above process is performed m times, as follows. First
Figure imgf000084_0004
yo x is calculated and looked up in the table. Say that yo = a^ ^. Then is calculated and looked up in the table. Say y! = α.'l ( ^. This process is continued, and finally
τ≡ t0 + t1p + ... + tn i-1 pni-1 (mod pni).
There is a way of decreasing the number of comparisons needed to look y up in the tables, at the expense of performing more multiplications, but it is probably not sensible for the size of fields here.
The result of the above calculations is a set of numbers in, say, such that τ≡ ui (mod
Figure imgf000084_0006
) for each i. It is now simply a matter of applying the Chinese Remainder
Theorem to obtain the value of r. Let , and let Ni be such that MiNi≡ 1
Figure imgf000084_0008
(mod
Figure imgf000084_0007
). These can of course all be precomputed. Then r =∑ uiMiNi (mod Q).
APPENDIX D
Position finding in a pseudo-random array
1 Introduction
This Appendix describes a generalisation to two dimensions of the position finding computation for a se quence descibe d in A ppendix C ..
2 Notation
Given a pseudorandom array A of size n1 = 2k1 - 1 by n2 = {2k1k2 - 1)/ n1, there exist a pair of recurrences which generate A, one for moving vertically, and one for moving horizontally. If we write a k1 by k2 subarray of A as a vector of length k1k2 by writing each of the columns out in turn so that
Figure imgf000085_0002
is written as
Figure imgf000085_0001
Then each of the two recurrences can be written as a k1k2 by k1k2 matrix which acts on these vectors. Let the matrix for the vertical recurrence be C and the one for the horizontal recurrence be D. Since the columns are copies of a pseudorandom sequence, C in fact consists of k2 copies of a k1 by k1 matrix C0 arranged along the diagonal:
Figure imgf000086_0001
Now if we denote by sr,t the vector corresponding to the subarray with top left hand corner at (r, t), we have
Figure imgf000086_0002
,
3 The algorithm
We find a matrix P such that P~lDP is diagonal, and then P-1CP is also diagonal. So p-1 Cτ Dt'P = (p-1 CτP)(P-1 DτP) = ( p-1CP)τ(p-1DP)t is also diagonal.
Playing the same game as in the one-dimensional case, we may obtain LTD1 from &.>{ and s0,0 by constructing matrices S0,0 and Sτ,t. In the one-dimensional case, we simply moved along the sequence to construct these matrices; in the two dimensional case, we may of course move vertically, horizontally, or a combination of the two, provided that the resulting matrices are non-singular.
We may then diagonalize Cτ Dt using the precomputed matrix P, and look at the first eigenvalue. If the first eigenvalue of C is a, and the first eigenvalue of D is β, then the first eigenvalue z of CτDt is equal to αr/3*.
We know that Cn1 = Dn2 = I, the identity matrix. If n1 and n2 are coprime, then we can calculate Tn1 = βtn1 and In2 = αtn2, and perform discrete logarithm calculations on these two elements in the appropriate fields to find 4 and r respectively.
4 Example
We shall use the 3 x 5 pseudo-random array from [1]. This array is
Figure imgf000086_0003
The matrices for moving in the horizontal and vertical directions respectively are as follows.
Figure imgf000086_0004
and
Figure imgf000087_0006
We first calculate P such that P-1DP is diagonal. The eigenvalues of D satisfy the equation I4 + I3 + I2 + I + l = 0. If we denote one of the roots of this equation by β, then the other roots are β2, β3 and β4 = β2 + β2 + β + 1. The matrix P is then equal to
Figure imgf000087_0005
and from this, we calculate P- 1 to be
Figure imgf000087_0004
We now calculate P-1CP, and may check that it is indeed diagonal.
Figure imgf000087_0003
Hence we see that a, the first eigenvalue of C, is equal to β2 + β3.
Suppose that the initial state of the pseudo-random array is the vector (0010), and that the state whose position we are trying to find is (1001). We must now construct the matrices So,o and ST ,t. In this small case, we must in fact move horizontally, because moving vertically gives us a singular matrix. This is because we need a 4 x 4 array, but we have only three rows in our pseudo-random array. Moving horizontally, however, does indeed give us non-singular matrices.
Figure imgf000087_0001
and
Figure imgf000087_0002
So we have
Figure imgf000088_0001
The first column of -XT is therefore
which means that the first element x of P~lXP is equal to
β4(β + 1) + (β + β2)(β3 + β + 1) + 1.(β 2 + β) + (β2 + β3){β3 + 1) = 1 + β.
We must therefore find r and t such that atβt = x = 1 + β. Note that in this small example, both the fields in which we are computing discrete logarithms have prime order, and so we shall not be able to use the Silver-Pohllg-Hellman algorithm. Since the fields are so small, however, we can simply calculate the logarithms directly. In a larger case, however, the S-lver-Pohiig-Hel-man algorithm would be used.
We first compute y =. x3 to obtain t. Now x3 = (1 + β)3 = 1 + β + β2 + β3 = β4, so we deduce that 3f≡ 4 (mod 5), or that - = 3. Similarly, we compute z = I5 = (1 + β5) = 1 + β2 + β3 = 1 + α = α2, and so 5τ≡ 2 (mod 3), or τ = 1. We have therefore foun the position of the vector (1001) to be (3, 1), which may be checked by reference to th array.
References
[1] F. J. MacWilliams and N. J. A. Sloane. Pseudo-Random Sequences and Arrays Pmceedings of the IEEE, 64 No. 12:1715-1728, 1976.

Claims

1. Position-sensing apparatus comprising:
a pattern element with an arrangement of indicia that together present a two-dimensional pattern having features that make said pattern a windowing pattern in that any local portion of the pattern of given extent in terms of its features (herein a "sub-pattern"), when considered in isolation, is so characterized by said features as to permit the location of the sub-pattern to be determined, for at least one orientation of the sub-pattern relative to said pattern;
an indicator element movable relative to said pattern element across said arrangement of indicia;
sub-pattern detector means including sensor means for sensing said indicia in the locality of said indicator element, the detector means being operative to process the output of the sensor means to derive sub-pattern data representative of a sub-pattern local to said indicator element in a said at least one orientation of the sub-pattern relative to said pattern; and
position-determining means including a memory holding pattern data representative of said windowing pattern, the position-determining means being responsive to the sub-pattern data derived by said detector means to determine, by reference to said pattern data, the position of said indicator element relative to said pattern element.
2. Position-sensing apparatus according to Claim 1, wherein:
(a) said features of the pattern discernibly form a regular arrangement for which when any given sub-pattern of said pattern is considered in isolation from the pattern, that sub-pattern may be in any of M possible orientations relative to the pattern where M is a positive integer greater than zero;
(b) said windowing pattern is such that any given sub-pattern can be correctly located in the pattern for N of said M possible orientations where N is a positive integer in the range O<N<M; and (c) said sub-pattern detector means is responsive to the said regular arrangement of features to identify a said sub-pattern in the locality of said indicator element, and to provide sub-pattern data to said position- determining means which is representative of the said sub-pattern in one of said N of said M possible orientations relative to the pattern in which it can be correctly located.
3. Position-sensing apparatus according to Claim 2 wherein said features are discernibly arranged in rows and columns extending parallel to respective first and second coordinate axes with each feature being presented in a notional cell that has line contact with a plurality of neighbouring such cells.
4. Position-sensing apparatus according to Claim 3, wherein each said cell has line contact wtih four neighbouring cells, M has a value 4, and N has one of the values 1,2 and 4.
5. Position-sensing apparatus according to Claim 3 or Claim 4, wherein said features serve to encode at least part of a two-dimensional windowing array having rows and columns of elements notionally extending parallel to said first and second coordinate axes respectively.
6. Position-sensing apparatus according to Claim 5 , wherein said array is a pseudorandom binary array.
7. Position-sensing apparatus according to Claims 5, wherein said array is formed from first and second binary sequences of length m and n respectively, where m and n are positive integers greater than zero, by forming a first column of the array from said first sequence, and forming each subsequent (i)th column, where "i" is an integer in the range from 2 to 2n+1 , by considering the value of the (i-l)th element of the second sequence, and
- if the (i-l)th element has a first binary value, forming the said (i)th column from said first sequence unshifted relative to the (i-l)th column, - if the (i-l)th element has a second binary value, forming the said (i)th column from said first sequence circularly shifted by one position relative to the (i-l)th column.
8. Position-sensing apparatus according to Claim 7, wherein said first and second binary sequences are constituted by respective orientable binary sequences each with the property that if a window-length subsequence appears in the sequence, its reversal does not.
9. Position-sensing apparatus according to Claim 5, wherein said array is formed by combining together two windowing sequences that extend parallel to respective ones of said first and second coordinate axes, each element of said array representing a particular combination of values of corresponding elements of said sequences.
10. Position-sensing apparatus according to Claim 9, wherein said sequences are selected from the group of sequences comprising:
(a) de Bmijn sequences;
(b) pseudo-random binary sequences;
(c) orientable binary sequences each having the property that if a window- length subsequence appears in the sequence, then its reversal does not; and
(d) complement-orientable binary sequences each having the property that if a window-length subsequence appears in the sequence, then the reverse of the bitwise complement of the subsequence does not.
11. Position-sensing apparatus according to any one of Claims 5 to 10, wherein the value of each element of said array is encoded as a corresponding feature value.
12. Position-sensing apparatus according to Claim 3 or Claim 4, wherein said features serve to encode a first windowing sequence of elements notionally extending parallel to said first coordinate axis and a second windowing sequence of elements notionally extending parallel to said second coordinate axis.
13. Position-sensing apparatus according to Claim 12, wherein said sequences are selected from the group of sequences comprising:
(a) de Bruijn sequences;
(b) pseudo-random binary sequences;
(c) orientable binary sequences each having the property that if a window- length subsequence appears in the sequence, then its reversal does not; and
(d) complement-orientable binary sequences each having the property that if a window-length subsequence appears in the sequence, then the reverse of the bitwise complement of the subsequence does not.
14. Position sensing apparatus according to Claim 12 or Claim 13, wherein the value of each element of each said sequence is encoded as a corresponding change in feature value when moving between neighbouring cells in a direction parallel to the direction of extent of the corresponding said sequence.
15. Position-sensing apparatus according to Claim 14, wherein the encoding of said element values is such as to ensure that each said feature is distinguished by its value from at least one specific neighbour with which it has line contact.
16. Position-sensing apparatus according to Claim 15, wherein said encoding is such as to distinguish each feature by value from all its neighbours with which it makes line contact.
17. Position-sensing apparatus according to Claim 16, wherein the encoding of said element values is such as to ensure that each said feature is also distinguished by its value from its neighbours with which it has point contact.
18. Position-sensing apparatus according to Claim 11, Claim 14, or Claim 15, wherein each said feature is separated from at least one neighbouring feature with which it has line contact by a corresponding separator zone that is detectable as such by said sub-pattern detector means.
19. Position-sensing apparatus according to Claim 1 , wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattern at least as great as a said sub-pattern.
20. Position-sensing apparatus according to Claim 1, wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattern which is smaller in extent than a said sub-pattern but which includes a plurality of features, said sub-pattern detector means being operative to build up said sub-pattern data relating to a whole sub-pattern as the sensor means is moved over the pattern by taking account of the continuity of features sensed during said movement.
21. Position-sensing apparatus according to Claim 5 or Claim 11, wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattern corresponding to a single said feature, said apparatus including spatial- information means for providing said sub-pattern detector means with spatial information regarding the relative disposition of adjacent element-value encoding features, and said sub-pattern detector means being operative to use said spatial information to build up said sub-pattern data relating to a whole sub-pattern as the sensor means is moved over the pattern.
22. Position-sensing apparatus according to Claim 21, wherein said spatial- information means comprises features of said pattern sensible by said sensor means as it is moved between said element- value encoding features.
23. Position-sensing apparatus according to Claim 22, wherein said spatial- information is encoded into the values represented by said element-value encoding features.
24. Position-sensing apparatus according to Claim 21, wherein said spatial- information means comprises means, separate from said sensor means, deriving information regarding movement of said sensor including at least information on changes in direction of said sensor means.
25. Position-sensing apparatus according to Claim 21, wherein the spatial information provided to said sub-pattern detector means is only partial and said detector means is operative to assume an unchanging direction of movement of said sensor means across said pattern unless and until, following initial position determination, an inconsistency is determined between said pattern data and sub-pattern data. .
26. Position-sensing apparatus according to Claim 1, wherein the relative orientation of the sensor means to said arrangement of indicia, about an axis orthogonal to said arrangement, is fixed thereby facilitating derivation by said sub-pattern detector means of said sub-pattern data representative of a sub-pattern orientated in a said at least one orientation.
27. Position-sensing apparatus according to Claim 5 or Claim 11, wherein the relative orientation of the sensor means to said arrangement of indicia, about an axis orthogonal to said arrangement, is variable; said apparatus including orientation- information means for providing said sub-pattern detector means with orientation information about said relative orientation, the sub-pattern detector means utilizing this information in deriving said sub-pattern data representative of a sub-pattern orientated in a said at least one orientation.
28. Position-sensing apparatus according to Claim 27, wherein said orientation- information means comprises features of said pattern sensible by said sensor means as it is moved between said element- value encoding features.
29. Position-sensing apparatus according to Claim 28, wherein said orientation information is encoded into the values represented by said element-value encoding features.
30. Position-sensing apparatus according to Claim 1, wherein said position-determining means determines the location of said sub-pattern in the pattern by comparing features of the sub-pattern with features of the pattern.
31. Position-sensing apparatus according to Claim 1 , wherein said position- determining means determines the location of said sub-pattern in the pattern by using an index addressable in terms of data contained in said sub-pattern data with each addressable index entry holding sub-pattern location data corresponding to the pattern position of the sub-pattern giving rise to addressing of that index entry.
32. Position-sensing apparatus according to Claim 1, wherein said position-determining means determines the location of said sub-pattern in the pattern by calculation.
33. Position-sensing apparatus according to any one of the preceding claims, wherein following an initial determination of the location of said indicator element, any incremental change in the pattern portion sensed by said sensing means, is used by said position-determining means to provide an updated location based on the incremental change in location of the indicator element indicated by said change in the sensed pattern portion.
34. Position-sensing apparatus according to claim 33, wherein said pattern is an encoding of two windowing sequences of elements notionally extending along respective first and second coordinate axes, said position-determining means being operative to update the location of said indicator element along said first and second coordinate axes separately, based on any incremental change in location .along the corresponding coordinate axis indicated by a change in the element or elements of the corresponding sequence represented by said sensed pattern portion; said position- determining means in incrementing the location of said indicator element along at least one said coordinate axis, assuming an unchanged direction of movement therealong unless and until the said element or elements of the sequence extending along said one coordinate axis that are represented by said sensed pattern portion, differ from that predicted from the stored pattern data relating to that sequence having regard to the current location in the sequence as previously determined by said position-determining means, said position-determining means upon detecting a difference between the sensed and predicted sequence elements, being further operative to enter a recovery process to recover its location along said one coordinate axis, said recovery process involving deriving at least one candidate location for the indicator element on the basis that the direction of movement of the indicator element has been reversed, and directly or indirectly comparing the element or elements sensed along the track of the indicator element with those predicted to lie along the indicator-element track in reaching the or each said candidate location whereby to test the validity of the or each such location.
35. Position-sensing apparatus according to claim 34, wherein the apparatus is operative to store the identity of the sequence elements sensed along the track of the indicator element, the validity of the or each said candidate location being tested during the recovery process by predicting, on the basis that a reversal of movement occurred at a location midway between the candidate location and the currently-determined one, the sequence element or elements sensible during movement between said midway and candidate locations, comparing them with the corresponding stored sensed sequence elements, and rejecting the candidate location if this comparison results in a mismatch.
36. Position-sensing apparatus to Claim 34, wherein said recovery process involves testing the validity of the or each candidate location by:
(i) predicting the sequence element or elements sensible thereat, comparing them with the sequence element or elements predicted for the currently- determined, but incorrect, location and rejecting the candidate location if this comparison results in a match, and/or
(ii) on the assumption that a reversal of movement occurred at a location midway between said candidate location and the currently determined location, predicting the sequence element or elements sensible during movement between said midway and candidate locations, but not including the latter location, comparing them with the corresponding sequence elements predicted for movement to the currently-determined, but incorrect location and rejecting the candidate location if this comparison results in a mismatch.
37. Position-sensing apparatus according to Claims 34, 35 or 36, wherein a plurality of candidate locations are derived and remain unrejected following the testing of their validity, said recovery process further involving detecting further incremental changes in said sensed sequence elements and comparing each new incrementally-changed sensed sequence element or elements with predictions based in each remaining candidate location, a said remaining candidate location being rejected where this comparison results in a mismatch.
38. Position-sensing apparatus according to any one of the preceding claims, wherein said indicator element is a hand-holdable stylus carrying said sensor means.
39. Position-sensing apparatus according to any one of the preceding claims, wherein said pattern element is a planar member carrying said indicia, both the planar member and said indicia being transparent to visible light whereby to permit viewing of items through the pattern element.
40. Position-sensing apparatus according to Claim 38, wherein said pattern element is a planar member carrying said indicia, said indicia being transparent to visible light and said stylus being a marking stylus capable of depositing a marking substance on a surface of said planar member at which said indicia can be sensed by said sensor means, said working substance being optically visible but permitting the sensing of said indicia therethrough.
41. Position-sensing apparatus according to Claim 38, wherein said pattern element is a planar member carrying said indicia, said apparatus further comprising a markable sheet positioned over said planar member, said sheet being at least partially opaque and permitting said indicia to be sensed therethrough by said sensor means, and said stylus being a marking stylus capable of depositing a marking substance on said sheet which substance is optically discernible against said sheet but permits the sensing of said indicia therethrough.
42. A pattern element for use in position-sensing apparatus according to any one of the preceding claims and having the characteristics of the said pattern element thereof.
43. A pattern element presenting a two-dimensional pattern having pattern cells arranged in rows and columns extending parallel to respective first and- second coordinate axes with each cell having a plurality of neighbouring cells across respective boundaries and having a property set at one of a plurality of possible values, said cells serving to encode first and second binary sequences of elements parallel to said first and second axes respectively with each sequence element having its value encoded as a corresponding change in cell property value when moving across a said boundary, said change being in accordance with the following four encoding functions that give the property value of a said cell when moving thereto from another said cell having a property value c:
h0(c), h1 - for movement parallel to said first axis v0(c), v1(c) - for movement parallel to said second axis where the suffixes "0" and "1" indicate the element value to be encoded, said encoding being such that:
h0(c)≠ h1(c) and v0(c)≠ v1(c)
hi( vj(c)) = vj(hi(c))
where "i" and "j" are members of the binary value set (0,1), each said cell being distinguishable from its neighbours and movements parallel to said first and second axes being respectively identifiable.
44. A pattern element according to claim 43, wherein each said cell is distinguishable from its neighbours and movements parallel to said first and second axes are respectively identifiable, by virtue of said encoding functions being so chosen that any given cell and all its neighbouring cells in both directions of said first and second axes have different values of the property c.
45. A pattern element according to claim 43, wherein each said cell is distinguishable from its neighbours and movements parallel to said first and second axes are respectively identifiable, by virtue of said encoding functions being so chosen that any given cell and its neighbouring cells in both directions of one of said first and second axes have different values of the property c, and further by virtue of the provision of identifiable separators between neighbouring cells in both directions of the other of said first and second axes.
46. A pattern element according to claim 43, wherein each said cell is distinguishable from its neighbours and movements parallel to said first and second axes are respectively identifiable, by virtue of the provision of identifiable separators between neighbouring cells in both directions of both said first and second axes with the separators relevant to movement in both directions of one said axis being distinguished from the separators relevant to movement in both directions of the other said axis.
47. A pattern element according to any one of claims 43 to 46, wherein said encoding functions are such that any given cell and all the cells to which it is diagonally adjacent have the value of their property c so inter-related as to enable at least the fact that a diagonal transition has been made when moing from said given cell to one of its diagonally adjacent cells.
48. A pattern element according to any one of claims 43 to 47, wherein said encoding functions are of the form:
h0(c) = c + a (Modulo N)
h1(c) = c - a (Modulo N)
v0(c) = c + b (Modulo N)
v1(c) = c - b (Modulo N)
where a is not equal to b.
49. A pattern element according to any one of claims 43 to 47, wherein said encoding functions are of the form:
h0(c) = c.XOR.a
h1(c) = c.XOR.b
v0(c) = c.XOR.d
h1(c) = c.XOR.e
where XOR represents the bitwise exclusive OR function; a,b,d,e are non zero; a and b are different and d and e are different.
50. A pattern element according to any one of claims 43 to 49, wherein said sequences are windowing sequences.
51. A pattern element according to claim 50, wherein said sequences are orientable sequences, and wherein:
h0(c) = h0 -1(c);h1(c) = h1 -1(c)
v0(c) = V0 -1(c);v1(c) = v1 -1(c)
52. A pattern element according to claim 50, wherein said sequences are compliment-orientable sequences, and wherein:
h0 = h1 -1(c)
V0 = v1 -1(c)
53. Displacement-sensing apparatus comprising a pattern element according to any one of claims 43 to 49, a member movable over said element, sensing means coupled to said member for sensing at one time the value of the property c of a single cell of said pattern or where provided, the identity of a said separator, and processor means responsive to the output of said sensor means to determine the relative displacement of said member across the pattern element.
54. A method of determining the location of an indicator along a predetermined sequence of pattern features relative to which the indicator is movable, said method involving determining an initial location for said indicator along said sequence and thereafter incrementally updating the determined location by:
A. sensing a portion of said sequence of pattern features in the locality of said indicator and monitoring the sensed sequence portion to detect an incremental change therein.
B. upon detecting an incremental change in said sensed portion, comparing the sensed sequence portion with that predicted as present in said locality, this prediction using a stored representation of said predetermined sequence and being effected on the basis of an incremental change having occurred in the currently determined location in an assumed direction of movement, and
C. acting on the result of said comparison as follows:
(i) where said comparison produces a match between the sensed and predicted sequence portions, updating the determined location of the indicator by an incremental change in said assumed direction of movement,
(ii) where said comparison produces a mismatch between the sensed and predicted sequence portions, carrying out a recovery process to recover the location of the indicator along said sequence, said recovery process involving deriving at least one candidate location for the indicator on the basis that the direction of movement of the indicator has been reversed, and directly or indirectly comparing the sequence portions sensed along the track of the indicator with those predicted to lie along the indicator' s track in reaching the or each said candidate location whereby to test the validity of the or each such location.
55. A method according to Claim 54, including the step of storing the sequence portions sensed along the track of the indicator, the validity of the or each said candidate location being tested during the recovery process by predicting, on the basis that a reversal of movement occurred at a location midway between the candidate location and the currently-determined one, the sequence portions sensible during movement between said midway and candidate locations, comparing them with the corresponding stored sequence portions, and rejecting the candidate location if this comparison results in a mismatch.
56. A method according to Claim 54, wherein said recovery process involves testing the validity of the candidate location by:
(i) predicting the sequence portion sensible thereat, comparing it with the said sequence portion predicted for the currently-determined location, and rejecting the candidate location if this comparison results in a match, and/or
(ii) on the assumption that a reversal of movement occurred at a location midway between said candidate location and the currently- determined location, predicting the sequence portions sensible during movement between said midway and candidate locations, but not including the latter location, comparing them with the corresponding sequence portions predicted for movement to the currently-determined location, and rejecting the candidate location if this comparison results in a mismatch.
57. A method according to Claims 54, 55 or 56 wherein a plurality of candidate locations are derived and remain unrejected following the testing of their validity, said recovery process further involving detecting further incremental changes in said sensed sequence portion and comparing each new incrementally-changed sensed sequence portion with predictions based on each remaining candidate location, a said remaimng candidate location being rejected where this comparison results in a mismatch. AMENDED CLAIMS
[received by the International Bureau on 4 September 1992 (04.09.92); original claim 19 cancelled; original claim 1 amended; other
claims unchanged (2 pages)]
1. Position-sensing apparatus comprising:
a pattern element with an arrangement of indicia that together present a two-dimensional pattern having features that make said pattern a windowing pattern in that any local portion of the pattern of given extent in terms of its features (herein a "sub-pattern"), when considered in isolation, is so characterized by said features as to permit the location of the sub-pattern to be determined, for at least one orientation of the sub-pattern relative to said pattern; - an indicator element movable relative to said pattern element across said arrangement of indicia;
- sub-pattern detector means including sensor means for sensing said indicia such that for any one position of the indicator element, the sensing means is operative to sense a portion of said pattern which lies in the locality of said indicator element and is smaller in extent than a said sub-pattern, the detector means being operative to process the output of the sensor means such that as the indicator element is moved over the pattern, the detector means is operative to derive sub-pattern data representative of a whole sub-pattern local to said indicator element in a said at least one orientation of the sub-pattern relative to said pattern; and
- position-determining means including a memory holding pattern data representative of said windowing pattern, the position-determining means being responsive to the sub-pattern data derived by said detector means to determine, by reference to said pattern data, the position of said indicator element relative to said pattern element.
2. Position-sensing apparatus according to Claim 1, wherein:
(a) said features of the pattern discernibly form a regular arrangement for which when any given sub-pattern of said pattern is considered in isolation from the pattern, that sub-pattern may be in any of M possible orientations relative to the pattern where M is a positive integer greater than zero;
(b) said windowing pattern is such that any given sub-pattern can be element values is such as to ensure that each said feature is also distinguished by its value from its neighbours with which it has point contact.
18. Position-sensing apparatus according to Claim 11, Claim 14, or Claim 15, wherein each said feature is separated from at least one neighbouring feature with which it has line contact by a corresponding separator zone that is detectable as such by said sub-pattern detector means.
Figure imgf000104_0001
20. Position-sensing apparatus according to Claim 1 , wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattern which is smaller in extent than a said sub-pattern but which includes a plurality of features, said sub-pattern detector means being operative to build up said sub-pattern data relating to a whole sub-pattern as the sensor means is moved over the pattern by taking account of the continuity of features sensed during said movement. 21. Position-sensing apparatus according to Claim 5 or Claim 11, wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattern corresponding to a single said feature, said apparatus including spatial- information means for providing said sub-pattern detector means with spatial information regarding the relative disposition of adjacent element-value encoding features, and said sub-pattern detector means being operative to use said spatial information to build up said sub-pattern data relating to a whole sub-pattern as the sensor means is moved over the pattern.
22. Position-sensing apparatus according to Claim 21, wherein said spatial- information means comprises features of said pattern sensible by said sensor means as it is moved between said element- value encoding features. STATEMENT UNDER ARTICLE 19
Claim 1 has been restricted to embodiments in which less than a full windowing sub-pattern is sensed by the sensing means of the sub-pattern detector means and in which, accordingly, the detector means is required to build up a whole sub-pattern before absolute position detection can be effected. In contrast, both EP A 0171,284 (NEC Corporation) and EP A 0260,246 (Joyce S.A) rely on the detection of a complete windowing sub-pattern and contain no disclosure as to how a whole sub-pattern may be built up from smaller pattern fragments.
PCT/GB1992/000594 1991-04-03 1992-04-03 Position-sensing apparatus WO1992017859A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP92907613A EP0578692B1 (en) 1991-04-03 1992-04-03 Position-sensing apparatus
DE69202975T DE69202975T2 (en) 1991-04-03 1992-04-03 POSITIONING DEVICE.
US08/117,200 US5442147A (en) 1991-04-03 1992-04-03 Position-sensing apparatus
JP4506964A JPH06506080A (en) 1991-04-03 1992-04-03 position sensing device

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB9106990.6 1991-04-03
GB919106990A GB9106990D0 (en) 1991-04-03 1991-04-03 Position sensing apparatus
GB9120982.5 1991-10-03
GB919120982A GB9120982D0 (en) 1991-04-03 1991-10-03 Position-sensing apparatus

Publications (1)

Publication Number Publication Date
WO1992017859A1 true WO1992017859A1 (en) 1992-10-15

Family

ID=26298678

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/GB1992/000594 WO1992017859A1 (en) 1991-04-03 1992-04-03 Position-sensing apparatus

Country Status (5)

Country Link
US (1) US5442147A (en)
EP (1) EP0578692B1 (en)
JP (1) JPH06506080A (en)
DE (1) DE69202975T2 (en)
WO (1) WO1992017859A1 (en)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0892971A1 (en) * 1995-12-18 1999-01-27 Oral Sekendur Absolute optical position determination
DE19805994A1 (en) * 1998-02-15 1999-08-19 Ferger Three dimensional tracker ball for computer image object manipulation
WO2000073983A1 (en) 1999-05-28 2000-12-07 Anoto Ab Position determination
WO2001026033A1 (en) * 1999-10-01 2001-04-12 Anoto Ab Position determination - calculation
EP1128320A1 (en) * 2000-02-21 2001-08-29 Oki Data Corporation Electronic-form preparation system
WO2001071653A1 (en) 2000-03-21 2001-09-27 Anoto Ab Method and system for storing a coding pattern
WO2001071644A1 (en) * 2000-03-21 2001-09-27 Anoto Ab Apparatus and methods relating to images
WO2003001440A1 (en) * 2001-06-25 2003-01-03 Anoto Ab Method for achieving a position code and decoding a position code
EP1310904A1 (en) * 2000-06-02 2003-05-14 Japan Science and Technology Corporation Method for processing document, recorded medium on which document processing program is recorded and document processor
US6667695B2 (en) 2001-06-25 2003-12-23 Anoto Ab Position code
WO2004097723A1 (en) 2003-04-29 2004-11-11 Anoto Ip Lic Hb Methods, apparatus, computer program and storage medium for position decoding
WO2005059819A1 (en) 2003-12-16 2005-06-30 Anoto Ab Method, apparatus, computer program and storage medium for recording a movement of a user unit
US7072529B2 (en) 2000-03-21 2006-07-04 Anoto Ab Systems and methods for information storage
US7143952B2 (en) 2000-03-21 2006-12-05 Anoto Ab Apparatus and methods relating to image coding
US7145556B2 (en) 2001-10-29 2006-12-05 Anoto Ab Method and device for decoding a position-coding pattern
US7694889B2 (en) 2005-02-28 2010-04-13 Fuji Xerox Co., Ltd. Printed material having location identification function, two-dimensional coordinate identification apparatus, image-forming apparatus and the method thereof
US7707082B1 (en) 1999-05-25 2010-04-27 Silverbrook Research Pty Ltd Method and system for bill management
US7751089B2 (en) 2003-05-26 2010-07-06 Anoto Ab Method for compressing a digital representation containing a page-describing code, which is sent from a computer to a printer
US7753283B2 (en) 2003-06-13 2010-07-13 Anoto Aktiebolag (Anoto Ab) On-demand printing of coding patterns
US7950588B2 (en) 2004-06-28 2011-05-31 Anoto Ab Coding and decoding of data
US8074891B2 (en) 2005-06-17 2011-12-13 Anoto Ab Coding and decoding methods and apparatuses
JP2013225348A (en) * 2002-09-26 2013-10-31 Kenji Yoshida Dot pattern
US10936924B2 (en) 2014-04-28 2021-03-02 Gelliner Limited Encoded cells and cell arrays

Families Citing this family (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ055999A0 (en) * 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (npage01)
WO1994008316A1 (en) * 1992-09-30 1994-04-14 Hewlett Packard Company Initial track recovery in position-sensing systems that use windowing patterns
US6081261A (en) * 1995-11-01 2000-06-27 Ricoh Corporation Manual entry interactive paper and electronic document handling and processing system
IL120186A (en) * 1997-02-09 2000-06-01 Raviv Roni Display pointing device and method
DE29924323U1 (en) * 1999-03-24 2002-12-05 Anitra Medienprojekte Gmbh Carrier for samples and reader for position determination
US7055739B1 (en) * 1999-05-25 2006-06-06 Silverbrook Research Pty Ltd Identity-coded surface with reference points
US6428155B1 (en) * 1999-05-25 2002-08-06 Silverbrook Research Pty Ltd Printer cartridge including machine readable ink
AUPQ363299A0 (en) * 1999-10-25 1999-11-18 Silverbrook Research Pty Ltd Paper based information inter face
US6792165B1 (en) * 1999-05-25 2004-09-14 Silverbrook Research Pty Ltd Sensing device
SE516522C2 (en) * 1999-05-28 2002-01-22 Anoto Ab Position determining product for digitization of drawings or handwritten information, obtains displacement between symbol strings along symbol rows when symbol strings are repeated on symbol rows
AU5263500A (en) * 1999-05-28 2000-12-18 Anoto Ab Recording of information
US6502756B1 (en) 1999-05-28 2003-01-07 Anoto Ab Recording of information
ATE467167T1 (en) 1999-08-30 2010-05-15 Anoto Ab ELECTRONIC NOTEBOOK
SE0000939L (en) * 2000-02-18 2001-08-19 Anoto Ab Inenhetsarrangemang
US7710408B2 (en) * 1999-08-30 2010-05-04 Anoto Ab Centralized information management based upon position information
US7176896B1 (en) 1999-08-30 2007-02-13 Anoto Ab Position code bearing notepad employing activation icons
US7108192B2 (en) * 1999-09-17 2006-09-19 Silverbrook Research Pty Ltd Rotationally symmetric tags
US8136720B2 (en) * 1999-09-17 2012-03-20 Silverbrook Research Pty Ltd Method of recording mail transactions
US6995859B1 (en) * 1999-09-17 2006-02-07 Silverbrook Research Pty Ltd Method and system for instruction of a computer
US6844871B1 (en) * 1999-11-05 2005-01-18 Microsoft Corporation Method and apparatus for computer input using six degrees of freedom
GB9926574D0 (en) * 1999-11-11 2000-01-12 Renishaw Plc Absolute position measurement
US6568777B1 (en) * 1999-11-16 2003-05-27 Agilent Technologies, Inc. Optical navigation system and method
US6836555B2 (en) * 1999-12-23 2004-12-28 Anoto Ab Information management system with authenticity check
KR100752817B1 (en) * 1999-12-23 2007-08-29 아노토 아베 General information management system
US20030061188A1 (en) * 1999-12-23 2003-03-27 Linus Wiebe General information management system
BR0016610A (en) * 1999-12-23 2002-09-03 Anoto Ab General information management system
US6738053B1 (en) 2000-02-16 2004-05-18 Telefonaktiebolaget Lm Ericsson (Publ) Predefined electronic pen applications in specially formatted paper
US6839623B1 (en) 2000-02-16 2005-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Positioning applications for an electronic reading device
US6813396B1 (en) 2000-02-16 2004-11-02 Telefonatiebolaget L.M. Ericsson (Publ) Method for sharing information between electronic reading devices
AU3374901A (en) * 2000-02-16 2001-08-27 Telefonaktiebolaget Lm Ericsson (Publ) Specially formatted paper based applications of a mobile phone
US6693623B1 (en) 2000-02-16 2004-02-17 Telefonaktiebolaget Lm Ericsson (Publ) Measuring applications for an electronic reading device
US6593908B1 (en) * 2000-02-16 2003-07-15 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for using an electronic reading device on non-paper devices
WO2001061631A1 (en) * 2000-02-16 2001-08-23 Telefonaktiebolaget Lm Ericsson (Publ) Printer pen
US6885878B1 (en) 2000-02-16 2005-04-26 Telefonaktiebolaget L M Ericsson (Publ) Method and system for using an electronic reading device as a general application input and navigation interface
US6611259B1 (en) 2000-02-16 2003-08-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for operating an electronic reading device user interface
AU2001240608A1 (en) * 2000-02-16 2001-08-27 Telefonaktiebolaget Lm Ericsson (Publ) Multi-layer reading device
US6952497B1 (en) 2000-02-16 2005-10-04 Telefonaktiebolaget L M Ericsson (Publ) Method and system for electronically recording transactions and performing security function
US6832116B1 (en) 2000-02-16 2004-12-14 Telefonaktiebolaget L M Ericsson (Publ) Method and system for controlling an electronic utility device using an electronic reading device
JP2001243006A (en) * 2000-02-25 2001-09-07 Ricoh Elemex Corp Device and method for inputting coordinate
SE517984C2 (en) * 2000-03-21 2002-08-13 Anoto Ab Arrangement for input of information
US8418052B2 (en) 2000-03-21 2013-04-09 Anoto Aktiebolag (Anoto Ab) Processing of documents
US6529184B1 (en) 2000-03-22 2003-03-04 Microsoft Corporation Ball pattern architecture
SE519356C2 (en) * 2000-04-05 2003-02-18 Anoto Ab Procedure and apparatus for information management
US6854821B2 (en) 2000-04-05 2005-02-15 Anoto Ab Systems and methods for printing by using a position-coding pattern
US6505123B1 (en) 2000-07-24 2003-01-07 Weatherbank, Inc. Interactive weather advisory system
US6958747B2 (en) * 2000-08-30 2005-10-25 Anoto Ab Method for making a product
US20030016212A1 (en) * 2001-06-27 2003-01-23 Stefan Lynggaard Method, computer program product and device for wireless connection
US7133563B2 (en) 2002-10-31 2006-11-07 Microsoft Corporation Passive embedded interaction code
US7430497B2 (en) * 2002-10-31 2008-09-30 Microsoft Corporation Statistical model for global localization
US7502507B2 (en) * 2002-10-31 2009-03-10 Microsoft Corporation Active embedded interaction code
US7116840B2 (en) * 2002-10-31 2006-10-03 Microsoft Corporation Decoding and error correction in 2-D arrays
US7156292B2 (en) * 2003-04-07 2007-01-02 Silverbrook Research Pty Ltd Validating competition entry
US7423227B2 (en) * 2003-09-04 2008-09-09 Avago Technologies Ecbu Ip Pte Ltd Apparatus for optical navigation
US7421111B2 (en) * 2003-11-07 2008-09-02 Mitsubishi Electric Research Laboratories, Inc. Light pen system for pixel-based displays
US7136054B2 (en) * 2004-01-06 2006-11-14 Microsoft Corporation Camera-pen-tip mapping and calibration
US7581171B2 (en) * 2004-01-06 2009-08-25 Microsoft Corporation Positionally encoded document image analysis and labeling
US7583842B2 (en) 2004-01-06 2009-09-01 Microsoft Corporation Enhanced approach of m-array decoding and error correction
US7463774B2 (en) * 2004-01-07 2008-12-09 Microsoft Corporation Global localization by fast image matching
US7263224B2 (en) 2004-01-16 2007-08-28 Microsoft Corporation Strokes localization by m-array decoding and fast image matching
GB2412215B (en) * 2004-03-18 2008-08-13 Hewlett Packard Development Co Position identification pattern
US7242466B2 (en) * 2004-03-31 2007-07-10 Microsoft Corporation Remote pointing system, device, and methods for identifying absolute position and relative movement on an encoded surface by remote optical method
US7048198B2 (en) * 2004-04-22 2006-05-23 Microsoft Corporation Coded pattern for an optical device and a prepared surface
US7656395B2 (en) * 2004-07-15 2010-02-02 Microsoft Corporation Methods and apparatuses for compound tracking systems
US20060015804A1 (en) * 2004-07-15 2006-01-19 Microsoft Corporation Method and system for presenting editable spreadsheet page layout view
KR20070085366A (en) * 2004-10-12 2007-08-27 아노토 아베 Method and a system for secure management of information from an electronic pen
SE0402710D0 (en) * 2004-11-05 2004-11-05 Anoto Ab Management of internal logic for electronic pens
TWI276986B (en) * 2004-11-19 2007-03-21 Au Optronics Corp Handwriting input apparatus
US20060161469A1 (en) 2005-01-14 2006-07-20 Weatherbank, Inc. Interactive advisory system
US8832121B2 (en) * 2005-02-02 2014-09-09 Accuweather, Inc. Location-based data communications system and method
US7607076B2 (en) 2005-02-18 2009-10-20 Microsoft Corporation Embedded interaction code document
US7826074B1 (en) 2005-02-25 2010-11-02 Microsoft Corporation Fast embedded interaction code printing with custom postscript commands
US7421439B2 (en) 2005-04-22 2008-09-02 Microsoft Corporation Global metadata embedding and decoding
US7599560B2 (en) 2005-04-22 2009-10-06 Microsoft Corporation Embedded interaction code recognition
US7400777B2 (en) 2005-05-25 2008-07-15 Microsoft Corporation Preprocessing for information pattern analysis
US7729539B2 (en) 2005-05-31 2010-06-01 Microsoft Corporation Fast error-correcting of embedded interaction codes
US7580576B2 (en) 2005-06-02 2009-08-25 Microsoft Corporation Stroke localization and binding to electronic document
US7619607B2 (en) 2005-06-30 2009-11-17 Microsoft Corporation Embedding a pattern design onto a liquid crystal display
JP4577126B2 (en) * 2005-07-08 2010-11-10 オムロン株式会社 Projection pattern generation apparatus and generation method for stereo correspondence
AU2006274486B2 (en) * 2005-07-25 2009-09-17 Silverbrook Research Pty Ltd Product item having coded data identifying a layout
US7374087B1 (en) * 2005-07-29 2008-05-20 Leapfrog Enterprises, Inc. Method, apparatus and system for conveying cartridge notification
US7817816B2 (en) 2005-08-17 2010-10-19 Microsoft Corporation Embedded interaction code enabled surface type identification
US7622182B2 (en) 2005-08-17 2009-11-24 Microsoft Corporation Embedded interaction code enabled display
JP4674513B2 (en) * 2005-09-14 2011-04-20 富士ゼロックス株式会社 Spatial layout reproduction method, reader, and program
US20070109271A1 (en) * 2005-11-14 2007-05-17 Phison Electronics Corp. [a portable storage device with handwritten input device]
US8229467B2 (en) 2006-01-19 2012-07-24 Locator IP, L.P. Interactive advisory system
WO2007117201A1 (en) * 2006-04-12 2007-10-18 Anoto Ab Data protection mechanism
JP2007296742A (en) * 2006-04-28 2007-11-15 Fuji Xerox Co Ltd Image forming apparatus and method for managing electronic document
US7445160B2 (en) 2006-06-14 2008-11-04 Hewlett-Packard Development Company, L.P. Position location using error correction
US8634814B2 (en) 2007-02-23 2014-01-21 Locator IP, L.P. Interactive advisory system for prioritizing content
JP5439358B2 (en) * 2007-03-23 2014-03-12 アノト アクティエボラーク Print position coding pattern
US8126196B2 (en) * 2007-09-21 2012-02-28 Silverbrook Research Pty Ltd Method of imaging a coding pattern comprising reed-solomon codewords encoded by mixed multi-pulse position modulation
FR2923035B1 (en) 2007-10-25 2009-11-27 Hopi METHOD FOR CONSTRUCTING AT LEAST ONE IDENTIFIER AND SECURING ITS READING BY A DIGITAL PEN ASSOCIATED WITH A TRAMEE SHEET AND MEANS FOR CARRYING IT OUT.
US20110013001A1 (en) * 2008-01-28 2011-01-20 Thomas Craven-Bartle Digital pens and a method for digital recording of information
US20100084478A1 (en) * 2008-10-02 2010-04-08 Silverbrook Research Pty Ltd Coding pattern comprising columns and rows of coordinate data
US8266959B2 (en) * 2008-11-26 2012-09-18 Fluke Corporation System and method of identifying the orientation of a tri-axial accelerometer
EP2226704B1 (en) 2009-03-02 2012-05-16 Anoto AB A digital pen
US8283617B2 (en) * 2009-03-05 2012-10-09 Silitek Electronic (Guangzhou) Co., Ltd. Display device and light sensing system
KR20100138725A (en) * 2009-06-25 2010-12-31 삼성전자주식회사 Method and apparatus for processing virtual world
GB2475273B (en) 2009-11-12 2011-09-28 Liberation Consulting Ltd Toy systems and position systems
US9041385B2 (en) * 2010-04-20 2015-05-26 Hamilton Bonaduz Ag Position detecting device and method for producing a marking arrangement for a position detecting device
TW201203027A (en) * 2010-07-14 2012-01-16 Benq Corp Positioning method and display system using the same
US8619065B2 (en) * 2011-02-11 2013-12-31 Microsoft Corporation Universal stylus device
US20120283986A1 (en) * 2011-05-03 2012-11-08 Ashok Veeraraghavan System and Method for Measuring Positions
US9068845B2 (en) 2011-12-16 2015-06-30 3M Innovative Properties Company Optical digitizer system with position-unique photoluminescent indicia
JP5724938B2 (en) * 2012-04-24 2015-05-27 トヨタ自動車株式会社 Pattern generation apparatus, pattern generation method, printed matter
US8692212B1 (en) 2012-10-29 2014-04-08 3M Innovative Properties Company Optical digitizer system with position-unique photoluminescent indicia
US10753746B2 (en) 2012-11-29 2020-08-25 3M Innovative Properties, Inc. Multi-mode stylus and digitizer system
US9958954B2 (en) 2012-12-13 2018-05-01 3M Innovative Properties Company System and methods for calibrating a digitizer system
KR20140105299A (en) * 2013-02-22 2014-09-01 주식회사 하이딥 Touch panel input apparatus and touch panel input detection method thereof
KR101531162B1 (en) * 2013-09-16 2015-06-25 주식회사 하이딥 Touch panel input apparatus and input detection method thereof
DE112015005883T5 (en) * 2015-01-30 2017-09-28 Hewlett-Packard Development Company, L.P. M-EARS CYCLIC CODING
TWI809219B (en) * 2019-11-04 2023-07-21 禾瑞亞科技股份有限公司 Stylus and operating method thereof for transmitting electrical signals carrying pressure information
WO2023043928A1 (en) * 2021-09-17 2023-03-23 Google Llc Encoding and recognizing positions of a display

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0171284A2 (en) * 1984-08-07 1986-02-12 Nec Corporation Optical digitizer
EP0206246A2 (en) * 1985-06-21 1986-12-30 Stephen A. Joyce Absolute position mouse
US4691199A (en) * 1985-03-05 1987-09-01 Digital Equipment Corporation Cursor position controller
EP0276109A2 (en) * 1987-01-20 1988-07-27 Btg International Limited Method and apparatus for capturing information in drawing or writing

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521773A (en) * 1981-08-28 1985-06-04 Xerox Corporation Imaging array
US4751380A (en) * 1986-11-25 1988-06-14 Msc Technologies, Inc. Detector system for optical mouse
GB2215037B (en) * 1988-02-04 1992-09-02 Kwang Chien Fong Optical input arrangement
US5051736A (en) * 1989-06-28 1991-09-24 International Business Machines Corporation Optical stylus and passive digitizing tablet data input system
US5086197A (en) * 1990-09-17 1992-02-04 Liou Kwang Wan Optical encoding method and device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0171284A2 (en) * 1984-08-07 1986-02-12 Nec Corporation Optical digitizer
US4691199A (en) * 1985-03-05 1987-09-01 Digital Equipment Corporation Cursor position controller
EP0206246A2 (en) * 1985-06-21 1986-12-30 Stephen A. Joyce Absolute position mouse
EP0276109A2 (en) * 1987-01-20 1988-07-27 Btg International Limited Method and apparatus for capturing information in drawing or writing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PROCEEDINGS OF THE IEEE vol. 64, no. 12, December 1976, pages 1715 - 1730; MACWILLIAMS F.J. ET AL: 'Pseudo-Random Sequences and Arrays' cited in the application *

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0892971A1 (en) * 1995-12-18 1999-01-27 Oral Sekendur Absolute optical position determination
EP0892971A4 (en) * 1995-12-18 1999-03-10
DE19805994A1 (en) * 1998-02-15 1999-08-19 Ferger Three dimensional tracker ball for computer image object manipulation
US8112339B2 (en) 1999-05-25 2012-02-07 Silverbrook Research Pty Ltd Optically imaging pen configured for calculating accurate nib positions
US8001028B2 (en) 1999-05-25 2011-08-16 Silverbrook Research Pty Ltd Method of interacting with printed substrate
US7895107B2 (en) 1999-05-25 2011-02-22 Silverbrook Research Pty Ltd Method of interacting with printed form
US7707082B1 (en) 1999-05-25 2010-04-27 Silverbrook Research Pty Ltd Method and system for bill management
WO2000073983A1 (en) 1999-05-28 2000-12-07 Anoto Ab Position determination
CN1326017C (en) * 1999-10-01 2007-07-11 阿诺托股份公司 Coding sheet for optical reading
US7248250B2 (en) 1999-10-01 2007-07-24 Anoto Ab Orientation discrimination in a position-coding pattern
CN100585626C (en) * 1999-10-01 2010-01-27 阿诺托股份公司 Product having position coding pattern for coding information and the processing method
US6674427B1 (en) 1999-10-01 2004-01-06 Anoto Ab Position determination II—calculation
AU772792B2 (en) * 1999-10-01 2004-05-06 Anoto Ab Position determination - calculation
WO2001026033A1 (en) * 1999-10-01 2001-04-12 Anoto Ab Position determination - calculation
US7588191B2 (en) 1999-10-01 2009-09-15 Anoto Ab Product provided with a coding pattern and apparatus and method for reading the pattern
US7281668B2 (en) 1999-10-01 2007-10-16 Anoto Ab Coding pattern comprising a plurality of marks
KR100742429B1 (en) 1999-10-01 2007-07-26 아노토 아베 Position determination-calculation
US7172131B2 (en) 1999-10-01 2007-02-06 Anoto Aktiebolag Coding pattern and apparatus and method for determining data values in the coding pattern
EP1128320A1 (en) * 2000-02-21 2001-08-29 Oki Data Corporation Electronic-form preparation system
US7422154B2 (en) 2000-03-21 2008-09-09 Anoto Ab Apparatus and methods relating to image coding
US7143952B2 (en) 2000-03-21 2006-12-05 Anoto Ab Apparatus and methods relating to image coding
WO2001071644A1 (en) * 2000-03-21 2001-09-27 Anoto Ab Apparatus and methods relating to images
US7072529B2 (en) 2000-03-21 2006-07-04 Anoto Ab Systems and methods for information storage
WO2001071653A1 (en) 2000-03-21 2001-09-27 Anoto Ab Method and system for storing a coding pattern
EP1310904A4 (en) * 2000-06-02 2007-03-28 Japan Science & Tech Agency Method for processing document, recorded medium on which document processing program is recorded and document processor
EP1310904A1 (en) * 2000-06-02 2003-05-14 Japan Science and Technology Corporation Method for processing document, recorded medium on which document processing program is recorded and document processor
WO2003001440A1 (en) * 2001-06-25 2003-01-03 Anoto Ab Method for achieving a position code and decoding a position code
EP2133824A2 (en) 2001-06-25 2009-12-16 Anoto AB Position code
US6667695B2 (en) 2001-06-25 2003-12-23 Anoto Ab Position code
US7145556B2 (en) 2001-10-29 2006-12-05 Anoto Ab Method and device for decoding a position-coding pattern
US7999798B2 (en) 2001-10-29 2011-08-16 Anoto Ab Method and device for decoding a position-coding pattern
JP2013225348A (en) * 2002-09-26 2013-10-31 Kenji Yoshida Dot pattern
WO2004097723A1 (en) 2003-04-29 2004-11-11 Anoto Ip Lic Hb Methods, apparatus, computer program and storage medium for position decoding
US7672513B2 (en) 2003-04-29 2010-03-02 Anoto Ab Methods, apparatus, computer program and storage medium for position decoding
EP1620828B1 (en) * 2003-04-29 2014-12-24 Anoto AB Methods, apparatus, computer program and storage medium for position decoding
US7751089B2 (en) 2003-05-26 2010-07-06 Anoto Ab Method for compressing a digital representation containing a page-describing code, which is sent from a computer to a printer
US7753283B2 (en) 2003-06-13 2010-07-13 Anoto Aktiebolag (Anoto Ab) On-demand printing of coding patterns
US7865043B2 (en) 2003-12-16 2011-01-04 Anoto Ab Method, apparatus, computer program and storage medium for recording a movement of a user unit
WO2005059819A1 (en) 2003-12-16 2005-06-30 Anoto Ab Method, apparatus, computer program and storage medium for recording a movement of a user unit
US7950588B2 (en) 2004-06-28 2011-05-31 Anoto Ab Coding and decoding of data
US7694889B2 (en) 2005-02-28 2010-04-13 Fuji Xerox Co., Ltd. Printed material having location identification function, two-dimensional coordinate identification apparatus, image-forming apparatus and the method thereof
US8074891B2 (en) 2005-06-17 2011-12-13 Anoto Ab Coding and decoding methods and apparatuses
US10936924B2 (en) 2014-04-28 2021-03-02 Gelliner Limited Encoded cells and cell arrays

Also Published As

Publication number Publication date
EP0578692B1 (en) 1995-06-14
JPH06506080A (en) 1994-07-07
EP0578692A1 (en) 1994-01-19
US5442147A (en) 1995-08-15
DE69202975D1 (en) 1995-07-20
DE69202975T2 (en) 1996-02-15

Similar Documents

Publication Publication Date Title
EP0578692B1 (en) Position-sensing apparatus
US6208771B1 (en) Methods and apparatus for robust decoding of glyph address carpets
Kong et al. Topological algorithms for digital image processing
EP1456811B1 (en) Reconstruction of virtual raster
US6000621A (en) Tilings of mono-code and dual-code embedded data pattern strips for robust asynchronous capture
US5717197A (en) Tiled embedded data block-types for generic embedded data block systems
US4181952A (en) Method and means for minimizing error between the manual digitizing of points and the actual location of said points on an _electronic data entry surface
EP0663095B1 (en) Initial track recovery in position-sensing systems that use windowing patterns
JP4996245B2 (en) Method, apparatus, computer program and storage medium for position decoding
US5694102A (en) Vector reconstruction of asynchronously captured tiled embedded data blocks
RU2380736C2 (en) ADVANCED APPROACH TO m ARRAY DECODING AND ERROR CORRECTION
US4942621A (en) Method for mapping scanned pixel data
CN109542276B (en) Touch point identification method and device and display equipment
JP4455055B2 (en) Method for achieving a position code and decoding a position code
US8019181B2 (en) Image generation apparatus, image processing apparatus, computer readable medium and computer data signal
EP0780790A2 (en) Tiled embedded data blocks
US8922478B2 (en) Position sensing method and position sensing apparatus and its construction
Vuylsteke et al. A coded illumination pattern based on PN-sequences for 3-D robot vision
CN113126827B (en) Touch identification method of touch display device and related equipment
KR100942655B1 (en) Real-time image processing apparatus and method
Aizawa et al. Algorithms for connected component labeling based on quadtrees
Toussaint Computing visibility properties of polygons
EP0425171B1 (en) Object identification in a display system
Stojković et al. PSEUDORANDOM BINARY ARRAYS FOR POSITION DETERMINATION USING VIRTUAL INSTRUMENTATION
JPH09214733A (en) Picture capture mechanism

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IT LU MC NL SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 1992907613

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 08117200

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 1992907613

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1992907613

Country of ref document: EP