Patent Publication Number: US-9848304-B2

Title: Positioning of mobile device

Description:
CROSS REFERENCE TO RELATED APPLICATION 
     This application is a divisional of U.S. patent application Ser. No. 15/380,075, filed on Dec. 15, 2016, and which claims priority from Finnish Patent Application No. 20155949, filed Dec. 15, 2015. The contents of these applications are hereby incorporated by reference. 
    
    
     BACKGROUND 
     Field 
     The invention relates to wireless communications and, in particular, to positioning of a mobile device of a cellular communication system, for example. 
     DETAILED DESCRIPTION OF THE RELATED ART 
     Observed Time Difference of Arrival (OTDOA) is a known positioning method based on measuring reference signals received by a mobile device from a plurality of fixed positioning nodes, e.g. access nodes of a wireless network. On the basis of the reference signals, a reference signal time difference observed by the mobile device with respect to the fixed positioning nodes may be calculated. The reference signal time difference may represent a difference in radio distances between the mobile device and a first access node and the mobile device and a second access node. At least two reference signal time difference values associated with different sets of access nodes may be used to estimate the location of the mobile device. In other words of saying, at least three measurements associated with difference access node may be needed for the estimation of the location of the mobile device. 
     Such positioning may be used for positioning the mobile device in locations where a global navigation satellite system (GNSS) such as Global Positioning System, Galileo, or GLONASS cannot provide a reliable positioning estimate. 
     For example, some modern cellular communication systems define a positioning protocol for positioning terminal devices of the system. An example of such a protocol is a LTE Positioning Protocol (LPP) of Long-Term Evolution cellular communication system. In the LPP, an OTDOA procedure works as follows: An evolved serving mobile location center (ESMLC) or a Secure User Plane Location Platform (SLP) requests, through an LPP layer, an OTDOA measurement. The request may be addressed to a terminal device and request the terminal device to perform a set of RSTD (Reference Signal Time Difference) measurements. Together with this request, the terminal device may receive assistance data. This assistance data may comprise a list of cells (eNodeBs) and PRS (Positioning Reference Signal) parameters of the cells. The terminal device may then perform the requested measurements. The measurements comprise estimating the exact time offsets between the PRS from different cells. Then it reports to the ESMLC these estimated time differences together with an estimate of the measurement quality or a measurement error. The ESMLC may then use these time difference estimates and the knowledge of the cells positions and transmit time offsets to estimate the position of the terminal device. 
     Measurement inaccuracies may degrade the performance of the conventional OTDOA algorithms. One cause of the inaccuracies may be multipath propagation of radio signals between an access node and the mobile device. 
     SUMMARY 
     According to an aspect, there is provided the subject matter of the independent claims. Some embodiments are defined in the dependent claims. 
     Claims  1 - 3  describe some embodiments of a method for filtering measurement values associated with positioning of a mobile device. According to another aspect, there is provided an apparatus comprising means for carrying out all the steps of a method according to any one of claims  1 - 3 . 
     One or more examples of implementations are set forth in more detail in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
       In the following embodiments will be described in greater detail with reference to the attached drawings, in which 
         FIG. 1  illustrates a wireless communication system to which embodiments of the invention may be applied; 
         FIG. 2  illustrates a process for filtering measurement values in connection with positioning a mobile device according to an embodiment of the invention; 
         FIG. 3  illustrates a process for static filtering of measurement values according to an embodiment of the invention; 
         FIGS. 4 and 5  illustrate an embodiment of triangle filtering applied to the measurement values; 
         FIGS. 6 and 7  illustrate an embodiment of surrounding node set filtering applied to the measurement values; 
         FIGS. 8, 9, and 10  illustrate an embodiment of grid filtering applied to the measurement values; 
         FIG. 11  illustrates yet another embodiment of threshold-based filtering applied to the measurement values; and 
         FIG. 12  illustrates an embodiment of an apparatus configured to carry out the filtering of the measurement values according to any one of the embodiments described herein. 
     
    
    
     DETAILED DESCRIPTION 
     The following embodiments are exemplifying. Although the specification may refer to “an”, “one”, or “some” embodiment(s) in several locations of the text, this does not necessarily mean that each reference is made to the same embodiment(s), or that a particular feature only applies to a single embodiment. Single features of different embodiments may also be combined to provide other embodiments. 
     Embodiments described may be implemented in a radio system, such as in at least one of the following: Universal Mobile Telecommunication System (UMTS, 3G) based on basic wideband-code division multiple access (W-CDMA), high-speed packet access (HSPA), Long Term Evolution (LTE), LTE-Advanced, Wi-Fi (IEEE 802.11), Bluetooth®, and/or 5G cellular communication system. It is assumed that network architecture in 5G will be quite similar to that of the LTE-advanced. 5G is likely to use multiple-input-multiple-output (MIMO) multi-antenna transmission techniques, many more base stations or nodes than the current network deployments of LTE (a so-called small cell concept), including macro sites operating in co-operation with smaller local area access nodes and perhaps also employing a variety of radio technologies for better coverage and enhanced data rates. 5G will likely be comprised of more than one radio access technology (RAT), each optimized for certain use cases and/or spectrum. The present embodiments are not, however, limited to these systems. 
     Some embodiments described herein relate to the LTE and LTE Positioning Protocol (LPP). The embodiments are not, however, restricted to the system given as an example but a person skilled in the art may apply the solution to other communication systems provided with necessary properties. 
     With the development of wireless networks, a mobile device  120  is typically in a communication range of several access nodes  110 ,  112 ,  114 ,  116 . The access nodes may be base stations of a cellular communication system, such as the LTE or a 5G system, or they may be other wireless access nodes providing the mobile device  120  with access to a wireless network and to other networks such as the Internet. As described in the Background section, this feature has been used in positioning and tracking the location of the mobile device  120 , and one solution for the positioning is the OTDOA. The access nodes  110  to  116  may be connected to a location computer apparatus  130  such as the above-described ESMLC executing the LPP. The location computer apparatus  130  may determine to request for the positioning of the terminal device and, as a consequence, transmit a positioning request to at least the mobile device  120  via at least one of the access nodes, e.g. the access node currently connecting the mobile device to the network of the access nodes. Upon receiving the request, the mobile device  120  may start measuring positioning reference signals received from the access nodes  110  to  116  it is able to detect, measure or estimate signal propagation times associated with each access node  110  to  116 , and constructed a set of measurement values. The access nodes may synchronize their positioning reference signal transmissions or provide an offset of each un-synchronized signal such that the mobile device  120  is capable of estimating the radio propagation times associated with each positioning reference signal. Accordingly, the embodiments are applicable to both synchronous and asynchronous systems. Each measurement value may comprise a reference signal time difference (RSTD) value. The RSTD may characterize a difference in the estimated signal propagation times associated with two different access nodes. For example, RSTD( 110 ,  112 ) may characterize a time difference between a first signal propagation time and a second signal propagation time, wherein the first signal propagation time is associated with a signal propagating from the access node  110  to the mobile device  120 , and wherein the second signal propagation time is associated with a signal propagating from the access node  112  to the mobile device  120 . The mobile device may generate the set of RSTD values for a plurality of pairs of access nodes. In the example of  FIG. 1 , the mobile device  120  may generate the following set of RSTD values: RSTD( 110 ,  112 ), RSTD( 110 ,  114 ), RSTD( 110 ,  116 ), RSTD( 112 ,  114 ), RSTD( 112 ,  116 ), RSTD( 114 ,  116 ). In reality, the number of generated RSTD values may be more than dozens, depending on the number of available reference signals. The mobile device  120  may also estimate a measurement error associated with the measurements of the signal propagation times. The mobile device may then generate a measurement report comprising the measurement values and the measurement error and transmit the measurement report to the location computer apparatus  130 . Upon receiving the measurement report, the location computer apparatus  130  may execute the OTDOA algorithm and determine the location of the mobile device. 
       FIG. 2  illustrates an embodiment of a process for an apparatus to determine a location of a mobile device. The apparatus may be the location computer apparatus  130  or another positioning apparatus determining the location of the mobile device  120 , for example. Referring to  FIG. 2 , the process comprises as performed by the apparatus: determining locations of a plurality of fixed positioning nodes  110  to  114  (block  200 ); receiving a measurement report from a mobile device (block  202 ), the measurement report comprising a plurality of measurement values measured by the mobile device, wherein each measurement value comprises a reference signal time difference indicating a radio propagation time difference between the mobile device and two different positioning nodes; determining (block  204 ), on the basis of threshold comparison carried out by the location computer apparatus, that at least one of the plurality of measurement values is associated with an inaccurate measurement; modifying, autonomously, said at least one of the plurality of measurement values (block  204 ); and computing (block  206 ) a location of the mobile device on the basis of a plurality of measurement values resulting from said modifying. 
     The embodiment of  FIG. 2  uses the threshold comparison to modify the measurement results. In an embodiment, the modifying comprises removing at least one measurement result on the basis of the threshold comparison. In another embodiment, the modifying comprises modifying a value of at least one measurement result on the basis of said comparison. In yet another embodiment, the modifying comprises assigning to each measurement value a weight proportional to the accuracy of the measurement value, wherein the accuracy and the weight is determined on the basis of the threshold comparison. In yet another embodiment, the modifying comprises a plurality of said removal of at least one measurement value, the modification of at least one other measurement value, and the assigning the weight to each measurement value. 
     The embodiment of  FIG. 2  may be used to estimate inaccurate measurement values during the execution of the positioning algorithm in the apparatus. Such run-time or dynamic detection of inaccurate measurement results improves the accuracy of the positioning the mobile device  120 . The process of  FIG. 2  may also be used in network planning, for example to determine sites for new access nodes so that the inaccuracies will be reduced. 
     In an embodiment, the positioning nodes  110  to  116  are access nodes of a wireless network configured to provide the mobile device  120  with wireless access to the wireless network. The access nodes may be access nodes or base stations of a cellular communication system such as the LTE, LTE-Advanced, or a 5G system. 
     Said feature of the apparatus autonomously modifying the measurement value(s) may refer to that the apparatus autonomously determines the inaccurate measurement value(s) and, makes the modification on the basis of that determination. The autonomous decision may be defined such that the apparatus does not need user input or another input that explicitly or implicitly pinpoints the measurement value(s) and instructs the apparatus to modify the measurement value(s). 
     In an embodiment, the measurement values may be further modified on the basis of static measurement characteristics determined by the apparatus. Such static characteristics may refer to characteristics that remain the same over a plurality of positioning occasions.  FIG. 3  illustrates such a process. The process of  FIG. 3  may be executed as a part of the process of  FIG. 2 , as illustrated in  FIG. 3 . Referring to  FIG. 3 , the process comprises determining a measurement error associated with the measurement values. The measurement error may be determined and reported by the mobile device in connection with the measurement values, and the measurement error may be dependent on properties of the wireless network and/or on the properties of the mobile device  120 . For example, the 3GPP specifications related to the LPP define the measurement error ranges: for intra-frequency RSTD values an error range proportional to ±50 to ±150 meters; for inter-frequency RSTD values an error range proportional to ±90 to ±210 meters. The mobile device may determine the measurement error according to state-of-the-art techniques, for example as in the LPP. 
     In block  302 , the apparatus may compare distances between the positioning nodes  110  to  116  with the measurement error represented as a distance error. If the distance between two positioning nodes is smaller than the distance error in block  302 , the process may proceed to block  304  in which measurement values associated with one of the two positioning nodes are removed from further processing, e.g. the removed measurement values are not taken into account when computing the position of the mobile device  120 . Then, the process may return to block  302  for the processing of the next pair of positioning nodes. When it is determined in block  302  that there is no distance between the positioning nodes that is smaller than the distance error, or that the distances of the positioning nodes associated with the remaining measurement values are greater than the distance error, the process may proceed to block  204  for the threshold comparison. 
     In another embodiment, instead of removing the measurement values in block  304  the positioning node(s) may be configured not to transmit the positioning reference signals. As a consequence, the measurement results involving these positioning nodes are not available in the first place. 
     Another embodiment of the modification of the measurement results on the basis of the static characteristics is removing from the consideration those positioning nodes that do not support the positioning, e.g. do not transmit a positioning reference signal, positioning nodes whose location cannot be determined by the apparatus in step  200 , and/or positioning nodes that otherwise are not applicable to the positioning of the mobile device. 
     Let us now consider some embodiments of the threshold comparison with reference to  FIGS. 4 to 11 . The first embodiment illustrated in  FIGS. 4 and 5  may be called a triangle filter. In short, the triangle filtering comprises determining that a measurement value indicates a reference signal time difference that is associated with a longer radio propagation distance than a distance between two positioning nodes associated with the measurement value. Let us elaborate this embodiment with reference to  FIG. 4 . Let us assume that the mobile device has received a first positioning reference signal from the positioning node  110  and a second positioning reference signal from the positioning node  112 . The mobile device may then compute an RSTD from the reception timings of the first positioning reference signal and the second positioning reference signal. The RSTD( 110 ,  112 ) represents the difference between radio propagation distances of a first distance from the positioning node  110  to the mobile device  120  and the second distance from the positioning node  112  to the mobile device  120 . The apparatus may multiply the RSTD( 110 ,  112 ) with the speed of light c to convert the RSTD( 110 ,  112 ) to a distance value. If the RSTD( 110 ,  112 ) is associated with a distance greater than the distance D 1  between the positioning nodes  110  and  112 , the apparatus may determine the RSTD value to be inaccurate.  FIG. 4  illustrates a situation in case of line-of-sight propagation of the positioning reference signals and associated RSTD value which is significantly shorter with respect to the distance between the positioning nodes. In case one of the two positioning reference signal propagate to the mobile device via an indirect route through diffraction and/or reflection, the value of the RSTD value increases, and this threshold comparison based on a threshold determined from the distance between the positioning nodes is designed to detect inaccurate measurement values affected by such an indirect propagation of a positioning reference signal. 
     Referring to  FIG. 5 , the corresponding triangle filtering process comprises as performed by the apparatus: evaluating a measurement value with respect to the distance between positioning nodes associated with the measurement value (block  500 ). If the measurement value is associated with a distance greater than the distance between the positioning nodes in block  502 , the process may proceed to block  504  in which the measurement value is modified or even removed. On the other hand, if the measurement value is associated with a distance lower than the distance between the positioning nodes, the measurement value may be maintained. In an embodiment, block  506  comprises assigning to the measurement value a weight indicating reliable accuracy of the measurement value. From the blocks  504 ,  506 , the process may return to block  500  for the evaluation of a subsequent measurement value. If no more measurement values are left unprocessed, the process may proceed to block  206  for the estimation of the position of the mobile device  120 . 
     The procedure of  FIG. 5  may be used in estimating which one of the two positioning reference signals of the inaccurate measurement value causes the inaccuracy. As described above, the RSTD( 110 ,  112 ) represents a time difference Ti( 110 ) minus Ti( 112 ), wherein Ti(x) represents a propagation time from the positioning node x to the mobile device. If the RSTD is higher than the distance between the positioning nodes, the Ti( 110 ) causes the inaccuracy. This relationship is transitive in the sense that if Ti( 110 ) is more inaccurate than Ti( 112 ) and Ti( 112 ) is more inaccurate than Ti( 114 ), Ti( 110 ) is also more inaccurate than Ti( 114 ). Some embodiments described below (see  FIG. 11  and associated description) utilize this transitive property. 
     In an embodiment of block  504 , the measurement value processed in block  504  is removed from further analysis. In another embodiment, the measurement value processed in block  504  is replaced by another value. In an embodiment, the other value is proportional to the distance between the positioning nodes associated with the measurement value. e.g. an RSTD value corresponding to the distance between the positioning nodes plus the measurement error. 
     In the embodiment of the process of  FIG. 5  where the measurement values are modified to new values, when all the available measurement values have been processed, a new iteration of the process may be carried out with the modified values. The need for a new iteration may be determine on the basis of the number of executions of block  504 . For example, if the block  504  is not used at all during an iteration of the process, the process may end the iterations and proceed to block  206 . On the other hand, if the block  504  is carried out at least once during the iteration, a new iteration may be applied. 
       FIGS. 6 and 7  illustrate an embodiment which may be called a surrounding node set filter. Referring to  FIGS. 6 and 7 , the process of  FIG. 7  may comprise a preparation step  700  in which a surrounding node set is formed for each positioning node. Block  700  may be executed before block  200  or after block  200 . Referring to  FIG. 6  illustrating a surrounding node set for a positioning node  600 , the surrounding cell set of a positioning node may comprise a set of positioning nodes that together surround the positioning node  600 . The positioning nodes  602 ,  604 ,  606  of the surrounding node set may be selected such that the positioning node  600  is located inside an area whose edges are defined by lines drawn between the positioning nodes  602  to  606  of the surrounding node set. For example, if the surrounding node set consists of three positioning nodes, the positioning node for which the surrounding node set is formed may be located inside a triangle defined by the locations of the positioning nodes of the surrounding node set. For another example, if the surrounding node set consists of four positioning nodes, the positioning node for which the surrounding node set is formed may be located inside a quadrangle defined by the locations of the positioning nodes of the surrounding node set. 
     In an embodiment, a plurality of surrounding node sets is formed for at least one positioning node. 
     From the properties of the surrounding node set, it is evident that a distance between the mobile device  120  and the positioning node  600  is shorter than a maximum of distances from each positioning node  602 ,  604 ,  606  of the surrounding node set to the mobile device  120 . Accordingly, it can be derived that a measurement value RSTD( 600 ,  608 ) associated with the positioning node  600  and another positioning node  608  that is not part of the surrounding node set is smaller than a maximum of the measurement values RSTD( 602 ,  608 ), RSTD( 604 ,  608 ), RSTD ( 606 ,  608 ) plus the measurement error. Accordingly, if the measurement value RSTD( 600 ,  608 ) is higher than the maximum of the measurement values RSTD( 602 ,  608 ), RSTD( 604 ,  608 ), RSTD ( 606 ,  608 ) plus the measurement error, the measurement value RSTD( 600 ,  608 ) may be considered inaccurate. 
     Referring to  FIG. 7 , the process may comprise acquiring a measurement value associated with a first positioning node and a second positioning node (block  702 ), wherein the second positioning node is not part of the surrounding node set of the first positioning node. Creating the plurality of surrounding node sets for the first positioning node from different combinations of the surrounding nodes enables the use of measurement values of those positioning nodes that are included in one or more but not all the surrounding node sets. 
     In block  704 , the apparatus may determine the maximum of the measurement values associated with the first positioning node and each node of the selected surrounding node set of the first positioning node. In block  706 , the apparatus may compare the measurement value acquired in block  702  with the measurement value determined as the maximum in block  704 . If the measurement value of block  702  is higher than the maximum measurement value, the process may proceed to block  504 , and block  504  may be executed in the above-described manner. Accordingly, the measurement value of block  702  may be determined to be inaccurate and need removal or modification. In a case of modifying the measurement value, the value of the measurement value may be replaced by a value proportional to the maximum value determined in block  704 , e.g. the maximum value plus the measurement error. If the measurement value of block  702  is lower than the maximum measurement value, the process may proceed to block  506 , and block  506  may be executed in the above-described manner. Accordingly, the measurement value of block  702  may be considered to be accurate. 
     From blocks  504 ,  506 , the process may return to block  702  for the acquisition of the subsequent measurement value or, if no further measurement values are available for processing, the process may proceed to the positioning of the mobile device in block  206 . 
     In the embodiment of the process of  FIG. 7  where the measurement values are modified to new values, when all the available measurement values have been processed, a new iteration of the process may be carried out with the modified values. The need for a new iteration may be determine on the basis of the number of executions of block  504 . For example, if the block  504  is not used at all during an iteration of the process, the process may end the iterations and proceed to block  206 . On the other hand, if the block  504  is carried out at least once during the iteration, a new iteration may be applied. 
     In an embodiment of  FIGS. 6 and 7 , a further criterion may be applied when the mobile device  120  is outside the area drawn by the edges between the locations of the surrounding node set. In such a case, the distance between the mobile device  120  and the positioning node  600  is longer than a minimum of distances from each positioning node  602 ,  604 ,  606  of the surrounding node set to the mobile device  120 . Accordingly, it can be derived that a measurement value RSTD( 600 ,  608 ) associated with the positioning node  600  and another positioning node  608  that is not part of the surrounding node set is larger than a minimum of the measurement values RSTD( 602 ,  608 ), RSTD( 604 ,  608 ), RSTD ( 606 ,  608 ) minus the measurement error. Accordingly, if the measurement value RSTD( 600 ,  608 ) is lower than the minimum of the measurement values RSTD( 602 ,  608 ), RSTD( 604 ,  608 ), RSTD ( 606 ,  608 ) minus the measurement error, the measurement value RSTD( 600 ,  608 ) may be considered inaccurate. 
       FIGS. 8 to 10  illustrate an embodiment where the measurement values are classified or filtered on the basis of a location of the mobile device  120  indicated by each measurement value. When a measurement value is a RSTD value, it represents a set of possible locations for the mobile device  120 . The set of possible locations may form a curve of locations matched with the reference signal timings measured by the mobile device from the two positioning nodes associated with the measurement value. Accordingly, the curve of possible locations may define the set of possible locations associated with the RSTD value. A plurality of measurement values may be used to determine the real location of the mobile device  120  amongst the set of possible locations. The real location may be determined to be a location where a plurality of sets of locations, each associated with a different measurement value, intersects. Accordingly, the same location is indicated by a plurality of measurement values. 
     Let us define a new coordinate system: assume that a location of a positioning node  800  is at (x 800 ,y 800 ) in xy-coordinates and (−d (800,802) /2,0) in XY coordinates illustrated in  FIG. 8 . Similarly, a location of a positioning node  802  is at (x 802 ,y 802 ) in the xy-coordinates and (d (800,802) /2,0) in the XY coordinates illustrated in  FIG. 8 . d is the distance between the nodes  800 ,  802 . The set of locations of a measurement value associated with both nodes  800 ,  802  is represented as a hyperbola  804  in  FIG. 8 . The hyperbola can be expressed in terms of the measurement value as: 
                         X   2     /       (       C   *     RSTD     (     800   ,   802     )         2     )     2       -       Y   2     /           (       d     (     800   ,   802     )       2     )     2     -       (       C   *     RSTD     (     800   ,   802     )         2     )     2             =   1           (   1   )               
