Patent Publication Number: US-11660758-B2

Title: Robots for serving food and/or drinks

Description:
FIELD 
     This application relates generally to robots, and more specifically, to robots configured to serve food and/or drinks. 
     BACKGROUND 
     Many restaurants do not use robots for servicing customers. One reason is that environments of restaurants pose unique problems that may render use of robots difficult and/or unsatisfactory. For example, a restaurant may have various obstacles and spatial constraints, which make navigation of robot difficult. Also, restaurants may have various objects with different dimensions and heights, such as tables, bar stools, chairs, shelves, wine tables, etc., which makes it difficult for the robot to avoid collision. 
     SUMMARY 
     A robot includes: a base having a plurality of wheels; a body having a bottom portion coupled above the base, and a top portion above the bottom portion, the top portion configured to support food and/or drink; a first camera at the bottom portion, wherein the first camera is oriented to view upward; and a second camera at the top portion, wherein the second camera is configured to view upward. 
     Optionally, the first camera is oriented so that its field of detection covers a first area that is not covered by the second camera, and wherein the second camera is oriented so that its field of detection covers a second area that is not covered by the first camera. 
     Optionally, the robot further includes a third camera at the top portion, wherein the third camera is configured to view substantially horizontally. 
     Optionally, the robot further includes a processing unit configured to obtain a first point cloud from the first camera, and a second point cloud from the second camera, and process the first and second point clouds. 
     Optionally, the processing unit is configured to remove height components in the first and second point clouds, to obtain first and second two-dimensional point clouds, and wherein the processing unit is configured to combine the first and second two-dimensional point clouds to determine an obstacle boundary. 
     Optionally, the processing unit is configured to steer the robot based on the obstacle boundary. 
     Optionally, the robot further includes a processing unit configured to obtain a map of a facility, and determine a navigation route within the facility based on the map. 
     Optionally, the robot further includes a laser device configured to detect surrounding, e.g., at least behind the robot. 
     Optionally, the top portion comprises a support that is detachably coupled to a remaining part of the top portion, the support configured to support the food and/or the drink. 
     Optionally, the robot further includes a weight sensor coupled to the support. 
     Optionally, the robot further includes a processing unit configured to receive an input from a weight sensor or a camera, and process the input to determine whether an item has been placed on, or removed from, the support. 
     Optionally, the support meets requirements of National Sanitization Foundation (NSF), requirements of American National Standards Institute (ANSI), requirements of U.S. Food and Drug Administration (FDA), or any combination of the foregoing. 
     Optionally, the support is configured to withstand a temperature that is above 135° F. 
     Optionally, the support comprises Polyethylene Terephthalate (PET), Polyproylene (PP), Polycarbonate (PC), a synthetic fluoropolymer of tetrafluoroethylene, Polychlorotrifluoroethylene (PCTFE), Polyvinylidene fluoride (PVDF), a copolymer of ethylene and chlorotrifluoroethylene, or chlorinated polyvinyl chloride (CPVC). 
     Optionally, the robot further includes a processing unit configured to generate a first control signal to stop robot to service a first table in a facility, and generate a second control signal to move the robot towards a next destination in the facility based on a satisfaction of one or more criteria. 
     Optionally, the one or more criteria comprises a lapse of a predetermined period. 
     Optionally, the one or more criteria comprises a change in a weight supported by the robot. 
     Optionally, the processing unit is configured to determine whether the one or more criteria is satisfied based on an optical image, or based on a parameter determined based on the optical image. 
     Optionally, the next destination comprises a second table to be serviced, or a home position. 
     Optionally, the robot further includes an optical camera configured to view a spatial region above a food supporting surface associated with the top portion. 
     Optionally, the first camera comprises a first depth-sensing camera, and the second camera comprises a second depth sensing camera. 
     Optionally, the robot further includes a third depth-sensing camera. 
     Optionally, the bottom portion has a first cross sectional dimension, and the top portion has a second cross sectional dimension that is larger than the first cross sectional dimension. 
     Optionally, the robot further includes a speaker at the top portion or the bottom portion, and a processing unit configured to control the speaker to provide audio information. 
     Optionally, the robot further includes a microphone at the top portion or the bottom portion. 
     Optionally, the robot further includes one or more programmable buttons at the top portion. 
     Optionally, the bottom portion comprises a slot configured to accommodate a container, wherein the container is sized for holding tableware and/or food menus. 
     Optionally, the top portion has a frame that is moveable in a vertical direction from a first position to a second position. 
     Optionally, the robot further includes a touch-screen device that is detachably coupled to the top portion or the bottom portion. 
     Optionally, the robot further includes a first motor coupled to a first wheel of the plurality of wheels, and a second motor coupled to a second wheel of the plurality of wheels. 
     A robot includes: a base having a plurality of wheels; a body having a bottom portion coupled above the base, and a top portion above the bottom portion; and a support at the top portion, wherein the support is configured to withstand a temperature that is above 135° F. 
     Optionally, the support meets requirements of National Sanitization Foundation (NSF), requirements of American National Standards Institute (ANSI), requirements of U.S. Food and Drug Administration (FDA), or any combination of the foregoing. 
     Optionally, the support comprises Polyethylene Terephthalate (PET), Polyproylene (PP), Polycarbonate (PC), a synthetic fluoropolymer of tetrafluoroethylene, Polychlorotrifluoroethylene (PCTFE), Polyvinylidene fluoride (PVDF), a copolymer of ethylene and chlorotrifluoroethylene, or chlorinated polyvinyl chloride (CPVC). 
     Optionally, the support is configured to support food and/or drinks. 
     Optionally, the robot further includes one or more camera(s) located below the support. 
     A robot includes: a base having a plurality of wheels; a motor system mechanically coupled to one or more of the wheels; a body having a bottom portion coupled above the base, and a top portion above the bottom portion; a support at the top portion, wherein the support is configured to withstand a temperature that is above 135° F.; and a processing unit configured to operate the robot. 
     Optionally, the top portion comprises a support for supporting the food and/or the drink, and wherein the robot further comprises one or more weight sensor(s) coupled to the support; and wherein the processing unit is configured to provide a signal to operate the motor system based on an output from the one or more weight sensor(s). 
     Optionally, the robot further includes a microphone, wherein the processing unit is configured to provide a signal to operate the motor system in response to a voice command received by the microphone. 
     Optionally, the robot further includes a user interface, wherein the processing unit is configured to provide a signal to operate the motor system in response to an input received by the user interface. 
     Optionally, the user interface comprises a button and/or a touch screen. 
     Optionally, the robot further includes a wireless communication device, wherein the processing unit is configured to provide a signal to operate the motor system in response to an input received by the wireless communication device. 
     Optionally, the robot further includes a first camera configured to sense object(s) outside the robot. 
     Optionally, the robot further includes a second camera, wherein the first camera is oriented so that its field of detection covers a first area that is not covered by the second camera, and wherein the second camera is oriented so that its field of detection covers a second area that is not covered by the first camera. 
     Optionally, the robot further includes a third camera configured to view substantially horizontally. 
     Optionally, the processing unit is configured to obtain a first point cloud from the first camera, and a second point cloud from the second camera, and process the first and second point clouds. 
     Optionally, the processing unit is configured to remove height components in the first and second point clouds, to obtain first and second two-dimensional point clouds, and wherein the processing unit is configured to combine the first and second two-dimensional point clouds to determine an obstacle boundary. 
     Optionally, the processing unit is configured to steer the robot based on the obstacle boundary. 
     Optionally, the processing unit is configured to provide a first signal to operate the motor system to drive the robot to a first destination in a facility, and wherein the processing unit is also configured to determine whether a criterion for leaving the first destination is met, and to provide a second signal to operate the motor system to drive the robot away from the first destination if the criterion for leaving the first destination is met. 
     Optionally, the criterion comprises a maximum lapsed time since arrival at the first destination, and wherein the processing unit is configured to provide the second signal to operate the motor system if a lapsed time since arrival at the first destination reaches the maximum lapsed time. 
     Optionally, the processing unit is configured to obtain a map of a facility, and determine a navigation route within the facility based on the map. 
     Optionally, the robot further includes a laser device configured to detect surrounding. 
     Optionally, the robot further includes a weight sensor coupled to the support. 
     Optionally, the processing unit is configured to receive an input from a weight sensor or a camera, and process the input to determine whether an item has been placed on, or removed from, the support. 
     Optionally, the support meets requirements of National Sanitization Foundation (NSF), requirements of American National Standards Institute (ANSI), requirements of U.S. Food and Drug Administration (FDA), or any combination of the foregoing. 
     Optionally, the processing unit is configured to drive the robot to a first destination to service a first table in a facility. 
     Optionally, the bottom portion has a first cross sectional dimension, and the top portion has a second cross sectional dimension that is larger than the first cross sectional dimension. 
     Optionally, the robot further includes a speaker at the top portion or the bottom portion, wherein the processing unit is configured to control the speaker to provide audio information. 
     Optionally, the robot further includes a microphone at the top portion or the bottom portion. 
     Optionally, the robot further includes one or more programmable buttons at the top portion. 
     Optionally, the bottom portion comprises a slot configured to accommodate a container, wherein the container is sized for holding tableware and/or food menus. 
     Optionally, the top portion has a frame that is moveable in a vertical direction from a first position to a second position. 
     Optionally, the robot further includes a touch-screen device that is detachably coupled to the top portion or the bottom portion. 
     Optionally, the motor system comprises a first motor coupled to a first wheel of the plurality of wheels, and a second motor coupled to a second wheel of the plurality of wheels. 
     Other and further aspects and features will be evident from reading the following detailed description of the embodiments. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The drawings illustrate the design and utility of embodiments, in which similar elements are referred to by common reference numerals. These drawings are not necessarily drawn to scale. In order to better appreciate how the above-recited and other advantages and objects are obtained, a more particular description of the embodiments will be rendered, which are illustrated in the accompanying drawings. These drawings depict only typical embodiments and are not therefore to be considered limiting of its scope. 
         FIGS.  1 - 3    illustrate a robot in accordance with some embodiments. 
         FIG.  4    illustrates an example of object detection technique using an unique camera system setup. 
         FIG.  5    illustrates a method of collision avoidance. 
         FIG.  6    illustrates a method performed by a robot. 
         FIGS.  7 - 8    illustrate a robot in accordance with some embodiments. 
         FIG.  9    illustrates a processing unit of a robot in accordance with some embodiments. 
     
    
    
     DESCRIPTION OF THE EMBODIMENTS 
     Various embodiments are described hereinafter with reference to the figures. It should be noted that the figures are not drawn to scale and that elements of similar structures or functions are represented by like reference numerals throughout the figures. It should also be noted that the figures are only intended to facilitate the description of the embodiments. They are not intended as an exhaustive description of the invention or as a limitation on the scope of the invention. In addition, an illustrated embodiment needs not have all the aspects or advantages shown. An aspect or an advantage described in conjunction with a particular embodiment is not necessarily limited to that embodiment and can be practiced in any other embodiments even if not so illustrated. 
       FIGS.  1 - 3    illustrate a robot  100  in accordance with some embodiments. The robot  100  includes a base  102  having a plurality of wheels  104 . The robot  100  also includes a body  110  having a bottom portion  112  coupled above the base  102 , and a top portion  114  above the bottom portion  112 , wherein the top portion  114  is configured to support food and/or drink. The top portion  114  and the bottom portion  112  may be integrally formed together in some embodiments. In such cases, the top portion  114  and the bottom portion  112  refer to different parts of a component. Alternatively, the top portion  114  and the bottom portion  112  may be separate components that are mechanically coupled together. The robot  100  also includes a first camera  120  at the bottom portion  112 , wherein the first camera  120  is oriented to view upward. The robot  100  further includes a second camera  122  at the top portion  114 , wherein the second camera  122  is configured to view upward. The robot  100  also includes a third camera  124  at the top portion  114 , wherein the third camera  124  is configured to view substantially horizontally. As used in this specification, the term “substantially horizontally” or a similar term refers to an orientation that is horizontal (0°)±30° or less, such as 0°±15°. In other embodiments, the robot  100  may not include the third camera  124 , and the third camera  124  is optional. 
     In the illustrated embodiments, the bottom portion  112  has a first cross sectional dimension, and the top portion  114  has a second cross sectional dimension that is larger than the first cross sectional dimension. However, the robot  100  should not be limited to the configuration (e.g., shape) shown. In other embodiments, the robot  100  may have other configurations. Also, in the illustrated embodiments, the robot  100  has a maximum cross sectional dimension that is 36 inches or less, and more preferably 30 inches or less, or even more preferably 24 inches or less, such as 18 inches plus-or-minus 2 inches. This allows the robot  100  to navigate through crowd in a restaurant and/or through closely spaced furniture in a restaurant. In other embodiments, the robot  100  may have a maximum cross sectional dimension that is different from the examples provided. In the illustrated embodiments, the first and second portions  112 ,  114  are separate components that are assembled together. In other embodiments, the first and second portions  112 ,  114  may have an unity configuration. For example, they may be parts of a same housing in other embodiments. 
     In the illustrated embodiments, the first camera  120  comprises a first depth-sensing camera, and the second camera  122  comprises a second depth sensing camera. Also, the third camera  124  may comprise a third depth-sensing camera. In other embodiments, the first, second, and third cameras  120 ,  122 ,  124  may be other types of cameras. 
     As shown in  FIG.  2   , having the first camera  120  viewing upward is advantageous because its field of range of detection covers certain area (e.g., area  250 ) that cannot be covered by the second camera  122 . Similarly, having the second camera  122  viewing downward is advantageous because its field of range of detection covers certain area (e.g., area  252 ) that cannot be covered by the first camera  120 . Thus, the first camera  120  may detect an object in front of the top portion  114  of the robot that is higher up from the ground, and that is not detectable by the second camera  122 . Similarly, the second camera  122  may detect an object in front of the bottom portion  112  and in front of the base  102 , and that is not detectable by the first camera  120 . Also, for certain depth sensing camera, it may have a zone (blind spot) such that the camera may not detect things too close from it—e.g., within a certain distance (e.g., up to 40 cm from the camera). Having the arrangement of cameras shown in  FIG.  2    also addresses such problem. In some embodiments, the cameras  120 ,  122  may be oriented so that they collectively can detect obstacle that is within 5 meters from the robot  100 . In other embodiments, the obstacle detection range may be more than 5 meters or less than 5 meters, from the robot  100 . It should be noted that the term “upward” as used in this specification refers to a direction that is pointing above a horizontal plane and that is anywhere in a range defined by a vertical axis ±45°. Accordingly, a camera facing “upward” may refer to a camera-facing direction pointing above a horizontal plane and that is anywhere between 45° (measured from a vertical axis) and −45° (measured from the vertical axis). Similarly, the term “downward” as used in this specification refers to a direction that is pointing below a horizontal plane and that is anywhere in a range defined by a vertical axis ±45°. Accordingly, a camera facing “downward” may refer to a camera-facing direction pointing below a horizontal plane and that is anywhere between 45° (measured from a vertical axis) and −45° (measured from the vertical axis). 
     In addition, having the third camera  124  viewing forward may be advantageous because it detects objects that are further than the region covered by the first and second cameras  120 ,  122 . In particular, while the first and second cameras  120 ,  122  together may provide a full coverage (i.e., no “blind spot”) around the robot  100 , their coverage may extend only a short distance from the robot  100 . The third camera  124  may extend the coverage to regions that are further from the robot  100 . In other embodiments, the first and second cameras  120 ,  122  may detect objects that are sufficiently far (e.g., 6 inches, 1 ft, 1 ft, 3 ft, 4 ft, 5 ft, 6 ft, 8 ft, 10 ft, 12 ft, etc.) from the robot  100 . In such cases, the robot  100  may not need the third camera  124 . 
     In some embodiments, the first and second cameras  120 ,  122  (and optionally the third camera  124 ) may be oriented so that they collectively cover all of the blind spots of all of the cameras. In some embodiments, the field of detection of the first camera  120  may cover the second camera  122 , and the field of detection of the second camera  122  may cover the first camera  120 . In other embodiments, the field of detection of the first camera  120  may not cover the second camera  122 , and the field of detection of the second camera  122  may not cover the first camera  120 . 
     In other embodiments, the robot  100  may include fewer than three cameras, or more than three cameras. For example, in other embodiments, the robot  100  may include only two cameras if the two cameras together can provide all of the detection coverage in front of the robot  100 . This may be possible when one or both of the cameras have a wide angle of “view” or detection, such as an angle of detection that is 90° or more. In further embodiments, the robot  100  may include only a single camera if such camera has a wide angle of “view” or detection, such as an angle of detection that is 180°. 
     The robot  100  also includes a processing unit  130  configured to control various components of the robot  100 . The processing unit  130  may be implemented using hardware, software, or a combination of both. In one implementation, the processing unit  130  may comprise a printed circuit board (PCB) with various components. In other embodiments, the processing unit  130  may be one or more integrated circuit(s) coupled together. Also, in some embodiments, the processing unit  130  may include one or more processors, such as general purpose processors, ASIC processors, FPGA processors, etc. 
     The robot  100  also includes a first motor  140  coupled to a first wheel of the plurality of wheels  104 , and a second motor  142  coupled to a second wheel of the plurality of wheels  104 . The motors  140 ,  142  may be activated together to rotate the wheels  104  in the same direction at the same rate to translate the robot  100  forward or backward. The motors  140 ,  142  may also be activated together to rotate only one of the two wheels  104 , rotate the wheels in the same direction at different rates, or rotate the wheels  104  in different directions to thereby turn the robot  100 . In other embodiments, the robot  100  may have a transport system that is different from that described. For example, in other embodiments, the robot  100  may have a single motor for controlling two wheels  104 , and an independent steering mechanism for turning a third wheel. As another example, the robot  100  may have four wheels, such as four omni-directional wheels. In further embodiments, the robot  100  may include other types of wheels, such as tractor-type wheels. 
     In the illustrated embodiments, the robot  100  further includes a laser device  150  (shown in  FIG.  2   ) configured to detect a surrounding, e.g., at least behind the robot. The laser device  150  may include a laser source configured to provide laser beam, and a motor configured rotate the laser beam. In one implementation, the laser device  150  may be a lidar device, which may have a detection range that is 10 m or more (e.g., 20 m). In some embodiments, the laser device  150  may be configured to provide data regarding a surrounding behind the robot, wherein the field of detection is at least 180°. In other embodiments, the field of detection may be more than 180° (e.g., 220° or more, 360°, etc.). In further embodiments, the field of detection may be less than 180°. Also, in other embodiments, the laser device  150  may be configured to detect a surrounding in front of the robot. In the illustrated embodiments, the laser device  150  is configured to provide input to the processing unit  130 , which then processes such input to localize the robot  100  with respect to the surrounding. In some embodiments, a three dimensional map of the restaurant may be obtained and stored in a non-transitory medium  152  in the robot  100 . The processing unit  130  may be configured to obtain signals from the laser device  150 , and generate a real-time three-dimensional model of the surrounding. The processing unit  130  may then compare the three-dimensional model with the three dimensional map to identify the location of the robot  100 . 
     Also, in the illustrated embodiments, the processing unit  130  of the robot  100  includes a navigation control  160  configured operate the motors  140 ,  142  of the robot  100  in order to navigate the robot  100  to different locations in a restaurant. The navigation control  160  is configured to obtain a map of the restaurant, a current position of the robot  100 , and a target position of the robot  100 , and operate the motors  140 ,  142  to move the robot  100  from the current position to the target position based on the map of the restaurant. Also, the processing unit  130  of the robot  100  may be configured to determine a navigation route within the restaurant based on the map. In some embodiments, the map of the restaurant may be transmitted wirelessly to the robot  100 , and may be stored in the non-transitory medium  152  in the robot  100 . For example, the map may be transmitted from a remote server, a cell phone, a tablet, etc. In other embodiments, the map of the restaurant may be stored in a USB drive, and may be transmitted from the USB drive to the robot  100  after the USB drive is plugged into a USB port at the robot  100 . 
     In the illustrated embodiments, the robot  100  also includes a tray  200  for supporting various items, such as food, drinks, tableware, menus, to-go boxes, check, etc. The tray  200  that is detachably coupled to a part of the top portion  114 . Such feature allows the tray  200  to be removed from the robot  100  for cleaning, serving customers, and/or replacement purpose. In some cases, the tray  200  may be considered to be a part of the top portion  114 . The robot  100  also includes a weight sensor  210  for sensing a weight supported by the tray  200 . The weight sensor  210  may be implemented using one or more strain gauges (e.g., 3 strain gauges, 4 strain gauges, etc.). As shown in the figure, the tray  200  has a planar supporting surface. In other embodiments, the tray  200  may have other configurations. For example, in other embodiments, the tray  200  may include glass holder(s) and/or bottle holder(s). Accordingly, as used in this specification, the term “tray” should not be limited to a supporting structure having a planar supporting surface, and may include any support structure or mechanical component designed to hold different items in a restaurant. In the illustrated embodiments, the weight sensor  210  is coupled to the processing unit  130 , which allows the processing unit  130  to control the robot  100  based on input provided by the weight sensor  210 . For example, in some embodiments, the processing unit  130  of the robot  100  may be configured to determine if an item has been placed on the tray  200 . If so, the processing unit  130  may determine whether to move the robot  100  to a certain location based on the sensed weight. In one implementation, a restaurant server may place a food item on the tray  200  for delivery to a certain table. When the processing unit  130  determines that an item has been placed on a tray based on input from the weight sensor  210 , the processing unit  130  may then operate the motors  140 ,  142  of the robot  100  to deliver the item to a certain table (e.g., a table input to the robot  100  by the server). Alternatively or additionally, the processing unit  130  of the robot  100  may determine if an item has been removed from the tray  200 . If so, the processing unit  130  may determine whether to move the robot  100  to a certain location based on the weight change sensed by the weight sensor  210 . In one implementation, the robot  100  may deliver a certain item (e.g., food) to a certain table. When the customer at the table has removed the item from the robot  100 , the weight sensor  210  provides an input to the processing unit  130 . The processing unit  130  determines that there is a reduction of the weight supported by the tray  200  of the robot  100 , indicating that the customer has removed the item being delivered by the robot  100 . The processing unit  130  may then operate the motors  140 ,  142  of the robot  100  to move the robot to a next destination. 
     In other embodiments, instead of, or in addition to, having the weight sensor  210 , the robot  100  may also include an optical camera configured to view a spatial region above a food supporting surface associated with the top portion  114  (e.g., a spatial region above the tray  200 ). In such cases, the processing unit  130  may be configured to determine whether an item has been placed on the tray  200 , or removed from the tray  200  based on an optical image obtained from the camera. For example, the camera may obtain an image of the spatial region above the tray  200  (while the tray  200  is not supporting any items) as a reference image. Such reference image may be stored in the non-transitory medium  152  in the robot  100 . When an item has been placed on the tray  200 , the camera captures an image, and transmits the image to the processing unit  130  for processing. The processing unit  130  may compare the image with the reference image stored in the non-transitory medium  152 . In some embodiments, the comparing of the images by the processing unit  130  may be implemented by the processing unit  130  determining a correlation value between the two images. If the two images are different, the processing unit  130  may determine that an item has been placed on the tray  200 . 
     Similarly, the camera may obtain an image of the spatial region above the tray  200  after an item has been placed on the tray  200 . Such reference image may be stored in the non-transitory medium  152  in the robot  100 . When the item has been removed from the tray  200 , the camera captures an image, and transmits the image to the processing unit  130  for processing. The processing unit  130  may compare the image with the reference image stored in the non-transitory medium  152 . In some embodiments, the comparing of the images by the processing unit  130  may be implemented by the processing unit  130  determining a correlation value between the two images. If the two images are different, the processing unit  130  may determine that an item has been removed from the tray  200 . 
     In some embodiments, the capturing of the image by the camera may be performed in response to a change in the weight supported by the tray  200 . For example, when an item has been placed on the tray  200 , and/or when an item has been removed from the tray  200 , the processing unit  130  will receive an input from the weight sensor  210  indicating the corresponding weight being sensed by the weight sensor  210 . The processing unit  130  may then determine whether there is a weight change, and if so, the processing unit  130  may generate a signal to cause the camera to take an image. Alternatively, the camera may be configured to continuously generate images (e.g., a video) of the spatial region above the tray  200 . In such cases, the generating of the images will not be based on any sensed weight. The processing unit  130  in such cases may be configured to analyze the images in real time, and determine whether an item has been placed on the tray  200 , or removed from the tray  200 . 
     It should be noted that the food and/or drink supporting mechanism is not limited to the tray  200  illustrated in the example. In other embodiments, the food and/or drink may be supported by any support, which may be any type of tray, or may have a configuration different from that of a tray. The support may be made from a sanitizable material, such as a material that would not produce any chemical and/or that would not exhibit a color change or color deterioration, when it contacts with a corrosive sanitizer (e.g., Chlorox). Alternatively or additionally, the material of the support may be dishwasher safe. For example, the support material may be robust enough to withstand heat (such as any temperature above 100° F. (e.g., from 100° F. to 200° F.), above 110° F. (e.g., from 110° F. to 140° F., above 135° F., etc.) and chemicals used in commercial dishwasher. Also, in some embodiments, the support material may be a food-contact safe material approved by Food &amp; Drug Administration (FDA). In some embodiments, the support material may be an acid resistant plastic, such as a synthetic fluoropolymer of tetrafluoroethylene, Polychlorotrifluoroethylene (PCTFE), Polyvinylidene fluoride (PVDF), a copolymer of ethylene and chlorotrifluoroethylene, chlorinated polyvinyl chloride (CPVC), etc. Other examples of materials that may be used for the support include Polyethylene Terephthalate (PET), Polyproylene (PP), Polycarbonate (PC), glassteel, fiberglass, plastic, polycarbonate, etc. Furthermore, in some embodiments, the support may be constructed to meet requirements of National Sanitization Foundation (NSF), requirements of American National Standards Institute (ANSI), such as NSF/ANSI 2, 4, 36, 59, requirements of U.S. Food and Drug Administration (FDA), or any combination of the foregoing. In other embodiments, the support may be constructed to meet requirements of another agency or government body outside the U.S. (such as in Korea, China, Europe, Japan, etc.). 
     As shown in  FIG.  3   , the robot  100  further includes speakers  300  at the top portion  114 . Alternatively, the speakers  300  may be at the bottom portion  112 . The processing unit  130  may include an audio processing module  162  configured to control the speakers  300  to provide audio information. For example, in some embodiments, the processing unit  130  may operate the speakers  300  to inform a customer that food has arrived, and may instruct the customer to take a certain food item being supported on the robot  100 . As another example, the processing unit  130  may operate the speakers  300  to inform a customer that a check has arrived. In other embodiments, the robot  100  may include only a single speaker  300 , or more than two speakers  300 . 
     In the illustrated embodiments, the robot  100  further includes a microphone  138  at the top portion  114 . The microphone  138  is configured to receive sound, and provide microphone output signal for processing by the processing unit  130 . In some embodiments, the processing unit  130  may include a sound processing module  164  configured to process the microphone output signal to identify a command and/or a request. For example, a customer or a user may instruct the robot  100  to go back to a “home” position by speaking “Go home” to the microphone  138 . As another example, a customer may ask for menu, order food, order drink, request check, request server, request to-go box, etc., or any combination of the foregoing. The microphone  138  receives such audio request(s) and may provide corresponding microphone output signals for storage in the non-transitory medium  152 , and/or for wireless transmission to a speaker (e.g., a speaker of a device worn by a server, a speaker in a kitchen, etc.). Alternatively, or additionally, the microphone output signals may be converted into a message for storage in a server or external device (e.g., a cell phone, a tablet, etc.), and a server may retrieve such message at any time desired by the server. In other embodiments, the microphone  138  may be implemented at the bottom portion  112  of the robot  100 . Also, in other embodiments, the robot  100  may include more than one microphone  138 . For example, in other embodiments, the robot  100  may include two microphones  138 , which allow a direction of sound to be determined by the processing unit  130 . In further embodiments, the robot  100  may include no microphone. 
     As shown in  FIG.  1   , the robot  100  further includes two programmable buttons  170  at the top portion  114 . Each button  170  may be programmed to achieve a desired function. By means of non-limiting examples, each button  170  may be programmed to instruct the robot  100  to return to the “home” position, go to a dedicated position, provide a check, ask for a server, etc. In some cases, the robot  100  may include a user interface (e.g., a touch screen) for allowing a user of the robot  100  to program the buttons  170 . The user interface may display a list of available functions for association with one or both of the buttons  170 . Once the user selects a function for a certain button  170  using the user interface, the selection is then stored in the non-transitory medium  152  in the robot  100 , and the button  170  will be assigned for the selected function. In other cases, a user may access an application in a cell phone or tablet, and use the application to program the button(s)  170 . In such cases, the application may transmit the selected function for the button(s)  170  to a cloud for transmission to the robot  100 , or directly to the robot  100  wirelessly. In further cases, the button(s)  170  may be programmed by an administrator or manufacturer of the robot  100 . In such cases, the button(s)  170  are already pre-programmed before the robot  100  is delivered to a restaurant. In other embodiments, the robot  100  may include more than two programmable buttons  170 , or no programmable button. Also, in other embodiments, the button(s)  170  may have a dedicated function that is pre-determined, in which case, the button(s)  170  may not be programmable. 
     In the illustrated embodiments, the processing unit  130  of the robot  100  includes an obstacle detector  180  configured to obtain a first point cloud from the first camera  120 , a second point cloud from the second camera  122 , and the third point cloud from the third camera  124 , and process the first, second, and third point clouds. In one implementation, the obstacle detector  180  of the processing unit  130  is configured to remove height components in the first, second, and third point clouds, to obtain first, second, and third two-dimensional point clouds. For example, if the first point cloud includes a point with coordinate (X=23, Y=55, Z=83), then the obstacle detector  180  of the robot  100  removes the height component (Z=83 in the example) to convert the 3D point to a 2D coordinate (X=23, Y=55). After the two-dimensional point clouds have been determined, the obstacle detector  180  then combines the first, second, and third two-dimensional point clouds to determine an obstacle boundary. The processing unit  130  may control the robot  100  based on the determined obstacle boundary. For example, the processing unit  130  may generate a control signal to stop the robot  100  and/or to steer the robot  100  to a different direction to thereby avoid a collision based on the determined obstacle boundary. In other embodiments, instead of using point clouds from all three cameras  120 ,  122 ,  124 , the obstacle detector  180  may use only point clouds from the first and second cameras  120 ,  122  to determine the obstacle boundary. 
       FIG.  4    illustrates an example of the above obstacle detection technique. As shown in the figure, there is a table  400  in a restaurant. The table  400  has a table edge  402 . In the illustrated example, there is also a purse  410  on the floor partially below the table  400 . As the robot  100  approaches the table  400 , the first camera  120  facing upward detects the table edge  402 , but it cannot detect the purse  410  on the floor. However, the second camera  122  facing downward can detect the purse  410  on the floor, but it cannot detect the table edge  402 . The table edge  402  detected by the first camera  120  is captured as first point cloud that is transmitted by the first camera  120  to the processing unit  130 . Similarly, the purse  410  detected by the second camera  122  is captured as second point cloud that is transmitted by the second camera  122  to the processing unit  130 . Each point in the point cloud has a three-dimensional coordinate representing a position of a point relative to a camera coordinate system. The obstacle detector  180  in the processing unit  130  performs coordinate transformation for one or both of the first and second point clouds so that all the captured points (captured by both cameras  120 ,  122 ) can be combined with reference to the same coordinate system. The obstacle detector  180  also removes the height components in the first and second point clouds, to obtain first and second two-dimensional point clouds. Removing the height components in the point clouds has the effect of compressing all of the detected surfaces of the objects into a single plane. After the two-dimensional point clouds have been determined, the obstacle detector  180  then identify the boundary formed by the two-dimensional point clouds, and uses the boundary as the obstacle boundary. As shown in the figure, the determined obstacle boundary in the example includes a first boundary portion  420  that corresponds with a part of an outline of the table edge  402 , a second boundary portion  422  that corresponds with a part of the outline of the purse  410 , and a third boundary portion  424  that corresponds with a part of an outline of the table edge  402 . The processing unit  130  may operate the robot  100  based on the determined obstacle boundary. In some embodiments, the processing unit  130  may operate the robot  100  to prevent the robot  100  from reaching the obstacle boundary, or to prevent the robot  100  from reaching a certain location that is a margin (e.g., 3 inches, 6 inches, 1 ft, etc.) away from the obstacle boundary. Forming an obstacle boundary based on objects at different height using the above technique has the effect of creating an artificial vertical boundary  430  that captures the boundary of the different objects at different heights. This technique of creating a collision avoidance boundary for the robot  100  is easy to implement and does not require significant computational resources. 
     In the above example, the obstacle boundary is described as being generated based on point clouds obtained using the first and second cameras  120 ,  122 . In other embodiments, point cloud from the third camera  124  may also be used to determine the obstacle boundary. In such cases, the obstacle detector  180  of the processing unit  130  combine all of the point clouds from the first, second, and third cameras  120 ,  122 ,  124  to form the obstacle boundary. 
     Also, in the above example, the robot  100  has been described as being able to detect obstacles that are stationary. In other embodiments, the robot  100  may detect moving obstacles, such as persons, food carts, etc. in a restaurant. The cameras  120 ,  122  (and optionally also camera  124 ) may detect objects in real-time, and the processing unit  130  may process points cloud from these cameras to determine collision avoidance boundary in real-time. This allows the processing unit  130  to detect a moving object, e.g., a person, and to operate the robot  100  to stop or to go around the person. 
       FIG.  5    illustrates a method  500  of collision avoidance. The method  500  may be performed by the robot  100 . The method  500  includes obtaining a first point cloud from the first camera (item  502 ), obtaining a second point cloud from the second camera (item  504 ), and obtaining a third point cloud from the third camera (item  506 ). In some embodiments, items  502 ,  504 , and  506  may be performed simultaneously. The method  500  also includes removing height components in the first, second, and third point clouds, to obtain first, second, and third two-dimensional point clouds (item  510 ). Next, the first, second, and third two-dimensional point clouds are combined to determine an obstacle boundary (item  512 ). Next, the robot  100  is operated based on the obstacle boundary (item  514 ). For example, the processing unit  130  may generate a control signal to stop the robot  100 , and/or to steer the robot  100  to a different direction, based on the obstacle boundary. Although the method  500  has been described with reference to utilizing three cameras to obtain three point clouds for determining the obstacle boundary, in other embodiments, the third camera is optional and is not needed. In such cases, the method  500  may not include item  506 , and the obstacle boundary in item  512  is determined based on the combination of the first and second two-dimensional point clouds. 
     In some embodiments, the processing unit  130  of the robot  100  may be configured to navigate the robot  100  to move to different locations in a restaurant based on input from a scheduler  182 . The scheduler  182  may be implemented as a part of the processing unit  130 . For example, the scheduler of the processing unit  130  may operate the robot  100  to go to a first table to provide a first service, and then return to a “home” position. As another example, the scheduler of the processing unit  130  may operate the robot  100  to go to a first table to provide a first service, and then to a second table to provide a second service, etc. In some embodiments, the scheduler of the processing unit  130  may be programmable via a user interface. For example, the robot  100  may include a user interface (e.g., a touchscreen) that allows a user of the robot  100  to program a schedule for the robot  100 . In one implementation, the user interface may allow a user to select which table to go to, and the criterion for leaving the table. For example, a user may program the robot  100  to go to table No. 7 (e.g., for delivery of a food item), and the criterion for the robot  100  to leave that table may be programmed to be a reduction in a weight (e.g., a weight change regardless of the amount of change, or a weight change that is more than a certain prescribed threshold) sensed by a weight sensor under a food-supporting tray of the robot  100 . In such cases, after the robot  100  has been programmed, the user may launch the robot  100  to go to table No. 7 to deliver a food item. After the robot  100  arrives at the table, the robot  100  then stops, and wait for the customer at table No. 7 to take the food item. Once the food item has been removed from the tray of the robot  100 , the processing unit  130  receives an input from the weight sensor indicating that the item supported on the tray has been removed, the processing unit  130  then determines that the programmed criterion has been satisfied. Then the processing unit  130  operates the robot  100  to go to a next destination programmed in the robot  100 . For example, if the next destination is “home”, then the processing unit  130  will operate the robot  100  to go the “home” position. If the next destination is table No. 4 (to deliver a check), then the processing unit  130  will operate the robot  100  to go to table No. 4. Once the robot  100  has reached table No. 4, the robot  100  may print a check (e.g., using a printer installed in the robot  100 ). The robot  100  then waits for the customer at table No. 4 to take the check. When the printer (or the robot  100 ) senses that a check has been taken, the processing unit  130  then determines that the criterion for leaving table No. 4 has been satisfied, and may then operate the robot  100  to go the a next destination. 
     In the above example, the generation of a control signal to move the robot  100  (e.g., away from a table, to service a table, to return home, etc.) has been described with reference to a satisfaction of a weight criterion (e.g., a change in weight, or a change in weight that exceeds a certain amount). Alternatively or additionally, the criteria for operating the robot  100  to move the robot  100  may be based on other criteria or criterion. For example, in some cases, the operation of the robot  100  may be based on a lapse of a predetermined period (e.g., 30 seconds, 1 minute, etc.). In such cases, if the robot  100  has reached a table, it will stay there for the predetermined period. If nothing happens, the robot  100  will leave the table after the pre-determined has lapsed. In some cases, if a certain event (e.g., a removal of an item from the tray  200 ) occurs before the predetermined period has lapsed, the robot  100  may leave the table before the predetermined period has lapsed. Alternatively, in other cases, regardless of whether a certain event has occurred, the robot  100  may stay at the table until the predetermined period has lapsed. 
     As another example, the criteria for operating the robot  100  to move the robot  100  may be satisfied by an image or image parameter. For example, if the robot  100  includes a camera viewing the spatial region above the tray  200 , the camera may provide images for indicating whether an item has been removed from the tray  200 , and/or whether an item has been placed on the tray  200 . The processing unit  130  may be configured to process such images and determine whether an event has occurred. For example, if the image(s) indicates that an item has been removed from the tray  200 , the processing unit  130  may then operate the robot to move the robot to a next destination. In some cases, the processing unit  130  may process the image(s) to determine one or more image parameters, such as contrast, color, extracted feature, image correlation value, etc., and operate the robot  100  to move the robot  100  to a next destination based on a satisfaction of one or more criteria by the image parameter(s). 
     As a further example, the criteria for operating the robot  100  to move the robot  100  may be based on a command received by a customer or a server. For example, a customer at a table may press the button  170  or provide a voice command. In response, the robot  100  may then move to a next destination (e.g., “home” position, another table) in the restaurant. As another example, a server at the restaurant may also pressing the button  170 , or providing a voice command. In response, the robot  100  may move to a next destination. 
       FIG.  6    illustrates a method  600  performed by a robot. The method  600  includes operating motor(s) in the robot to move the robot to a first table in a restaurant to service the first table (item  602 ), generating a first control signal to stop the robot to service the first table in a restaurant (item  604 ), and generating a second control signal to move the robot towards a next destination in the restaurant based on a satisfaction of one or more criteria (item  606 ). In one implementation, for item  604 , the first control signal to stop the robot may be generated by the processing unit  130  when the robot has reached a desired position associated with the first table. The desired position may be a designated area next to (e.g., within a certain distance, such as 6 inches, 1 ft, etc., from) the first table. Thus, the processing unit  130  may determine the actual positon of the robot, and determine whether the robot has reached the desired position. If not, the processing unit  130  continues to navigate the robot until it has reached the desired position. Also, by means of non-limiting examples for item  606 , the one or more criteria may comprise a lapse of a predetermined period (e.g., robot will leave the table after a certain pre-determined period, e.g., 30 seconds, 1 minute, etc., has lapsed), a change in a weight supported by the robot, a criterion satisfied by an image or an image parameter, a command received by a customer or a server (e.g., the customer or server pressing button  170 , or providing a voice command), or any combination of the foregoing. The next destination may be a second table to be serviced by the robot, a “home” position, etc. 
     It should be noted that the robot  100  should not be limited to the configuration, shape, and features described, and that the robot  100  may have other configurations, shapes, and features in other embodiments. For example, as shown in  FIGS.  7 - 8   , in other embodiments, the robot  100  may have the configuration shown in the figure. In the illustrated embodiments, the bottom portion  112  of the robot  100  comprises a slot  700  configured to accommodate a container  702 , wherein the container  702  is sized for holding tableware and/or food menus. Also, the top portion  114  of the robot  100  has a frame  710  that is moveable in a vertical direction from a first position to a second position. When the frame  710  is in the first position (like that shown in  FIG.  8   ), the top portion  114  provides a single space for accommodating different items (e.g., for supporting food, drinks, tableware, menus, etc.). When the frame  710  is in the second position (like that shown in  FIG.  7   ), the top portion  114  provides two layers of space for accommodating different items. 
     In the illustrated embodiments, the robot  100  further includes a touch-screen device  800  that is detachably coupled to the top portion  114 . Alternatively, the touch-screen device  800  may be detachably coupled to the bottom portion  112  of the robot. In some embodiments, the touch-screen device  800  provides a user interface for allowing a user of the robot  100  to enter commands and/or to program the robot  100 . 
     The robot  100  of  FIGS.  7 - 8    may have any of the features described with reference to the robot  100  of  FIGS.  1 - 3   . 
     In some embodiments, the robot  100  may include a rechargeable battery for powering the various components of the robot  100 . The battery may be charged using a cable, or a wireless charging pad. 
     In one or more embodiments of the robot  100  described herein, the robot  100  may optionally further include a credit card reader. For example, the credit card reader may be implemented at the top portion  114 , and includes a slot for receiving a credit card. This allows the robot  100  to receive a credit card from a customer at a table, and process the credit card in the presence of the customer. The robot  100  may also optionally include a printer for printing a receipt for the customer. 
     Also, in some embodiments, instead of having just a single robot  100  servicing a restaurant, there may be multiple robots  100  servicing the same restaurant. In such cases, each robot  100  may include a wireless communication unit configured to communicate with other robot(s)  100  in the restaurant. In some embodiments, a service requested for a table may be communicated to all robots  100  in the restaurant (e.g., a server may transmit such request via a handheld device, such as a cell phone, a tablet, etc., or via a computer). The robots  100  may then collectively decide which one of the robots  100  to perform the service based on a pre-determined algorithm. For example, the pre-determined algorithm may select one of the robots to be the one closest to the table to be serviced, based on one of the robots with the least workload, etc. Once a service by the selected robot has been completed, the service request is then updated in all of the robots. Alternatively, in other embodiments, the robots  100  may not need to communicate with each other. Instead, all of the robots  100  may be configured to communicate with one or more servers wirelessly. For example, servers may carry handheld devices, e.g., cell phones, tablets, etc., and they can send requests wirelessly to different robots  100  in the restaurant. 
     It should be noted that the term “non-transitory medium”, as used in this specification, may refer to one or more storage(s) or memory unit(s). If there are multiple storage(s) or memory unit(s), they may be parts of a single storage device or memory device, or alternatively, they may be separate storage devices or memory devices (which may or may not be coupled together). 
     Although the robot  100  has been described as being configured to serve food and/or drinks in a restaurant, in other embodiments, the robot  100  may be configured to serve food and/or drinks in other environments. By means of non-limiting examples, the robot  100  may be configured to serve food and/or drinks in nursing home, casino, hotel, airport, airplane, house, cafeteria, etc. Accordingly, the map described herein may be a map of a nursing home, a map of a casino, a map of a hotel, a map of an airport, a map of an airplane cabin, a map of a house, a map of a cafeteria, etc. 
     Processing Unit 
       FIG.  9    is a block diagram that illustrates an embodiment of a processing unit  1200  of a robot. The processing unit  1200  may be the processing unit  130  in the robot  100  of  FIG.  1    or  FIG.  7   . As shown in  FIG.  9   , the processing unit  1200  includes a bus  1202  or other communication mechanism for communicating information, and a processor  1204  coupled with the bus  1202  for processing information. The processing unit  1200  also includes a main memory  1206 , such as a random access memory (RAM) or other dynamic storage device, coupled to the bus  1202  for storing information and instructions to be executed by the processor  1204 . The main memory  1206  also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by the processor  1204 . The processing unit  1200  further includes a read only memory (ROM)  1208  or other static storage device coupled to the bus  1202  for storing static information and instructions for the processor  1204 . A data storage device  1210 , such as a magnetic disk or optical disk, is provided and coupled to the bus  1202  for storing information and instructions. 
     The processing unit  1200  may be coupled via the bus  1202  to a display  1212 , such as a flat panel, for displaying information to a user. An input device  1214 , including alphanumeric and other keys, is coupled to the bus  1202  for communicating information and command selections to processor  1204 . Another type of user input device is cursor control  1216 , such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor  1204  and for controlling cursor movement on display  1212 . This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane. 
     The processing unit  1200  may be used for performing various functions (e.g., calculation) in accordance with the embodiments described herein. According to one embodiment, such use is provided by processing unit  1200  in response to processor  1204  executing one or more sequences of one or more instructions contained in the main memory  1206 . Such instructions may be read into the main memory  1206  from another computer-readable medium, such as storage device  1210 . Execution of the sequences of instructions contained in the main memory  1206  causes the processor  1204  to perform the process acts described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in the main memory  1206 . In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software. 
     The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to the processor  1204  for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as the storage device  1210 . Volatile media includes dynamic memory, such as the main memory  1206 . Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise the bus  1202 . Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications. 
     Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read. 
     Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to the processor  1204  for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to the processing unit  1200  can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to the bus  1202  can receive the data carried in the infrared signal and place the data on the bus  1202 . The bus  1202  carries the data to the main memory  1206 , from which the processor  1204  retrieves and executes the instructions. The instructions received by the main memory  1206  may optionally be stored on the storage device  1210  either before or after execution by the processor  1204 . 
     The processing unit  1200  also includes a communication interface  1218  coupled to the bus  1202 . The communication interface  1218  provides a two-way data communication coupling to a network link  1220  that is connected to a local network  1222 . For example, the communication interface  1218  may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, the communication interface  1218  may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, the communication interface  1218  sends and receives electrical, electromagnetic or optical signals that carry data streams representing various types of information. 
     The network link  1220  typically provides data communication through one or more networks to other devices. For example, the network link  1220  may provide a connection through local network  1222  to a host computer  1224  or to equipment  1226  such as a radiation beam source or a switch operatively coupled to a radiation beam source. The data streams transported over the network link  1220  can comprise electrical, electromagnetic or optical signals. The signals through the various networks and the signals on the network link  1220  and through the communication interface  1218 , which carry data to and from the processing unit  1200 , are exemplary forms of carrier waves transporting the information. The processing unit  1200  can send messages and receive data, including program code, through the network(s), the network link  1220 , and the communication interface  1218 . 
     Although particular embodiments have been shown and described, it will be understood that they are not intended to limit the claimed inventions, and it will be obvious to those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the claimed inventions. The specification and drawings are, accordingly, to be regarded in an illustrative rather than restrictive sense. The claimed inventions are intended to cover alternatives, modifications, and equivalents.