Patent Document

CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims the benefit of U.S. Provisional Application No. 61/886,904 filed on Oct. 4, 2013, which is incorporated herein in its entirety. 
    
    
     TECHNICAL FIELD 
     The present disclosure relates to a method and device for a human interface, in particular a continuous circle gesture detection method for a sensor system. 
     BACKGROUND 
     Known systems for multi-level control, e.g. volume control or screen/light brightness control in consumer electronics products, use circular touch-pads or capacitive linear sliders (frequently mounted above the keyboard in notebooks), or they are using the touch information from a generic notebook touchpad when the finger is moving in a dedicated slider area, for example on the right border of the touchpad. 
     These sensors provide absolute position information about the finger tip, and hence the finger tip&#39;s angle on the circular touchpad or the position on the slider information that can be mapped directly or differentially to a control level in a straight forward way. 
     In particular for a circular touch-pad it is important that the fingertip position and the touchpad&#39;s geometric center build an angle with a reference position, e.g. on the pad&#39;s rim, and this angle can be evaluated. 
     When it comes to the recognition of circle gestures without fix reference position, determining an angle in the circle movement is no longer straight forward. This is the case, for example, for a generic non-circular touchpad, with 2D/3D free-air gestures using near-field capacitive sensor systems, or with mid/far field sensor systems like video or infrared camera systems. 
     It has to be considered that a circle movement can be either clockwise or counter-clockwise, and it will not be limited to have a fix start or stop position. At each time during the circle movement, for real-time application one can only evaluate data acquired up to the presence, i.e. only partial gesture patterns. Without knowing the drawn circle&#39;s center, in the beginning of the movement the detection unit cannot tell the direction of the circle: For example, a left-to-right movement appears in the top of a clockwise circle but also in the bottom of a counter-clockwise circle. 
     SUMMARY 
     According to an embodiment, a method for detecting a continuous circle gesture may comprise the steps of: receiving a sequence of vectors representative of an object movement by a object detection unit; determining from the received sequence of vectors a sequence of velocity vectors or an approximation thereof; estimating an angle between subsequent velocity vectors; and determining a rotation direction. 
     According to a further embodiment, the received sequence of vectors can be (x n , y n ) position vectors of an object movement. According to a further embodiment, velocity vectors can be computed as the difference of subsequent position vectors. According to a further embodiment, the received sequence of vectors may comprise measurement values m k   (i)  of electrodes i at times k. According to a further embodiment, four measurement electrodes can be provided and the velocity vectors v k  are determined by 
     
       
         
           
             
               v 
               k 
             
             ≈ 
             
               
                 [ 
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               m 
                               k 
                               
                                 ( 
                                 4 
                                 ) 
                               
                             
                             - 
                             
                               m 
                               
                                 k 
                                 - 
                                 1 
                               
                               
                                 ( 
                                 4 
                                 ) 
                               
                             
                           
                           ) 
                         
                         - 
                         
                           ( 
                           
                             
                               m 
                               k 
                               
                                 ( 
                                 2 
                                 ) 
                               
                             
                             - 
                             
                               m 
                               
                                 k 
                                 - 
                                 1 
                               
                               
                                 ( 
                                 2 
                                 ) 
                               
                             
                           
                           ) 
                         
                       
                     
                   
                   
                     
                       
                         
                           ( 
                           
                             
                               m 
                               k 
                               
                                 ( 
                                 3 
                                 ) 
                               
                             
                             - 
                             
                               m 
                               
                                 k 
                                 - 
                                 1 
                               
                               
                                 ( 
                                 3 
                                 ) 
                               
                             
                           
                           ) 
                         
                         - 
                         
                           ( 
                           
                             
                               m 
                               k 
                               
                                 ( 
                                 1 
                                 ) 
                               
                             
                             - 
                             
                               m 
                               
                                 k 
                                 - 
                                 1 
                               
                               
                                 ( 
                                 1 
                                 ) 
                               
                             
                           
                           ) 
                         
                       
                     
                   
                 
                 ] 
               
               . 
             
           
         
       
     
     According to a further embodiment, the angle between two subsequent velocity vectors 
               v   new     =     [           v     new   ,   x                 v     new   ,   y             ]               and               v   old     =     [           v     old   ,   x                 v     old   ,   y             ]           
