Portable computing-based navigational aids are well known in the art. Typically, such aids provide detailed directions to enable a user to travel from an origin location to a fixed destination location, typically specified by an address, while performing another task, such as operating a moving vehicle. Detailed directions are typically in the form of so-called “turn-by-turn” instructions that inform the user, at the appropriate time, of each turn, or other change in the direction of travel, that the user is to perform in order to travel from the origin location to a destination location. Such turn-by-turn instructions are particularly advantageous to users operating a moving vehicle, because they enable the user to continue to focus on the task of operating the moving vehicle safely, and do not cause the user to be distracted by reading a map, or otherwise performing any action relative to determining the navigation path themselves.
Portable computing-based navigational aids are typically either a dedicated portable computing device that is directed solely, or at least primarily, to the task of providing turn-by-turn directions, or they are a multi-use portable computing device, such as a cellular telephone, or vehicle audio component, that can provide turn-by-turn directions while also performing other tasks, such as enabling the user to make cellular telephone calls, or listen to music. To provide increased responsiveness, portable computing-based navigational aids also typically comprise a locally stored database of fixed destination locations, such as street addresses, to which the user can request turn-by-turn directions. Such turn-by-turn directions can, then, be computed by the portable computing-based navigational aid based on the known location of the specified fixed destination, such as can be obtained from the locally stored database, and the known current location of the user, such as can be obtained from a Global Positioning System (GPS) mechanism, or other location determining mechanism, that can be part of the portable computing-based navigational aid.
In one embodiment, rather than navigating to a fixed destination location, a user can be provided with detailed directions, such as turn-by-turn directions, to a dynamic destination, or a destination that is not fixed and can be moving. The dynamic destination can be one or more people, or, more particularly, the location of one or more people or the location of one or more computing devices co-located with the one or more people. Alternatively, the dynamic destination can be influenced by the locations of one or more people. In such a manner, a user can be routed to another person or group of people, irrespective of their location and whether they are stationary or moving.
In another embodiment, location information can be collected from users and can be shared with other users for purposes of enabling one user to follow another, or for enabling a group of users to rendezvous. To protect user privacy, location information of any given user can be shared with others only to the extent that that user permits access, by others, to such location information. Flexible options can enable users to allow their location information to be shared only with other specific users, only during specific times of day, only when the users whose location is to be shared are within a predefined geographic area, or other like flexible options.
In a further embodiment, one user can select one or more other users that the first user wishes to follow, or with whom the first user wishes to rendezvous, based on any identifier associated with such one or more other users. Such identifiers can include aliases, handles, or other identifiers utilized in other contexts, such as social networking contexts, c-commerce contexts and other like contexts. To provide for such functionality, a user's location can be associated with a collection of identifiers that identify such a user, and interoperability can be established between services that can collect, or otherwise obtain, a user's location, and network services within which the user is associated with the collection of identifiers.
In a still further embodiment, one user can be provided with detailed directions to another user, thereby enabling the first user to “follow” the second user. The detailed directions can be derived based on a current location and direction of the second user, or they can be derived based on a predicted location of the second user. Predicted locations can be based on that second user's rate and direction of travel, as well as other contextual and historical information about that second user, and contextual information about the area currently surrounding the second user.
In a yet further embodiment, multiple users can be provided with detailed directions to one another, thereby enabling the group of multiple users to “rendezvous” with each other. Each user in the group of users can be provided with detailed directions to the same location, thereby providing for a rendezvous at a precise location, or each user in the group of users can be provided with detailed directions to user-specific locations that can vary among the users in the group, thereby providing for a rendezvous in a general area. The detailed directions provided can be to intermediate, or “staging”, locations from which further detailed directions can be provided, either to further intermediate locations, or to the final rendezvous locations.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Additional features and advantages will be made apparent from the following detailed description that proceeds with reference to the accompanying drawings.
The following detailed description may be best understood when taken in conjunction with the accompanying drawings, of which:
The following description relates to the provision of detailed directions to a user in order to guide that user to a dynamic destination that can be the location of one or more individuals, or that can be a location that is influenced by the locations of one or more individuals. The detailed directions can enable the user receiving them to select a person to “follow” or, alternatively, to select multiple people with which to “rendezvous”. The selection of one or more individuals can be via identifiers used by such individuals in network contexts, such as a social networking context or an e-commerce context. The location of each person can be obtained, such as through GPS data, signal triangulation, or other known mechanisms. The location can be linked to identifiers of such individuals and the network contexts within which such identifiers exist, thereby enabling such individuals to select, through such network contexts, the circumstances, if any, under which their location can be revealed to others. Such circumstances can be defined by specific individuals, specific times of day, specific geographic regions, and other determinants. Detailed directions enabling one user to follow another, selected, user can be based on the selected user's anticipated location, based on current rate and direction of travel or they can be based on predictions of likely destinations of the selected user. Such predictions can be based on geographic information as well as historical and contextual information. Detailed directions enabling multiple users to rendezvous can be based on a rendezvous location, which can be the same for all users, or which can differ for one or more of the users, such as if the rendezvous only needed to occur within a defined area, as opposed to at a specific location, or the turn-by-turn directions can be based on intermediate, “staging” locations from which further intermediate, or ultimate, destinations can be selected and routed to.
The techniques described herein focus on the provision of turn-by-turn directions within larger geographic contexts, such as a metropolitan region. The mechanisms described, however, can be equally utilized, without modification, to generate detailed directions irrespective of the geographic context, including, for example, detailed directions within a campus context, multi-floor office building context, and other like contexts. Similarly, the mechanisms described, while they are described within the context of navigating a motor vehicle, can be equally utilized, without modification, to provide directions within the context of a user traveling on foot, utilizing public transportation, or any other mode of transportation. As such, the term “turn-by-turn directions” is not meant to limit the below descriptions to directions provided only to a user within the context of navigating a motor vehicle. Instead, utilization of the term “turn-by-turn directions” means the provision of any set of detailed, step-by-step directions, especially as to changes in direction, that are provided to a user at the time and location when such changes in direction are to be executed by the user, irrespective of the geographic context within which such detailed directions are provided, and irrespective of the mode of transportation utilized to execute such directions.
Although not required, the description below will be in the general context of computer-executable instructions, such as program modules, being executed by a computing device. More specifically, the description will reference acts and symbolic representations of operations that are performed by one or more computing devices or peripherals, unless indicated otherwise. As such, it will be understood that such acts and operations, which are at times referred to as being computer-executed, include the manipulation by a processing unit of electrical signals representing data in a structured form. This manipulation transforms the data or maintains it at locations in memory, which reconfigures or otherwise alters the operation of the computing device or peripherals in a manner well understood by those skilled in the art. The data structures where data is maintained are physical locations that have particular properties defined by the format of the data.
Generally, program modules include routines, programs, objects, components, data structures, and the like that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the computing devices need not be limited to conventional personal computers, and include other computing configurations, including hand-held devices, multi-processor systems, microprocessor based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Similarly, the computing devices need not be limited to stand-alone computing devices, as the mechanisms may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Turning to
The locations of particular individuals, such as the locations of the individuals “A” and “B” shown in the geographic region 199, can be obtained by a user location collector 192. In one embodiment, the location information 191 can be obtained from sensors proximate to individual users that directly measure those users' location, such as sensors that utilize the well-known Global Positioning System (GPS). For example, as will be known by those skilled in the art, many modern computing devices that provide detailed directions, such as turn-by-turn instructions, including dedicated, navigation-specific, computing devices and also more general computing devices, such as cellular telephones and vehicular audio systems, also comprise GPS sensors that can determine an accurate location of the computing device comprising those sensors. In another embodiment, however, the location information 191 can be obtained by indirect means. For example, the location information 191 can be obtained by triangulating wireless signals that may be sent by a navigation-capable computing device co-located with the individual users. Alternatively, the location information 191 can be obtained through observation and deduction such as, for example, by determining the location of a navigation-capable computing device, co-located with an individual user, based on the location of a local wireless network to which such a navigation-capable computing device is communicationally coupled.
In one embodiment, the user location collector 192 can interface with one or more network contexts 194 to associate the obtained information with one or more users via user identifiers utilized to identify such users within specific network contexts. For example, the network contexts 194 can comprise social networking contexts. As will be known by those skilled in the art, users of such social networking contexts select for themselves one or more identifiers with which they can be identified within those social networking contexts. The location information 191 for such users, that is received by the user location collector 192 can, via the interface between the user location collector 192 and the network contexts 194, be associated with one or more identifiers of such users within social networking contexts. In such a manner, as will be described in further detail below, a user can be identified and selected, for purposes of the below-described mechanisms, by their identifier within the social networking context. Similarly, such a user can utilize existing social networking contexts to establish certain privacy restrictions, such as, for example, limiting which other individuals can be granted access to that user's location, time periods during which that user's location may be made available to other individuals, geographic areas within which that user's location may be made available to other individuals, and other like restrictions, which can be applied either individually or in combination.
With reference to various established network contexts 194, a user location sharing mechanism 196 can provide location information 197 to other users, thereby enabling those other users to receive detailed directions, such as turn-by-turn instructions, with which they can be guided to follow other users, or to rendezvous with other users. Additionally, should the computing device that is co-located with individual users not be capable of generating detailed directions, or if it is more efficient to centrally generate such directions, the user location sharing mechanism 196 can further comprise a routing mechanism as well that can provide location and routing information 197.
As an example of the utility of the user location information 197 that can be provided to other users, reference is made to the exemplary users “A” and “B” whose locations are illustrated in the geographic region 199 shown in the system 100 of
If the user A has allowed their location to be revealed to the user B, then a routing between the user B and the user A can be determined and provided to the user B. In one embodiment, the user A can allow their location to be revealed to the user B through settings that can be accessed via one or more social networking contexts to which the user A belongs. For example, as will be known by those skilled in the art, typical social networking contexts provide for a myriad of options for protecting user privacy and specifying which information can be disseminated to which groups of people. In a similar manner, the user A could utilize such typical social networking contexts to specify specific ones, or groups, of individuals to whom the location of the user A could be revealed. Alternatively, or in addition, the user A could specify particular times of the day during which their location could be revealed. For example, if the user A was employed in a capacity in which their location needed to be known, then the user A could specify that their location could be revealed during normal business. As another example, if the user A wanted to enable their friends to meet up with user A, then user A could specify that their location could be revealed between the hours of, for example, 7 and 10 PM. As yet another criteria by which the revelation of a user's location could be controlled, the user A can specify particular geographic areas within which their location can be revealed. Thus, for example, the user A could specify that their location can be revealed to others if the user A is within a downtown area. In another embodiment, rather than establishing the criteria by which the revelation of a user's location can be controlled via a network context, such as a social networking context, a user can establish the criteria by which the revelation of their location can be controlled through options that can be presented to the user as part of a navigation-capable computing device that is co-located with the user and that can be providing the location information 191 in the first place.
As indicated, if the user A has allowed their location to be revealed to the user B then a routing between the user B and the user A can be determined and provided the user B to enable the user B to follow the user A. For example, in the embodiment illustrated by the system 100 of
In one embodiment, the user B can be routed to follow the user A based upon a current location of the user A, such as the location 130, and a direction and speed in which the user A is moving, such as that illustrated by the vector 131. In such an embodiment, the user B at the location 140 can be provided with a routing analogous to the routing 141 illustrated in the system 100 of
More specifically, as illustrated in the exemplary system 100 of
In another embodiment, the routings provided to a user to enable that user to follow another user need not be merely based upon the current location of the user being followed and their direction of travel, it can, instead, be based on a predicted destination of the user being followed. Turning to
More particularly, in one embodiment, when the user A is at the location 130 and traveling in the direction indicated by the vector 131, it can be predicted that the user A is traveling to the predicted destination 231 because the user A traditionally travels to the predicted destination 231. For example, the user location sharing and routing mechanisms 196 can comprise historical data regarding the location of users, including the user A. Such historical data can reveal, for example, that the user A often shops at the predicted destination 231 and, furthermore, when the user A does shop at the predicted destination 231, the user A historically travels to that location via the street 107. Based upon such a historical context, and based upon the fact that the user A is at the location 130 and traveling in a southbound direction on the street 107, as illustrated by the vector 131, a prediction can be made that the user A is likely heading to the predicted destination 231. Consequently, the routing 241 that can be provided to the user B at the location 140, to enable the user B to follow the user A, can route the user B to the predicted destination 231 of the user A.
As before, a routing provided to a user, such as the routing 241 that was provided to the user B, can be reevaluated if the target of the routing changes, if the user following the routing deviates from it, or if environmental impacts affect the routing. In the example illustrated by the system 200 of
In one embodiment, rather than deriving a predicted destination, such as the predicted destination 251, based on a historical context, such as what a particular user traditionally does, the duration of a predicted destination can be based on observed trends or otherwise non-user specific historical contexts. For example, the predicted destination 251 can have been selected as a predicted destination because it represents the location of a popular shopping mall or other like popular destination. Alternatively, or in addition, a non-user specific historical context could, for example, reveal that most people traveling eastbound on the street 106 are proceeding to the predicted destination 251, which, again, can be a shopping mall or other like often-visited location. Utilizing such non-user specific historical context, a predicted destination 251 can be derived and a routing 261 can be presented to the user B to guide them from the location 160 of the user B at the time that the user A changed their course to the predicted destination 251.
Continuing the example illustrated in the system 200 of
In another embodiment, the routing to a dynamic location can enable multiple users to rendezvous with one another. In such an embodiment, the dynamic location need not be a person or other entity whose location is variable and dynamic, but rather can be an intermediate or final rendezvous location. Turning to
Turning back to the system 300 of
Optionally, in one embodiment, the navigation-capable computing devices that are co-located with each individual user can provide those users with a “radar view” that can illustrate the location of each of the other users with whom the rendezvous is occurring. For example, in one embodiment, the radar view that is presented can be similar to the geographic diagram 399 shown in
As indicated previously, the routing provided, such as the routings 331, 341 and 351 shown in the system 300 of
In another embodiment, rather than routing each user to a singular rendezvous location, such as the rendezvous location 410 shown in the system 400 of
Turning to
Subsequently, as each individual user proceeds along their routing, a subsequent rendezvous area 520 can be established. The establishing of a subsequent intermediate area 520 can occur due to changes in the group of users that are rendezvousing, such as described in detail above, or it can occur due to one or more of the users reaching their respective rendezvous locations within the prior intermediate rendezvous area 510. For example, as illustrated in the system 500 of
Turning to
Alternatively, if, at step 615, it is determined that the person that was selected at step 610 has allowed the user to follow them, processing can proceed to step 620 at which point the location of the user and the selected person can be obtained. As will be known by those skilled in the art, the location of the user can be obtained through dedicated sensors, such as GPS sensors, that can be part of the navigation-capable computing device executing the steps of the flow diagram 600 of
In one embodiment, the following of the selected person can be based on that person's current location and direction of travel, as described previously, while, in another embodiment, the following of the selected person can be based on a prediction of where that person is going, as also described previously. Consequently, in one embodiment, processing can proceed from the step 620, described above, to the step 630, at which point a route can be generated from the user's current location to a target location that can either be based on the selected individual's current location and direction of travel, or that can be based on a predicted destination of that selected person. In the latter case, prior to proceeding with step 630 an optional step 625 can be performed where a destination of the selected person can be predicted, such as in the manner described in detail above. Additionally, both steps 625 and 630 can be performed by a navigation-capable computing device that is co-located with the user, or they can be performed by remote computing devices, such as server computing devices, and then communicated to the navigation-capable computing device that is co-located with the user.
Once a routing has been generated, such as at step 630, processing can proceed with a series of determinations at steps 635, 640, 645 and 650. As will be recognized by those skilled in the art, while the determinations of step 635, 640, 645 and 650 are illustrated as occurring in a serial manner, they can equally be performed in a parallel manner, in which case the performance of any one such determination need not necessarily be based on the results of any prior determination. As illustrated in the flow diagram 600 of
Turning to
Conversely, if, at step 715, it is determined that the people selected at step 710 are willing to rendezvous, then the rendezvous location can be selected at step 720. In one embodiment, step 720 can be performed locally, while, in another embodiment, step 720 can be performed remotely and the resulting rendezvous location can be communicated to the navigation-capable computing device that is co-located with the user. As will be recognized by those skilled in the art, since the rendezvous location selected at step 720 is not likely to be the location of any one of the people that are rendezvousing, the performance of step 720 at a remote computing device can provide for greater user privacy since none of the individuals rendezvousing can be provided with the location of the other individuals, such as for purposes of performing step 720. Additionally, as indicated previously, the rendezvous location selected at step 720 can be the same rendezvous location that is provided to one or more other individuals that are part of the rendezvous, or it can be a different, user-specific location that is unique to that user and differs from the rendezvous locations to which other users are being directed. User-specific locations can represent final rendezvous locations, such as in the context of a rendezvous at a larger geographic area, such as a mall or a park, or they can represent intermediate rendezvous locations, such as locations that can act as staging locations from which further intermediate, or final, rendezvous locations can be routed to.
Once a rendezvous location is determined at step 720, processing can proceed to step 725 and a routing can be generated from the user's current location to the user's rendezvous location. As will be recognized by those skilled in the art, such routing can be performed in accordance with traditional mechanisms for determining an efficient route by which a user at one location can be guided to another destination, and can take into account environmental variables such as traffic and road closures. Additionally, as indicated previously, the generation of the route at step 725 can be performed either locally on the navigation-capable computing device that is co-located with the user, or it can be performed remotely and communicated to that computing device, such as through cellular or wireless networks.
Once a route has been generated, at step 725, the user can be provided with turn-by-turn directions as they proceed along that route. While the user is proceeding along the route, a series of determinations at steps 730, 735, 740, 745, 750 and 755 can be performed. As before, the determinations at steps 730, 735, 740, 745, 750 and 755 can be performed, either in series as illustrated, or in parallel, in which case the dependencies shown in
If, at step 745, it is determined that the group of individuals participating in the rendezvous have changed, then processing can return to step 720 and a new rendezvous location can be selected, taking into account the changed group of individuals now participating in the rendezvous. Conversely, if, at step 745, is determined that there has been no change in the individuals participating in the rendezvous, then processing can proceed to step 750, at which point a determination can be made if the user has reached the target established at step 720. If, at step 750, it is determined that the user has not yet reached the target, processing can loop back to step 730. If, however, at step 750, it is determined that the user has already reached the target established at step 720, a subsequent determination, at step 755, can determine whether there is a further target. For example, the target location selected at step 720 can have been just an intermediate rendezvous location, and, at step 755, a determination can be made as to whether there are further rendezvous locations, including further intermediate rendezvous locations or final rendezvous locations. If, at step 755, is determined that the target location specified at step 720 was, in fact, the final rendezvous location, then the relevant processing can end at step 760. Alternatively, if, at step 755, is determined that there are further rendezvous locations, then processing can return to step 720, at which point further rendezvous location can be selected.
Throughout the descriptions above, reference has been made to a navigation-capable computing device that can be co-located with a user. Turning to
The computing device 800 also typically includes computer readable media, which can include any available media that can be accessed by computing device 800 and includes both volatile and nonvolatile media and removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computing device 800. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 830 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input/output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computing device 800, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 820. By way of example, and not limitation,
The computing device 800 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
Of relevance to the descriptions above, the computing device 800 may operate in a networked environment using logical connections to one or more remote computers. For example, the computing device 800 is shown in
Additionally, although not specifically illustrated, the computing device 800 can comprise hardware and/or software that can enable the computing device 800 to ascertain its position. For example, the computing device 800 can comprise a GPS receiver for receiving GPS signals and deriving therefrom, in a manner known to those skilled in the art, the location of the computing device 800. Alternatively, the computing device 800 can ascertain its position through signal triangulation or other like deductive mechanisms that can be implemented though software, often in combination with hardware, such as an antenna through which signals to be utilized for triangulation can be received. Such antennae can be considered to be part of the network interface 870 and can include wireless and cellular data antennae.
As can be seen from the above descriptions, mechanisms for providing detailed directions to enable following of a user or rendezvous of multiple users have been presented. In view of the many possible variations of the subject matter described herein, we claim as our invention all such embodiments as may come within the scope of the following claims and equivalents thereto.