Abstract:
A group notification system and associated method that allow particular activities to be executed based on the group dynamics, such as the dynamics of organizing meetings. The system facilitates the availability of knowledge concerning the proximity and direction of movement of individuals, objects, or groups, and whether this information satisfies preset criteria or rules. One such criterion is that the proximity distance of the group members be less than a predetermined threshold range. The threshold range can be adjustable or programmable.

Description:
CROSS REFERENCE TO RELATED APPLICATION  
       [0001]    This application relates to co-pending patent application, titled “System and Method for Implementing Proximity or Location Driven Activities,” Ser. No. ______, filed concurrently herewith, assigned to the same assignee as the present invention, and which is incorporated herein by reference in its entirety. 
     
    
     
       FIELD OF THE INVENTION  
         [0002]    The present invention relates to the field of location dependent data processing, and particularly to a software system and associated method for use with a Global Positioning System (GPS) or equivalent locator scheme for wireless position tracking of an object or person. More specifically, the system and method permit knowledge exchange of the proximity of individuals, objects, groups of persons, or collection of objects, to each other, and are suited for the implementation of location driven activities and/or location based services.  
         BACKGROUND OF THE INVENTION  
         [0003]    Internet based services and derived e-commerce applications are gaining increasing popularity, leading to the integration of diverse computing and communications devices, such as mobile phones, PDAs, and GPS systems. Such integration has expanded the need for a new generation of “smart devices”, independent electronic, web-oriented, software and technological systems and services. One specific need is for a system that uses proximity and/or locations as a means of facilitating the communication between a user and a computer system, such as a server.  
           [0004]    The following publications describe current attempts to use location tracking in various applications, and illustrate background material to help explain the context of the problem addressed by the present invention:  
           [0005]    U.S. Pat. No. 5,907,293 to Tognazzini;  
           [0006]    U.S. Pat. No. 5,422,816 to Sprague et al.; and  
           [0007]    U.S. Pat. No. 6,100,806 to Gaukel.  
           [0008]    Current systems do not facilitate the availability of knowledge concerning the proximity of individuals to each other, and the direction of movement of the individuals or objects. This information could be used to determine for example, whether an event, such as a meeting could take place, or whether a group member will be late to the meeting and by how long. Such information could be quite significant for business meetings where timing is critical and individual presence is essential.  
           [0009]    However, the problem remains that there exists no mechanism which relates to group dynamics and which permits individuals or groups to make decisions based on information available about the proximity of other individuals or groups. The need for such a mechanism has heretofore remained unsatisfied.  
         SUMMARY OF THE INVENTION  
         [0010]    It is a feature of the present invention to satisfy this need as it relates, for example to group dynamics, such as the dynamics of organizing meetings. This invention facilitates the availability of knowledge concerning the proximity and direction of movement of individuals, and whether this information satisfies preset logical criteria.  
           [0011]    The following examples will help illustrate exemplary situations being addressed by the present invention:  
           [0012]    (1) The absence of a particular individual can void the significance of the meeting. The meeting should be cancelled or delayed until this individual is present.  
           [0013]    (2) The absence of a particular individual is not important and the meeting can proceed regardless.  
           [0014]    (3) It is necessary to have a quorum of people present to validate the meeting.  
           [0015]    (4) It may be helpful to know the trajectory and direction of movement of the people involved to maximize the use of time of those who are ready to attend the meeting. For example, a meeting of persons A, B, C, and D is going to be delayed since person D is held up in traffic and will take  15  minutes to arrive. Persons A, B, and C can be notified automatically, delaying their effort to be at the meeting at the scheduled time, and allowing them to make better use of their time instead of sitting idle in a conference room.  
           [0016]    (5) Client C1, perhaps a company or a group of individuals, belongs to group M. Client C1 wishes to get a notification, only when one or more members of group M are close to it (perhaps closer than 5 km). Based on this information, Client C1 can decide to start the meeting, initiate a conference call, etc.  
           [0017]    (6) Client C2 belongs to group M and group N. Client C2 will get a notification when client C1 is closer than 2 km or one of the members of group M is closer than 100 m, or one of the members of group N is closer than 0.5 km.  
           [0018]    (7) Client C3 wishes to get a notification only when client C1 is within a range of 0.5 km.  
           [0019]    The foregoing and other features of the present invention are realized by a group notification system and method for implementing and indicating the proximity of individuals or groups to other individuals or groups. The system generally comprises two main components: a plurality of user modules that identify the group members (or objects), and one or more group location alert servers.  
           [0020]    Each user module communicates with the group location alert server, and includes a GPS interface that receives location information and that periodically sends updated location information to the group location alert server. In addition, the user module receives data from the group location alert server and displays it to the group member. The user module operates under the control of a session manager and transmits the member identifying data to the group location alert server over a WAN interface. The WAN interface supports a wireless connection to the Internet, and allows the user module to exchange information with the group location alert server.  
           [0021]    The group location alert server collects information from the various user modules in the field, and sorts, collates, and identifies groupings, locations, users&#39; proximities, and/or users&#39; directions of movement, to identify the information to send to various clients. The group location alert server includes a session manager that acquires the location information of the various users from the various user modules over a WAN interface or from the Internet. The group location alert server notifies a matching module of each user&#39;s location, by sending a user identification label to the matching module.  
           [0022]    The WAN interface supports the connection to the Internet for the communication and interaction between the group location alert server and the various user modules. The matching module calculates the distance between two users&#39; locations. When the matching module receives a notification from the session manager, it calculates the distance between the current location of the user module and the locations of all the other relevant user modules.  
           [0023]    The matching module checks the profile database to identify the group, subgroup, groups, or subgroups to which a specific user belongs. The matching module requests all the identifications of the user modules belonging to the relevant groups from the profile database, which are relevant to a predetermined client. The matching module then calculates the distance between the user modules and compares them to a threshold range. When the calculated distance is less than a predetermined profile threshold, the matching module triggers a notification module to send a message to the client concerning the event status. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0024]    The various features of the present invention and the manner of attaining them will be described in greater detail with reference to the following description, claims, and drawings, wherein reference numerals are reused, where appropriate, to indicate a correspondence between the referenced items, and wherein:  
         [0025]    [0025]FIG. 1 is a schematic illustration of an exemplary operating environment in which a group notification system of the present invention can be used;  
         [0026]    [0026]FIG. 2 is a high level diagram illustrating the main components of the group notification system of FIG. 1;  
         [0027]    [0027]FIG. 3 is a block diagram illustrating the constituent building blocks of an exemplary user wireless module that forms part of the group notification system of FIG. 2;  
         [0028]    [0028]FIG. 4 is a block diagram illustrating the constituent building blocks of an exemplary group location alert server that forms part of the group notification system of FIG. 2;  
         [0029]    [0029]FIG. 5 is a block diagram illustrating the use of the group notification system of FIG. 2 by a group of users; and  
         [0030]    [0030]FIG. 6 is a flow chart representing an overall method of operation of the group notification system of FIG. 2. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0031]    The following definitions and explanations provide background information pertaining to the technical field of the present invention, and are intended to facilitate the understanding of the present invention without limiting its scope:  
         [0032]    Server: A software program or a computer that responds to requests from a web browser by returning (“serving”) web documents.  
         [0033]    Web browser: A software program that allows users to request and read hypertext documents. The browser gives some means of viewing the contents of web documents and of navigating from one document to another.  
         [0034]    Web document or page: A collection of data available on the World Wide Web and identified by a URL. In the simplest, most common case, a web page is a file written in HTML and stored on a web server. It is possible for the server to generate pages dynamically in response to a request from the user. A web page can be in any format that the browser or a helper application can display. The format is transmitted as part of the headers of the response as a MIME type, e.g. “text/html”, “image/gif”. An HTML web page will typically refer to other web pages and Internet resources by including hypertext links.  
         [0035]    World Wide Web (WWW): An Internet client—server hypertext distributed information retrieval system.  
         [0036]    The present group notification system and associated method continuously monitor the location of individuals or objects, based on their group membership, and compare their proximity to each other or to other groups. Rules are applied to determine the suitability of taking actions that are related to the collected proximity information.  
         [0037]    [0037]FIG. 1 portrays an overall environment in which a group notification system  10  according to the present invention may be used. The system  10  continuously monitors the locations of users (or objects) and compares their proximity to each other. The proximity information and locations of the group members are maintained by the system  10 .  
         [0038]    The group notification system  10  includes a software or computer program which is typically embedded within, or installed on, a host server  15 . Alternatively, the group notification system  10  can be saved on a suitable storage medium such as a diskette, a CD, a hard drive, or similar devices. Though one host server  15  is illustrated for simplicity of explanation, it should be clear that additional host servers  25 ,  27  can de dispersed geographically to co-ordinate the reduction of access time from, for example, clients such as  35 ,  37  and  39 .  
         [0039]    In addition, while the group notification system  10  will be described in connection with the WWW, it should be clear that the system  10  can also be used with a stand-alone database of computers, servers, gateways, and mobile computing devices for applications that do not need or desire interaction with the WWW.  
         [0040]    The cloud-like communication network  20  is comprised of communication lines and switches connecting servers such as servers  25  and  27 , to gateways  30 . The servers  25  and  27  and the gateway  30  provide the communication access to the WWW. Clients, such as remote Internet sites are represented by a variety of computers  35 ,  37  and  39  and can query the host server  15  for the desired information. The clients communicate to the servers  25 ,  27  the information concerning their function, such as their identification, and location.  
         [0041]    For clarity purpose, it would be convenient to draw a distinction between a user and a client. A user or group member refers for example to a mobile individual or object. A client refers to an individual, or group of individuals for whom the data concerning the location of the users is being coordinated.  
         [0042]    The host server  15  is connected to a network  20  (represented as a cloud to indicate an indeterminate number of connections) via a communications link such as a telephone, cable, or satellite link. The servers  25 ,  27  can be connected via high speed Internet network lines or links  44  and  46  to other computers and gateways. The servers  25 ,  27  provide access to stored information such as hypertext or web documents indicated generally at  50 . The hypertext documents  50  most likely include embedded hypertext links to other locally stored pages and may also contain information on symbol locations and functions such as timetables, menus, meeting manager applications, etc.  
         [0043]    An auxiliary component that could be used as part of the system  10  is represented by a mobile computing unit such as a personal digital assistant (PDA) with a downloadable software application suited to implement the operation of the present invention. A mobile telephone  199  can also be used as a mobile computing unit for the purposes of this invention. The increasing trend to combine personal digital assistants  38  with mobile telephones  199  is expected to facilitate the use of satellite communications to identify the user location with accuracy. A GPS satellite  198  could be used in conjunction with this invention to assist in locating the users and to establish communication between users, clients, servers and gateways.  
         [0044]    [0044]FIG. 2 represents a high level block diagram of the group notification system  10 . The system  10  generally comprises two main components: a plurality of user wireless modules  200 ,  300 , and one or more group location alert servers  400 . Since multiple users could be tracked using this system  10 , each user is equipped with a personalized user wireless module. These user wireless modules  200 ,  300  are typically similar in function and design, as illustrated by FIG. 3, and therefore only one representative user wireless module  200  will be described in detail. Each user wireless module  200 ,  300  has a means for identifying its user to the group location alert server  400 .  
         [0045]    Referring now to FIG. 3, the user wireless module  200  may be implemented, for example, within a laptop computer, mobile telephone, personal digital assistant (PDA), or integrated in a car system having a wireless wide area network (WAN) connection  243  for communicating with the group location alert server  400 . The user wireless module  200  includes a GPS interface  222  that receives location information, such as the current location of the user, and periodically sends updated location information to the group location alert server  400 . In addition, the user wireless module  200  receives data from the group location alert server  400  and displays it to the user on a display device  227 A.  
         [0046]    The user wireless module  200  operates under the control of a session manager  241  which is responsible for the interaction between the various components of the user wireless module  200 . It prepares data, such as location, proximity, direction of movement, user ID, etc., and transmits the same to the group location alert server  400  over the WAN interface  243 , and/or displays this data over the graphical user interface (GUI)  244  on the display device  227 A.  
         [0047]    The GPS interface  222  is implemented as a miniaturized GPS receiver that measures the time a radio signal requires to travel from the GPS satellite  198  until it arrives to a GPS antenna  225 . By knowing the speed of the radio signal (which is approximately the speed of light), and by timing the moment that each signal is transmitted, the distance to each of the GPS satellites in view can be determined. The final solution of these equations produces an exact position of the GPS antenna  225  in term of latitude and longitude. The GPS receiver interface  222  determines a current location of the user wireless module  222  and supplies its current location to the session manager  241 . Modern compact devices for interacting with the GPS satellites  198  and for providing the position data are readily available on the market, and can be attached, for example, to a user&#39;s clothing, a PDA  100 , or a laptop  35  (FIG. 1) as part of the user wireless module  200 .  
         [0048]    The WAN interface  243  supports a wireless connection to a computer network, such as the Internet. With this interface, the user wireless module  200  can exchange information with the group location alert server  400 . The graphical user interface (GUI)  244  is implemented in the user wireless module  200  to facilitate the system configuration and administration.  
         [0049]    The GPS antenna  255  connects to the GPS interface  222  to receive GPS data from the GPS satellite  198 . The WAN transceiver antenna  226  is used as a wireless connection. It is coupled to the WAN interface  243  of the user wireless module  200 . The output device  227 A may be implemented as a display of a wireless device. The input device  227 B may be implemented as a touch screen or any other suitable input device, such as a touch screen, keyboard, stylus, microphone combined with voice recognition software, etc.  
         [0050]    Wirth reference to FIG. 4, the group location alert server  400  collects information from the various user wireless modules  200 ,  300  in the field, and sorts, collates, and identifies groupings, locations, users&#39; proximities, and/or users&#39; directions of movement, to identify the information to send to various specific clients  35 ,  37 ,  39 , 100 , 199 . The group location alert server  400  notifies a client, a group, or individuals of the proximity of other persons or groups according to the software configuration established for the group or users.  
         [0051]    The group location alert server  400  includes a session manager  405  that acquires the location information of the various users from the various user wireless modules  200 ,  300  over a WAN interface  410  or from the Internet. The group location alert server  400  stores this information in a location database  415  and notifies a matching module  420  of each user&#39;s location, by sending a user identification label  422  to the matching module  420 .  
         [0052]    The WAN interface  410  supports the connection to the Internet for the communication and interaction between the group location alert server  400  and the various user wireless modules  200 ,  300 .  
         [0053]    The matching module  420  calculates the distance between two users&#39; locations. When the matching module  420  receives a notification from the session manager  405 , it calculates the distance between the current location of the user wireless module  200  and the locations of all the other relevant user wireless modules  300 . The relevant user wireless modules  300  may belong to a single client that specifies a plurality of groups or subgroups of users. These relations are specified through client inputs and are stored in a profile database  430  of the group location alert server  400 .  
         [0054]    The matching module  420  checks the profile database  430  to identify the group, subgroup, groups, or subgroups (collectively referred to as groups) to which a specific user belongs. The matching module  420  requests all the identifications of the user wireless modules  200 ,  300  belonging to the relevant groups from the profile database  430 , which are relevant to a predetermined client.  
         [0055]    The matching module  420  then calculates the distance between the user modules  200 ,  300 , compares them to a predetermined threshold range, and stores this information in the location database  415 . When the calculated distance is less than a predetermined profile threshold, which could be a distance, a time, or a logical value such as a quorum number, the matching module  420  triggers a notification module  435  to send a message to the client concerning the event status. The location database  415  may also be implemented as a database to store users&#39; locations for calculating the distance between two or more user wireless modules  200 ,  300 .  
         [0056]    The profile database (also referred to as definition table)  430  contains information about which group a user wireless module  200  belongs, the proximity range, or threshold, for which a user wireless module  200 ,  300  will trigger a notification to the client. Furthermore, the profile database  430  contains a reference location  240  for other clients.  
         [0057]    Exemplary situations of how the system  10  may be used are as follows, with further reference to FIG. 1:  
         [0058]    A first client  35  is interested in being notified if the user or user wireless module  200  is within 2 km from a reference point of 50° 34′N 45° 13′E.  
         [0059]    A second client  37  is interested in being notified if the user or user wireless module  200  is within 0.5 km from a reference point of 10° 22′S 16° 59′W.  
         [0060]    The third client  39  is interested in being notified if the user or user wireless module  200  is within 0.75 km of the or user wireless module  300 .  
         [0061]    The fourth client  15  is interested in being notified if the users or user wireless modules  200 ,  300  are within 1.0 km of a reference point, the New York City Library on Fifth Avenue. The group location alert server  400  is provided with means for identifying the location of the library.  
         [0062]    The fifth client  100  is interested in being notified if either user or user wireless module  200  or  300  is within 1.0 km of a reference point, New York City Library on Fifth Avenue.  
         [0063]    The sixth client  199  is interested in being notified if a certain group (M) of users, or a plurality of user wireless module  200  or  300 , are simultaneously within 200 meters of a reference point, such as meeting room  121  in Building  2576 .  
         [0064]    The seventh client (not shown) is interested in being notified if a group (N) of users, or a plurality of user wireless module  200  or  300 , are within 1 mile of the reference point, meeting room  121  in Building  2576 .  
         [0065]    The eight client (also not shown) is interested in being notified if the users of groups (M) and (N) are within 100 meters of the reference point, meeting room  121  in Building  2576 .  
         [0066]    In all cases, when the trigger event occurs, a notification is sent from notification module  435  of FIG. 4, to the client, by various communications means, including but not limited to email, fax, pager, phone call, or another suitable technique of choice. Updates of a specified regularity are also sent to the client. Ancillary information can be added to the transmission to the client concerning time, moving direction towards or away from the reference point, estimated time of arrival, and so forth, depending on the frequency of the updates, and the desirability of the information for the client.  
         [0067]    The notification module  435  is triggered by the matching module  420 . The transmitted information concerning specific users is stored in a status database  440 , and compared to incoming data from the matching module  420 . No data is sent if changes have not occurred in the status of the users.  
         [0068]    A user/group manager  425  manages the profile database  430 . It updates the records for the user. The user may have permission to set his or her profile over the Internet using his or her user wireless module  200 . Alternatively, only a system administrator of the group location alert server  400 , with an executive privilege, may change the profile database  430  containing information about the clients and the user wireless modules  200 ,  300 .  
         [0069]    The matching module  420  performs a calculation to determine the distance between various user wireless modules  200 ,  300  and predetermined reference points when prompted by the session manager  405 . The distance is calculated using data from the GPS derived location data of the user wireless modules  200 ,  300 . The following is a mathematical formula for calculating the distance between any two points given their latitude and longitude in degrees, which can be used to determine the distances to be compared to the threshold ranges. This latitude and longitude information may be derived from GPS data in the system  10 .  
         [0070]    Lat1=Latitude of first position (degrees)  
         [0071]    Lat2=Latitude of second position (degrees)  
         [0072]    Long1=Longitude of first position (degrees)  
         [0073]    Long2=Longitude of second position (degrees)  
         [0074]    Distance (kms)=1.852*60*ArcCos(SIN(Lat1)*SIN(Lat2)+COS(Lat1)*COS(Lat2)*COS(Long2-Long1))).  
         [0075]    While the present system  10  has been described in relation to two users or user wireless modules  200 ,  300 , it should be clear that the system  10  can also be used to provide the desired service to a much larger group of users (FIG. 5) that are collectively referenced by group  800 . In the situation of a group of users  800  wishing to meet, each of the users is provided with his or her own user mobile computing device  200 A,  200 B,  200 C,  200 D, etc. that interact with the group location alert server  400  as described earlier in connection with the user wireless modules  200 . However, in the example of a group attendance, the group location alert server  400  triggers or initiates the desired application or business transaction, once all the group members  200 A,  200 B,  200 C,  200 D are within a desired proximity distance or range.  
         [0076]    The proximity distance or range of the group members can be defined in numerous way, some of which are enumerated below:  
         [0077]    1. The proximity is the distance between two or more group members, such as the distance between user  200 A and user  200 D (shown in dashed line).  
         [0078]    2. The proximity is the distance between the majority, or all the members of group  800  (shown in dashed lines).  
         [0079]    3. The proximity is the distance between the majority, or all the members of group  800  and a dynamic geometric center (GC) formed by interpolating the positions of all or the majority of the group members.  
         [0080]    4. The proximity between one group  800  and another group (or user)  850  is the distance between group (or user)  850 , and either (1) one or more members (i.e.,  200 A,  200 D) of group  800  or (2) the dynamic geometric center GC of group  800  (shown in solid lines).  
         [0081]    Referring now to FIG. 6, it illustrates the overall method of operation  500  of the group notification system  10 . With further reference to FIG. 2, the method  500  starts at step  505  by having the session manager  405  idle in a wait mode, either for a data input from the user wireless modules  200 ,  300 , or for a request from a client for data about a group of users.  
         [0082]    Once data is received from a user wireless module  200 , the matching module  420  retrieves the user identification data (userid) from the received data, at step  510 . Using the retrieved userid, the matching module  420  requests, at step  515 , the name of the group (groupname) to which this user wireless module  200  belongs.  
         [0083]    The method  500  then inquires at decision step  520  if there exists a groupname for the user wireless module  200 . If it does, the session manager  405  retrieves the corresponding groupname at step  525 , and extracts all the userids of the groupname from the profile database  430 . The method  500  then proceeds to step  530  where the user identification information (userid) and the group information (groupname) are used to identify the “relevant users” or relevant user wireless modules  200 ,  300  to track for a particular event. Reconsidering decision step  520 , if the method  500  did not locate a groupname for the user wireless module  200 , it proceeds directly to step  530 .  
         [0084]    From step  530 , the method  500  proceeds to decision step  550  where it inquires if one or more userids resulted from the request at step  550 . If no relevant users (identified by the userids) are found at step  550 , the method  500  returns to an idle state at step  505 .  
         [0085]    On the other hand, if one of more relevant userids are found at step  505 , the method  500  proceeds to step  555  where it requests the user location coordinates for each userid, from the location database  415 . The method  500  then calculates, at step  560 , the proximity distance of the relevant user wireless modules  200 ,  300 , as discussed earlier in connection with FIG. 5. If the users&#39; locations change during the calculation process, then the method  500  recalculates the proximity threshold, and proceeds to decision step  565 .  
         [0086]    At decision step  565 , method  500  determines if the proximity distance which was measured or calculated at step  560  is less than, or equal to a predetermined threshold value. If this condition is satisfied, method  500  sends the user data, such as location, proximity, direction of movement, user ID, etc., to the notification module  435 . In turn, the notification module  435  notifies the client concerning the status of the relevant user wireless module  200 , such as the estimated time of arrival, as described earlier.  
         [0087]    In addition, method  500  proceeds to decision step  575  and checks for the occurrence of additional events that might influence or affect the determination at decision step  565 . If any such additional event exists, such as when the user location has changed, method  500  returns to step  560 , recalculates the distance between the reference location and the new user location, and repeats steps  565 ,  570 , and  575 , until it determines, at step  565  that the user distance exceeds the threshold value.  
         [0088]    If at step  565 , method  500  determines that the proximity distance exceeds the threshold value, it proceeds to decision step  575  and the matching module  420  makes the inquiry described earlier. The matching module  420  sends the user data to the notification module  435 . In turn, the notification module  435  notifies the client concerning the status of the relevant user wireless module  200 , such as a message to the effect that the “user is out of range.” 
         [0089]    If method  500  determines at step  575  that it has covered all potential occurrences or events, it proceeds to the idle state at step  505 .  
         [0090]    It is to be understood that the specific embodiments of the present invention have been described as being merely illustrative of certain possible applications of the group notification system and method described herein. Numerous modifications may be made to the system and method without departing from the spirit and scope of the present invention. For example, while the communication between the components of the system  10  has been described in terms of a GPS system, it should be understood that other physical locations retriever systems, including but not limited to wireless networks, could alternatively be used. One such communication and identification system is described in a co-pending U.S. application titled “System and Method for Providing Time-limited Access to People, Objects and Services”, Ser. No. 09/672,360, which was filed on Sep. 28, 2000 and assigned to the same assignee as the present invention, and which is incorporated herein by reference in its entirety.