can be determined by φ=arc cos( v   new   T · v   old )·S, where Sε{±1} is the rotating direction, T indicates the vector transpose, the bar indicates normalization of a vector, i.e.
 
                 v   _     =       [             v   _     x                 v   _     y           ]     :=       v             v               =       [           v   x               v   y           ]     ·     1         v   x   2     +     v   y   2                   ,         
and ∥.∥ denotes the vector length. According to a further embodiment, S:=sig n( v   new,x   v   old,y − v   new,y   v   old,x ). According to a further embodiment, the angle between two subsequent velocity vectors v new  and v old  can be approximately determined by φ≈∥ v   new − v   old ∥·S, where Sε{±1} is the rotating direction. According to a further embodiment, the angle φ between two subsequent velocity vectors v new  and v old  can be approximately determined by φ≈sin φ= v   new,x   v   old,y − v   new,y   v   old,x . According to a further embodiment, velocity vectors are consecutive such that v new =v k  and v old =v k-1 . According to a further embodiment, each velocity vector v new  and v old  in a sequence of two vectors can be normalized by the same value ∥v new ∥ or ∥v old ∥. According to a further embodiment, a circle counter can be realized by integrating the angles between pairs of subsequent velocity vectors. According to a further embodiment, the circle counter can be updated only if ∥v k ∥ exceeds a predetermined threshold. According to a further embodiment, the position vectors and/or the velocity vectors and/or the circle counters can be low-pass filtered. According to a further embodiment, the sensor system can be a 2-dimensional touch positioning system, a near-field sensor systems, or a mid/far field sensor systems. According to a further embodiment, the near-field sensor system can be a capacitive non-touching sensor system based on a quasi-static electric field measurements. According to a further embodiment, the near-field capacitive sensor system may comprise one or more transmission electrodes excited with a rectangular pulse train signal and a plurality of receiving electrodes capacitively coupled with the one or more transmission electrodes.
 
     According to another embodiment, a human device interface may comprise an interface generating a sequence of vectors representative of an object movement tracked by a gesture detection system; a processing unit configured to determine from the received vectors a sequence of velocity vectors or an approximation thereof, to estimate an angle between subsequent velocity vectors; and to determine a rotation direction; wherein the processing unit further implements a circle counter and updates values of the circle counter by adding the estimated angle with its sign depending on the rotating direction. 
     According to a further embodiment of the human device interface, the sequence of vectors can be (x n , y n ) position vectors of an object movement. According to a further embodiment of the human device interface, velocity vectors can be computed as the difference of subsequent position vectors. According to a further embodiment of the human device interface, the received sequence of vectors may comprise measurement values m k   (i)  of electrodes i at times k. According to a further embodiment of the human device interface, four measurement electrodes can be provided and the velocity vectors v k  are determined by 
     
       
         
           
             
               v 
               k 
             
             ≈ 
             
               
                 [ 
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               m 
                               k 
                               
                                 ( 
                                 4 
                                 ) 
                               
                             
                             - 
                             
                               m 
                               
                                 k 
                                 - 
                                 1 
                               
                               
                                 ( 
                                 4 
                                 ) 
                               
                             
                           
                           ) 
                         
                         - 
                         
                           ( 
                           
                             
                               m 
                               k 
                               
                                 ( 
                                 2 
                                 ) 
                               
                             
                             - 
                             
                               m 
                               
                                 k 
                                 - 
                                 1 
                               
                               
                                 ( 
                                 2 
                                 ) 
                               
                             
                           
                           ) 
                         
                       
                     
                   
                   
                     
                       
                         
                           ( 
                           
                             
                               m 
                               k 
                               
                                 ( 
                                 3 
                                 ) 
                               
                             
                             - 
                             
                               m 
                               
                                 k 
                                 - 
                                 1 
                               
                               
                                 ( 
                                 3 
                                 ) 
                               
                             
                           
                           ) 
                         
                         - 
                         
                           ( 
                           
                             
                               m 
                               k 
                               
                                 ( 
                                 1 
                                 ) 
                               
                             
                             - 
                             
                               m 
                               
                                 k 
                                 - 
                                 1 
                               
                               
                                 ( 
                                 1 
                                 ) 
                               
                             
                           
                           ) 
                         
                       
                     
                   
                 
                 ] 
               
               . 
             
           
         
       
     
     According to a further embodiment of the human device interface, the angle between two subsequent velocity vectors 
               v   new     =         [           v     new   ,   x                 v     new   ,   y             ]     ⁢           ⁢   and   ⁢           ⁢     v   old       =     [           v     old   ,   x                 v     old   ,   y             ]             
