Patent Publication Number: US-8527348-B2

Title: Short-range communication enabled location service

Description:
RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 13/174,947, filed Jul. 1, 2011, which claims the benefit of U.S. Provisional Application No. 61/484,076, filed May 9, 2011, the entire contents of each of which are incorporated herein in its entirety. 
    
    
     TECHNICAL FIELD 
     This disclosure relates to electronic devices and, more specifically, to short-range communication of electronic devices. 
     BACKGROUND 
     A user may interact with applications executing on a computing device (e.g., mobile phone, tablet computer, smart phone, or the like). For instance, a user may install, view, or delete an application on a computing device. 
     In some instances, a user may interact with the computing device through a graphical user interface. In some examples, the computing device may include a short-range communication device. An application executing on the computing device may access the short-range communication device. 
     SUMMARY 
     In one example, a method includes receiving, by a mobile computing device, an item descriptor that describes one or more physical items. The method also includes receiving, by the mobile computing device from a peripheral device using short-range wireless communication, a data payload comprising information usable to locate at least one of the one or more physical items. The method further includes selecting, by the mobile computing device, location data based on the item descriptor and the data payload, wherein the physical location data includes a representation of a physical location of the at least one of the one or more physical items; and outputting, from an output device of the mobile computing device the physical location data that is usable to locate the at least one of the one or more physical items. 
     In one example, a computer-readable storage medium is encoded with instructions that, when executed, cause one or more processors of a computing device to perform operations including: receiving, by a mobile computing device, an item descriptor that describes one or more physical items. The a computer-readable storage is further encoded with instructions that, when executed, cause one or more processors of a computing device to perform operations including receiving, by the mobile computing device and from a peripheral device using short-range wireless communication, a data payload comprising information usable to locate at least one of the one or more physical items. The a computer-readable storage is also encoded with instructions that, when executed, cause one or more processors of a computing device to perform operations including selecting, by the mobile computing device, physical location data based on the item descriptor and the data payload, wherein the physical location data includes a representation of a physical location of the at least one of the one or more physical items; and outputting, from an output device of the mobile computing device, the physical location data that is usable to locate the at least one of the one or more physical items. 
     In one example, a computing device includes: one or more processors. The computing device further includes an input device to receive an item descriptor that describes one or more physical items. The computing device also includes a short-range communication device to receive a data payload provided by a peripheral device using short-range wireless communication comprising information usable to locate at least one of the one or more physical items. The computing device further includes means for selecting physical location data based on the item descriptor and the data payload, wherein the physical location data includes a representation of a physical location of the at least one of the one or more physical items. The computing device also includes an output device to output the physical location data that is usable to locate the at least one of the one or more physical items. 
     The details of one or more examples of this disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  is a diagram illustrating an example of a computing device that may be configured to execute an application in accordance with one or more aspects of the present disclosure. 
         FIG. 2  is a diagram illustrating further details of one example of computing device  2  shown in  FIG. 1 , in accordance with one or more aspects of the present disclosure. 
         FIG. 3  is a flow diagram illustrating an example method that may be performed by a computing device to quickly identify a physical location of an item with enhanced precision, in accordance with one or more aspects of the present disclosure. 
         FIG. 4  is a diagram illustrating an example of a computing device that may be configured to communicate with a remote server, in accordance with one or more aspects of the present disclosure. 
         FIG. 5  is a diagram illustrating an example of a computing device that may be configured to execute an application in accordance with one or more aspects of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     In general, aspects of the present disclosure are directed to techniques to identify a physical location of an item. As one example, in various environments, a customer may be overwhelmed by large floor plans and extensive arrangements of physical items. Common examples of such environments include libraries, malls, and superstores. In such environments, a user may be required to exert substantial effort to locate an item, which may increase the amount of time expended in a shopping experience or similar activity. 
     In some examples, a computing device may be equipped with a short-range wireless communication transmitter. Short-range wireless communication may include Near-Field Communication (NFC) and Bluetooth, to name a few examples. The short-range communication transmitter may, in some examples, read data from peripheral devices. A peripheral device may include a Radio-Frequency Identification (RFID) tag, NFC tag or other similar short-range communication devices. Data from such a peripheral device may include information that may be used to locate one or more items that are in physical proximity to the peripheral device. The data from the peripheral device may be received by the computing device, e.g., via NFC, and processed by a module executing on the computing device. In one example, the module may generate information to physically locate the one or more items. 
       FIG. 1  is a diagram illustrating an example of a computing device  2  that may be configured to execute an application  8  in accordance with one or more aspects of the present disclosure. Computing device  2 , in some examples, includes or is a part of a portable computing device (e.g. mobile phone/netbook/laptop/tablet device) or a desktop computer. Computing device  2  may also connect to a network including a wired or wireless network using a network device  12 . 
     In some examples, computing device  2  includes a short-range communication device  6 . In one example, short-range communication device  6  is capable of short-range wireless communication  30  using a protocol such as Bluetooth or Near-Field Communication. Short-range wireless communication  30 , in some examples, includes wireless communications between computing device  2  and peripheral device  28  of approximately 100 meters or less. In some examples, a person and/or computing device may manually or automatically update information usable to locate an item on peripheral device  28  when peripheral device  28  is a programmable device. 
     Short-range wireless communication  30 , in some examples, includes two different modes of operation. For example, short-range wireless communication  30  may include an active mode and a passive mode of operation. In an active mode of operation, computing device  2  may generate a first radio field that is received by peripheral device  28  in physical proximity to computing device  2 . In response, peripheral device  28  may generate a second radio field that is received by short-range communication device  6 . In this way, data may be communicated between computing device  2  and peripheral device  28 . 
     In a passive mode of operation, load modulation techniques may be employed to facilitate data communication between computing device  2  and peripheral device  28 . In a passive mode, peripheral device  28  does not generate a radio field in response to the radio field of short range communication device  6 . Instead, peripheral device  28  may include electrical hardware that generates a change in impedance in response to a radio field. For example, short-range communication device  6  may generate a radio field that is received by peripheral device  28 . Electrical hardware in peripheral device  28  may generate a change in impedance in response to the radio field. The change in impedance may be detected by short-range communication device  6 . In this way, load modulation techniques may be used by computing device  2  to receive information from peripheral device  28 . Other well-known modulation techniques including phase modulation and/or amplitude modulation may also be employed to facilitate data communication between computing device  2  and peripheral device  28 . 
     In one example, peripheral device  28  may be another computing device similar to computing device  2 . For example, peripheral device  28 , in some examples, may include or be a part of a portable computing device (e.g. mobile phone/netbook/laptop/tablet device) or a desktop computer. In other examples, peripheral device  28  may include electrical hardware that generates a change in impedance in response to a radio field. In some examples, peripheral device  28  may be a tag that includes electrical hardware, which generates a change in impedance in response to a radio field. In some examples, peripheral device  28  may include a tag that may be attached to an object. 
     In one example, computing device  2  may receive a data payload  32  from peripheral device  28  in response to receiving a radio field generated by short-range communication device  6 . In some examples, data payload  32  may include data that is stored and/or generated by peripheral device  28 . In some examples, data payload  32  may include a unique identifier. In one example, a unique identifier may include data such as a serial number or other data that uniquely identifies peripheral device  28 . For example, where two or more peripheral devices are present, each peripheral device may be uniquely identified by a unique identifier. In some examples, data payload  32  may include any information usable to locate one or more physical items. 
     In one example, short-range communication device  6  may receive data payload  32  from peripheral device  28 . Application  8 , in turn, may receive data payload  32  from short-range communication device  6 . In some examples, application  8  may include data and instructions executing on computing device  2 . Application  8  may include a module  10 , which may perform various functions of application  8  described herein. Application  8 , in some examples, may store and retrieve information stored in database  14 . In some examples, information may include physical location data. Physical location data may include, for example, a representation of a physical location to locate one or more physical items. In some examples, a representation of a physical location may be a picture, sound, animation, or other human-interpretable form of information. 
     In some examples, application  8  may communicate with network device  12 . For example, application  8  may communicate with one or more remote computing devices via a network (see e.g.,  FIG. 4 ). In other examples, application  8  may communicate with other applications executing on computing device  2  using well-known inter-process communication techniques including, e.g., shared memory, messages, sockets, and/or pipes. Inter-process communication techniques are described for example purposes only and other forms of communication are also contemplated. 
     Computing device  2 , in some examples, includes one or more input devices. In some examples, an input device may be a presence-sensitive screen  4 . Presence-sensitive screen  4 , in one example, generates one or more signals corresponding to a location selected by a gesture performed on or near the presence-sensitive screen  4 . In some examples, presence-sensitive screen  4  detects a presence of an input unit, e.g., a finger that is in close proximity to, but does not physically touch, presence-sensitive screen  4 . In other examples, the gesture may be a physical touch of presence-sensitive screen  4  to select the corresponding location, e.g., in the case of a touch-sensitive screen. Presence-sensitive screen  4 , in some examples, generates a signal corresponding to the location of the input unit. Signals generated by the selection of the corresponding location are then provided as data to applications and other components of computing device  2 . In some examples, presence-sensitive screen  4  may display a graphical keyboard that may enable a user to enter one or more input values, e.g., characters. 
     In some examples, computing device  2  includes an output device, e.g., presence-sensitive screen  4 . In some examples, presence-sensitive screen  4  may be programmed by computing device  2  to display graphical content. Graphical content, generally, includes any visual depiction displayed by presence-sensitive screen  4 . Examples of graphical content may include images, text, videos, and/or other visual program components such as scroll bars, text boxes, buttons, etc. As shown in  FIG. 1 , GUI  16  may include image  18 . In one example, application  8  may cause presence-sensitive screen  4  to display graphical user interface (GUI)  16 . 
     As shown in  FIG. 1 , application  8  may execute on computing device  2 . Application  8  may include program instructions and/or data that may be executable by computing device  2 . Examples of application  8  may include a web browser, email application, text messaging application or any other application that receives user input and/or displays graphical content. 
     In some examples, application  8  causes GUI  16  to be displayed in presence-sensitive screen  4 . GUI  16  may include interactive and/or non-interactive graphical content that presents information of computing device  2  in human-readable form. In some examples GUI  16  enables a user to interact with application  8  through presence-sensitive screen  4 . For example, a user may perform a gesture at a location of presence-sensitive screen  4  that provides an input value. In response to receiving the gesture, an operation associated may be executed by computing device  2 . In this way, GUI  16  enables a user to create, modify, and/or delete data of computing device  2 . 
     As previously described herein, in certain instances, an individual may potentially be overwhelmed by large floor plans and extensive arrangements of physical items in some environments. Common examples of such environments include libraries, malls, and retail stores. Often, many different items are arranged closely together to maximize physical storage space, e.g., many books arranged closely together in a library. Consequently, in some examples, although an individual may have information that indicates a general approximation of a desired item&#39;s physical location, the individual may spend substantial time searching for the precise location of the desired item. Thus, in some examples, the availability of imprecise physical location information may not improve an individual&#39;s ability to quickly locate a desired item. In other examples, imprecise physical location information may be inaccurate with respect to one&#39;s current position relative to a desired item. In still other examples, a detailed map of every item may convey too much information to an individual, thereby rendering such a map impractical for use by the individual. 
     Aspects of the present disclosure may use short-range communication to provide location-based services based on location information provided using the short-range communication. For example, a peripheral device may be in physical proximity to an item desired by a user. Using short-range communication, an application executing on a user&#39;s mobile computing device may receive information from the peripheral device to locate the desired physical item. The information contained in the peripheral device may include high-precision location information of the peripheral device location, e.g., physical orientation of the peripheral device, spatial location coordinates of the peripheral device, etc. Such high-precision location information may be used by an application executing on the user&#39;s mobile computing device to generate a representation of a physical location of the desired item. In such examples, a user may quickly identify the desired item using the representation of a physical location of the desired item. Aspects of the present disclosure thus, in some examples, employ short-range communication to retrieve high-precision location information, which may be used to locate one or more desired items efficiently and with minimal user effort. 
     As shown in  FIG. 1 , application  8  may include GUI  16  displayed by presence-sensitive screen  4 . In some examples, GUI  16  may include image  18 . For example, as shown in  FIG. 1 , image  18  may include a map of a superstore that illustrates various aisles of the superstore. GUI  16  may further include a text field  26 . Text field  26  may enable user  34  to input various input values. For example, as shown in  FIG. 1 , user  34  may input text  27  indicating the name of an item. In one example the name of an item may be the word “Aspirin.” In this way, application  8  may receive input values via GUI  16 . 
     In some examples, a user may wish to locate an item, e.g., a bottle of aspirin, in a large superstore. Aspects of the present disclosure may enable user  34  to locate the item quickly and efficiently, using high-precision location information. In  FIG. 1 , user  34  may execute application  8  on computing device  2 . Application  8  may cause GUI  16  to be displayed by presence-sensitive screen  4 . Initially, GUI  16  may include only text field  26 . Using presence-sensitive screen  4 , user  34  may enter text  27  into text field  26 . In some examples, text  27  may be an item descriptor. An item descriptor, in some examples, may be a description of an item sought by the user  34 , e.g., the name of an item. For example, an item descriptor may be a string that comprises one or more characters or words describing the item. In other examples, an item descriptor may be a hash code, serial number or other unique identifier. In any case, an item descriptor may describe or identify one or more items. In some examples, an item may be a physical object or physical location. For example, an item may be a bottle of aspirin. 
     User  34  may provide an item descriptor to application  8  using numerous different techniques. In one example, user  34  may type one or more characters that include an item descriptor using a keyboard of computing device  2 . In other examples, computing device  2  may include a microphone, e.g., an input device, which may receive an audio signal such as a voice audio signal provided by user  34 . User  34  may, for example, speak one or more words or sounds that describe one or more physical items. Module  10  may receive the audio signal from a microphone of computing device  2 . Module  10  may perform an audio-to-text operation that converts the audio signal to data that represents the one or more physical items. In some examples, module  10  may determine that an item descriptor includes the data representing the one or more physical items. In this way, user  34  may efficiently input item descriptors using audio-to-text techniques. For examples of such techniques see, e.g., Plannerer, B., An Introduction to Speech Recognition (March 2005); Stolcke, A., et al., Recent Innovations in Speech-to-Text Transcription at SRI-ICSI-UW (September 2006); Lawrence Rabiner &amp; Ronald Schafer, Theory and Applications of Digital Speech Processing (2010). 
     In the current example, user  34  may search for the desired item in a superstore. In one example, the superstore may include one or more aisles, which include one or more items. Furthermore, the superstore may include one or more peripheral devices, e.g., peripheral device  28 , positioned at various locations in the superstore. Peripheral device  28 , as shown in  FIG. 1 , may be a NFC peripheral device. Peripheral device  28  may include a data payload that includes information usable to locate a desired item. For example, as shown in  FIG. 1 , peripheral device  28  may include information to the desired item. In one example, data payload  32  of peripheral device  28  may include a unique identifier of peripheral device  28 . 
     Continuing with the current example, user  34  may position computing device  2  in physical proximity to peripheral device  28 . In one example, a physical proximity may indicate a distance of approximately 0-100 meters between computing device  2  and peripheral device  28 . In some examples, computing device  2  may use short-range communication device  6  to communicate via short-range wireless communication  30  with peripheral device  28 . In the current example, computing device  2  may receive data payload  32  from peripheral device  28  via near-field communication. 
     Application  8  may receive data payload  32  from peripheral device  28  in the current example. As previously described, data payload  32  may include information usable to locate a desired item. In some examples, module  10  may use data payload  32  to perform a search operation that may select physical location data based on an item descriptor and data payload. For example, module  10  may determine, in the current example, that data payload  32  includes a unique identifier of peripheral device  28 . As shown in the current example, module  10  may use data payload  32  and text  27  to query database  14  in order to select physical location data associated with item  29 . In some examples, physical location data may include a representation of a physical location to locate item  29 . 
     As shown in  FIG. 1 , computing device  2  may include a database  14 . Database  14 , in some examples, may include one or more unique identifiers of peripheral devices. For example, database  14  may include a unique identifier of peripheral device  28 . Each unique identifier may, for example, be associated with physical location data. In some examples, physical location data may include a representation of a physical location to locate an item. For example, physical location data may include spatial coordinates and/or orientation of the peripheral device. In some examples, physical location data may include two- and/or three-dimensional maps. For example, image  18  of  FIG. 1  may be a map. In some examples, module  10  may select a unique identifier from data payload  32 , which may be used by module  10  to select physical location data, e.g., a map, from database  14 . 
     In the current example, application  8  may cause presence-sensitive screen  4  to output image  18  that includes a map of the superstore in response selecting physical location data based on text  27  (e.g., an item descriptor) and data payload  32 . In one example, the map of image  18  may be presented from a perspective of a person at the location of the peripheral device. For example, GUI  16  may display the map of image  18  from the perspective of user  34  facing a shelf to which peripheral device  28  is attached. Thus, in the current example, image  18  may include a physical item indicator that indicates a physical location of the desired item in the aisle. Consequently, image  18  may provide user  34  with high-precision location information to quickly and efficiently identify the physical location of a desired item. Although peripheral device  28  is described as attached to the shelf in the current example, peripheral device  28  may, more generally, be located in physical proximity to the shelf. 
     As described in the current example, computing device  2  may receive data payload  32  that includes information usable to locate an item. Information usable to locate an item may include any information that may be used by module  10  of computing device  2  to select physical location data. This information may, in some examples, be stored on peripheral device  28 . In the current example, such information may include a unique identifier of peripheral device  28 . In some examples, information usable to locate an item may include spatial coordinates and/or orientation of the peripheral device. In still other examples, such information may include a Uniform Resource Locator (URL) that identifies a resource which may include physical location data. In other examples, information usable to locate an item may include physical location data. 
     In some examples, physical location data may include any data that indicates a physical location of an item. For example, physical location data may include any audio data or visual data. In one example, physical location data may include two- and/or three-dimensional maps. In other examples, physical location data may include audio data that provides audio instructions to locate a desired item. For example, an audio instruction may include instructions that indicate a distance of a user to the desired item. An audio instruction may, in some examples, indicate one or more landmarks or reference objects in proximity to the desired item that a user may recognize. In similar examples, physical location data may include video data that provides video instructions to a desired item. 
     For example, a video instruction may include an animation that indicates a route to the desired item and in some examples an item indicator to visually indicate the item location. In one example, a video instruction may present user  34  with a route that user  34  may travel via to obtain a desired item. In still other examples, physical location data may include one or more pictures, e.g., drawings, photographs, or other still-frame visual representations. A picture may, in one example, indicate one or more landmarks or reference objects in proximity to the desired item that a user may recognize. For example, a picture may indicate a photograph of a shelf as viewed when facing peripheral device  28 . The photograph may further include an item indicator, e.g., a star shape icon that may indicate a physical location of the desired item. 
     As shown in  FIG. 1 , computing device  2  may be configured to select physical location data based on an item descriptor and a data payload that includes information usable to locate an item. In a first example scenario, peripheral device  28  may include physical location data, e.g., a map of aisle and shelves. Computing device  2  may initially receive item descriptor, e.g., text  27  from user  34 . Computing device  2  may receive data payload  32  which may include image  18  and a unique identifier of peripheral device  29 . Module  10  may select image  18  and further display an item indicator that corresponds to the physical location of the desired item sought by user  34 . Application  8  may cause presence-sensitive screen  4  to display image  18 , which includes the map and item indicator of image  18 . 
     In a second example scenario, peripheral device  28  may include only a unique identifier. Physical location data such as image  18  that includes a map may be stored in database  14 . In some examples, database  14  may execute on a remote server. In such examples, peripheral device  28  may query database  14  via a wired or wireless network connection to select physical location data. Module  10  may use text  27  (e.g., an item description) and data payload  32  that includes the unique identifier and to select image  18  from database  14 . Module  10  may include means for selecting physical location data based on the item descriptor and the data payload. For example, module  10  may generate a search query that includes the item descriptor and the unique identifier. The search query may comprise a string or other data object that module  10  may use to query database  14 . Database  14  may process the search query and generate search results that include physical location data, e.g., image  18 . Module  10  may subsequently display image  18  as in the first example scenario. In the second example scenario, only a small amount of data, e.g., a unique identifier, may be stored on peripheral device  28 . In contrast, a larger amount of data including physical location data may be stored on peripheral device  28  in the first example scenario. Thus, aspects of the current disclosure provide flexibility to store large or small amounts of data on peripheral device  28  and/or database  14  of computing device  2 . 
     As shown in  FIG. 1 , database  14  may include physical location data. In some examples, user  34  may manually load information into database  14  prior to searching for item  29 . For example, user  34 , prior to going to a library, may load physical location data of the library into database  14 . In other examples, user  34  may specify one or more settings to automatically store data in database  14 . For example, user  34  may specify one or more resources, such as remote storage repositories, that include physical location data. Module  10  may use the one or more settings to automatically synchronize some or all physical location data of a remote storage repository with physical location data in database  14 . In some examples, database  14  may be automatically synchronized in real-time with one or more remote storage repositories. 
     In some examples, module  10  may automatically synchronize data based on a physical location of computing device  2 . Computing device  2  may, in one example, access a Global Positioning System using a GPS device included in computing device  2  to determine it is in proximity to a superstore. For example, module  10  may use physical location coordinates received from the Global Position System to query a map service or location directory that includes physical location coordinates of landmarks, stores, or other physical locations. Module  10  may determine a distance between computing  2  and other such physical locations using physical location coordinates. For example, module  10 , upon determining computing device  2  is in proximity to a superstore, may automatically synchronize database  14  and the superstore remote storage repository. In other examples, computing device  2  may synchronize database  14  when a user causes computing device  2  and a peripheral device to communicate via short-range communication. For example, upon entering a superstore a user may initially scan a peripheral device. Computing device  2  may, in response to the initial scan, determine its physical location and automatically synchronize with a response storage repository. In still other examples, module  10 , when performing a search operation may determine that requested physical location data is not included in database  14 . Module  10 , in such examples, may query remote storage repositories as further described in  FIG. 4 . 
     In one non-limiting example, a manager of a superstore may attach a NFC tag (e.g., a peripheral device) to the end of a shelf in an aisle. The NFC tag may include a unique identifier of NFC tag. The store manager may generate an inventory database that includes one or more associations between physical location data of a portion of the self that contains bottles of aspirin and a unique identifier. The store manager may further include the physical distance from the NFC tag to the physical location of the aspirin bottles in the aisle. For example, the aisle may include the bottles of aspirin, which may be located 25 feet directly straight ahead from the NFC tag. The orientation and distance relationship of the aspirin bottles and the NFC tag may also be stored in the inventory database. Consequently, the inventory database may include a precise location of the aspirin bottles on the shelf. 
     At a later time, a user may enter the superstore seeking a bottle of aspirin. The user may initially synchronize a database of computing device  2  with the inventory database upon entering the superstore. User  34  may then enter text, e.g., an item descriptor that indicates “ASPIRIN” in the computing device. Walking to the shelf that includes the aspiring bottles, user  34  may place his/her computing device  2  in physical proximity to the NFC tag to receive a data payload. 
     Upon receipt of the data payload, module  10  of computing device  2  may select the unique identifier of the peripheral device. Module  10  may use the unique identifier and the item descriptor to query database  14  which includes physical location data. Module  10  may select the distance and orientation data of aspirin  29  and a two-dimensional map from database  14 . Module  10  may cause computing device  2  to display a map which may further include an item indicator that identifies the location of the aspirin bottles and a user location indicator that indicates the location of the user. Using this information, user  34  may locate an aspirin bottle by viewing the map on computing device  2  and walking 25 feet down aisle from the peripheral device. 
     Various aspects of the disclosure may provide location information to quickly identify one or more items. In such examples, an exact location of an item may be determined within a small margin of error, e.g., inches using short-range communication in conjunction with physical location data. Moreover, high-precision information generated according to an item descriptor may enable a computing device to generate physical location data targeted to relevant items rather than presenting all available physical location data. 
     Aspects of the present disclosure may also avoid limitations imposed by physical structures such as walls or ceilings. For example, Global Positioning System (GPS) enabled computing device may require unobstructed or partially obstructed paths from the computing device to one or more satellites. In many environments, walls, ceilings and other solid structures may make GPS enabled computing devices unsuitable to indoor settings due to the unavailability of satellite signals. Moreover, GPS systems may provide unacceptably large margins of error, e.g., 10-100 feet, between an exact location of an item and a location generated from GPS by a computing device. Similarly unacceptable margins of error may also be present in, e.g., triangulation techniques, which may implemented in wireless networks. In contrast, techniques of the present disclosure using short-range communication may provide enhanced precision location information having a margin of error of inches or less. 
     Aspects of the present disclosure also provide user-friendly physical location data that may be substantially more helpful to a user than a basic map. For example, video, picture, and audio based instructions may enable a user to identify with a high degree of precision, the exact location of an item. Thus, in one example, a photograph may illustrate an exact location of a book relative to other books in a bookshelf. In this way, a user may visually recognize the desired book using a visual context provided by the photograph. 
     The aforementioned potential benefits and advantages are exemplary and other such benefits and advantages may be apparent in the previously-described non-limiting examples. While some aspects of the present disclosure may provide all of the aforementioned exemplary benefits and advantages, no aspect of the present disclosure should be construed to necessarily require any or all of the aforementioned exemplary benefits and advantages. 
       FIG. 2  is a diagram illustrating further details of one example of computing device  2  shown in  FIG. 1 , in accordance with one or more aspects of the present disclosure.  FIG. 2  illustrates only one particular example of computing device  2 , and many other example configurations of computing device  2  may be used in other instances. 
     As shown in the specific example of  FIG. 2 , computing device  2  includes one or more processors  40 , memory  42 , a network interface  44 , one or more storage devices  46 , input device  48 , output device  50 , battery  52 , and short-range communication device  54 . Computing device  2  also includes an operating system  56 . Computing device  2 , in one example, further includes application  8  and one or more other applications  58 . Application  8  and one or more other applications  58  are also executable by computing device  2 . Each of components  40 ,  42 ,  44 ,  46 ,  48 ,  50 ,  52 ,  54 ,  56 , and  8  may be interconnected (physically, communicatively, and/or operatively) for inter-component communications. 
     Processors  40 , in one example, are configured to implement functionality and/or process instructions for execution within computing device  2 . For example, processors  40  may be capable of processing instructions stored in memory  42  or instructions stored on storage devices  46 . 
     Memory  42 , in one example, is configured to store information within computing device  2  during operation. Memory  42 , in some examples, is described as a computer-readable storage medium. In some examples, memory  42  is a temporary memory, meaning that a primary purpose of memory  42  is not long-term storage. Memory  42 , in some examples, is described as a volatile memory, meaning that memory  42  does not maintain stored contents when the computer is turned off. Examples of volatile memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories known in the art. In some examples, memory  42  is used to store program instructions for execution by processors  40 . Memory  42 , in one example, is used by software or applications running on computing device  2  (e.g., application  8  and/or one or more other applications  58 ) to temporarily store information during program execution. 
     Storage devices  46 , in some examples, also include one or more computer-readable storage media. Storage devices  46  may be configured to store larger amounts of information than memory  42 . Storage devices  46  may further be configured for long-term storage of information. In some examples, storage devices  46  include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard discs, optical discs, floppy discs, flash memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories. 
     Computing device  2 , in some examples, also includes a network interface  44 . Computing device  2 , in one example, utilizes network interface  44  to communicate with external devices via one or more networks, such as one or more wireless networks. Network interface  44  may be a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device that can send and receive information. Other examples of such network interfaces may include Bluetooth, 3G and WiFi radios in mobile computing devices as well as USB. In some examples, computing device  2  utilizes network interface  44  to wirelessly communicate with an external device (not shown) such as a server, mobile phone, or other networked computing device. 
     Computing device  2 , in one example, also includes one or more input devices  48 . Input device  48 , in some examples, is configured to receive input from a user through tactile, audio, or video feedback. Examples of input device  48  include a presence-sensitive screen, a mouse, a keyboard, a voice responsive system, video camera, microphone or any other type of device for detecting a command from a user. In some examples, a presence-sensitive screen includes a touch-sensitive screen. 
     One or more output devices  50  may also be included in computing device  2 . Output device  50 , in some examples, is configured to provide output to a user using tactile, audio, or video stimuli. Examples of output device  50  include presence-sensitive screen of  FIG. 1 . Output device  50 , in one example, includes a presence-sensitive screen, sound card, audio speaker, video graphics adapter card, video projector, or any other type of device for converting a signal into an appropriate form understandable to humans or machines. Additional examples of output device  50  include a cathode ray tube (CRT) monitor, a liquid crystal display (LCD), or any other type of device that can generate intelligible output to a user. 
     Computing device  2 , in some examples, include one or more batteries  52 , which may be rechargeable and provide power to computing device  2 . Battery  52 , in some examples, is made from nickel-cadmium, lithium-ion, or other suitable material. 
     Computing device  2 , in some examples, includes one or more short-range communication devices  54 . In some examples, short-range communication device  54  communicates wirelessly with other devices in physical proximity to short-range communication device  54 , e.g., approximately 0-100 meters. In other examples, short-range communication device  54  reads a tag, e.g., an RFID tag, via a radio frequency signal. Some examples of short-range communication device  54  include a Bluetooth, Near-Field Communication, or Ultra-Wideband radio. 
     Computing device  2 , in some examples, may include a Global Positioning System (GPS) device  58 . In some examples, GPS device  58  may send and receive information from a global navigation satellite system. In some examples, GPS device  58  may receive one or more physical location coordinates from the global satellite system that indicates a position of computing device  2 . Thus, in some examples, GPS device  58  may enable computing device  2  to determine its physical location based on the one or more physical location coordinates. 
     Computing device  2  may include operating system  56 . Operating system  56 , in some examples, controls the operation of components of computing device  2 . For example, operating system  56 , in one example, facilitates the interaction of application  8  with processors  40 , memory  42 , network interface  44 , storage device  46 , input device  48 , output device  50 , battery  52 , and short-range communication device  54 . Examples of operating system  56  may include Android, Apple iOS, Blackberry OS, Symbian OS, Linux, and Microsoft Windows Phone. 
     Computing device  2  may include a database  14 . In some examples, database  14  may be a lookup table, map or other suitable data structure. In other examples, database  14  may include Relational Database Management System (RDBMS) software. In one example, database  14  may be a relational database and accessed using a Structured Query Language (SQL) interface that is well known in the art. Database  14  may alternatively be stored on a separate networked computing device and may be accessible via a network interface or system bus of computing device  2 . Database  14  may in other examples be an Object Database Management System (ODBMS), Online Analytical Processing (OLAP) database or other suitable data management system. 
     As shown in  FIG. 2 , application  8  may include a module  10  as described in  FIG. 1 . Audio control module  10  may include program instructions and/or data that are executable by computing device  2 . For example, module  10  may include instructions that cause application  8  executing on computing device  2  to perform one or more of the operations and actions described in  FIGS. 1-5 . In some examples, module  10  may be a part of operating system  56  executing on computing device  2 . In some examples, module  10  may communicate with operating system  56  that receives input from one or more input devices  48  of computing device  2 . 
     Any applications, e.g., application  8  or other applications  58 , implemented within or executed by computing device  2  may be implemented or contained within, operable by, executed by, and/or be operatively/communicatively coupled to components of computing device  2 , e.g., processors  40 , memory  42 , network interface  44 , storage devices  46 , input devices  48 , output devices  50 , batteries  52 , and/or short-range communication device  54 . 
       FIG. 3  is a flow diagram illustrating an example method that may be performed by a computing device to quickly identify a physical location of an item with enhanced precision. For example, the method illustrated in  FIG. 3  may be performed by computing device  2  shown in  FIGS. 1  and/or  2 . 
     The method of  FIG. 3  includes the following: receiving, by a mobile computing device, an item descriptor that describes one or more physical items ( 70 ); receiving, by the mobile computing device from a peripheral device using short-range wireless communication, a data payload comprising information usable to locate at least one of the one or more physical items ( 72 ); selecting, by the mobile computing device, physical location data based on the item descriptor and the data payload, wherein the physical location data includes a representation of a physical location of the at least one of the one or more physical items; ( 74 ) and outputting, from an output device of the mobile computing device, the physical location data that is usable to locate the at least one of the one or more physical items ( 76 ). 
     In some examples, the method includes, selecting, by the mobile computing device, a second item related to the at least one item according to at least one relationship criterion; responsive to selecting the second item, selecting, by the mobile computing device, second physical location data associated with the second item, wherein the second physical location data includes a representation of a second physical location of the second physical item; and outputting, from the output device of the mobile computing device, the physical location data of the second physical item. 
     In one example, the method includes determining, by the computing device, the at least one item has a contextual relationship with the second item; and selecting, by the computing device, the second item based at least on the contextual relationship with the at least one item. In some examples, the method includes determining, by the mobile computing device, that the physical location data is not available based on the item descriptor and the data payload; selecting, by the mobile computing device, a related item descriptor based on the data payload and the item descriptor; and outputting, by the mobile computing device, the related item descriptor. 
     In some examples, the method includes generating, by the mobile computing device, an item description comprising information that describes a product or service based on the data payload and the item descriptor; and responsive to generating the advertisement, outputting, from the output device of the mobile computing device, the advertisement with the physical location data. In some examples, the method includes receiving, by the mobile computing device, physical position data that indicates a direction that the mobile computing device is facing; comparing, by the mobile computing device, physical position data to information indicating a perspective of the peripheral device relative to the direction that the mobile computing device is facing, wherein the information is associated with the physical location data; and selecting, by the mobile computing device, the physical location data based on the information physical position data and the information indicating the perspective of the peripheral device relative to the direction that the mobile computing device is facing. 
     In some examples, the peripheral device comprises a Near Field Communication tag. In some examples, the method includes querying, by the mobile computing device, a repository that includes the physical location data based on the item descriptor and the data payload; and responsive to the query, receiving, by the mobile computing device, the physical location data. In some examples, the repository includes a database stored on the mobile computing device. In some examples, the method includes receiving, by the mobile computing device, a group of physical location data from a repository stored on a remote server, wherein the group of physical location data includes the physical location data; and storing, by the mobile computing device, the group of physical location data in the database. 
     In some examples, the method includes selecting, by the mobile computing device, the group of physical location data based on a physical location of the mobile computing device. In some examples, the repository includes a database stored on the remote server. In some examples, the method includes receiving, by the mobile computing device, an audio signal that describes one or more physical items; converting, by the mobile computing device, the audio signal to data that represents the one or more physical items; and determining, by the mobile computing device, that the item descriptor includes the data that represents the one or more physical items. In some examples, the physical item includes a physical object or physical location. In some examples, the physical location data further includes at least audio data or visual data. 
     In some examples, the data payload includes at least one or more spatial coordinates of the peripheral device or physical orientation data of the peripheral device, wherein the physical orientation data indicates a physical orientation of the peripheral device relative to the mobile computing device. In some examples, the data payload includes a unique identifier of the peripheral device. In some examples, the method includes determining, by the mobile computing device, a first physical orientation of the mobile computing device relative to a reference point; generating, by the mobile computing device, physical orientation data that indicates the first physical orientation of the mobile computing device; comparing, by the mobile computing device, the physical orientation data to information associated with the physical location data indicating a second physical orientation; selecting, by the mobile computing device, the physical location data based on the information associated with the physical location data indicating the second physical orientation. 
       FIG. 4  is a diagram illustrating an example of a computing device  2  that may be configured to communicate with a remote server  98 , in accordance with one or more aspects of the present disclosure. As shown in  FIG. 4 , computing device  2  and the various components included in  FIG. 4  may include similar properties and characteristics as described in  FIGS. 1 and 2 . In some examples, computing device  2  may receive data payload  94  from peripheral device  92 . In one example, application  8  may determine that database  14  does not include physical location data associated with data payload  94  and an item descriptor. In such examples, application  8  may use network device  12  of computing device  2  to request physical location data from remote server  98  via network communication  102 . 
     As shown in  FIG. 4 , computing device  2  may include a network device  12 . Network device  12  may be a network interface as described with respect to  FIG. 2 . In some examples, network device  12  may be a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device that can send and receive information. 
     In some examples, network device  12  may send data to a remote server  98 . In  FIG. 1 , a remote server  98  may include one or more desktop computers, mainframes, minicomputers, or other computing devices capable of executing computer instructions and storing data, e.g., physical location data. Remote server  98  may connect to computing device  2  using a wireless or wired network. 
     In some examples, computing device  2  may be in proximity to peripheral device  92 . Using the techniques described herein, computing device  2 , may in one example receive data payload  94  using short-range communication device  6 . In one example, application  8  may query database  14  to select physical location data based on data payload  94  and an item descriptor. 
     In some examples, application  8  may determine that no physical location data exists based on data payload  94  and the item descriptor. In such examples, application  8  may generate a lookup request. A lookup request, in some examples, may include a request for physical location data. In some examples, a lookup request may include data of data payload  94 . In some examples, a lookup request may include an item descriptor. Request message  96 , in one example, may include a lookup request. Request message  96 , in some examples, includes hardware and software specifications relating to computing device  2  that remote server  98  may use to generate physical location data in a format displayable by computing device  2 . 
     In some examples, application  8  may send request message  96  to remote server  98  using network device  12 . In one example, data payload  94  may include a Uniform Resource Locator (URL) that indicates a location of remote server  98 . In such examples, module  10  may use the URL to address the request message to remote server  98 . In other examples, the network location of remote server  98  may be known to module  10 . Consequently, module  10  may address request message  96  to remote server  98  using the known network location. In some examples, remote server  98  may be a centralized server that includes physical location data. 
     In other examples remote server  98  may provide an indexing or directory service. In such examples, remote server  98  may direct request message  96  to other appropriate remote servers that include physical location data based on information included request message  96 . For example, remote server  98  may identify a unique identifier included in request message  96  that is associated with peripheral device  92 . Remote server  98  may include an index that includes mappings of unique identifiers and network locations of remote servers that include physical location data associated with the unique identifiers. Using the index, remote server  98  may identify a second remote server that includes physical location data associated with the unique identifier. Consequently, remote server  98  may address and send request message  96  to the second remote server that includes the physical location data. 
     In one example, remote server  98  receives request message  96  via network communication  102  from computing device  2 . Remote server  98  includes or may be connected to one or more remote databases  100 . For example, remote database  100  may include Relational Database Management System (RDBMS) software. In one example, remote database  100  may be a relational database and accessed using a Structured Query Language (SQL) interface that is well known in the art. Remote database  100  may alternatively be stored on a separate networked computing device and accessed by remote server  98  through a network interface or system bus. Remote database  100  may in other examples be an Object Database Management System (ODBMS), Online Analytical Processing (OLAP) database or other suitable data management system. 
     In some examples, remote server  98  processes the contents of request message  96 . In one example, remote database  100  includes associations that enable remote server  98  to identify physical location data based on data included in request message  96 . Thus, in one example, remote server  98 , upon receiving request message  96 , may query remote database  100  to identify physical location data based on data included in request message  96 . Upon selecting physical location data, remote server  98  may generate a response message  102  that contains the selected physical location data. In some examples, response message  102  may include additional data that may be associated with the physical location data. Remote server  98  may send response message  102  to computing device  2  via network communication  102 . 
     In one example, computing device  2  may receive response message  102  from remote server  98  via network device  12 . In some examples, application  8  may select physical location data from response message  102 . Application  8 , in one example, may output the physical location data to locate a physical item. 
       FIG. 5  is a diagram illustrating an example of a computing device  2  that may be configured to execute an application  8  in accordance with one or more aspects of the present disclosure. As shown in  FIG. 5 , computing device  2  and the various components included in  FIG. 5  may include similar properties and characteristics as described in  FIGS. 1 and 2 . 
     As shown in  FIG. 5 , GUI  16  may in one example display physical location data, e.g., map  130  and image  140 , in response to receiving a data payload from a peripheral device as described in  FIGS. 1-4 . For example, a peripheral device may be attached to a shelf  142  at the end of an aisle  128  as shown in image  140 . In one example, a data payload received by computing device  2  from a peripheral device may include spatial coordinates that indicate a physical position of the peripheral device. Examples of spatial coordinates may include, e.g., a value representing a vertical distance from a reference point such as a floor to a position of the peripheral device attached to an aisle. Spatial coordinates may, more generally, in some examples include any data indicating a physical position of a peripheral device relative to a reference point. In other examples, spatial coordinates may include data indicating an absolute physical position of a peripheral device in a coordinate system. 
     In some examples, module  10  may generate physical position data that indicates a physical position of a peripheral device relative to computing device  2 . In some examples, physical position data may include a three-dimensional vector that represents a position of computing device  2  relative to the peripheral device. Physical position data may indicate a direction computing device  2  is facing as computing device  2  communicates via short-range wireless communication with a peripheral device. By determining the direction that computing device  2  is facing relative to the peripheral device, module  10  may further determine the direction the user is facing. Upon determining the direction the user is facing, module  10  may select physical location data, e.g., an image, which displays a view from the perspective of the user. 
     In one example, a peripheral device may be attached to shelf  142  at an end of  128 . Upon scanning the peripheral device with computing device  2 , module  10  may generate physical position data. The physical position data may indicate a direction that computing device  2  is facing relative to the peripheral device. Database  14  of computing device  2  may further include multiple photographs of the  128 . Each photograph may display aisle  128  from a different perspective. Each photograph may further be assigned three-dimensional vector information indicating the perspective of the photograph relative to the peripheral device and/or direction that computing device  2  is facing relative to the peripheral device. Module  10  may compare the physical position data received from the peripheral device to the three-dimensional vector information of each photo to select a select a photograph of aisle  128  and shelf  142  that indicates a view of aisle  128  from the perspective of the user  34 . 
     In some examples, computing device  2  may include an accelerometer or gyroscope that generates physical orientation data. Module  10  may use the physical orientation data to determine a physical orientation of computing device  2  relative to a reference point. A physical orientation of computing device  2  may include a vertical orientation wherein presence-sensitive screen  4  is oriented approximately perpendicular to a reference point, e.g., a surface on which the user stands. Another physical orientation of computing device  2  may include a horizontal orientation wherein presence-sensitive screen  4  is oriented approximately parallel to a surface on which the user stands. Module  10  may select different physical location data from database  14  based on the physical orientation of computing device  2 . For instance, the physical orientation data, e.g., maps or images, stored on computing device  2  may each be associated with information specifying a physical orientation of computing device  2 . Information may specify a horizontal physical orientation and a vertical physical orientation. An image may be associated with information indicating a vertical physical orientation while a map may be associated with information indicating a horizontal orientation of computing device  2 . 
     In one example, a user may initially search for item  144  located on shelf  142 . Module  10  may determine computing device  2  is positioned in a horizontal orientation, e.g., the user is holding computing device  2  flat in his/her hand. Consequently, module  10  may select and display physical location data comprising map  130  that further indicates the location of the item searched for by the user. Module  10  may select the physical location data by comparing the physical orientation data of the computing device and information specifying a physical orientation associated with the physical location data, e.g., map  130 . If the physical orientation associated with map  130  matches the physical orientation of the computing device, map  130  is selected for display. If the user later changes the physical orientation of computing device  2  to a vertical orientation, e.g., the user holds computing device  2  upright, module  10  may select image  140  that displays shelf  142  and item  144 . In this way, module  10  may use physical orientation data to display different physical location data based on the physical orientation of computing device  2 . 
     In another example, database  14  may include information to generate a map  130  based on physical orientation data received in a data payload and/or generated by computing device  2 . When scanning a peripheral device at a first end of a shelf, computing device  2  may generate map  130  indicating shelf  142  represented by shelf indicator  134 B from the perspective of the user at the first end of shelf  142 . For example, user indicator  132  may indicate on map  130  the current location of user  24 . Moreover, map  130  may include map item indicators  136 ,  138  that correspond to physical locations of items sought by the user in shelf  142 . Map  130  may further indicate shelves represented by shelf indicators  134 A,  134 C. In a different example, computing device  2  may generate a map from the perspective of the user at a second, different end of the shelf when the user scans a peripheral device at the second end of the shelf. In this way, physical orientation data may be used by module  10  to select physical orientation data that is more useful to user  34 . 
     GUI  16  may in some examples include physical item indicators  120 ,  122 . In some examples, physical location data may include physical item indicators. Physical item indicators  120 ,  122  may in some examples indicate to a user the physical location of one or more physical items. For example, a user may initially search for a first item  146 , which happens to be located in aisle  128  as shown in  FIG. 5 . Using techniques described in  FIGS. 1-4 , application  8  may display photograph  130  of aisle  128 . Application  8  may further include item indicator  122  that indicates a physical location of first item  146 . In this way, the user may quickly determine the physical location of first item  146 . 
     In some examples, module  10  may generate a route between one or more physical item indicators based on group of item descriptors provided by a user. For example, a user may enter a group of item descriptors into application  8  that correspond to items he/she wishes to obtain at a store. Upon arriving at the store, the user may scan a peripheral device using computing device  2 . Using the data payload received from the peripheral device and the item descriptors, module  10  may select physical location data, e.g., a map, for one or more of the items. Module  10  may further include physical item indicators that indicate physical locations of at least one of the one or more items included in the map. In one example, module  10  may include physical location indicators in the map for each of the items searched for by the user. Module  10  may, in some examples, include different visual representations such as color and shape for different items. For instance, a first color and shape representation may represent substitute items. A second color and shape representation different from the first representation may represent complement items. A third color and shape representation may represent an ordering or priority of each item as specified by the user. More generally, different visual representations may be used to represent different relationships between items or differences between individual items. Module  10  may in some examples further determine and display a route between items. The route may specify a shortest distance or quickest route, which may be defined in some examples by a user preference. 
     In some examples, module  10  may perform a selection operation that selects a second item  144  related to the first item based on one or more relationship criteria. A relationship criterion may be any association between a first item and a second item. Relationship criteria may be stored in database  14  or remote database  100  as shown in  FIG. 4 . In some examples, relationship criteria may include pre-defined associations generated by a user of computing device  2 , other person, or other computing device. In other examples, relationship criteria may be dynamically generated by module  10  using one or more algorithms, e.g., learning algorithms based on reinforcement learning or transduction, in response to data received by computing device  2  from a remote server, or data or use patterns of a user. 
     In any case, module  10 , responsive to selecting the second item, may determine a search operation as described in  FIGS. 1-4  to select physical location data of the second item. Application  10  may cause presence-sensitive screen  4  to display the physical location data of the second physical item. For example, module  10  may determine the first item is a brand-name food item may further determine that the second item is an alternative item, such as a corresponding generic food item. Module  10  may thus, output item indicator  120  to indicate a physical location of the brand-name food item, and may further output item indicator  122  to indicate a physical location of the generic food item. 
     In some examples, application  10  may select a group of items that are related to the first item  146  rather than a single item. In such examples, application  10  may cause presence-sensitive screen  4  to display the group of related items as selectable items to the user. For example, a user may initially cause application  10  to perform a search for aspirin. In response module  10  may provide a group of choices for other analgesics, bandages, cold medicines, juice beverages, thermometers that may each be related to aspirin, e.g., as products related to illness. 
     In some examples, application  10  may include contextual relationships between an item descriptor and one or more candidate items stored in database  14 . For instance, a contextual relationship may be an association between a product, e.g., aspirin, and a problem or theme, e.g., pain or illness. In the example of aspirin, a customer may search for aspirin because he/she is ill. Contextual relationships defined in database  14  may associate aspirin with illness, and illness may further be associated with candidate items such as bandages or cold medicines. The contextual relationships may be stored in database  14 . Thus, a user may enter text that specifies a problem/theme or alternatively an item descriptor and application  10  may select one or more items that have contextual relationships to the input provided by the user. Application  10  may select physical location data for each of the one or more items that have context relationships to the input provided by the user. 
     The user may provide user input to select one or more of the items in the group of related items. Using the user input, application  10  may select physical location data and/or items indicators associated with each of the selected items that presence-sensitive screen  4  may display to the user. In this way, module  10  may display one or more item indicators according to at least one relationship criteria. 
     In some examples, a relationship criterion may indicate a physical distance between a first item and a second item. Thus, in one example, module  10  may determine a close physical distance exists between a first item and a second item. Furthermore, the first and second items may often be purchased together. The physical distance information may be stored in database  14  as relationship criteria of the first and second items. Module  10  may use the relationship criteria to display an item indicator for each item to the user, which may enable a user to conveniently select both the first item and the second item. 
     In some examples, a relationship criterion may indicate a substitute relationship between a first item and a second item. A substitute relationship may indicate a first price of the first item and a second price of the second item are positively correlated. Thus, when the first price increases, the second price may also increase. For example, a relationship criterion may indicate a generic food item is a substitute for a brand-name food item. A relationship criterion between substitutes, e.g., the generic food item and the brand-name food item, may be stored in database  14 . When a user searches for the food item, module  10  may select physical location data that includes the locations of the generic food item and the brand-name food item. Module  10  may further display item indicators for both the generic and brand-name items to notify the user of the cheaper, generic substitute and the brand-name food item. 
     In some examples, the user may further provide settings in module  10  that indicate user preferences. In such examples, module  10  may select items based on relationship criteria stored in database  14  and the preferences set by the user. For instance, a preference may be set by a user to save money. In such examples, module  10  may select and display physical location data for cheaper substitute goods in addition to the original item searched for by the user. Module  10  could further allow the user to more granularly define preferences to save money. For instance, the user may indicate a money saving preference for one item type but not for others, e.g., bread versus cereal. A granular money saving preference may also be specified for one product group but not another, e.g., food versus toiletries. In other examples, the user could provide a setting in module  10  to prefer band-name items. For instance, relationship criteria in database  14  may indicate one or more items that are associated with a particular brand-name, or in other examples, indicate that the item is simply brand name. In each case, module  10  may select items from database  14  that are specified by relationship criteria matching the settings provided by the user. 
     In some examples, a relationship criterion may indicate a complementary relationship between a first item and a second item. A complement relationship may indicate a first price of the first item and a second price of the second item are inversely (e.g., negatively) correlated. Thus, when the first price increases, the second price may decrease. For instance, two products may be consumed together, e.g., coffee and creamer. In some examples, it may be more likely that a user wishes to purchase the complement product with the product the user initially seeks. In one example, when a user searches for coffee, module  10  may search database  14  for items that have a complement relationship with coffee. The complement relationship may be stored as a relationship criterion in database  14 . Using the complement relationship, module  10  may select physical location data for both creamer and coffee because it is defined as having a complement relationship to coffee. Module  10  may further generate item indicators to indicate the location of both the coffee and the creamer. 
     In some examples, module  10  may generate one or more advertisements based on a data payload and an item descriptor. In one example, an advertisement may be an item description that includes information describing a product or service. Database  14  and/or remote database  100  as shown in  FIG. 4 , may include advertising data. Advertising data may be used to generate advertisements or may include selectable advertisements. Using the data payload and the item descriptor, module  10  may generate one or more related advertisement  124  that presence-sensitive screen  4  may display. In one example, the advertisement may be for the item initially searched for by the user. In another example, an advertisement may be related to a second item associated with the desired item based on a relationship criterion. For example, application  8  may generate an advertisement for a generic item of lower cost when the user initially seeks a corresponding brand-name item. In some examples, an advertisement may be a coupon. In still other examples, the application  8  may only generate the coupon in response to determining that computing device  2  has communicated with a peripheral device. 
     In some examples, module  10  may determine that physical location data is not available in, e.g., database  14 , based on an item descriptor and data payload. For example, a user may initially misspell an item descriptor when entering it into computing device  2 . In some examples, a user may mistype the item descriptor. In other examples, an audio-to-text operation may produce a result not intended by the user through his/her speech. In such examples, module  10  may determine a match operation that selects a related item descriptor based on the data payload and the item descriptor provided by the user. For example, module  10  may determine, based on information included in a data payload, that computing device  2  communicated with a peripheral device located near a pharmacy aisle. 
     In the current example, the item descriptor entered by the user may include the text “asppirn” that the user intended as “aspirin.” Module  10  may determine the user intended the spelling of “aspirin” based on the character, phonetic, and/or dictionary similarities of “asppirn” to “aspirin” and the data payload indicating the pharmacy aisle. Thus, in the current example, module  10  may use the information indicating the pharmacy aisle to assist the user in identifying the user&#39;s intended item descriptor. In some examples, the related item descriptor selected or generated by module  10  may be provided to the user for selection as the intended item descriptor. In this way, user errors or other inaccuracies may be corrected by module  10  using enhanced precision location information. 
     The techniques described in this disclosure may be implemented, at least in part, in hardware, software, firmware, or any combination thereof. For example, various aspects of the described techniques may be implemented within one or more processors, including one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuitry, as well as any combinations of such components. The term “processor” or “processing circuitry” may generally refer to any of the foregoing logic circuitry, alone or in combination with other logic circuitry, or any other equivalent circuitry. A control unit including hardware may also perform one or more of the techniques of this disclosure. 
     Such hardware, software, and firmware may be implemented within the same device or within separate devices to support the various techniques described in this disclosure. In addition, any of the described units, modules or components may be implemented together or separately as discrete but interoperable logic devices. Depiction of different features as modules or units is intended to highlight different functional aspects and does not necessarily imply that such modules or units must be realized by separate hardware, firmware, or software components. Rather, functionality associated with one or more modules or units may be performed by separate hardware, firmware, or software components, or integrated within common or separate hardware, firmware, or software components. 
     The techniques described in this disclosure may also be embodied or encoded in an article of manufacture including a computer-readable storage medium encoded with instructions. Instructions embedded or encoded in an article of manufacture including a computer-readable storage medium encoded, may cause one or more programmable processors, or other processors, to implement one or more of the techniques described herein, such as when instructions included or encoded in the computer-readable storage medium are executed by the one or more processors. Computer readable storage media may include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), flash memory, a hard disk, a compact disc ROM (CD-ROM), a floppy disk, a cassette, magnetic media, optical media, or other computer readable media. In some examples, an article of manufacture may include one or more computer-readable storage media. 
     In some examples, a computer-readable storage medium may include a non-transitory medium. The term “non-transitory” may indicate that the storage medium is not embodied in a carrier wave or a propagated signal. In certain examples, a non-transitory storage medium may store data that can, over time, change (e.g., in RAM or cache). 
     Various aspects of the disclosure have been described. These and other embodiments are within the scope of the following claims.