where the measurement value is represented by RSTD( 800 , 802 ). Only one side of the hyperbola  804  is actually used in the computation, and the used side may be determined as:
 
                   {     X   =                   (         Y   2             (       d     (     800   ,   802     )       2     )     2     -       (       C   *     RTSD     (     800   ,   802     )         2     )     2           +   1     )     ×                   (       C   *     RTSD     (     800   ,   802     )         2     )     2     ,       RSTD     (     800   ,   802     )       &gt;   0               ⁢     
     ⁢   X     =     -               (         Y   2             (       d     (     800   ,   802     )       2     )     2     -       (       C   *     RTSD     (     800   ,   802     )         2     )     2           +   1     )     ×                   (       C   *     RTSD     (     800   ,   802     )         2     )     2     ,       RSTD     (     800   ,   802     )       &lt;   0                             (   2   )               
where C represents the speed of light. If RSTD( 800 , 802 )&gt;0, X&gt;0; if RSTD( 800 , 802 )&lt;0, X&lt;0. As a consequence, only a half of the hyperbola is used. The relationship between (x,y) in xy coordinates and (X,Y) in the XY coordinates is:
 
                   {           X   =         (     x   -       (       x     i   ⁢           ⁢   2       +     x     i   ⁢           ⁢   1         )     /   2       )     ⁢   cos   ⁢           ⁢   θ     +       (     y   -       (       y     i   ⁢           ⁢   2       +     y     i   ⁢           ⁢   1         )     /   2       )     ⁢           ⁢   sin   ⁢           ⁢   θ                   Y   =         (     y   -       (       y     i   ⁢           ⁢   2       +     y     i   ⁢           ⁢   1         )     /   2       )     ⁢           ⁢   cos   ⁢           ⁢   θ     -       (     x   -       (       x     i   ⁢           ⁢   2       +     x     i   ⁢           ⁢   1         )     /   2       )     ⁢           ⁢   sin   ⁢           ⁢   θ                     sin   ⁢           ⁢   θ     =       (       y     i   ⁢           ⁢   2       -     y     i   ⁢           ⁢   1         )     /     d     (       i   ⁢           ⁢   1     ,     i   ⁢           ⁢   2       )                       cos   ⁢           ⁢   θ     =       (       x     i   ⁢           ⁢   2       -     x     i   ⁢           ⁢   1         )     /     d     (       i   ⁢           ⁢   1     ,     i   ⁢           ⁢   2       )                         
When RSTD=0, the curve becomes perpendicular bisector line:
 
     
       
         
           
             
               
                 
                   
                     
                       ( 
                       
                         x 
                         - 
                         
                           
                             
                               x 
                               800 
                             
                             + 
                             
                               x 
                               802 
                             
                           
                           2 
                         
                       
                       ) 
                     
                     / 
                     
                       ( 
                       
                         y 
                         - 
                         
                           
                             
                               y 
                               800 
                             
                             + 
                             
                               y 
                               802 
                             
                           
                           2 
                         
                       
                       ) 
                     
                   
                   = 
                   
                     
                       y 
                       800 
                     
                     - 
                     
                       
                         y 
                         802 
                       
                       / 
                       
                         x 
                         800 
                       
                     
                     - 
                     
                       x 
                       802 
                     
                   
                 
               
               
                 
                   ( 
                   3 
                   ) 
                 
               
             
           
         
       
     
     This embodiment employs a feature that, since a non-zero measurement value can be expressed by a hyperbola curve or perpendicular bisector line defining the set of possible locations of the mobile device for the measurement value, when four vertices of a rectangle stays on different side of the curve or line, the curve or line must travel inside the rectangle. All accurate measurement values should define curves and/or lines that intersect on the real location of the mobile device  120 . The same principle may be applied to geometric forms other than the rectangle as well. 
       FIG. 9  illustrates a grid filtering process that employs the above-described feature to determine the inaccurate measurement results. Referring to  FIG. 9 , the process may comprise an initialization step  900  which may be carried out even before block  200 . In block  900 , the apparatus determines a maximum coverage area of each positioning node and divides the maximum coverage area to an initial grid of sub-areas.  FIG. 10  illustrates an example of a maximum coverage area of a positioning node as divided into the sub-areas. The maximum coverage area is in this example divided into 45 sub-areas in the form of a grid. This initial rectangle may be computed according to a criterion other than the maximum coverage area of the positioning node, e.g. it may be a sub-area within the maximum coverage area. One option for the initial rectangle may be a plausible area where the mobile device  120  is located with a certain probability. The number of sub-areas may be higher than one. In an embodiment, the sub-area may have dimensions greater than the measurement error represented in terms of a measurement error distance. Each vertex of each sub-area may be represented in the XY coordinates to make it comparable with the measurement value in the XY coordinates. Now, remember that the measurement value RSTD( 800 ,  802 ) is represented as: 
     
       
         
           
             
               
                 
                   
                     
                       
                         
                           if 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           
                             RSTD 
                             
                               ( 
                               
                                 800 
                                 , 
                                 802 
                               
                               ) 
                             
                           
                         
                         &gt; 
                         0 
                       
                       , 
                       
                         
                           
                             f 
                             ⁡ 
                             
                               ( 
                               
                                 X 
                                 , 
                                 Y 
                               
                               ) 
                             
                           
                           = 
                           
                             X 
                             - 
                             
                               
                                 
                                   
                                     
                                       
                                         ( 
                                         
                                           
                                             
                                               Y 
                                               2 
                                             
                                             / 
                                             
                                               
                                                 
                                                   
                                                     ( 
                                                     
                                                       
                                                         d 
                                                         
                                                           ( 
                                                           
                                                             800 
                                                             , 
                                                             802 
                                                           
                                                           ) 
                                                         
                                                       
                                                       2 
                                                     
                                                     ) 
                                                   
                                                   2 
                                                 
                                                 - 
                                                 
                                                   
                                                     ( 
                                                     
                                                       
                                                         C 
                                                         * 
                                                         
                                                           RSTD 
                                                           
                                                             ( 
                                                             
                                                             800 
                                                             , 
                                                             802 
                                                             
                                                             ) 
                                                           
                                                         
                                                       
                                                       2 
                                                     
                                                     ) 
                                                   
                                                   2 
                                                 
                                               
                                             
                                           
                                           + 
                                           1 
                                         
                                         ) 
                                       
                                       × 
                                     
                                   
                                 
                                 
                                   
                                     
                                       
                                         ( 
                                         
                                           
                                             C 
                                             * 
                                             
                                               RSTD 
                                               
                                                 ( 
                                                 
                                                   800 
                                                   , 
                                                   802 
                                                 
                                                 ) 
                                               
                                             
                                           
                                           2 
                                         
                                         ) 
                                       
                                       2 
                                     
                                   
                                 
                               
                             
                           
                         
                         ; 
                       
                     
                     ⁢ 
                     
                       
 
                     
                     ⁢ 
                     
                       if 
                       ⁢ 
                       
                         
                             
                         
                         ⁢ 
                         
                             
                         
                       
                       ⁢ 
                       RSTD 
                     
                   
                   ) 
                 
                 
                   ( 
                   
                     800 
                     , 
                     802 
                   
                   ) 
                 
               
               &lt; 
               0 
             
             , 
             
               
                 
                   f 
                   ⁡ 
                   
                     ( 
                     
                       X 
                       , 
                       Y 
                     
                     ) 
                   
                 
                 = 
                 
                   X 
                   + 
                   
                     
                       
                         
                           
                             
                               ( 
                               
                                 
                                   
                                     Y 
                                     2 
                                   
                                   / 
                                   
                                     
                                       
                                         
                                           ( 
                                           
                                             
                                               d 
                                               
                                                 ( 
                                                 
                                                   800 
                                                   , 
                                                   802 
                                                 
                                                 ) 
                                               
                                             
                                             2 
                                           
                                           ) 
                                         
                                         2 
                                       
                                       - 
                                       
                                         
                                           ( 
                                           
                                             
                                               C 
                                               * 
                                               
                                                 RSTD 
                                                 
                                                   ( 
                                                   
                                                     800 
                                                     , 
                                                     802 
                                                   
                                                   ) 
                                                 
                                               
                                             
                                             2 
                                           
                                           ) 
                                         
                                         2 
                                       
                                     
                                   
                                 
                                 + 
                                 1 
                               
                               ) 
                             
                             × 
                           
                         
                       
                       
                         
                           
                             
                               ( 
                               
                                 
                                   C 
                                   * 
                                   
                                     RSTD 
                                     
                                       ( 
                                       
                                         800 
                                         , 
                                         802 
                                       
                                       ) 
                                     
                                   
                                 
                                 2 
                               
                               ) 
                             
                             2 
                           
                         
                       
                     
                   
                 
               
               ; 
             
           
         
       
       
         
           
             
               
                 if 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   RSTD 
                   
                     ( 
                     
                       800 
                       , 
                       802 
                     
                     ) 
                   
                 
               
               = 
               0 
             
             , 
             
               
                 f 
                 ⁡ 
                 
                   ( 
                   
                     X 
                     , 
                     Y 
                   
                   ) 
                 
               
               = 
               
                 
                   ( 
                   
                     
                       ( 
                       
                         x 
                         - 
                         
                           
                             
                               x 
                               800 
                             
                             + 
                             
                               x 
                               802 
                             
                           
                           2 
                         
                       
                       ) 
                     
                     / 
                     
                       ( 
                       
                         y 
                         - 
                         
                           
                             
                               y 
                               800 
                             
                             + 
                             
                               y 
                               802 
                             
                           
                           2 
                         
                       
                       ) 
                     
                   
                   ) 
                 
                 - 
                 
                   ( 
                   
                     
                       y 
                       800 
                     
                     - 
                     
                       
                         y 
                         802 
                       
                       / 
                       
                         x 
                         800 
                       
                     
                     - 
                     
                       x 
                       802 
                     
                   
                   ) 
                 
               
             
             , 
             and 
           
         
       
       
         
           
             
                 
             
             ⁢ 
             
               
                 f 
                 ⁡ 
                 
                   ( 
                   
                     X 
                     , 
                     Y 
                   
                   ) 
                 
               
               = 
               X 
             
           
         
       
     
     In block  902 , this representation of the measurement value RSTD( 800 , 802 ) may be generated, and the curve defines the set of possible locations for the mobile device in view of the measurement value RSTD( 800 ,  802 ). Similar representation may be carried out for all the measurement values available in block  902 . 
     In block  904 , the XY-coordinate of each vertex of each sub-area may be inserted into the representation of the measurement value and the following determination may be made for each measurement value with respect to each sub-area: if f(X s,1 ,Y s,1 )&gt;0 and f(X s,2 ,Y s,2 )&gt;0 and f(X s,3 ,Y s,3 )&gt;0 and f(X s,4 ,Y s,4 )&gt;0 or if f(X s,1 ,Y s,1 )&lt;0 and f(X s,2 ,Y s,2 )&lt;0 and f(X s,3 ,Y s,3 )&lt;0 and f(X s,4 ,Y s,4 )&lt;0, the RSTD curve does not travel through the sub-area. Otherwise, the RSTD curve travels through the sub-area. s refers to an index of the sub-area and 1, 2, 3, and 4 define different vertices of the sub-area s. When a function or a curve of the measurement value is determined to travel through the sub-area, a weight of the sub-area may be incremented.  FIG. 10  illustrates the curves of only two measurement values for the sake of simplicity, and the number in each sub-area represents the weight of the sub-area, e.g. the number of curves travelling through the sub-area. If the function or curve of the measurement value is determined not to travel through a sub-area, the incrementing may be omitted or a smaller weight may be added to the sub-area. 
     The sub-areas may be processed in parallel processing in a processor of the apparatus. When all the measurement values for all the sub-areas have been processed, the result for each sub-area may be defined as a weight proportional to a number of measurement values indicating that the sub-area is a potential location of the mobile device  120 . The more measurement values indicate that a certain sub-area is a potential location of the mobile device  120 , the more reliable are those measurement values. This feature may be used when generating a threshold that is used to pinpoint inaccurate measurement results. 
     In an embodiment, the threshold is an median weight computed over the weights of all the sub-areas. In another embodiment, the threshold is an average weight. 
     In block  906 , the weight of a sub-area is compared with the threshold. If the weight of the sub-area is higher than the threshold, the process may proceed to block  910  in which the sub-area is selected for further processing. On the other hand, if the weight of the sub-area is lower than the threshold, the process may proceed to block  908  in which the sub-area is not selected for further processing. 
     From block  908 / 910 , the process may return to block  906  for the processing of the next sub-area, to block  902  for the next iteration of the process with a new initial coverage area, or to block  206  for the positioning of the mobile device. 
     With respect to the next iteration, a new initial coverage area may be defined. The new initial coverage area may be created from a combination of sub-areas selected in block  910 . In an embodiment, the new initial coverage area is also a rectangle so, if the selected sub-areas of the grid form an asymmetric form a rectangle covering all the selected sub-areas and, optionally, some unselected areas may be formed. At this instance, at least some or even all the measurement values determined not to cross the new initial coverage area on the basis of the processing of block  904  may be omitted from further evaluation, thus providing a reduced set of measurement values. In an embodiment, the new initial sub-area defines a coverage that is a half of the coverage of the previous iteration. 
     In an embodiment, the new initial coverage area is smaller than in the previous iteration. If the new initial coverage area cannot be created such that the area becomes smaller than in the previous iteration, the process may proceed to block  206 . This may occur, for example, when sub-areas of opposite corners of an initial coverage area are selected for the next iteration. If the sub-areas of the new initial coverage area become smaller than the measurement error, the process may proceed to block  206 . The measurement error may thus determine the minimum dimensions of the sub-areas. The measurement error ranges are described above with respect to inter-frequency and intra-frequency RSTD values. Another criterion for proceeding to block  206  may be reduction of the new initial sub-area to a predetermined size. The size may be defined in terms of satisfactory positioning accuracy. If it is considered that the new initial sub-area is small enough for a satisfactory positioning accuracy, the process may proceed to block  206 . 
     When block  206  is executed as a result of the grid filtering, the location of the mobile device  120  may be determined to be at a location defined by the sub-area(s) selected in block  910  in the last iteration. As a consequence, the grid filtering may be considered as a method for removing inaccurate measurement results and a method for calculating the location of the mobile device  120 . 
     Above, the grid filtering has been discussed in connection with RSTD values that provide the curve of possible locations of the mobile device as the hyperbola. The grid filtering is applicable to other types of measurement values, too. For example, measurements based on round trip time or time-of-arrival measurements provide the curve in the form of a circle where the circles formed by accurate measurements intersect at the location of the mobile device. 
     The grid filtering determines the location where the accurate measurements intersect by gradually reducing the grid and, meanwhile, filters out inaccurate measurements. 
       FIG. 11  illustrates yet another embodiment of the threshold comparison. The threshold comparison of  FIG. 11  may be called cross-reference filtering. The cross-reference filtering may be carried out in connection with any one or more of the above-described embodiments, and it may be used to detect remaining inaccurate measurement values. The embodiment of  FIG. 11  may be used in connection with embodiments that remove the inaccurate measurement values from further analysis. For some reason, the above-described filtering methods may not be capable of removing all the inaccurate measurement results and, therefore, the post-processing of this embodiment may further improve the accuracy of the positioning. 
     The process may comprise determining, amongst the remaining set of measurement values, one or more measurement values not having a certain number of cross-referencing other measurement values amongst the remaining set of measurement values. The certain number may define a threshold for the threshold comparison. Referring to  FIG. 11 , the apparatus may acquire in block  1100  a remaining measurement value. If the measurement value is determined to comprise a cross-referencing other measurement value in the remaining set of measurement values in block  1102 , the process may proceed to block  1106  where the measurement value is maintained. On the other hand, if the measurement value has no cross-referencing measurement value, the process may proceed to block  1104  in which the measurement value is removed as an inaccurate measurement value. With respect to the cross-referencing measurement values, it may be determined in block  1102  that a cross-referencing value is found if there is found another measurement value that is associated with the same positioning node or nodes. For example, if RSTD( 110 , 112 ) and RSTD( 112 , 114 ) is being evaluated in block  1102 , the process may proceed to block  1106  if RSTD( 110 , 114 ) is also found in the set of remaining measurement values. The analysis may be expanded to other cross-referencing sets of measurement values. For example, if RSTD( 110 , 112 ) is being evaluated in block  1102 , the process may proceed to block  1106  if RSTD( 110 , 114 ) and RSTD( 112 , 114 ) are also found in the set of remaining measurement values. Accordingly, a criterion for finding the cross-reference in block  1102  and proceeding to block  1106  may be that an enclosed set of measurement values is discovered. The enclosed set may be defined such that the remaining measurement values include all the measurement values associated with a certain set of positioning nodes. There may be provided different embodiments for defining the number of positioning nodes in the set, e.g. two nodes setting a requirement to find two measurement values, three nodes setting a requirement to find six measurement values, four nodes setting a requirement to find 12 measurement values, etc. In an embodiment, if a measurement value RSTD( 110 ,  112 ) is being evaluated and its reverse measurement value RSTD( 112 , 110 ) is missing, the process may always proceed to block  1104 . 
     In an embodiment, the positioning nodes involved in any one of the remaining measurement values may be selected and ordered by the number of measurement values involving each positioning node. Then, for each subset of positioning nodes involved in the same number of measurement values, the following filtering may be carried out: if the “number of positioning nodes in the subset minus one” is not equal to the number of measurement values involving each of the positioning nodes, the measurement values involving the positioning nodes of the subset may be processed in block  1104 . This may be described such that the subset does not then comprise fully cross-referencing measurement values, e.g. it may comprise measurement values RSTD( 110 , 112 ) and RSTD( 112 , 114 ) but not RSTD( 110 , 114 ). If the “number of positioning nodes in the subset minus one” is equal to the number of measurement values involving each of the positioning nodes, the subset may be considered to include measurement values that fully cross-refer to each other. Accordingly, the measurement values may be processed in block  1106 . It may be further decided for each pair of two positioning nodes in the subset whether they have corresponding accurate measurements values resulting from any one or more of the above-described filtering processes. If so, the subset of positioning nodes may be determined to provide accurate measurement values and should be processed in block  1106 . If there are multiple independent subsets, choose the independent subset with the highest number of RSTD values. The independent subset may have 
     Embodiments employing the dynamic detection of the inaccurate measurement values described above in connection with  FIGS. 4 to 11  may be considered to have the common feature of defining one or more threshold values that enable detection of measurement results involving the indirect radio propagation of the positioning reference signal from a positioning node to the mobile device. The indirect propagation causes increase in the RSTD value and, thus, setting the threshold to the appropriate level, this high RSTD values may be filtered through removal, modification of their values, or assigning a low reliability indicator. Above, some embodiments for setting the threshold level that enable filtering of RSTD values exceeding the threshold are described. For example, the triangle filtering and the surrounding node set filter employ the topology of the positioning nodes or locations of the positioning nodes for setting the threshold. Some other described embodiments employ the error transition or the prior removal of some measurement values. 
     As described above, the process of  FIG. 2  may be supplemented by any one or more of the embodiments described in connection with  FIGS. 3 to 11 . Many of the described embodiments are mutually independent processes but provide a synergistic effect of further improving the positioning accuracy by providing a different aspect to the threshold comparison. 
       FIG. 12  illustrates an embodiment of the apparatus carrying out any one of the processes described above in connection with  FIGS. 2 to 11 . The apparatus may be defined as a positioning computer providing a positioning service for determining a location of one or more mobile devices  120 . The apparatus may be realized in a server computer, or it may be provided by a plurality of physical server computers. The apparatus may provide the positioning service as a cloud service, wherein the service may be virtualized and distributed amongst the plurality of different physical server computers. The apparatus may be comprised in the same network with the positioning nodes, e.g. in a radio access network or in a core network of a cellular communication system. In other embodiments, the apparatus belongs to a different network than a network of the positioning nodes, and the positioning nodes and the mobile device may communicate with the apparatus over the network of the positioning nodes and through the Internet, for example. 
     The apparatus may comprise a positioning circuitry  10  such as at least one processor, and at least one memory  20  including a computer program code (software)  22  wherein the at least one memory and the computer program code (software) are configured, with the at least one processor, to cause the apparatus to carry out any one of the embodiments described above. 
     The memory  20  may be implemented using any suitable data storage technology, such as semiconductor based memory devices, flash memory, magnetic memory devices and systems, optical memory devices and systems, fixed memory and removable memory. The memory may comprise a configuration database  24  for storing configuration data for the execution of the location computation. For example, the configuration database  24  may store the information resulting from the static filtering of  FIG. 3  or the preliminary steps  700 ,  900 . The configuration database  24  may also store previous locations of the mobile devices. 
     The apparatus may further comprise a communication interface (TX/RX)  26  comprising hardware and/or software for realizing communication connectivity according to one or more communication protocols. The communication interface  26  may provide the apparatus with communication capabilities to communicate with the positioning nodes and/or the mobile devices, for example. In an embodiment, the communication interface provides a connection to a network of the cellular communication system. In another embodiment, the communication interface provides a connection to the Internet. The communication interface  26  may comprise standard well-known components such as an amplifier, filter, frequency-converter, (de)modulator, and encoder/decoder circuitries. 
     In an embodiment of  FIG. 12 , at least some of the functionalities of the apparatus may be shared between two physically separate devices, forming one operational entity. Such a property is known in connection with cloud servers, wherein certain functionality may be distributed amongst a plurality of physical entities. Therefore, the apparatus may be seen to depict the operational entity comprising one or more physically separate devices for executing at least some of the described processes. The devices may communicate with each other over a computer network. 
     The positioning circuitry  10  may be configured to communicate with the positioning nodes, the mobile devices, and/or other devices through the communication interface  26 . The positioning circuitry may output, as a result of an event detected in the positioning circuitry  10 , a request for the mobile device and/or the positioning nodes to carry out the measurements. As a response, the positioning circuitry may receive one or more measurement reports comprising the measurement values for use in the positioning of the mobile device. The event may be a reception of a positioning request from another device. The event may be a periodic event or a time-based event, e.g. lapse of a certain time period from the latest positioning of the mobile device. 
     The positioning circuitry  10  may comprise, as sub-circuitries, one or more of the following modules: a pre-processing module  12 , a static filtering module  13 , a triangle filtering module  14 , a surrounding node set filtering module  15 , a grid filtering module  16 , a cross-reference filtering module  17 , and a selection logic  18  configured to control the execution of the mobiles. 
     The pre-processing module  12  may be configured to carry out any pre-processing that may be carried out before the reception of the measurement values. The pre-processing module  12  may carry out blocks  700  and/or  900 , for example. 
     The static filtering module may be configured to carry out the process of  FIG. 3 . The triangle filtering module  14  may be configured to carry out the process of  FIG. 5 . The surrounding node set filtering module  15  may be configured to carry out the process of  FIG. 7 . The grid filtering module  16  may be configured to carry out the process of  FIG. 9 . The cross-reference filtering module may be configured to carry out the process of  FIG. 11 . 
     The selection logic circuitry  18  may trigger the operation of each module. For example, upon receiving the measurement report associated with the mobile device, the selection logic circuitry  18  may determine a filtering to be applied first. The selection logic circuitry  18  may then select, according to a determined criterion, one of the modules  14  to  17 , and output a triggering signal to the selected module. The selected module may then filter the measurement values according to the corresponding filtering process. Thereafter, the module may report the resulting measurement values to the selection logic circuitry  18 . The selection logic circuitry may then analyze the report, e.g. the number of remaining measurement values or the number of measurement values classified as reliable, unreliable, or unclassified, and determine whether or not to apply further filtering. Upon determining to carry out further filtering of the measurement values, the selection logic circuitry  18  may trigger another module  14  to  17  to carry out further filtering. In this manner, the selection logic circuitry may control further processing of the measurement values until it determines that no more filtering is needed. The selection logic circuitry may then trigger a module (not shown) of the positioning circuitry computing the location of the mobile device, and the final location of the mobile device may be computed. 
     With respect to the pre-processing circuitry  12  or static filtering circuitry  13 , the selection logic circuitry  18  may trigger the execution of those modules whenever static measurement characteristics change. For example, when a new positioning node is established, the selection logic circuitry  18  may trigger the operation of the modules  12 ,  13 . 
     The circuitries  12  to  18  may be considered as separated physical circuitries or as computer program modules executed at least partially by the same or overlapping physical resources or circuitries. It should be appreciated that the positioning circuitry  10  may comprise a subset of the sub-circuitries  12  to  18  or  12  to  17 . 
     As used in this application, the term ‘circuitry’ refers to all of the following: (a) hardware-only circuit implementations, such as implementations in only analog and/or digital circuitry, and (b) combinations of circuits and soft-ware (and/or firmware), such as (as applicable): (i) a combination of processor(s) or (ii) portions of processor(s)/software including digital signal processor(s), software, and memory(ies) that work together to cause an apparatus to perform various functions, and (c) circuits, such as a microprocessor(s) or a portion of a microprocessor(s), that require software or firmware for operation, even if the software or firmware is not physically present. This definition of ‘circuitry’ applies to all uses of this term in this application. As a further example, as used in this application, the term ‘circuitry’ would also cover an implementation of merely a processor (or multiple processors) or a portion of a processor and its (or their) accompanying software and/or firmware. The term ‘circuitry’ would also cover, for example and if applicable to the particular element, a baseband integrated circuit or applications processor integrated circuit for a mobile phone or a similar integrated circuit in a server, a cellular network device, or another network device. 
     In an embodiment, at least some of the processes described in connection with  FIGS. 2 to 11  may be carried out by an apparatus comprising corresponding means for carrying out at least some of the described processes. Some example means for carrying out the processes may include at least one of the following: detector, processor (including dual-core and multiple-core processors), digital signal processor, controller, receiver, transmitter, encoder, decoder, memory, RAM, ROM, software, firmware, display, user interface, display circuitry, user interface circuitry, user interface software, display software, circuit, antenna, antenna circuitry, and circuitry. In an embodiment, the at least one processor, the memory, and the computer program code form processing means or comprises one or more computer program code portions for carrying out one or more operations according to any one of the embodiments of  FIGS. 2 to 11  or operations thereof. 
     The techniques and methods described herein may be implemented by various means. For example, these techniques may be implemented in hardware (one or more devices), firmware (one or more devices), software (one or more modules), or combinations thereof. For a hardware implementation, the apparatus(es) of embodiments may be implemented within one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), processors, controllers, micro-controllers, microprocessors, other electronic units designed to perform the functions described herein, or a combination thereof. For firmware or software, the implementation can be carried out through modules of at least one chipset (e.g. procedures, functions, and so on) that perform the functions described herein. The software codes may be stored in a memory unit and executed by processors. The memory unit may be implemented within the processor or externally to the processor. In the latter case, it can be communicatively coupled to the processor via various means, as is known in the art. Additionally, the components of the systems described herein may be rearranged and/or complemented by additional components in order to facilitate the achievements of the various aspects, etc., described with regard thereto, and they are not limited to the precise configurations set forth in the given figures, as will be appreciated by one skilled in the art. 
     Embodiments as described may also be carried out in the form of a computer process defined by a computer program or portions thereof. Embodiments of the methods described in connection with  FIGS. 2 to 11  may be carried out by executing at least one portion of a computer program comprising corresponding instructions. The computer program may be in source code form, object code form, or in some intermediate form, and it may be stored in some sort of carrier, which may be any entity or device capable of carrying the program. For example, the computer program may be stored on a computer program distribution medium readable by a computer or a processor. The computer program medium may be, for example but not limited to, a record medium, computer memory, read-only memory, electrical carrier signal, telecommunications signal, and software distribution package, for example. The computer program medium may be a non-transitory medium. Coding of software for carrying out the embodiments as shown and described is well within the scope of a person of ordinary skill in the art. 
     Even though the invention has been described above with reference to an example according to the accompanying drawings, it is clear that the invention is not restricted thereto but can be modified in several ways within the scope of the appended claims. Therefore, all words and expressions should be interpreted broadly and they are intended to illustrate, not to restrict, the embodiment. It will be obvious to a person skilled in the art that, as technology advances, the inventive concept can be implemented in various ways. Further, it is clear to a person skilled in the art that the described embodiments may, but are not required to, be combined with other embodiments in various ways.