can be determined by φ=arc cos( v   new   T · v   old )·S, where Sε{±1} is the rotating direction, T indicates the vector transpose, and the bar indicates normalization of a vector. According to a further embodiment of the human device interface the angle φ between two subsequent velocity vectors v new  and v old  can be approximately determined by φ≈∥ v   new − v   old ∥·S, where Sε{±1} is the rotating direction. According to a further embodiment of the human device interface, S:=sig n( v   new,x   v   old,y − v   new,y   v   old,x ). According to a further embodiment of the human device interface, the angle between two subsequent velocity vectors v new  and v old  can be approximately determined by ≈sin φ= v   new,x   v   old,y − v   new,y   v   old,x . According to a further embodiment of the human device interface, velocity vectors are consecutive such that v new =v k  and v old =v k-1 . According to a further embodiment of the human device interface, each velocity vectors v new  and v old  in a sequence of two vectors can be normalized by the same value ∥v new ∥ or ∥v old ∥. According to a further embodiment of the human device interface, a circle counter can be realized by integrating the angles between pairs of subsequent velocity vectors. According to a further embodiment of the human device interface, the circle counter can be updated only if ∥v k ∥ exceeds a predetermined threshold. According to a further embodiment of the human device interface, the human device interface may further comprise a first low-pass filter configured to filter the position vectors and/or a second low-pass filter configured to filter the velocity vectors and/or a third low-pass filter configured to filter the circle counter. According to a further embodiment of the human device interface, the interface may comprise 2-dimensional touch positioning system, a near-field sensor systems, or a mid/far field sensor systems. According to a further embodiment of the human device interface, the near-field sensor system can be a capacitive non-touching sensor system based on a quasi-static electric field measurements. According to a further embodiment of the human device interface, the near-field capacitive sensor system may comprise one or more transmission electrodes excited with a rectangular pulse train signal and a plurality of receiving electrodes capacitively coupled with the one or more transmission electrodes.
 
     According to yet another embodiment, an electronic device may comprise a human device interface as described above, wherein the circle counter is used for volume control, a dimmer, speed control, air condition temperature, or mechanical movement functions. 
     According to a further embodiment of the electronic device, the circle counter drives an LED bar. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows position vectors and velocity vectors of a 2D circle gesture sampled at discrete time instances n=k, k−1, k−2, . . . . 
         FIG. 2  shows a unit circle with normalized velocity vectors starting in the coordinate system&#39;s origin. 
         FIG. 3  shows a 2D detection system such as a track pad or touch screen. 
         FIG. 4  shows an exemplary 3D gesture detection system. 
         FIG. 5  shows a specific standard gesture detection electrode layout with four frame receiving electrodes using a quasi-static electric field detection method. 
         FIG. 6  shows a finger position moving clockwise or counter-clockwise on a circular path within a detection space defined by four electrodes  310 - 340  of the embodiment of  FIG. 5 . 
         FIG. 7  shows a visualization approach for the output value of the AirWheel algorithm. 
     
    
    
     DETAILED DESCRIPTION 
     According to various embodiments, a circle gesture (or pattern) which is observed is to be identified. Hence, according to some embodiments, from two subsequent velocity vectors the rotating direction and the angle between these vectors are determined in order to update the circle counter. In the following, this gesture will also be referred to as AirWheel gesture. The term “subsequent” is used throughout the specification and hereby defined to designate elements or events that are spaced apart in time. They do not have to be consecutive with no other element or event in between. Hence, the term “consecutive” is used throughout the specification and hereby defined to designate elements or events that are adjacent with respect to time. 
     For the general approach in this part it will be assumed that a sequence of (x n , y n ) position vectors corresponding to or being estimates of a target point is provided, e.g. a fingertip, performing a circular gesture in a two dimensional (2D) plane at subsequent discrete time instances n. The time instances do not need to be consecutive but should be subsequent in time so that one vector is newer than the other. For example, subsequent vectors v new  and v old  can be used, the bold letters indicating that a variable is a vector.  FIG. 3  shows an exemplary two dimensional system  100  comprising, for example, a track pad touch screen  120  coupled with a 2D interface  110  connected with a processing system  130 . The difference between two position vectors is a velocity vector, e.g. for two subsequent position vectors we obtain 
               v   new     :=         p   new     -     p   old       =     [             x   new     -     x   old                   y   new     -     y   old             ]             
