Abstract:
A system which enables the position of each of a plurality of movable labelled objects to be determined in an environment having two or more isolated zones, wherein the objects carry transponders which, in response to encoded radio signals, transmit ultrasonic signals of which the transit times to a plurality of fixed receivers are determined, the transponders in the different zones being triggered in a common timeslot but in staggered relationship for one zone as compared to another, and an algorithm is applied to verify the consistency of the transit times having regard to the possible movements of objects from one zone to another.

Description:
FIELD OF INVENTION 
     This invention relates to a detection system for determining information concerning the location of objects, and which can be extended to determine movement and orientation and even physical parameters such as shape of objects in a specified environment. The invention can be applied to people and animals as well as inanimate objects such a furniture, machines, vehicles, equipment and the like, and in this connection object is intended to include any movable entity. 
     BACKGROUND TO THE INVENTION 
     Location systems are known which allow the presence or absence of an object in a specified environment (such as a room) to be confirmed or denied, and relative to one or more reference points to identify where in the environment the object is located. 
     EP 0485879 describes a system for locating vehicles in automatic guidance transport systems. Ultrasound is employed as a distance measuring medium whilst an infra-red link allows communication between vehicles. 
     WO95/14241 describes a tracking system which enables a spotlight to follow a person on a stage carrying a transponder. Again infra-red signals are used to instigate ultrasonic transmissions to determine the position of the transponder and therefore the person. The spotlight is moved accordingly. 
     EP 0591899 describes another spotlight controlling system for tracking a moving target (actor on a stage) carrying a transponder. Here radio transmissions establish the communication link and ultrasound transmissions are employed to determine distance and position. 
     In our UK Patent Applications Nos. 9725760.4, 9725718.2 and 9725759.6, there is described an indoor positioning system wherein a single radio transmitter (part of a zone manager) transmits 25 radio signals each second, at the start of a 40 ms interval called a timeslot. 
     The radio signals, which are picked up by mobile transmitter/receivers (transponders) in rooms to which those signals propagate, contain an address, chosen for each message. by a scheduling PC. 
     Each mobile transponder has a unique address, and compares this with the address contained in each incoming radio message. If the addresses match, the mobile transponder emits a short pulse of ultrasound, which is detected by a set of receivers (each room has its own receiver set). These receivers include a counter, synchronised with the radio messages by means of a wired network, and it is therefore possible to determine the time-of-flight of the ultrasonic pulse from the mobile transponder to each receiver that detects it. 
     An estimate of the speed of sound in each room (derived from the ambient temperature) is used to calculate the corresponding transponder-receiver distance. 
     A non-linear model is then fitted to these distances and the known receiver positions by a regression algorithm which runs on a positioning PC (connected to the receiver set by means of a matrix manager). 
     A global time signal is sent by a clock generator to the zone manager and matrix manager(s). This signal ensures that the Scheduling PC knows which mobile transponder was triggered in a particular timeslot. It also ensures that, if sufficient ultrasonic signals from that mobile transponder are detected, the positioning PC dealing with the room in which the ultrasonic signals were generated knows where a mobile transponder was at the start of the timeslot. 
     By correlating these two items of information in a software entity called an area manager, it is possible to determine the 3D position of a mobile transponder at a particular time. 
     The aforesaid system subject of the above-numbered Patent Application is later described in more detail. 
     The system implementation described in the aforesaid Patent Applications has 40 ms timeslots, but these could be shortened to around 20 ms without affecting the basic operation of the system. However, reverberations of an ultrasonic pulse in a typical office may last up to 20 ms, therefore the timeslots cannot be made shorter than this interval. Thus considering the case of a system in which all mobile transponders are in a single room, then with say, a 15 ms timeslot, the period in which reverberations from a mobile transponder triggered in one timeslot might reach a receiver which would overlap the period in which signals from a mobile transponder triggered in the next timeslot might reach the receivers. It would then not be possible to determine which mobile transponder had generated a particular signal, and errors may be introduced into the calculation of a mobile transponder&#39;s location by using a signal generated by another mobile transponder. 
     When mobile transponders are distributed between a set of rooms, however, the aforesaid limitation appears restrictive. The periods in which signals from two or more mobile transponders are in flight may overlap safely if it is certain that the signals do not overlap physically. For example, if two mobile transponders are in separate rooms, which are ultrasonically isolated from each other, then the intervals over which their signals are in flight may be overlapped without the possibility of signal cross-contamination. Similarly, in large open-plan offices, the regions in which signals are detected by receivers can be examined, and if those regions are distinct and separated by a significant distance, it can be assumed that the ultrasonic signals will not cross in space. 
     This consideration appears to suggest that a zone manager could address two or more mobile transponders simultaneously (or as nearly simultaneously as the radio trigger link would allow), as long as those mobile transponders were in separate rooms (or separate ultrasonic spaces). 
     However, bearing in mind the mobility of the transponders, as the ultrasonic signals contain no addressing information, so a set of signals detected by receivers in an ultrasonic space could have been generated by any of the addressed transponders. It would then be impossible to determine which mobile transponder was at which location. 
     Past location information for the mobile transponders might provide some guidance in this matter, but would not rule out the possibility that a number of the mobile transponders had been transposed. 
     It is therefore necessary to provide some other means by which the area manager can identify which set of detected signals was generated by which mobile transponder. 
     THE INVENTION 
     According to one aspect of the invention, there is provided a system which enables the position of each of a plurality of labelled objects in a specified environment to be determined by determining the transit time of slowly propagating energy transmitted from a transmitter on each labelled object to a plurality of receivers positioned at fixed points in or around the specified environment, and computing therefrom the actual distance of the transmitter from the receivers, wherein the transmission of the slowly propagating energy is initiated by a burst of high speed propagating energy from a master transmitter located so as to cause transmitted bursts of such high speed energy to enter the said environment, the transmitter on the object being controlled by a receiver adapted to respond to an appropriately encoded burst of such high speed energy, each said burst being encoded so that only one of the object mounted receivers is triggered by each burst (each transmitter/receiver combination being referred to as a transponder), to thereby initiate a burst of slowly propagating energy therefrom, wherein the specified environment has at least two zones substantially isolated from one another in respect of the slowly propagating energy, the times at which the transponders are triggered on objects hitherto understood to be in one zone (one set of transponders) are staggered within common timeslots with respect to the times at which the transponders are triggered on objects hitherto understood to be in another zone (another set of transponders), each timeslot being of a sufficient length to enable the receivers to respond to the slowly propagating energy transmitted by the triggered transponders in both the first zone and the or each other zone, and an algorithm is applied to verify the consistency of the transit times of the slowly propagating energy when ascribed to the different sets of transponders. 
     The slowly propagating energy is typically ultrasound and the high speed energy is radio waves, and in order to be able to distinguish between sets of signals from different mobile transponders, it is first assumed that two different transponders are in different ultrasound zones, the triggering times of those two different mobile transponders (one from each of the two sets) are staggered, and the system is adapted so that receivers are triggered when the first of the said two different mobile transponders is triggered, and the normal 20 ms timeslot is extended by 
     
       
         ( m −1)× i,   
       
     
     (where m is the number of mobile transponders triggered in the staggered sequence, and i is the stagger time). 
     A nonlinear regression calculation used to determine the 3D positions of the mobile transponders should only converge to a solution if it is given a set of consistent transponder-receiver distances and receiver positions. Thus if receiver detected signals are ascribed to the wrong mobile transponder (because it has moved from one zone into another), the pulse times-of-flight calculated for the receiver detected signals will be incorrect, because an inappropriate trigger time will have been used for the signals. The corresponding transponder-receiver distances will then be incorrect, and the nonlinear regression computation will not converge to a solution. 
     Therefore, given a set of n possible trigger times for mobile transponders, t 1 , . . . t n , in a method embodying the invention a first check is made to see that the number of sets of signals that were detected in independent ultrasound zones is the same as the number of mobile transponders that were triggered. If this is not so, no further use can be made of these readings, because two or more mobile transponders apparently occupy the same ultrasound zones, in which case signal cross-contamination could have occurred. 
     Then, for each set of signals s 1 , . . . , s n , a set of possible corresponding transmitter-receiver distances is calculated for each trigger time, d 11 ,d 12 , . . . , d nn . By running a nonlinear regression calculation on each set of transmitter-receiver distances (using an algorithm which uses the positions of receivers that detect the corresponding signals), a set of results r 11 , r 12 , . . . , r nn  is obtained. Each value of r xy , (where 1≦×≦n) and 1≦y≦n is either a 3D position (indicating that the set of signals s x  could have been generated by a mobile transponder at time t y ) or an error value (indicating that the set of signals s x  could not have been generated by a mobile transponder triggered at time t y ). 
     Ideally, one and only one set of signals will be consistent with each trigger time, making it possible to identify which mobile transponder gave rise to those signals (and hence enabling a 3D position to be ascribed to each mobile transponder). 
     If this is not the case, other heuristics are applied to the results to determine 3D positions for the mobile transmitters. One such heuristic might be that if one set of signals is consistent with two trigger times t a  and t b , but another set of signals is consistent with trigger time t a  and no other set of signals is consistent with trigger time t b , then the first set of signals was probably generated by a mobile transponder triggered at time t b . 
     Preferably simulations are performed to validate the heuristics used. 
    
    
     DESCRIPTION OF EMBODIMENTS 
     First, the basic system subject of the aforementioned Patent Applications will be described in detail, in order to facilitate understanding of the present invention. This basic system is shown in the accompanying drawings, in which: 
     FIG. 1 is a schematic diagram of a positioning system; 
     FIG. 2 shows the FPGA configuration of the transmitter unit, 
     FIG. 3 is a schematic diagram of a mobile transmitter unit for the system of FIG. 1; 
     FIG. 4 shows the FPGA configuration of the mobile transmitter unit on the system of FIG. 3; 
     FIG. 5 is a simplified block schematic of the ultrasonic receiver unit; 
     FIGS. 6A to  6 C show how a standard ultrasonic receiver, such as shown in FIG. 5, operates as part of a transponder in the system of as shown in FIGS. 18 to  23 ; 
     FIGS. 7A to  7 D show the operation of a modified ultrasound receiver, adapted to render it insensitive to spurious noise signals, in the system of FIGS. 18 to  23 ; 
     FIG. 8 shows a standard ultrasonic transmitter as used in 
     FIG. 9, and in the systems of FIGS. 18 to  23 ; 
     FIG. 9 shows how two transponders each incorporating standard ultrasound receivers can be mounted on a movable object such as a chair to indicate rotational movement; 
     FIG. 10 shows how component redundancy in a two transponder arrangement such as shown in FIG. 9, can be reduced; 
     FIG. 11 shows a more complex ultrasonic transmitter provided in the system of FIG. 10; 
     FIGS. 12A and 12B are top (or bottom) and side view of an omnidirectional ultrasound source; 
     FIG. 13 illustrates a more directional ultrasound source; 
     FIGS. 14A and 14B are top and side views of a transponder unit designed to be worn round the neck; 
     FIG. 14C is a view from above showing the directionality of the device shown in FIGS. 14A and 14B; 
     FIG. 15 is a view from above of the sound pattern which emanates from an omnidirectional ultrasound transducer (or transducer group) when attached to or partly obscured by an object which is of acoustically opaque and/or absorbing material; 
     FIG. 16 is a side view of a person wearing a device such as shown in FIGS. 14A and 14B; 
     FIG. 17 is a top view of the person shown in FIG. 16; 
     FIG. 18 is a block schematic overview of a complete system incorporating the present invention and also including a bi-directional radio link between the master transmitter unit and each of the addressed transponders; 
     FIG. 19 is a detailed block schematic of the clock generator in FIG. 18; 
     FIG. 20 is a detailed block schematic of a zone manager of FIG. 18; 
     FIG. 21 is a detailed block schematic of a matrix manager of FIG. 18; 
     FIG. 22 is a detailed block schematic of an ultrasound receiver such as is incorporated in each room of the system of FIG. 18; and 
     FIG. 23 is a detailed block schematic of a mobile transponder unit such as is mounted on objects in the rooms in the system of FIG.  18 . 
     FIGS. 24 to  36  are Equations (1) to (13), respectively; and FIGS. 37 and 38 are Tables “A” and “B”, respectively. 
    
    
     OVERVIEW OF THE DRAWINGS 
     In the drawing a set of ultrasonic receiving elements are placed in a matrix on the ceiling of rooms in which the system is installed, and ultrasonic transmitters are placed on the objects to be located. 
     An addressable radio link is used to allocate timeslots, transmit the synchronising timing pulse, and allow transmitting elements to communicate with a coordinating device, eg to register an initial presence. 
     Radio waves are used because their speed of propagation is very fast, and unknown delays in the radio link will be very small compared to the time-of-flight of, for example, ultrasonic pulses used to measure distances so that to a first approximation the measurements can be said to be synchronised, and the unknown errors will not significantly reduce the accuracy of the system. 
     Alternatively a wired network may be used between the fixed receiving elements to distribute a timing pulse. This has the advantage of being less prone to interference, and potentially of lower cost. 
     At least three receivers must detect valid signals for the system to be able to calculate the position of the transmitter, but if all the receiving elements are coplanar, there can be ambiguity about whether a transmitter is above or below the plane containing the detector—eg the ceiling of a room. This ambiguity can be resolved if it is known for example that all transmitters are always below the ceiling. 
     The information gathered by this system can be used to automate computing and communications equipment in an intelligent manner. By locating the position of people and equipment for example in an office, hotel, hospital facility or home environment, it is possible for example to route phone calls, dispatch a printing job to the nearest printer, automatically identify the nearest visible screen to a user (for display of information requested by them), and intelligently select camera views in videophone conversations. 
     Availability of fine-grain high resolution location information can allow new methods of human-computer interaction, e.g. connection of video and audio streams by bringing their endpoints into close physical proximity. 
     It may also be possible to use a transmitting unit as an input device, e.g. as a wireless mouse, a 3D pointer, or for three-dimensional gesture generation. 
     It may also be possible to use the information gathered by the system to detect motion (by observing changes in the position of an object over time, or by Doppler methods), and the presence of opaque objects (which may shadow receiver elements), which can be deduced from patterns of reception of the distance measuring pulses. 
     DETAILED DESCRIPTION OF THE DRAWINGS 
     In FIG. 1, the position system operation is as follows: 
     1. To find the position of a mobile transmitting device  10 , a PC  12  loads an 8-bit address of the mobile device onto its parallel port. 
     2. A transmitter controller, based around a Xilinx XC3020A FPGA (the FPGA configuration is shown in FIG. 2) and interfaced to the PC parallel port, reads this address five times a second, and generates a 40 KHz data stream comprising a preamble and the address from the parallel bus of the PC. 
     3. The 40 KHz data stream is FM encoded onto a 418 MHz radio link by a Radiometrix BIM418 radio module  16 . 
     4. As the first bit of the preamble is generated by the transmitter controller, a signal from that controller commands an ADC  18  (HP E1413/A) to begin sampling at a rate of 100 KHz (shared between all channels being sampled). 
     5. Mobile devices such as  10  described in detail in later Figures of the drawings located in the area covered by the system, pick up the preamble and 8-bit address and compare the address with their own. If the addresses match, the mobile device in question transmits a 750 microsecond pulse of 40 KHz ultrasound. Typically an array of five transducers is mounted on each device, typically in a hemispherical pattern (not shown). 
     6. The ultrasonic pulse is picked up by one or more ultrasonic receiver units of which four are shown at  20 ,  22 ,  24  and  26 . Those receiving the pulse process the signal in a manner described later before passing the processed signal to the ADC  18 , which is set to sample them when instructed. 
     7. After the initial command to begin sampling, the ADC continues to sample at 100 KHz for 20 milliseconds and the samples values are stored. The stored sample values are passed over a serial interface to the PC  12 . HP Vee software is loaded into the PC to manage the sampled data, find signal peaks, determine transmitter-receiver distances, and calculate and position relative to the receivers of the mobile device that was addressed, using the algorithms described herein before. 
     The FPGA configuration of the transmitter controller of FIG. 1 is detailed in FIG.  2 . 
     In FIG. 3 the operation of a mobile radio transmitter is as follows: 
     1. At power-up, the Xilinx XC3020A FPGA unit  28  downloads its configuration from a Xilinx 1736PC serial PROM  30 (the FPGA configuration is shown in FIG.  4 ). A PIC16C54 micro-controller  32  enables a Radiometrix BIM418 radio module  34  and a 4 MHz Xilinx clock  36  (built around a 4 MHz crystal and a 74HCT00 1C). 
     2. The XC3020A unit  28  monitors incoming 40 KHz received data until it detects a preamble and 8-bit address. It then compares the received address with its own (stored in its serial PROM), and if the addresses are identical it drives five ultrasonic transducers such as (Farnell Electronics part No. 213-214) at 40 KHz for 750 microseconds (of which one is shown at  38 ). 
     3. The PIC16C54 microprocessor  32  then disables the BIM418 radio module  34  and 4 MHz clock  36 , and places the XC3020A unit  28  into powerdown mode, to save power, for 0.196 seconds. It then re-enables these components and step (2) is followed again. 
     Power is typically derived from two 3.6V half-AA lithium thionyl chloride batteries, regulated to 5V by an LT1129 IC. 
     The FPGA configuration of the transmitter controller of FIG. 3 is detailed in FIG.  4 . 
     The operation of the ultrasonic receiver shown in FIG. 5 is as follows: 
     1. The ultrasonic signal is detected by an ultrasonic transducer such as a Farnell Electronics part No. 213-226 denoted by 40. 
     2. This signal is amplified (typically by a factor of 56) using an inverting amplifier  42 . Typically this is built around one-quarter of a TL074 quad op-amp. 
     3. The amplified signal is rectified using a full wave active rectifier  44 . Typically this is built around one-half of a TL074 quad op-amp. 
     4. The rectified, amplified signal is smoothed using an RC circuit  46  to obtain a signal which represents the envelope of a rectified version of the original signal. 
     5. This signal is passed to the HP E1413/A ADC  18  (see FIG. 1) via an RJ45 jack plug and one wire of a four wire network, which also supplies the unit with +5V, −5V and GND power lines. 
     Standard Receiver 
     A number of these are located at known locations around the environment (room) in the ultrasonic positioning system. 
     As shown in FIG.  6 (A), each receiver  47  is triggered by a central controller  48  across a network  50 . Following a timing or reset signal  49 , the receiver monitors signals from a 40 KHz ultrasonic detector  52  for 20 ms as depicted in FIG.  6 (B), and the time at which the incoming signal peaked for the first time is determined and held in the receiver. After the 20 ms window closes, the central controller  48  polls each receiver across the network  50  as depicted at  54  and  56  in FIG.  6 (C), and retrieves the time value. The value from each receiver is either the time after the window opened at which the signal first peaked, or is zero (which indicates that no useful signal was detected). 
     Reducing System Response to Spurious Acoustic Signals 
     To confer noise immunity a two channels and two ultrasonic detector are provided as shown in FIG.  7 . The first detector  52 , and first channel  58  are sensitive to 40 kHz and the second,  60 ,  62  to another frequency eg 25 kHz. 
     When the receiver is triggered, both channels are reset and monitor the incoming signals for 20 ms, and determine the times (a,b) at which any received signals peak for the first time as shown in FIG.  7 (B). 
     The value b is checked and if greater than O, the value of a is forced to O, also, as shown in FIG.  7 (C). If b equals O, the value of a is available to be returned to the central controller. 
     When the central controller  48  polls each receiver  47  across the network is shown in FIG.  7 (D), and noted by  64 , the time value a from the first channel  52 ,  58  is returned to the controller  48 , as denoted by  66 . If the second channel value b had been non-zero (indicating that a spurious acoustic signal was detected), then zero is returned to the controller from the first channel  52 ,  58 . 
     Transponder Design 
     A standard receiver-transmitter (transponder) unit  68  (such as item  10  in FIG. 1) is shown in FIG.  8 . 
     This comprises a radio receiver  70  which picks up encoded FM signals in the 418 MHz band from a radio transmitter ( 16  in FIG. 1) controlled by a central coordinating device  48  (not shown). 
     These signals are passed through decoding logic  72 , which presents the address contained in any decoded message, to an address comparator  74 . If the latter identifies the address in the message as that of the transponder stored in ROM  76 , it triggers a signal generator  78 , which drives a set of ultrasonic transducers  80  to transmit an ultrasonic pulse. 
     Two such standard transponders  82 ,  84  are shown in FIG. 9 attached to two spaced apart points on a chair  86 . 
     Since the two transponders  82 ,  84  contain similar duplicated components, an alternative arrangement is possible as shown in FIG.  10 . Here, a single receiver and control unit  88  drives two individually addressable ultrasonic transducer sets, mounted at the same points on the chair  86 ,  90 ,  92  as were the standard transponders  82 ,  84 . 
     The alternative arrangement is shown in more detail in FIG.  11 . The unit  88  is made up of a radio receiver  94  which picks up the encoded FM signals in the 418 MHz band from the central transmitter. These signals are passed through decoding logic  96 , which presents the address contained in any message detected to an address comparator  98 . The latter is associated with a look-up table  100  containing in this case two rows  102 ,  104 . Each row stores a transducer address and a port number (e.g. If transducer set  1  is attached to port  1 , one of the rows will be the ordered pair ( 1 , 1 )). 
     If the address comparator identifies that the address in a received radio message matches one of the transducer addresses in the look-up table  100  it triggers a signal generator  106 . The address comparator also controls gates  108 ,  100 , to direct the output of the signal generator  106  to the port identified by the port number in the received transducer address. It can be seen therefore that the number of radio receivers, decoders, comparators and signal generators required by a system where two or more ultrasonic transmitter transducers are to be mounted as single objects, can be reduced, with consequent economies. 
     Two groups of ultrasonic transducers  112 ,  114  are connected separately one to port  1  (controlled by gate  108 ) and the other to port  2  controlled by gate  110 . 
     Introducing Directionality into the Transducers 
     Since ultrasonic transducers tend to produce a sound wave over a relatively small solid angle, and are therefore rather directional. A less directional transducer is shown in FIGS. 12A and 12B. This comprises a spherical body  116  from which protrude a plurality of regularly spaced transducers, one of which is shown at  118  in each of the views. 
     If the spherical unit  116  of FIGS. 12A and 12B is mounted so that its lower half is acoustically shielded, none of the lower transducers serves any useful purpose and could be omitted. Such a unit is shown in FIG. 13, where the hemispherical body  120  carries transducers  122 . 
     The device  120  is shown mounted on a housing  124  which may contain electronic components making up the transponder. Less than half the number of transducers are required than in an omnidirectional source such as shown in FIGS. 12A,  12 B. 
     FIG. 14A shows a transponder  126  capable of being worn by a person around their neck for example on a chain  128 . As seen in FIG. 14C, the ultrasonic transducers  130  can be arranged to give a relatively narrow beam  132  which will project in front of the person  134 . By finding the position of the person  134  and the locations of the receivers ( 20 ,  22 ,  24  etc in FIG. 1) at which the beam is detected, it is possible to deduce which way the person is facing. 
     Derivation of Orientation Information 
     Where the objects on which transponders omnidirectional (standard) are attached are opaque or relatively opaque to ultrasound, it is possible to obtain information about the orientation of those objects from the data collected by the receivers such as  20 ,  22  etc in FIG.  1 . Consider a transponder  136  attached to a known point  138  on such an object  140 , as in FIG.  15 . The opacity of the object  140  ensures that the only sound energy  142  which can leave its vicinity does so in the direction  144 . This effect may be amplified if the transmitter is itself directional to some degree. 
     By interrogating the receivers ( 20 ,  22  etc (FIG.  1 )) in an environment containing such an object and performing a calculation on the information they provide, the location system can calculate in three dimensions the position (x,y,z) of the transponder  136 . The location system also knows the positions (u 1 ,v 1 ,w 1 ) . . . (u n ,v n ,w n ) of the n receivers that have detected the ultrasonic signal. Using the known location of the transponder on the object and the known locations of the receivers, the direction, relative to the object, in which the ultrasonic energy will have left its vicinity, can be deduced. Correlating these three items of information allows the object&#39;s orientation to be determined, where the position of point  138  relative to the object  140  is known. 
     An example of how this can be derived will be described with reference to FIGS. 16 and 17 which show a standing person  146 , who can face in any direction and therefore be said to be rotatable about a vertical axis  148 , relative to a horizontal array of receivers one of which is denoted by 150. 
     The person  146  is wearing a transponder  152  on a chain around his neck. In this case, the sound energy is directed in front of the person, with the middle of the beam lying in the same vertical plane as the direction in which they are facing. FIG. 18 shows the person from above and the area in the horizontal plane over which sound energy will be radiated from the ultrasonic transducers on the transponder  152 . 
     First it is necessary to compute the mean point of detection of the ultrasonic signal on the ceiling (û,v, w), given by Equations (5), (6) and (7). 
     Secondly, the vector (a,b,c) is computed from the transponder to the mean point. The vector a, b, c, is computed using Equations 18, (9) and (10). 
     The vector (a,b, 0 ) usually can be taken to be a good estimate of the horizontal direction of the middle of the sound beam leaving the object&#39;s vicinity, and can be used to calculate the direction A, in which the person is orientated around a vertical axis (relative to some other horizontal direction specified by a vector (m,n, 0 ). 
     The value of A in the range (−π,π] can be computed from the values of sinA and cosA given by Equations (11) and (12). 
     The value of A can be used as an estimate of the direction in which the person is facing. 
     FIGS. 18 to  23  illustrate a position detection system embodying the invention and the separate parts making up the system. 
     Complete System 
     FIG. 18 is a block schematic diagram of the complete system in which a Scheduling PC  154  dictates which one of a set of Mobile Transponders (one of which is shown at  156 ) are to be addressed in each of 25 timeslots per second. Addressing messages generated by the Scheduling PC are sent to Mobile Transponders via a Zone Manager  158 , which also passes registration messages from the Mobile Transponders  156  back to the Scheduling PC. 
     Ultrasonic signals generated by the addressed Mobile Transponders  156  in response to the addressing messages sent by the Zone Manager, are detected by a set of Receivers three of which are shown at  160 ,  162 ,  164  attached to a Matrix Manager  166 . Typically, there will be one Matrix Manager and a set of Receivers per room (or other space in which ultrasound is confined). 
     A Positioning PC  168  connected to the Matrix Manager  166  derives the air temperature of the room in which the polled receivers are located via a thermometer  170 , and polls the Receivers  160 ,  162  etc to retrieve the three measurements derived from the received ultrasonic signals, and uses this data, and the measurement of air temperature in the room  172 , to calculate the 3D position of the source of the ultrasonic signals. 
     A second set of receivers ( 174 ,  176 ,  178 ) in a second rom  180  are also shown, with associated matrix manager  182  and positioning PC  184 . Other similar set-ups can be provided for each room in a building, each linked to a central area manager  186 . 
     Information from the Scheduling PC and the Positioning PCs is collated by an Area Manager  186 , which produces a stream of location events that may be sent to users or applications. In order to perform this collation, elements of the system must be synchronised—this is achieved using a 25 Hz signal from a Clock Generator  188  and initialising PC  190 . 
     Radio signals are transmitted to the mobile transponder radio receivers from a master radio transmitter/receiver unit  189  operating at 418 MHz with FM encoding. 
     Individual Parts of the System 
     (1) Clock Generator (FIG. 19) 
     The Clock Generator  188  sends an accurate 25 Hz clock pulse and global time value to the Zone Manager and the Matrix Managers across a serial network. The generator has a 25 Hz  192  clock which drives a time store and counter  194 . The time store holds the current global time value, and the counter increments it with every pulse. An initial global time value may be loaded from a the PC  190  connected to the Clock Generator (see FIG.  18 ). 
     After incrementing the current global time value, that value, and the clock pulse are gated to a serial network interface  196 , which distributes these signals to other system components, so as to synchronise them. 
     (2) Zone Manager (FIG. 20) 
     Each Zone Manager ( 158 ) handles the radio interface between the Scheduling PC and the Mobile Transmitters. As shown in FIG. 20, it has a Data Store  198  which is filled by the Scheduling PC with the next packet to be transmitted. When this process is complete, the Zone Manager unasserts the “Ready” status line. On receipt of a clock pulse from the synchronisation network ( 200 ) along  202 , the Zone Manager stores the associated time in a Time Store,  204 , and triggers a Message Generator  206 . The Message Generator sends a 136-bit preamble followed by a Manchester-encoded copy of the stored packet at 40 kbps to the transmit side of a 418 MHz FM Radio Transceiver  208 , thus sending a DC-balanced copy of the desired message to the Mobile Transmitters. 
     After sending the message, the Zone Manager triggers a Message Decoder  210 , which looks at the incoming signals picked up by the receive side of the Transceiver  208 . Any incoming radio message sent by the radio transmitting section of the Mobile Transponder is decoded and error-checked, and if the message is valid it is stored in a Message Store  212 . 
     When time has been allowed for the outgoing message to be sent and any incoming messages to be detected, the Zone Manager asserts the “Ready” status line, indicating that the Scheduling PC can review the stored time and any stored message. To this end the scheduling PC controls Data Path Switch  214  to supply trigger tune (from  204 ) and/or message (from store  212 ) as appropriate, before loading the next packet to be transmitted. 
     The global clock synchronisation network signals pass unchanged through the Zone Manager. 
     (3) Scheduling PC 
     The Scheduling PC  154  (FIG. 18) is programmed to determine the order in which Mobile Transmitters should be addressed based on the Location Qualities of Service (LQoS) assigned to them (either statically, or dynamically by users and applications). The Scheduling PC also constructs the packets to be sent to Mobile Transponders (via the Zone Managers), and performs resource reclamation. 
     The algorithm used to choose the next Mobile Transmitter to be addressed is described as follows: 
     Scheduling Algorithm 
     Consider a system having the following parameters: 
     (1) The length of a timeslot is 40 ms (ie the system is capable of determining 25 positions per second) 
     (2) The transmitters each have a unique 16-bit address 
     (3) The reserved address  0  is not allocated to any transmitter. 
     (4) Every transponder is also a member of one transponder group, also identified with a 16-bit number (again, identifier  0  is reserved). 
     (5) The scheduler is a CORBA-based distributed software programme (Object Management Group, The Common Object Request Broker; Architecture and Specification. Revision 1.1, OMG Document Number 91.12.1, December 1991) running on a workstation. 
     (6) Location Quality of Service (LQoS) is expressed as an integer representing the desired period of positioning (eg an LQoS of 25 requests one position every 25 timeslots, ie once per second). 
     In accordance with the invention, the Scheduler is adapted to maintain a scheduling table stored in memory. Each row of the table contains six entries: 
     1. A 16-bit transponder address, a 
     2. A 16-bit group identifier for the transponder, q 
     3. The LQoS for the transponder, l 
     4. A real number called the Effective LQoS (or ELQoS), e 
     5. A real number called the score, s 
     6. A bit called the slotswap bit, b. 
     A row in the table is described by an ordered six-type (a,g,l,e,s,b). A global flag called “excess-demand” (to be described later) and an integer called “last-group” are also maintained by the Scheduler. 
     When the Scheduler process is initialised, the scheduling table is empty. A single row (0,0,1,1,0, false) is immediately added. This entry represents a dummy transponder. The excess-demand flag is set to false, and the last-group is set to zero. 
     Adding or Changing a Request 
     An operator (user) or software application can contact the Scheduler over its CORBA interface to indicate that the location requests for a transponder group should be added or changed. It should be noted that if two or more transponders are members of the same transponder group, then their location requests should not be capable of being added or changed separately. Furthermore, the requests involving the dummy transponder address  0  and dummy transponder group ID  0  will be ignored. The user or application passes the following information to the scheduler: 
     g, the transponder group identifier 
     l, the desired LQoS for members of this transponder group 
     a 1 , . . . , a n , the transponder address of members of this transmitter group. 
     For each transponder address a 1 , . . . , a n , the scheduler then adds or modifies an entry in the scheduling table. 
     For values of i between 1 and n, if a row of the form (a i ,g i ,e i ,s i ,b i ) is present in the table, it is updated to (a i ,g,l,e i ,s i ,b i ), otherwise a row (a i ,g,l,0,0,false) is added. 
     The scheduler is then arranged to recalculate the ELQoS for each of the m entries in the table. 
     First, it calculates the total level of LQoS demand, (t), where t is given by Equation (1). 
     Next it updates the ELQoS for each of the n entries in the scheduling table, e i , with a new value e′ i . If t is less than 1, then e′ i  is given by Equation (2). 
     Otherwise, if t is greater than or equal to 1, e′ i  is given by Equation (3). 
     Deleting a Request 
     When a user or application contacts the Scheduler over its CORBA interface to indicate that a location request for a transponder should be deleted, it also passes the address of that transponder a i , to the Scheduler. (The entry corresponding to transponder address  0  may not be removed). If the scheduler finds that an entry for that transponder is present in the table, it removes the corresponding row (a r ,g r ,e r ,s r ,b r ) from the table. The scheduler then updates every other row in the table (a x ,g x ,l x ,e x ,s x ,b x ) to (a x ,g x ,l x ,e x ,s′ x ,b x ) where the value of S′ x  is given by Equation (4), 
     In Equation (4) n is equal to the number of rows in the table before removal of the location request. The scheduler recalculates the effective rates based on the remaining table entries as described in the previous section. 
     Allocating Timeslots 
     Once every 40 ms, the Scheduler must tell the central coordinating device (across a CORBA interface) the address of the transponder which should be located next. It does this by examining the contents of the scheduling table and any attempts to update the table are blocked until this examination is complete. 
     First, the Scheduler steps through each row in the scheduling table. If the last-group register does not contain 0, and the scheduler encounters a row in which the transponder group ID is the same as the contents of the last-group register, and in which the swap-slot bit is false, it sends the transponder address contained in that row to the coordinating device, and sets the swap-slot bit on that row to “true”. 
     Otherwise, the Scheduler operates in accordance with the following algorithm: 
     (5) 
     1. Choose the row in the table with the highest score (a c ,g c ,l c ,e c ,s c ,b c ). 
     2. If b c  is false, for each row of the table which has the transmitter group ID g c  set the swapslot bit to false. Then, update each row in the table (a x ,g x ,l x ,e x ,s x ,b x ) to (a x ,g x  l x ,e x ,s′ x , b x ) where s′ x , is given by 
     
       
         s′ x =(s x +1/e x ) 
       
     
     Next, the single chosen row in the table is further updated to (a x ,g c ,l c ,e c ,s″ c ,b c ) where s″ c =s′ c −1 The lastgroup register is set to g c . 
     Finally, the coordinating device is informed of the address a c  of the transponder that should be located next (if a c  is zero, this indicates that no transponder should be addressed in the next timeslot). 
     3. If b c  is true, update each row in the table (a x ,g x ,l x ,e x ,s x ,b x ) to (a x ,g x ,l x ,e x ,s′ x ,b x ) where s′ x  can be computed as above. Next, the single chosen row in the table is further updated to (a c ,g c ,l c ,e c ,s″ c , false) where s″ c =s′ c −1. The row in the scheduling table with the highest score is chosen again, and the above steps are retaken. 
     Once the next Mobile Transmitter&#39;s address has been determined, the Scheduling PC determines whether an application requires that an “Output Data Value” should be sent to that transmitter. It also determines whether applications have indicated that the transmitter is no longer responding to addressing messages (perhaps because it has been removed from the range of all the receivers in the room or building in the case of a multi-zone system). If so, the transmit or drop bits in the next message should be set, to check the situation, or reclaim resources (as described above). 
     The Scheduling PC also determines whether any Mobile Transmitters should be woken prematurely from a sleeping state, in which case the wake bit should be set. It also can acknowledge that a mobile transponder has been registered with the system whether this has been done by an operator, or an application according to data/time or data forcing the system to look for a particular mobile transponder address or has been achieved automatically. 
     Two values, s (the score) and e (the Effective Location Quality of Service) associated with the Mobile Transponder to be addressed, and maintained by the scheduling algorithm, can be used to estimate a time for which that Mobile Transponder may go to sleep. It can be shown that, assuming the LQoS demands managed by the system do not change, the Mobile Transmitter will not be addressed in at least the next st timeslots, given by Equation (13). 
     A message packet is then constructed from the collected information. The packet has a number of Cyclic Redundancy Check (CRC) error checking codes embedded within it(the standard CRC-8 code is used), and its format is given in Table (A). 
     If no data value is to be sent to the Mobile Transponder, the Output Data Value field is set to 255. Similarly if no Mobile Transponder registrations require acknowledgement, the Registration Acknowledgement field is set to zero. 
     The message packet is loaded into the Zone Manager&#39;s Data Store in 8-bit chunks. After the last chunk is loaded, the Scheduling PC start to continuously poll the Zone Manager&#39;s “Ready” status line. This line is asserted when the Zone Manager has transmitted any stored message where the radio receiver section of the transceiver  208  is being employed. 
     At this time, the Scheduling PC retrieves (from the Zone Manager) the time at which the transmission was made, and sends an event of the form (identifier, time) to the Area Manager across a CORBA interface (Object Management Group, The Common Object Request Broker; Architecture and Specification. Revision 1.1, OMG Document Number 91.12.1, December 1991), indicating the 16-bit identifier of the addressed Mobile Transmitter and the time of addressing. 
     Finally, the Scheduling PC retrieves from the Zone Manager any incoming message sent by the radio transmitter of the address Mobile Transponder (where fitted and utilised). Any such message will contain an address and button status bits. The Scheduling PC must deal with any registration request detected in this way, and/or inform any applications which are interested in “Button Pressed” events from Mobile Transponders. 
     It then identifies the address of the next Mobile Transmitter by repeating the scheduling process described in this section. 
     (4) Matrix Manager (FIG. 21) 
     The Matrix Manager shown in FIG. 21 resets ultrasound Receivers (eg  20 ,  22  etc in FIG. 1) connected to it, at a precise time, and acts as an interface between the Positioning PC and those Receivers. 
     On receipt of a clock pulse along line  216  from the synchronisation network  200 , the Matrix Manager stores the associated time in a Time Store  218 , waits for 9.65 ms to allow the radio message to be sent and sends a “Reset” signal over its Downstream Network Interface  220  to the ultrasound Receivers connected to it. After 20 ms, the Matrix Manager asserts the “Results Ready” status line, which indicates to the Positioning PC that the Receivers will have made their measurements, and that the Positioning PC can now use the “Outgoing Data” bus to poll those Receivers to determine the results. 
     The Positioning PC can also retrieve the time at which the Receivers made their measurements by recovering the time held in the Time Store  218 . It can also retrieve the latest measurement of the temperature in the room measured by a temperature sensor  222 , the output of which is continually digitised by ADC  224  and stored in memory  226  for retrieval for example when the Receivers are reset. 
     The Positioning PC can also send commands to the ultrasound Receivers through the “Outgoing Data” bus to change the peak detection algorithm or thresholds used by the ultrasound Receivers. 
     When the Positioning PC asserts the “PC Ready” status line to indicate that it has performed all necessary actions associated with the current measurements, the Matrix Manager unasserts the “Result Ready” status line and prepares itself for the next clock pulse. 
     Results from the Receivers are accepted via the upstream Network Interface  228 . A Data Path Selector switch  230  (FIG. 20) allows the Positioning PC to retrieve those results or the digital temperature measurement from  226 , as desired. 
     The global clock synchronization network signals pass unchanged through each Matrix Manager in turn. 
     (5) Receiver (FIG. 22) 
     The Receiver shown in FIG. 22 detects ultrasonic signals from the transducer on the Mobile Transponders, and converts them to electric signals and processes those signals to determine the time at which the received acoustic signal peaked for the first time. Receivers are connected in a serial daisy-chain to a Matrix Manager by two networks—an upstream network,  232  which carries information to the Matrix Manager, and a downstream network  234  which carries information from the Matrix Manager. Each Receiver has an address which is unique amongst those connected to the same Matrix Manager, allowing it to be polled by the Positioning PC also connected to that Matrix Manager. The address may be coded for example by setting switches  235  on the PCBs of the Receivers. 
     When a Receiver detects a “Reset” signal condition on the downstream network  234 , it resets an on-board counter  236  and peak detection circuit  238 . For the next 20 ms, the counter is updated at a frequency of 20 kHz, and the peak detection circuit monitors a signal from a 40 kHz ultrasonic transducer which has been amplified in  242 , rectified in  244 , smoothed in  246  and digitized in  248 . 
     When the peak detection circuit indicates that the signal has peaked for the first time, counter  236  is stopped. 
     If the 20 ms window closes before a peak is detected, the value 0 is formed in the counter. 
     After the 20 ms period, the Receiver may be polled by the Positioning PC via the Matrix Manager and the downstream network  234 . If an address comparator  250  in the Receiver linked to the switch coded address  235  detects that the Receiver is being polled, the stored value in the counter is sent back to the Positioning PC via the upstream network  232  and Matrix Manager, together with error-checking information. Incoming information from other Receivers on the upstream network is blocked during this period. 
     Additional lines on the downstream network  234  can be used by the Positioning PC to change the peak detection algorithm used by the Receiver. Two algorithms may be used: 
     Stop the counter when the signal has risen above a certain absolute threshold and when the signal peaks for the first time. This is the default algorithm. 
     Stop the counter when the signal has risen above a certain threshold relative to the lowest signal value seen so far. this algorithm is more useful when the offset of the Receiver amplifier is liable to change. 
     The threshold source may be a bank of switches  252  on the Receiver PCB, or a Threshold Memory  254 . The threshold source may, again, be changed by the Positioning PC by using lines on the downstream network. To set the value in the Threshold Memory  254 , the Positioning PC sets the poll address on the downstream network to the new value, and then asserts further lines such that each of the Receivers load the poll address value into a Temporary Threshold Memory  256 . The Positioning PC then sets the poll address on the downstream network to the address of the Receiver whose threshold must be altered, and asserts further downstream network lines to transfer the value from the Temporary Threshold Memory  252  into the Threshold Memory  254  of the appropriate Receiver. 
     (6) Mobile Transponder (FIG. 23) 
     The Mobile Transponder shown in FIG. 23 can be attached to objects, and generates ultrasonic signals  258  by which its position and possibly orientation can be determined. 
     Incoming radio messages from a Zone Manager are picked up by a 418 MHz FM Radio Transceiver  260  and decoded by a Message Decoder  262 . The Message Decoder also uses error-checking information in the incoming messages to determine if bit errors on the radio link have occurred. 
     After the message has been received, the Power-Saving Supervisory Circuit  264  switches off the receive side of the Radio Transceiver  160 . 
     A Message Generator  266  allows the Mobile Transponder to contact the Zone Manager through the transmit side of the Radio Transceiver  260 . The Message Generator is used by a Registration Controller  268 , which handles attempts to make the Zone Manager aware of the presence of the Mobile Transponder, and is also activated when a user presses one of two buttons  270 ,  272  on the Transponder (if fitted). 
     If a good message is received, the Message Decoder compares the transmitter address contained in the incoming message with that stored in ROM  274 . If the addresses match, then: 
     1. A trigger signal is sent to a Pulse Signal Generator  276 , which drives a set of ultrasonic transducers  278  (arranged around a hemispherical shell) at 40 kHz for 50 μs to produce the ultrasound pulse  258 . 
     2. A counter in the Power-Saving Supervisory Circuit is loaded with the value of the sleep time in the message (via line  280 ). 
     3. If the drop bit in the message is set, a Registration Controller  282  on the mobile device is informed that the Zone Manager will no longer address this Mobile Transmitter. The Registration Controller will then begin attempts to register with the Zone Manager. If the drop bit is not set, but the Mobile Transmitter is attempting to register with the Zone Manager, the Registration Controller  282  is informed that the registration attempts were successful, and it need not attempt to register again. 
     4. If the transmit bit in the message is set, the Mobile Transponder prepares to immediately transmit its address over its bidirectional radio interface ( 260 ) to  208 . 
     5. The 8-bit Output Data Value in the message is sent to a 10-way data port on the Mobile Transponder (the port also includes a ground line, and a strobe line which indicates when the data is valid). 
     If the Message Doctor indicates that the incoming message is not for the current transmitter, but that the Registration acknowledgement field contains the address of the current transmitter, then the Registration Controller  282  is informed that the Zone Manager is now aware of this Mobile Transponder, and that no more registration attempts are needed. 
     After the incoming message has been decoded, the Mobile Transponder may attempt to send a data packet back to the Zone Manager through the transmit side of the 418 MHz radio transceiver  260 . This behaviour may be caused by a number of events: 
     1. The transmit bit in the incoming message was set, and the transmitter address encoded in the incoming message is the same as that of the Mobile Transponder. 
     2. A button switch on the Mobile Transponder has been pressed. 
     3. The Registration Controller  282  is attempting to register the Mobile Transponder with the Zone Manager, and the transmit bit of the incoming message is not set, and the probabilistic “Slotted ALOHA” contention-resolution protocol (driven by a pseudo-random number generator) indicates that the Mobile Transponder should attempt to send data to the Zone Manager in this timeslot. 
     If one of these events does occur, a message generator waits a 25 μs turnaround time before switching on the transmit side of the Radio Transceiver  260 , and sending (at 40 kbps) a 168-bit preamble followed by a Manchester-encoded version of the packet whose format is shown in Table (B). 
     A Cyclic Redundancy Check code may be included in the packet to detect link errors or collisions with transmissions from other Mobile Transmitters. A standard CRC-8 algorithm is used to generate the CRC. 
     After transmission of the preamble and packet, the Message Generator switches off the transmit side of the Radio Transceiver  260 . 
     The Power-Saving Supervisory Circuit  264  is used to control other parts of the Mobile Transmitter in order to save power. It is driven by a 32 kHz clock  284 , which allows it to be low-powered itself. The prime function of this circuit is to turn on the receive side of the Radio Transceiver  260  every 40 ms, so that the next incoming radio message from the Zone Manager may be detected and decoded. However, if the Sleep Counter is not zero (indicating that the Mobile Transponder may enter an even lower-powered sleeping state), the Power-Saving Supervisory Circuit  264  decrements this counter once every 40 ms, and only activates the receive circuitry of the Mobile Transmitter  260  once every eight timeslots (so that the wake bit periodically may be checked). The Power-Saving Supervisory Circuit  264  also controls an 8 MHz clock  265  which is used by the Message Decoder  262  and Message Generator  266 . 
     If the Message Decoder  262  indicates that the wake bit in the incoming message was set, then the Power-Saving Supervisory Circuit  264  sets sleep counter  286  to zero. This action ensures that the transmitter will check each incoming message until it is instructed that it no longer needs to do so. 
     If the Message Decoder  266  indicates that an error occurred on the radio link, or that no message was received when one was expected, the Mobile Transponder will enter a “Searching” mode. In this mode, the low-power supervisory circuit switches on the receive side of the 418 MHz Radio Transceiver  260  approximately once every 80 s, for a period of just over one second, and the Registration Controller  282  is informed that it should attempt to register with the Zone Manager. The “Searching” mode is also the default state of the Mobile Transponder when it is switched on for the first time. 
     (7) Positioning PC 
     A 200 MHz Pentium-pro IBM compatible PC with a 48 line parallel digital IO card may be used and the same hardware is suitable for all PCs shown. 
     Associated with each Matrix Manager is a Positioning PC  154 ,  168 ,  184  which computes the compositions of Mobile Transmitters from the time-of-flight values determined by Receivers  160 ,  1672  etc (whose surveyed positions are stored in memory by the Positioning PC). It continuously polls the Matrix Manager to determine whether the Receivers have been triggered and have results which should be processed. When the “Results Ready” status line is asserted by the Matrix Manager, the Positioning PC (via the Matrix Manager) polls each of the n Receivers connected to the Matrix Manager, retrieves a data value from each (along with error checking information), and unasserts the “PC Ready” status line. 
     For each Receiver that returns a good non-zero data value (ie. the error checking information indicates a good data value, which, being non-zero, indicates a signal was detected by that Receiver), that data value is used to calculate a transmitter-receiver distance. The Positioning PC interrogates the Matrix Manager such as  166 ,  182  and determines the current temperature of the room, t (measured in ° C.). It is then possible to calculate the speed of sound in the room, c, from Equation (14). 
     Calibration of the system during installation provides a value, d, for the fixed delays in the system (such as the time taken to decode the radio message by the Mobile Transponder). From the pulse time-of-flight, fi, from the Mobile Transponder to Receiver i, the corresponding transponder-receiver distance l i  can then be calculated, as l i =cx(f i −d). 
     If a Mobile Transponder is at the coordinates (u,v,w) and the distance from it to a Receiver at the coordinate (x,y,0) is l, are that all Receivers lie in the plane of the ceiling. It can be shown that l 2  is given by Equation 15. 
     Equation 1 can be regarded as a nonlinear model, see Myers, R. Classical and Modern Regression with Applications, PWS-KENT, 1990, and can use nonlinear regression to fit the values of l,x and y for several Receivers to this model. This gives estimates û, v and ŵ 2 . This allows the determination of a best least-squares estimate for the Mobile Transponder&#39;s position as the coordinate (û, v, −ŵ 2 ), taking the negative square-root of ŵ 2  to fix the transponder below the ceiling. A shadow solution ((û, v,−ŵ 2 ) corresponds to an impossible transmitter position above the ceiling. The non-linear model has three degrees of freedom, and knowledge of at least three transponder-receiver distances is therefore required to calculate the Mobile Transponder&#39;s position. Furthermore, the model cannot be fitted to the data if all Receivers that detected a signal are collinear. 
     Reflected signals from objects in the environment can lead to incorrect distance measurements. Normally, the first signal peak detected by a Receiver will be due to a pulse travelling along a direct line from the transponder. This pulse will arrive before any reflected pulses, which must travel along longer paths. The distance thus measured by the system will be that of a straight line joining transponder and receiver. Occasionally, however, the direct path may be blocked, and the first received signal peak will be due to a reflected pulse. In this case, the measured transponder-receiver distance will be greater than the true distance, leading to an inaccurate estimate of the transponder&#39;s position. 
     Two techniques have been developed for identifying and eliminating inaccurate distance measurements. First the difference of two transponder-receiver distances cannot be greater than the distance between the Receivers. If, by comparing pairs of measurements, two Receivers are found whose results do not satisfy this test, it can be stated that the larger of the two distances must be a measurement along a reflected path (remembering that reflections can only increase the measured distance), and can discard that result from the data set. 
     Secondly, a statistical test has been developed based upon the observation that the proportion of Receivers that detect only reflected signals is small. Studentized residuals (Glantz, S., Slinker, B. Primer of Applied Regression and Analysis of Variance. McGraw-Hill, 1990) provide one method of identifying outliers in data sets, and can be calculated for each of the distance measurements during the nonlinear regression process. An incorrect measurement will be considered to be an outlier in the full set of measurements, and it is likely to have a large studentized residual. The result with the largest positive studentized residual is removed from the set of distance measurements (remembering, again, that reflections can only increase the measured distance), before re-computing the nonlinear regression and residuals. 
     The statistical test is repeated until the variance of the remaining measurements fall below an acceptable threshold (suggesting that all outlying data points have been eliminated), or only three measurements remain. A final calculation of the transmitter&#39;s position is then made using those data values. 
     From the calculated position and the known locations of the Receivers that detected a signal from the Mobile Transmitter, it is also possible to estimate θ, the orientation of the Mobile Transmitter around a vertical axis. The method used to perform this estimation has been described above. 
     The Positioning PC then retrieves (from the Matrix Manager) the time at which the measurements used in the position calculation were made. Finally, it sends an event of the form (x,y,z,θ, time) to the Area Manager across a CORBA interface, indicating the calculated position (x,y,z), orientation (θ) and time of measurement, and informs the Matrix Manager that it is ready for the next set of readings (by asserting the “PC ready” status line). 
     It should be noted that the Positioning PC ( 168 ,  184 ) can send commands to individual Receivers (via the Matrix Manager) to change the peak detection algorithm they use, or to change the threshold they store in memory, or to change the source of the threshold that the peak detection algorithm uses (either on-board switches, or memory). 
     (8) Area Manager (FIG. 18) 
     As shown in FIG. 18 data from the Scheduling and Positioning PC&#39;s is transmitted to the Area Manager  186  which comprises inter alia a data processor (such as a PC). This gathers events of the form (identifier, time) from the Zone Manager, and events of the form (x,y,z,θ,time) from each Matrix Manager. 
     An associative memory in the Area Manager links events using the time parameter, and generates a stream of events of the form (identifier, x,y,z,θ,time) 
     It can be seen that these events contain identification, location, orientation and time information, and therefore allow the position and orientation (at a particular time) of a transponder to be determined. 
     This event stream (shown at  288  in FIG. 1) may be passed on to users and client applications. 
     Power Saving at the Receiver-transmitter Units 
     Power saving can be achieved in the transponders by switching the receiver into a quiescent or OFF mode during the time intervals between addressing, and if the frequency at which a particular transponder unit is to be addressed is known this can be encoded into the radio message so that after decoding the message the receiver section can be turned off for that period of time. 
     Control Signals Using Radio Transmitters 
     Additional information in the form of control signals may be encoded into the radio addressing signals transmitted to the transponder units so as for example to control a display or robotic device, associated with the transponder unit. 
     Shape Determination 
     Electrical signals indicative of the positions of a plurality of transmitters located at selected, strategic points on an object, may be derived and stored and processed, for example by comparison with stored electrical signal data or processed by means of an algorithm, to produce a decision signal indicative of the shape of the object. This may enable a new object to be identified by reference to its shape. 
     Display of Monitored Area 
     Electrical signals indicative of the position and/or orientation of an object whose position and orientation (relative to the area) have been determined by position determining systems, may be employed to control the display of a graphical representation of the object on a TV or computer monitor, together with graphical representations of other objects also identified by positions (and orientation if measured). 
     Modifications According to the Invention 
     The following changes to the system described with reference to FIGS. 1 to  23  are made to implement the system in accordance with the present invention, it first being understood that, as previously explained, the timeslot in the upstream described could safely be reduced to 20 ms, without affecting the way in which the system operates. 
     First, a stagger time is adopted of 10 ms (this is a quite conservative stagger time). The clock generator is charged so that it signals timeslots of 30 ms, allowing two mobile transponders to be addressed in a staggered sequence. Also the receivers are altered so that they receive signals over a 30 ms window. 
     The Scheduling PC selects two mobile transponders to be addressed during the next timeslot. For this purpose, the following algorithm is used: 
     1. Set variable a to zero. 
     2. If a is zero, use the existing scheduling algorithm to select the next two mobile transponders to be addressed. Set variable b to the address of the first, and variable c to the address of the second. If a is not zero, set variable b to be equal to the value of a, and use the existing scheduling algorithm to select the next mobile transponder to be located, placing its address in variable c. 
     3. If the last position information for the mobile transponders b and c suggests that they are in separate ultrasonic spaces, locate both mobile transponder b and mobile transponder c in the next timeslot (b at the start of the timeslot, c 10 ms later), and set variable a to zero. Otherwise, locate the mobile transponders with addresses b and zero in the next timeslot (b at the start of the timeslot), address zero 10 ms later), and set variable a to be equal to the value of c. 
     4. Go to step 2. 
     This scheduling algorithm has the property that the Location Quality of Service (LQoS) demand for each mobile transponder is at least satisfied, but may be exceeded by a factor of two. Obviously, the choice of address is strongly affected by the previous positions of the mobile transponders, in order to try to select mobile transponders that are in independent ultrasonic spaces. For this purpose the scheduling PC holds a 3D description of all ultrasonic spaces to allow it to determine if two points are in the same space. It should also be noted that the sleep times calculated by the algorithm for the two mobile transponders are divided by a factor of two, so as to ensure that they remain conservative estimates. 
     The format of the message packet to be sent to the mobile transponders via the zone manager is changed to reflect the fact that it must now contain information to be sent to two addresses. A suitable format is shown in Table A appended hereto. 
     It is to be noted that the registration of up to two mobile transponders in the previous timeslot may now be acknowledged using the two registration acknowledgement fields. The zone manager is changed to accept this new packet format from the scheduling PC and transmit it to the mobile transponders. After the packet is sent by the zone manager, the scheduling PC retrieves the time at which the packet was sent from the zone manager. It then forwards an event of the form (identifier 1 , identifier 2 ,time) to the array manager across a CORBA interface, indicating the 16-bit addresses of the two mobile transponders located in the last timeslot, and the time of the start of that timeslot. 
     The mobile transponders are changed to reflect the new packet format and length. Since a mobile transponder may be triggered by either of the addresses contained in the message sent from the zone manager, its message decoding logic is changed. If a mobile transmitter is triggered by one of the two addresses, this logic deals with the corresponding drop and transmit bits, sleep time and output data value. Mobile transponders which are attempting to register with the zone manager also check both of the registration acknowledgement fields within the incoming message to see whether their registration has been successful. 
     If a mobile transponder is triggered by the first address in the incoming message, the pulse generation circuit immediately drives the ultrasonic transducer set with a 40 kHz signal for 50 s. If a mobile transponder is triggered by the second address in the incoming message, the pulse generation circuit waits for exactly 10 ms before driving the ultrasonic transducer set with a 40 kHz signal for 50 μs. 
     The message generator which sends data packets to the zone manager is changed to reflect the fact that two mobile transponders may be required to transmit their address to the zone manager in the same timeslot. Thus two opportunities or transmission slots for a mobile transponder to contact the zone manager are provided in each timeslot. The first transmission slot starts 25 μs after the end of the incoming radio message, and the second transmission slot starts 25 μs after the end of the first transmission slot. When using a transmission slot, the mobile transponder sends (at 40 kbps) a 168-bit preamble followed by a Manchester-encoded version shown in Table B appended hereto. 
     The length of the transmission slot is the time taken to send the preamble and Manchester-encoded packet. If a mobile transponder is triggered by the first address in an incoming radio message, and the corresponding transmit bit is set, the mobile transponder will use the first transmission slot to send its address back to the zone manager. If the mobile transponder is triggered by the second address in the message, and the corresponding transmit bit is set, it will use the second transmission slot to send its address to the zone manager. Any mobile transponder which is attempting to register with the zone manager, or which is reporting a button press, may transmit its address and button status in any transmission slot for which the corresponding transmit bit is not set (ie which is not reserved for one of the triggered mobile transponders). The zone manager is changed to allow messages sent in both transmission slots to be received and passed on to the scheduling PC. 
     The matrix manager now waits 12.95 ms after seeing a trigger signal from the clock generator before triggering its associated receivers (to allow the longer radio message to be sent to the mobile transponders). When triggered, each set of receivers (one per room or other isolated space) opens its receive window for 30 ms. At the end of that period, the positioning PCs connected to the matrix managers poll the receivers to determine firstly whether they saw any ultrasonic signals, and secondly, if they did, the time after the trigger signal at which the incoming ultrasonic signal peaked for the first time. Each positioning PC calculates two sets of transmitter-receiver distances from the measured signals—one assumes that the mobile transponder was triggered at the start of the timeslot, the other assumes that it was triggered 10 ms later. The nonlinear regression calculation is then run twice by the positioning PC, using each of the two distance sets and the positions of the receivers that detected the ultrasonic signals. Each regression calculation yields a result, either a 3D position and orientation if the regression converges to a solution, or an error value if it does not. The positioning PC then sends an event of the form (result 1 ,result 2 , time) to the array manager over a CORBA interface, indicating the results for the two nonlinear regression calculations for signals detected in the last timeslot, and the time of the start of that timeslot. 
     The area manager must combine the information streams from the scheduling PC and the positioning PCs. A simple (though not necessarily optimal) algorithm which perform this task is now described. 
     First, it is assumed that for a particular timeslot, the addresses have been gathered of all those mobile transponders that were located (x and y, where mobile transponder x is located 10 ms before mobile transponder y), and also the two results have been gathered from each of n positioning PC&#39;s (ie a collected a data set r 11 , r 12 , r 21 , r 22 , . . . , r n1 , r n2 ). From that data set, another data set s 11 , s 12 , s 21 , s 22 , . . . s n1 , s n2  is constructed where s ij =1 if r ij  is a good 3D position and orientation, and s ij =0 if r ij  is an error value indicating non-convergence of the nonlinear regression model. 
     If y is not equal to zero (ie the second address in the message was not a dummy address) it is checked that two signals have been detected in separate ultrasonic spaces. For this to be true, it must be possible to find i and j such that s i1 =1 or s i2 =1 and s j1 =1 or s j2 =1 and i≠j, but not possible to find k such that s k1 =1 or s k2 =1 and k≠i≠j. If this is not true, all results for this timeslot must be discarded, because signal cross-contamination could have occurred. 
     Next, it is checked that only one good set of ultrasonic signals have been identified from each trigger time within the timeslot. For this to be true, there must be only one i such that s i1  is true, and at most one j such that s j2  is true. If it is found that this statement is not true, all results for this timeslot must be rejected, because it is not possible to determine in which ultrasonic space a mobile transponder is likely to be (although application of heuristics could make some progress in this case). If it is found that the statement is true, it is possible to assign result r i1  to the mobile transponder with address x, and any result r j2  to the mobile transponder with address y. The area manager then knows the time at which each mobile transponder was triggered and also the position and orientation of the mobile transponders at those times, and it can form this information into an event stream which is passed on to users and client applications. 
     It can be seen that the above implementation is capable of locating two mobile transponders in a 30 ms period (assuming that two mobile transponders in different ultrasonic spaces and that the system operates correctly). Therefore, the potential aggregate update rate is around 66 Hz, rather than the 50 Hz which was previously possible. Furthermore, it is possible to achieve higher location rates by triggering more than two mobile transponders in a staggered sequence. 
     
       
         
               
               
               
             
               
               
               
             
           
               
                   
                 TABLE 1 
               
               
                   
                   
               
               
                   
                 Description 
                 Size (bits) 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 wake bit 
                 1 
               
               
                   
                 Padding (zeroes) 
                 8 
               
               
                   
                 CRC 1 
                 8 
               
               
                   
                 drop bit #1 
                 1 
               
               
                   
                 drop bit #2 
                 1 
               
               
                   
                 Transmitter Address #1 
                 16 
               
               
                   
                 Transmitter Address #2 
                 16 
               
               
                   
                 CRC 2 
                 8 
               
               
                   
                 transmit bit #1 
                 1 
               
               
                   
                 transmit bit #2 
                 1 
               
               
                   
                 Padding (zeroes) 
                 13 
               
               
                   
                 Sleep Time #1 
                 24 
               
               
                   
                 Sleep Time #2 
                 24 
               
               
                   
                 CRC 3 
                 8 
               
               
                   
                 Padding (zeroes) 
                 5 
               
               
                   
                 Output Data Value #1 
                 8 
               
               
                   
                 Output Data Value #2 
                 8 
               
               
                   
                 Registration Acknowledgement #1 
                 16 
               
               
                   
                 Registration Acknowledgement #2 
                 16 
               
               
                   
                 CRC 4 
                 8 
               
               
                   
                   
               
             
          
         
       
     
     
       
         
               
               
               
             
               
               
               
             
           
               
                   
                 TABLE 2 
               
               
                   
                   
               
               
                   
                 Description 
                 Size (bits) 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 Transmitter Address 
                 16 
               
               
                   
                 CRC 
                 8 
               
               
                   
                 Button 1 Status 
                 1 
               
               
                   
                 Button 2 Status 
                 1