Patent Publication Number: US-11393197-B2

Title: System and method for quantifying augmented reality interaction

Description:
BACKGROUND 
     1. Technical Field 
     The present disclosure relates to augmented reality, and more specifically to providing augmented reality displays and quantifying the interaction with those augmented reality displays. 
     2. Introduction 
     Augmented Reality (AR) is a superimposed image on a user&#39;s view of the real world, resulting in a composite view. For example, a smartphone may capture a video feed of the real world using a camera, display the video feed on the smartphone display, and add additional visuals or information over the video feed. As AR becomes more common, a challenge can be identifying how users interact with AR displays and models. For example, advertisers, sponsors, or other entities helping generate the AR content would like to know when and how users are interacting with the AR content. 
     SUMMARY 
     Additional features and advantages of the disclosure will be set forth in the description which follows, and in part will be obvious from the description, or can be learned by practice of the herein disclosed principles. The features and advantages of the disclosure can be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the disclosure will become more fully apparent from the following description and appended claims, or can be learned by the practice of the principles set forth herein. 
     An exemplary method performed according to this disclosure can include: capturing, via a camera of a mobile computing device, a video feed; extracting, via a processor of the mobile computing device, an image from the video feed; determining, via the processor, that the image corresponds to a stored image in a plurality of stored images stored in an image database, resulting in a determination; retrieving, via the processor and based on the determination, interactive content associated with the stored image; and displaying, via a display of the mobile computing device, the interactive content as an augmented reality overlay. 
     An exemplary system configured according to this disclosure can include: a processor; a camera; a display; and a non-transitory computer-readable storage medium having instructions stored which, when executed by the processor, cause the processor to perform operations comprising: capturing, via the camera, a video feed; extracting an image from the video feed; determining that the image corresponds to a stored image in a plurality of stored images stored in an image database, resulting in a determination; retrieving, based on the determination, interactive content associated with the stored image; and displaying, via the display, the interactive content as an augmented reality overlay. 
     Exemplary non-transitory computer-readable storage media configured according to this disclosure can have instructions stored which, when executed by a computing device, cause the computing device to perform operations including: receiving, from a camera, a video feed; extracting an image from the video feed; determining that the image corresponds to a stored image in a plurality of stored images stored in an image database, resulting in a determination; retrieving, based on the determination, interactive content associated with the stored image; and displaying, via a display, the interactive content as an augmented reality overlay. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates a first example system for interacting with AR; 
         FIG. 2  illustrates a second example system for interacting with AR; 
         FIG. 3  illustrates example backend processing of AR; 
         FIG. 4A  illustrates a first example of determining orientation of a device to a known object; 
         FIG. 4B  illustrates a second example of determining orientation of a device to a known object; 
         FIG. 5  illustrates an example of route planning; 
         FIG. 6  illustrates an example method embodiment; and 
         FIG. 7  illustrates an example computer system. 
     
    
    
     DETAILED DESCRIPTION 
     Various embodiments of the disclosure are described in detail below. While specific implementations are described, it should be understood that this is done for illustration purposes only. Other components and configurations may be used without parting from the spirit and scope of the disclosure. 
     The disclosed systems, methods, and computer-readable storage media use Augmented Reality (AR) to improve customization of information being provided to users. The graphics and animations displayed to the user can vary based on location as well as based on the specific circumstances, preferences, and needs of the user. As the user moves, or as time progresses, the interactive content being presented to the user can be modified and adjusted. Exemplary, non-limiting devices with which a user can deploy the AR configurations disclosed herein can include smartphones, tablet computers, smart glasses (glasses with an optical head-mounted display in the shape of eye glasses), smart contact lenses (contact lenses with the ability to project graphics), or other mobile computing device with a camera, processor, and display mechanism. 
     Consider the following example. A user is at a conference and receives a business card. The business card is associated with interactive AR content, meaning that when viewed through an AR configured mobile computing device, interactive AR content appears on the mobile computing device display. The user views the business card using their smartphone (which is configured to view AR content), and the smartphone graphically displays AR content associated with the business card. If, for example, the owner of the business card were a lion trainer, the business card could, when viewed through an AR configured device, cause the AR configured device to display an animated lion on top of the business card in the device display. As the user of the device walks around the card, or rotates the card, the orientation of the displayed lion can rotate as well. In other words, in this example the orientation of the displayed lion can vary based on the respective orientation of the AR configured device to the business card. 
     As another example, a user at a conference can approach a poster which, in “real life” states “When is my next session?” As the AR device camera pans over the poster, the image of the poster is recognized by the AR device and interactive content associated with the poster is displayed on the AR device display. In this example, the interactive content is a map which is specifically tailored to the user, and the map illustrates the route which the user should follow to their next scheduled session. 
     As yet another example, a user can approach a small 3D (three dimensional) trinket, toy, or other object. As the AR device camera pans over the 3D trinket, interactive content associated with the 3D trinket can be displayed. For example, if the 3D trinket is a miniature tractor, an interactive, 3D tractor could be displayed on the AR device display. As the user walks, pivots, or otherwise moves around the trinket, the angle of the 3D tractor displayed on the AR device display rotates or moves. If the user moves closer or moves away, the scale of the displayed 3D tractor can increase or decrease accordingly. 
     As yet another example, the user can approach an object (such as a poster, sign, or other object), and the AR device, upon detecting the poster, can display content which changes or varies based on specific circumstances. For example, the content could change based on the user of the AR device, the time of day, location, angle to the object, pseudo-random variables, etc. 
     One example of interactive content which could be displayed could be a television, movie, or other video content. As the user moves or adjusts position, the angle of the “virtual” video content being displayed only on their AR device can likewise move. In effect, the user is viewing a personalized movie through their device which other individuals do not see. In some configurations, the user can then pause, rewind, or otherwise control the video content being displayed. 
     Another example of interactive content which could be displayed could be a live TWITTER feed. For example, if the user is at a conference and views an object which instigates a display of AR content on the AR device, that AR content displayed could be a live TWITTER feed associated with the conference. As the user continues to view the object through the AR device, the user can interact (scroll, highlight, view specific tweets, etc.) with the displayed feed. 
     Another example of interactive content could be directions to a destination or location. For example, the user could look at an object which generates, using the current location and heading (e.g., cardinal direction of orientation) of the AR device, an AR map for the user to follow to a destination. As the user turns to follow the directions, the AR device can generate AR arrows (virtually displayed on the ground, on walls, in the air, etc.) for the user to follow to their destination. If the user deviates from the predetermined course while enroute, the system can automatically adjust the virtual arrows based on an updated location. If the user were to walk away from the instigating object which cause the map to be generated, and then turned back toward the instigating object, the map could be scaled to a smaller size based on the distance of the AR device to the instigating object. The distance to the instigating object can be calculated using GPS locations of the object, the AR device, and/or the size of the image of the object (which can be determined using edges or other portions of the object). 
     In some configurations, the AR systems disclosed herein can be used for a virtual scavenger hunt, where the users follow clues which are displayed to the user by the AR device upon the user finding and panning the AR device camera over a particular object. While in some such configurations the clues may appear anytime any object in the scavenger hunt is detected, in other configurations the objects must be detected in a particular order. For example, if a user is supposed to follow the clue from a first point to a second point where they will receive a subsequent clue, etc., subsequent clues may not appear unless obtained in the correct order or sequence. 
     In some configurations, the AR systems disclosed herein can be used for virtual gambling or slot machines using pseudo-random content. For example, a user can approach a location of an object which, when panned over by a camera of an AR device, causes the AR device to display a slot machine (or roulette table, etc.). The AR device can then use pseudo-random numbers to allow the user to engage in virtual gambling using the AR generated slot machine, roulette table, or other gambling content. 
     Exemplary objects which, when identified within images captured by an AR device can include items such as posters, cards, 3D items, and/or other markers. When a known marker/object is found, the software executed by the AR device responds by displaying one or more virtual elements over the top of the video feed, with the virtual elements rendered to appear as part of the real world. In some configurations, the virtual elements can be interacted with by the user touching the display on the AR device where the virtual elements are displayed. In other configurations, the user can interact with the virtual elements by moving their hands into the field of vision of the AR device camera, allowing the user to pretend to touch the objects being displayed. In some cases, the content displayed may not be interactive, such that the user cannot interact or modify the content being displayed. In yet other cases, a portion of the content may be interactive while a remainder portion is not interactive. 
     In some cases, the displayed animation or graphics can be in the form of a virtual billboard containing a feed of data, such as data produced by social media websites or photo walls. These feeds can display content relevant to the user viewing them based on the device identification of the AR device being used to view the AR content, or by user identifications where the user logged into an account, or otherwise identified themselves, on the AR device. Filters can be applied to tailor the content to the user, allowing the content to change dynamically throughout the day, change based on location at which a marker is scanned or identified, etc. As a further example, a poster could represent an image marker/object which, when scanned by an AR device, is replaced on the display of the AR device by a board showing a live TWITTER feed. This virtual TWITTER board is a computer-generated image updated at a framerate sufficient to give the illusion of a digital video feed. The feed shows only tweets relevant to the user, such as tweets related to an event, preferences of the user, etc. 
     Exemplary ways in which the content can be tailored to the user can include presenting content specific to the user&#39;s location (e.g., a TWITTER feed of content with a hashtag associated with an event occurring at the user&#39;s location), presenting content based on the user&#39;s demographic data (e.g., presenting an advertisement specific to the user&#39;s age, gender, socio-economic status, nationality, primary language, etc.), the type of AR device being used (e.g., providing different content based on the brand of the device being used to view the AR content). Likewise, if the user is looking for directions, the directions provided can be customized to the user, such that two individuals searching for directions to different subsequent destinations from a common starting point will receive distinct sets of directions. Even if both users are going to a common destination, the system may route users in distinct paths based on preferences, points of interest, etc., of the respective users. For example, if a first user has indicated that they would like to walk past certain paintings or exhibits, while a second user has indicated that they would prefer not to walk past those same exhibits, the system can provide distinct routing to the respective users. 
     The system can also use data aggregations coupled with machine learning to make predictions about how similar users will respond to displayed AR content and modify future content based on those correlations. For example, the system can iteratively collect data regarding user interactions with specific pieces of AR content, perform regression analysis on the interactions and known aspects about the user or user device, then modify future AR content based on the correlations. In this manner, the content tailored for a given individual can change both based on how the individual user reacts to displayed AR content over time, as well as based on how other users react to displayed AR content. 
     The lighting of the AR content displayed can vary based on the space where the inciting object is located. In some configurations, the goal may be for the AR content to look real. That is, the user of the AR device, looking at the display, would not be able to identify the content as virtual just by looking at the AR device display. To create convincing AR content, the system identifies how lighting is projected in the real world from the camera feed, including identifying sources of light, shades of light, reflection/refraction qualities of materials in the camera feed, etc. The system then modifies the AR content being displayed to mimic the lighting qualities of the environment, such that shadows and light of the AR content mirror physical displays. 
     In some cases, the system can use aspects of Lambert&#39;s law of diffuse reflectance to determine the color of a surface using the formula:
 
 c =(Σ a   l   +Σd   l )* d   m  
 
     where:
         c: color   a l : ambient light strength   d l : diffuse light strength   d m : diffuse material factor       

     Likewise, in some cases the system can use aspects of Phong&#39;s lighting approximation which adds, to Lambert&#39;s equation, a specular component:
 
 c =((Σ a   l   +Σd   l )* d   m )+(Σ s   l   *s   t )
 
     where additionally:
         s l : specular light (R×E) s      s t : specular texture contribution (specular surface map)   E: normal vector from eye to surface   R: reflection vector across the normal vector   S: shininess factor (how shiny/metallic the object surface is)       

     The system can also use the Blinn lighting model, which uses the following specular component:
 
 s   l : specular light( H×N ) s  
 
     where:
         H: vector midpoint between light vector and eye vector       

     Image recognition can, for example, occur by processing the video feed at 30, 60, or 120 frames per second, and is accompanied by detection of known images from a variety of distances, angles, and perspectives under varying lighting conditions. One or more cameras, processors, image databases, and other hardware and software elements work together to determine if an image marker has been found, and the exact reference point of that image marker with respect to the AR device. Identifying the relationship between the known location of the image marker and the current location of the AR device can require use of mathematical relationships (specifically trigonometry), and can factor into the display of the AR content. 
       FIG. 1  illustrates a first example system  100  for interacting with AR. In this example, the user  102  uses a smartphone  104  to view a combination of real life and artificial images placed over the view of real life within the smartphone  104  display. As the user  102  moves the smartphone  104  camera around a room or venue, the smartphone camera captures a video feed of the surroundings. As the video feed is captured, the images being captured are compared to images within an image database  108 . The image database  108  can be contained within memory of the smartphone  104 , within memory of a remote server, and/or a remote database. In this example, the smartphone  104  camera captures an image of a poster  106 , and smartphone  104  has compared the image of the poster  106  to images within the image database  108 . 
     When the image captured by the smartphone  104  is not found in the image database  108 , the system and the smartphone  104  continue searching the video feed for matches. For example, the camera and smartphone  104  can continue scanning regardless of whether a match is found, which can result in multiple images being captures and analyzed at once/in parallel. However, as illustrated, the image of the poster  106  has been found in the image database  108 , resulting in the display  110  of the smartphone (shown as an enlarged view) showing the live view of real life (in this case, the poster  118 ) as well as additional graphics  112  generated based on the detection of a known image. In this case, the additional graphics  112  displayed on the smartphone display  110  provide the user  102  with additional ways to interact with the poster  106 . For example, the additional icons  112  can provide the user  102  with a link to additional information about the poster&#39;s content, with the ability to “favorite” or “like” the poster for future reference, the ability to make an appointment or calendar item, and/or the ability to play video content associated with the poster  106 . 
     As the user  102  interacts (or does not interact) with the additional graphics  112 , the smartphone  104  records/logs the interaction in an interaction database  114 . Each detection event of an interactive display and/or interaction with associated interactive graphics can be recorded in the interaction database  114 , regardless of whether or not the user  102  interacts with the displayed content. The interaction database  114  can be contained within memory of the smartphone  104 , within memory of a remote server, and/or a remote database. The interactions of the user with the additional graphics  112  can then be used to inform the sponsor  116  of the poster  106  how the content is being received, interacted with, etc. In this manner, the sponsor  116  can measure the engagement and determine various metrics of value of the poster based on that engagement. 
     In some configurations, the system can also be location based. For example, the system can determine the user  102  location, locations of what is in the captured video, then add location-specific AR. If the smartphone  104  detects a poster  106 , a card, a building, or any other object (within the image database  108 ) at a first location, the smartphone can display an AR object which is not only based on the detected object, but also is based on the location. In such a configuration, the smartphone  104  could display distinct overlays if the same poster  106  were detected in the United States versus in Europe. Other exemplary factors which may result in distinct overlays include time of day, specific user information, and/or pseudo-random variables (such as a random chance of certain information or variants being displayed). 
     Also, as an example of the location-based AR with respect to objects such as physical buildings, the system can overlay colors, information, advertising, etc., upon detecting known objects. For example, when a user visits the coliseum in Rome, the smartphone  104  may detect the user&#39;s location (or more precisely, the location of the user&#39;s smartphone  104 ), then as the camera scans the real-world view of the coliseum, create an overlay of (1) how the coliseum would have looked in ancient times, and (2) interactive elements associated with the overlay. 
       FIG. 2  illustrates a second example system  200  for interacting with AR. This example  200  uses the same overall system configuration as that of  FIG. 1 —a user  102  interacting with a smartphone  104  which captures a video feed of surroundings using the smartphone  104  camera, checking images of the video feed against images in an image database  108 , and recording interactions with AR content in an interaction database  114  such that a sponsor  116  of the AR content can measure engagement. In this example  200 , the user&#39;s  102  smartphone  104  has captured a business card  202 , and an image from the video feed of that business card  202  is recognized as being stored within the image database  108 . In this case, the smartphone display  110  displays the “real life” view of the business card  204  with an overlaid three-dimensional object  206  based on the business card. In this case, the overlaid three-dimensional object  206  is a cube. As another example, if the business card (or poster, or coaster, or other detectable object) were related to a particular real-world object, such as a car, the three-dimensional object  206  could be of the car. 
       FIG. 3  illustrates example backend processing of AR according to an embodiment of the disclosed invention. In this example, the smartphone  104  captures an image ( 302 ) of real life which is displayed on the smartphone display. The system determines if the image is stored in the image database  108  ( 304 ). If the image is not stored in the image database  108 , the system/smartphone  104  continues with the image capture ( 306 ). If the image is contained within the image database, the system retrieves interactive displays/models ( 308 ) and uploads those interactive elements to the smartphone  104  display ( 310 ). The interactive displays/models retrieved can be stored in a database within memory of the smartphone or in an exterior database (such as one connected through the Internet). The system can also record that the interactive elements have been retrieved ( 312 ) into an interaction database  114 . Likewise, as the user interacts with the interactive elements displayed on the smartphone  104  display, the interactions can also be recorded in the interaction database ( 314 ). In addition, both the detection of interactive elements and/or the interactions can be sent to a real-time analytics and data processing system, which can modify or change interactive elements of future (or currently displayed) AR interactions for the user or for others. 
     In some configurations, the system can include gamification, such as collecting items to meets goals, displaying different content depending on the number of items collected, placing AR objects in certain areas of a room to direct traffic, and/or modifying content to redirect traffic. For example, a user can be directed to “collect” certain content, which can be accomplished by the camera detecting predetermined objects and displaying associated AR content. The system can record that the user has displayed the AR content and thereby “collected” the objects. When the user has collect all of the objects (or a certain portion of the objects), the system can modify the interactive content being displayed or otherwise reward the user in some manner. 
       FIG. 4A  illustrates a first example of determining orientation of a device to a known object  402 . In this example, multiple users  404  are gathered around a known object  402  (a map), having a known location and known dimensions  408 ,  410  (illustrated as the edges of the map  402 ). The devices  406  (illustrated as smartphones) of the users  404  use cameras to view the object  402 , extract images out of the camera feed to identify the object, calculate the angles or dimensions  412  of the captured object  402  relative to the devices  406 , and display AR related content on the display of the user devices  406  based on those angles  412  and/or the distance of the device  406  to the fixed object  402 . 
       FIG. 4B  illustrates a second example of determining orientation of a device  406  to a known object  402 . In this example, the user  404  is standing a certain distance from the fixed object  402 , and the heading (the direction in which the device  406  is pointing) is known. The device  406  can capture an image (preferably from a video feed) of the object  402 , and from that image measure the angles  412  or dimensions of the captured object  402 . Using the angles  412 , and the known, fixed attributes (dimensions, orientation, location, etc.) of the fixed object  402 , the device  406  can calculate the distance between the fixed object  402  and the device  406 , as well as the angle of orientation between the fixed object  402  and the device  406 . In some configurations, the device  406  can also determine its location using GPS (Global Positioning System) or triangulation mechanisms. 
       FIG. 5  illustrates an example of route planning  500 . In this example, the system plans a route  514  for a user from a starting location  502  to a destination  504  while navigating around obstacles  510  while aware of other destinations  506  or points of interest  508 . In addition to identifying the most efficient route for the user, the system also considers partially obstructed areas  512  surrounding known obstructions  510 . For example, around furniture, counters, tables, etc., there may be people, stored items, and other objects which can impede a user walking nearby. Systems configured as disclosed herein can adjust for those potential impediments, instructing the user to navigate around and/or away from those potential problems by a minimum measurement. 
       FIG. 6  illustrates an example method embodiment. In this example a mobile computing device (such as a smartphone, smart glasses, a tablet computer, or smart contact lenses) performs the illustrated method. The method includes capturing, via a camera of a mobile computing device, a video feed ( 602 ) and extracting, via a processor of the mobile computing device, an image from the video feed ( 604 ). The processor determines that the image corresponds to a stored image in a plurality of stored images stored in an image database, resulting in a determination ( 606 ) and retrieves, via the processor and based on the determination, interactive content associated with the stored image ( 608 ). Then the interactive content is displayed, via a display of the mobile computing device, as an augmented reality overlay ( 610 ). 
     In some configurations, the image database can be located within the mobile computing device. That is, the image database can be a portion of a hard drive or memory device located within the mobile computing device. In other configurations, the image database can be located remotely from the mobile computing device. In such configurations, the illustrated method can further include transmitting the image across a network from the mobile computing device to a remote computing system which contains the image database, and receiving, from the remote computing system, a confirmation that the image is stored in the image database. 
     In some configurations, the illustrated method can further include identifying, via an onboard compass of the mobile computing device, a current heading of the mobile computing device; identifying, via the processor, a scale of the image relative to the stored image; and modifying, via the processor, the interactive content displayed on the display based on the current heading and the scale. Exemplary modifications can include changing a size of the interactive content displayed based on the scale and/or changing an angle of the interactive content displayed based on the current heading. 
     In some configurations, the interactive content can include a map and/or directions to a subsequent destination, and the method can then further include: detecting movement of the mobile computing device, the movement comprising at least one of a change of location or a change of direction, and modifying at least one of the map or the directions based on the at least one of the change of location or the change of direction. 
     In some configurations, the illustrated method can further include: tracking, via the processor, interactions with the interactive content by a user of the mobile computing device; and transmitting, from the mobile computing device to a server, the interactions, wherein: the server aggregates the interactions with interactions of other users, resulting in aggregated user interactions; and modifies the interactive content on the mobile computing device based on the aggregated user interactions. In such configurations, the interactive content can be stored within the server, and the retrieving of the interactive content by the processor can further include: transmitting, from the processor to the server across a network, a request for the interactive content; and receiving, in response to the request, at the processor from the server across the network, the interactive content. 
     In some configurations, the interactive content can be stored within a database of the mobile computing device. 
     With reference to  FIG. 7 , an exemplary system includes a general-purpose computing device  700 , including a processing unit (CPU or processor)  720  and a system bus  710  that couples various system components including the system memory  730  such as read-only memory (ROM)  740  and random access memory (RAM)  750  to the processor  720 . The system  700  can include a cache of high-speed memory connected directly with, in close proximity to, or integrated as part of the processor  720 . The system  700  copies data from the memory  730  and/or the storage device  760  to the cache for quick access by the processor  720 . In this way, the cache provides a performance boost that avoids processor  720  delays while waiting for data. These and other modules can control or be configured to control the processor  720  to perform various actions. Other system memory  730  may be available for use as well. The memory  730  can include multiple different types of memory with different performance characteristics. It can be appreciated that the disclosure may operate on a computing device  700  with more than one processor  720  or on a group or cluster of computing devices networked together to provide greater processing capability. The processor  720  can include any general purpose processor and a hardware module or software module, such as module  1   762 , module  2   764 , and module  3   766  stored in storage device  760 , configured to control the processor  720  as well as a special-purpose processor where software instructions are incorporated into the actual processor design. The processor  720  may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric. 
     The system bus  710  may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. A basic input/output (BIOS) stored in ROM  740  or the like, may provide the basic routine that helps to transfer information between elements within the computing device  700 , such as during start-up. The computing device  700  further includes storage devices  760  such as a hard disk drive, a magnetic disk drive, an optical disk drive, tape drive or the like. The storage device  760  can include software modules  762 ,  764 ,  766  for controlling the processor  720 . Other hardware or software modules are contemplated. The storage device  760  is connected to the system bus  710  by a drive interface. The drives and the associated computer-readable storage media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computing device  700 . In one aspect, a hardware module that performs a particular function includes the software component stored in a tangible computer-readable storage medium in connection with the necessary hardware components, such as the processor  720 , bus  710 , display  770 , and so forth, to carry out the function. In another aspect, the system can use a processor and computer-readable storage medium to store instructions which, when executed by the processor, cause the processor to perform a method or other specific actions. The basic components and appropriate variations are contemplated depending on the type of device, such as whether the device  700  is a small, handheld computing device, a desktop computer, or a computer server. 
     Although the exemplary embodiment described herein employs the hard disk  760 , other types of computer-readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, digital versatile disks, cartridges, random access memories (RAMs)  750 , and read-only memory (ROM)  740 , may also be used in the exemplary operating environment. Tangible computer-readable storage media, computer-readable storage devices, or computer-readable memory devices, expressly exclude media such as transitory waves, energy, carrier signals, electromagnetic waves, and signals per se. 
     To enable user interaction with the computing device  700 , an input device  790  represents any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. An output device  770  can also be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems enable a user to provide multiple types of input to communicate with the computing device  700 . The communications interface  780  generally governs and manages the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed. 
     Use of language such as “at least one of X, Y, and Z,” “at least one of X, Y, or Z,” “at least one or more of X, Y, and Z,” “at least one or more of X, Y, or Z,” “at least one or more of X, Y, and/or Z,” or “at least one of X, Y, and/or Z,” are intended to be inclusive of both a single item (e.g., just X, or just Y, or just Z) and multiple items (e.g., {X and Y}, {X and Z}, {Y and Z}, or {X, Y, and Z}). The phrase “at least one of” and similar phrases are not intended to convey a requirement that each possible item must be present, although each possible item may be present. 
     The various embodiments described above are provided by way of illustration only and should not be construed to limit the scope of the disclosure. Various modifications and changes may be made to the principles described herein without following the example embodiments and applications illustrated and described herein, and without departing from the spirit and scope of the disclosure.