which contains direction and magnitude of the movement between time ‘old’ and time ‘new’. In the following consecutive vectors will be assumed such that old=k−1 and new=k. However, as mentioned above this may not be a requirement. It does not necessarily have to be the latest velocity vector and the one directly before it. Primarily it is important that one contains more recent data than the other. Further, these velocity vectors may already have experienced some kind of pre-processing, like low-pass filtering.
 
     Considering two such velocity vectors, e.g. v k  and v k-1 , as shown in  FIG. 1 , an angle φ can be defined between them. If the rotating direction is turning right (as with a clockwise circle gesture) then φ&gt;0. If the rotating direction is turning left (as with a counter-clockwise circle gesture) then φ&lt;0. The circle counter can be realized by integrating the angles φ between pairs of consecutive velocity vectors. 
     The question is how to obtain the angle φ or a similar measure, where the interesting value range of φ is to be assumed as: 
             φ   ∈       (       -     π   2       ,     π   2       )     .           
For this, v k  and v k-1  are normalized to unit vectors
 
                 v   _     k     :=       v   k                 v   k                       
as shown in  FIG. 2 , where ∥.∥ denotes the length of a vector. With cos φ= v   k-1   T   v   k , the exact solution is given by φ=arc cos∥ v   k-1   T   v   k ∥·S, where Sε{±1} is the rotating direction and will be determined below, and T indicates the vector transpose.
 
     However, the computationally complex arcus cosine function can be avoided by approximating the angle φ (which is of same value as its arc on a unit circle) by the length of  v   k − v   k-1  (chord), i.e. φ≈∥ v   k − v   k-1 ∥·S, where Sε{±1} is the rotating direction and will be determined below, or by its sine, i.e. φ≈sin φ. For 3-dimensional vectors a and b with x, y and z components a x , a y , a z  and b x , b y , b z , respectively, it holds 
                      sin   ⁢           ⁢   φ          =                 a   ×   b                           a             ⁢             b                   ,         
where x denotes the cross product (vector product) which is defined as
 
               a   ×   b     :=         (           a   x               a   y               a   z           )     ×     (           b   x               b   y               b   z           )       =       (               a   y     ⁢     b   z       -       a   z     ⁢     b   y                       a   z     ⁢     b   x       -       a   x     ⁢     b   z                       a   x     ⁢     b   y       -       a   y     ⁢     b   x               )     .             
For 2D vectors, the vector product
 
     is not defined as such. However, if the 2D (x/y) plane is extended by a third dimension, the z-dimension, and an arbitrary constant z value, preferably z=0, is assigned to the velocity vectors, then the vector product can be applied to the resulting 3D velocity vectors, whose z component is the value of interest. With  v   k-1,z = v   k,z =0 we obtain 
                   v   _     k     ×       v   _       k   -   1         =       (         0           0                   v   _       k   ,   x       ⁢       v   _         k   -   1     ,   y         -         v   _       k   ,   y       ⁢       v   _         k   -   1     ,   x                 )     ⁢           ⁢   and   ⁢           ⁢   hence                     φ   ≈     sin   ⁢           ⁢   φ       =                       v   _     k     ×       v   _       k   -   1                   ·   S     =                  v   _       k   ,   x       ⁢       v   _         k   -   1     ,   y         -         v   _       k   ,   y       ⁢       v   _         k   -   1     ,   x                ·   S         ,         
where |.| denotes a scalar&#39;s absolute value.
 
     The sign of the vector product&#39;s z-component is the rotating direction and hence
 
 S :=sig  n (   v     k,x     v     k-1,y   − v     k,y     v     k-1,x )
 
and finally
 
φ≈sin φ=   v     k,x     v     k-1,y   − v     k,y     v     k-1,x .
 
     In the following, further possible improvements will be discussed which can be implemented in various embodiments. Hence, the various possible improvements can be used separately or combined. 
     Normalization 
     In practice, for complexity reduction by avoiding computation of square roots, both vectors v k  and v k-1  may be normalized by the same value ∥v k ∥ or ∥v k-1 ∥, typically without realizable effect (provided the sample frequency is sufficiently high), i.e. 
     
       
         
           
             
               
                 
                    
                   
                      
                     
                       
                         
                           v 
                           _ 
                         
                         k 
                       
                       × 
                       
                         
                           v 
                           _ 
                         
                         
                           k 
                           - 
                           1 
                         
                       
                     
                      
                   
                    
                 
                 ≈ 
                 
                   
                      
                     
                        
                       
                         
                           v 
                           k 
                         
                         × 
                         
                           v 
                           
                             k 
                             - 
                             1 
                           
                         
                       
                        
                     
                      
                   
                   
                     
                        
                       
                          
                         
                           v 
                           p 
                         
                          
                       
                        
                     
                     2 
                   
                 
               
               = 
               
                 
                    
                   
                     
                       
                         v 
                         
                           k 
                           , 
                           x 
                         
                       
                       ⁢ 
                       
                         v 
                         
                           
                             k 
                             - 
                             1 
                           
                           , 
                           y 
                         
                       
                     
                     - 
                     
                       
                         v 
                         
                           k 
                           , 
                           y 
                         
                       
                       ⁢ 
                       
                         v 
                         
                           
                             k 
                             - 
                             1 
                           
                           , 
                           x 
                         
                       
                     
                   
                    
                 
                 
                   
                      
                     
                        
                       
                         v 
                         p 
                       
                        
                     
                      
                   
                   2 
                 
               
             
             , 
             
               
                 where 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 p 
               
               ∈ 
               
                 
                   { 
                   
                     k 
                     , 
                     
                       k 
                       - 
                       1 
                     
                   
                   } 
                 
                 . 
               
             
           
         
       
     
     Jitter Suppression 
     For jitter suppression, the circle counter may, for example, be updated only when a minimum amount of movement is detected, e.g. when ∥v k ∥ exceeds a threshold. This yields a differential update of the circle counter with slip. 
     Smoothness 
     The smoothness of the circle counter can be improved by applying low-pass filtering to the position vectors and/or the velocity vectors and/or the output counter. 
     Input Data 
     Depending on the underlying sensor system, the x/y position estimate may be subject to numerous processing stages, and it may depend on numerous configuration parameters, each processing stage adding risk of errors and computational complexity. However, all the proposed algorithm actually requires as input data is a two dimensional vector, where (at least approximately) the value in its first dimension increases/decreases when the target point moves in a first geometric dimension, and the 2 nd  dimension increases/decreases when the target point moves in a 2 nd  geometric dimension. 
     A typical three dimensional (3D) gesture detection system  200  is shown in  FIG. 4 . A ground plane  210  of a detection space is shown which may also include a sensor arrangement coupled with a respective 3D detection interface  220  which is again connected to a processing system  130 . Instead of the sensor arrangement used in system  200  there can be also optical detection means placed at respective suitable location in an optical 3D system. Other 3D detection systems may be used to generate the tracking points that will be fed to the various embodiments. 
     According to one embodiment of a touch-free gesture system, such as a three-dimensional gesture detection system that uses a quasi-static alternating electric field, a 4-frame electrode layout as depicted in  FIG. 5  is provided. Here four receiving electrodes  310 ,  320 ,  330 , and  340  are arranged in the same plane and define a rectangular area. Other electrode arrangements with more or less receiving electrodes and/or other geometrical arrangements may be used according to other embodiments. Reference numeral  305  designates an underlying transmission electrode which may be supplied with, e.g., a 30-200 kHz square-wave signal. However, according to other embodiments, the transmission layer  305  may be arranged in the same plane as the receiving electrodes  310 - 340  and may be of different shape, or multiple Tx electrodes may be used. The transmission electrode generates a quasi-static electric field that extends upwards to define a detection space that may extend to 10-15 cm above the electrode plane. A ground shield (not shown) may be used to suppress extension of the field towards unwanted areas. The capacitive coupling between the transmission electrode and the receiving electrodes as well as the system ground will be disturbed by an electrically conductive object entering the detection space. From the disturbance measured at the receive electrodes, the direction of movement and/or the position of the object can be estimated. E.g. from measurements of at least 3 such receive electrodes, a 3-dimensional position can be estimated, whose derivative with respect to time is a velocity vector. For example an integrated circuit  350  may be used such as MGC 3130 manufactured by Applicant. A data sheet “MGC 3130 Single-Zone 3D Tracking and Gesture Controller Data Sheet”, issued Ser. No. 11/192,013 is available from Applicant and hereby incorporated by reference. A receiving processing device  360  or an interface chip may be coupled with integrated circuit  350 . 
     Other three-dimensional detection systems can be used to provide sample points and the present embodiments are not limited to the specific embodiment discussed above. However, the method discussed herein may be particularly beneficial in such a three-dimensional non-touch gesture detection system. 
     With a four frame electrode design  300  as discussed above, a coarse, yet functional approximation for the velocity vectors v k  when the object is moving within the area spanned by  310  to  340  is given as shown below in Equation (2): 
     
       
         
           
             
               
                 
                   
                     v 
                     k 
                   
                   ≈ 
                   
                     [ 
                     
                       
                         
                           
                             
                               ( 
                               
                                 
                                   m 
                                   k 
                                   
                                     ( 
                                     4 
                                     ) 
                                   
                                 
                                 - 
                                 
                                   m 
                                   
                                     k 
                                     - 
                                     1 
                                   
                                   
                                     ( 
                                     4 
                                     ) 
                                   
                                 
                               
                               ) 
                             
                             - 
                             
                               ( 
                               
                                 
                                   m 
                                   k 
                                   
                                     ( 
                                     2 
                                     ) 
                                   
                                 
                                 - 
                                 
                                   m 
                                   
                                     k 
                                     - 
                                     1 
                                   
                                   
                                     ( 
                                     2 
                                     ) 
                                   
                                 
                               
                               ) 
                             
                           
                         
                       
                       
                         
                           
                             
                               ( 
                               
                                 
                                   m 
                                   k 
                                   
                                     ( 
                                     3 
                                     ) 
                                   
                                 
                                 - 
                                 
                                   m 
                                   
                                     k 
                                     - 
                                     1 
                                   
                                   
                                     ( 
                                     3 
                                     ) 
                                   
                                 
                               
                               ) 
                             
                             - 
                             
                               ( 
                               
                                 
                                   m 
                                   k 
                                   
                                     ( 
                                     1 
                                     ) 
                                   
                                 
                                 - 
                                 
                                   m 
                                   
                                     k 
                                     - 
                                     1 
                                   
                                   
                                     ( 
                                     1 
                                     ) 
                                   
                                 
                               
                               ) 
                             
                           
                         
                       
                     
                     ] 
                   
                 
               
               
                 
                   ( 
                   2 
                   ) 
                 
               
             
           
         
       
     
     where m k   (i) , i=1,2,3,4 is the system measurement value of electrode i at time k, which increases with decreasing finger-to-electrode distance, where electrodes 1,2,3,4 correspond to  320 ,  330 ,  340 ,  310  in  FIG. 5 , respectively. This approximation is also functional when for one or more electrodes i the corresponding measurement value monotonously decreases with decreasing finger-to-electrode distance. Then the signs of m k-1   (i)  and m k   (i)  need to be inverted for theses electrodes i. 
       FIG. 6  shows a shows a finger position moving clockwise or counter-clockwise on a circular path within a detection space defined by four electrodes  310 - 340  of the embodiment of  FIG. 5 . In such a system, generally the transmission electrode is used to generate the electric field, for example using a 30-200 kHz rectangular pulse train signal, e.g., generated by a microcontroller port, and a plurality of receiving electrodes from whose measurements signals a disturbance in the field can be detected when an object enters the quasi-static electric field. Gesture detection samples where the data from all electrodes has the same sign, i.e. the finger is approaching/leaving all electrodes, may be ignored for updating the circle counter. However, as mentioned above, the method may apply also to various other two- or three dimensional gesture detection systems. 
     Start/Stop Condition 
     Given a Hidden Markov Model (HMM) based automatic gesture recognition engine running in parallel with the AirWheel, one possible start condition for starting/outputting the circle counter is to share the start detection functionality of the HMM based gesture recognition system and to trigger the circle counting when a dedicated HMM becomes the most likely one. For example, HMMs for clockwise and/or counter-clockwise gesture events are suitable for being such dedicated HMMs as explained in more detail in co-pending application US-2014-0050354-A1 which is hereby incorporated in its entirety by reference. 
     Alternatively, the circle counting can run permanently in the background, but the outputting of counter updates is only activated, when a certain amount of counts in one rotating direction is reached within a limited amount of time, or the ratio of counts in one rotating direction and the opposite rotating direction within a given amount of time exceeds or goes below thresholds. 
     Depending on the memory introduced by the low-pass filters in the “Smoothness” improvement, it may be useful or necessary to clear their memory, and possibly start tracking of the circle counter some time before actually outputting it. 
     A stop condition can for example be that the finger leaves the active space (the space above the area spanned by the receive electrodes in a 3D gesture detection system using quasi static electric field measurements) or leaves the touch pad in a 2D-system. Another stop condition can be that the finger is resting, i.e. that the detected finger movement for example quantified by the absolute values of the velocity vectors—is below a defined threshold for a defined amount of time. 
     Algorithm 
     An exemplary pseudo code of the proposed algorithm (without simplifications/extensions) is shown below in Listing 1, where the angle φ is approximated with sin(φ) by computing the z-element of the cross product of the normalized velocity vectors and adding it to an accumulator ‘circle counter’ which can be the output value. 
     
       
         
               
             
               
               
             
           
               
                   
               
               
                 Listing 1 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 // Initialization 
               
               
                   
                 status = OFF;  // AirWheel status 
               
               
                   
                 CC = 0;     // Circle Counter (accumulator) 
               
               
                   
                 v_new=[0 0]; v_old = [0 0];  // Velocity vectors 
               
               
                   
                 WHILE true { 
               
               
                   
                  // Get new 2-dimensional velocity vectors 
               
               
                   
                  v_new = fct_get_data( ); 
               
               
                   
                  // Normalize v_new 
               
               
                   
                  v_new = fct_normalize(v_new); 
               
               
                   
                  // Start/Stop Detection 
               
               
                   
                  IF &lt;Start Condition Fulfilled&gt; { 
               
               
                   
                   status = ON; 
               
               
                   
                  } 
               
               
                   
                  IF &lt;Stop Condition Fulfilled&gt; { 
               
               
                   
                   status = OFF; 
               
               
                   
                  } 
               
               
                   
                  // Update Circle Counter (accumulator) 
               
               
                   
                  IF (status == ON) { 
               
               
                   
                   CC += v_new[1]*v_old[0] − v_new[1]*v_old[0]; 
               
               
                   
                  } 
               
               
                   
                  // Backup latest velocity vector 
               
               
                   
                  v_old = v_new; 
               
               
                   
                 } 
               
               
                   
                   
               
             
          
         
       
     
     Various Applications 
     The circular gesture resembles a virtual Volume control wheel of a HiFi set: Clockwise movement increases the volume, counter-clockwise movement decreases the volume. 
     A design proposal is given in  FIG. 7  which shows a visualization approach for an AirWheel volume control, volume wheel and volume level display saturating at a minimum (e.g., 0) and maximum value (e.g., 63). 
     It shows a volume control wheel with a phase indicator, and an LED display where the height of the bar of lightened LEDs indicates the volume. Zero lightened LEDs corresponds to mute, all LEDs lightened corresponds to maximum volume. Turning the volume wheel by circular finger movement increases/decreases the volume, and when the wheel has been turned by a defined amount, e.g. by  7 E, or when the circle counter has changed by a defined amount, respectively, one LED is lightened or turned off. While the volume wheel can theoretically be turned by an infinite amount, the LED bar graph saturates at mute or maximum volume. 
     Such an AirWheel may be used in a wide variety of applications. For example:
         Any media-player control type functionality known from circular touchpads.   Control of a dimmer in a light switch or various other appliance functions such as, for example, speed control, air condition temperature, mechanical movement functions, etc.   Replacement for a PC mouse&#39;s scroll wheel   Types of sensor systems measurement input devices (examples)
           1. 2D Touch panels touch displays, 2D video cameras   2. 3D video cameras, 3D capacitive sensor systems   
               

     Other Modes 
     Provided a 2D or 3D positioning system (e.g. camera based, or capacitive sensor system), it is also possible to evaluate partial patterns (e.g. a partially drawn circle) using, for example, image processing techniques. However, this would require additional algorithmic machinery (scaling, rotation, new distance measures).

Technology Category: 3