Systems and methods for autonomous cleaning of human and operational environments

The cleaning robot system addresses the challenges of navigating complex environments and automating diverse cleaning tasks by enabling real-time toolpath modifications and centralized management, ensuring thorough and safe cleaning across various settings.

WO2025264858A1PCT designated stage Publication Date: 2025-12-26KAZVU LABS R1 LLC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
PCT/US2025/034255
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-06-20
Filing Date
2025-06-18
Publication Date
2025-12-26

AI Technical Summary

Technical Problem

Existing cleaning robots struggle with navigating complex, dynamic environments, such as bathrooms, and often require human intervention for tasks that demand fine motor skills, leading to incomplete cleaning and potential harm to both the robot and occupants.

Method used

A cleaning robot system that includes a robot capable of localizing itself within a room, utilizing various cleaning tools, and modifying toolpaths in real-time, combined with a centralized server for managing and monitoring multiple robots, allowing for comprehensive and efficient cleaning protocols tailored to specific environments.

Benefits of technology

The system provides improved and consistent cleaning results, reduces human error, and ensures a sanitary environment by automating all cleaning tasks, including those requiring fine motor skills, while facilitating scalable and cohesive management of cleaning fleets.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2025034255_26122025_PF_FP_ABST
    Figure US2025034255_26122025_PF_FP_ABST
Patent Text Reader

Abstract

A system may include a base, and a robot arm connected to the base. The system may include a cleaning tool configured to be connected to the robot arm, the cleaning tool configured to clean a surface. The system may include an operation sensor configured to generate an operation signal indicative of an operation parameter associated with the cleaning tool, and at least one hardware processor configured to: cause the robot arm to position the cleaning tool in a cleaning position, cause the cleaning tool to clean the surface, cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to clean different portions of the surface, determine the operation parameter based on the operation signal, and based on the operation parameter, cause the robot arm to adjust to maintain the cleaning position of the cleaning tool.
Need to check novelty before this filing date? Find Prior Art

Description

SYSTEMS AND METHODS FOR AUTONOMOUS CLEANING OF HUMAN AND OPERATIONAL ENVIRONMENTSCROSS-REFERENCE TO RELATED APPLICATIONS

[0001] The present application claims priority benefit under 35 U.S.C. § 119(e) to U.S. Provisional Patent Application Serial No. 63 / 662,204, filed June 20, 2024, titled “SYSTEMS AND METHODS FOR AUTONOMOUS CLEANING OF HUMAN AND OPERATIONAL ENVIRONMENTS,’’ the entire contents of which is hereby incorporated herein by reference and should be considered a part of this specification.

[0002] Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated by reference under 37 CFR 1.57.TECHNICAL FIELD

[0003] The present disclosure relates to the field of autonomous cleaning in various different human and / or operational environments such as hospitality, restaurant, retail, and / or healthcare environments, other commercial and / or industry environments, private and / or public environments, or residential environments.BACKGROUND

[0004] Human and / or operational environments (e.g., hotels, motels, restaurants, hospitals, office buildings, retail stores, warehouses, residences, etc.) must often maintain high standards of cleanliness to satisfy human occupants within the environment (e.g., guests, employees, inhabitants, etc.) and adhere to health and safety regulations, especially considering global health pandemics. Bathrooms are often one of the first areas that occupants use, and their cleanliness can set the tone for the overall impression of the establishment. Bathroom cleaning can require meticulous attention to detail, which can be time-consuming, physically demanding, and physically harmful (e.g., exposure to cleaning agents). For example, bathrooms can accumulate a variety of tough contaminants such as soap scum, water stains, mold, mildew, bodily fluids, and the like, that can require strong chemicals, different cleaning tools, and different cleaning techniques to remove. Bathrooms are used frequently and, for example, in hotel settings, often must be cleaned within a short period of time between guest check-outs and guest check-ins. Moreover, bathrooms may need to be cleaned at inconvenient hours of the day (e.g., late at night) and / or inconvenientdays of the week (e.g., weekends), which can be challenging for maintaining a consistent workforce. Thus, the combination of strenuous and frequent cleaning, time constraints, lack of motivation (e.g., cleaning work can often be undervalued) and human error can impact the thoroughness and care in bathroom cleaning tasks, thereby exposing occupants to unsanitary and ultimately harmful conditions.SUMMARY

[0005] For purposes of summarizing the disclosure, certain aspects, advantages, and novel features / fixtures are discussed herein. It is to be understood that not necessarily all such aspects, advantages, or features / fixtures will be embodied in any particular embodiment of the disclosure, and an artisan would recognize from the disclosure herein a myriad of combinations of such aspects, advantages, or features / fixtures.

[0006] Autonomous cleaning in various different human and / or operational environments seeks to address issues associated with manual cleaning. In autonomous cleaning of bathrooms or other rooms and / or outdoor areas, cleaning robots operate using a combination of sensors and connectivity features to perform various cleaning tasks autonomously. Cleaning robots use a variety of sensors and / or cameras to detect their surroundings and execute cleaning paths. Cleaning robots follow specific patterns optimized for cleaning paths, such as zigzag, spiral, and along-the-edges routes. In automating cleaning routines, however, cleaning robots often struggle with complex, dynamic environments such as bathrooms. Cleaning robots may have difficulty navigating around obstacles, moving over a variety of surfaces, and / or adjusting to new or rearranged spaces, thereby leading to incomplete cleaning or even damage to the robot or the environment. Moreover, cleaning robots may be designed for specific tasks and may not be able to handle the breadth of cleaning duties that a human can. For example, a cleaning robot may be able to vacuum a floor but unable to wipe down a surface, clean high areas, or perform tasks requiring fine motor skills.

[0007] The present disclosure provides for cleaning robot systems and methods of operation. The cleaning robot system can include a cleaning robot, cleaning tool(s), user device(s), connection(s) to server(s), sensors, and other devices that control the cleaning robot system, and / or controllers that control the cleaning robot system. The cleaning robot system can include a cleaning robot that can localize itself within a room or outdoor area, such as a bathroom, and utilize a variety of cleaning tools to clean the room or outdoor area. The cleaning robot system can modify toolpaths (e.g., speeds, positions, orientations) of cleaning tools in real-time as the cleaning robot cleans the room or outdoor area. The use of such acleaning robot system presents several advantages over the use of traditional cleaning robot systems. A cleaning robot that can localize itself within a room or outdoor area and utilize a variety of cleaning tools that can advantageously automate cleaning by allowing for performance, by a single robot, of all associated cleaning tasks in any layout comprising any number and / or variety of features / fixtures. Real-time modification of cleaning toolpaths during cleaning can reduce error involved in executing associated cleaning paths, which can provide for improved and consistent cleaning results. Moreover, real-time modification of cleaning toolpaths can advantageously allow for cleaning that requires fine motor skills and dexterity, such as in tough-to-reach areas within a bathroom or when cleaning delicate fixtures. Improved and consistent bathroom or other room (or outdoor area) cleaning can protect the health of occupants by providing a more sanitary environment.

[0008] The present disclosure further provides for a cleaning robot system and methods of operation that can include server(s) configured for centralized control of one or more cleaning robots. Server(s) can be configured to manage tasks such as scheduling cleaning times for cleaning robot(s), assigning specific rooms for autonomous cleaning, tracking autonomous cleaning progress, monitoring results and tracking effectiveness of cleaning operations, and tracking cleaning robot location(s) in real-time. Server(s) can be configured to collect data from one or more cleaning robots such as their operations, efficiency, battery life, maintenance needs, and the like. Advantageously, providing a central point from which all cleaning robots can be controlled and monitored can allow for enterprisewide implementation of autonomous cleaning and cohesive management of cleaning robot fleets. Furthermore, use of server(s) can allow a cleaning robot system to scale with and facilitate the addition of more cleaning robots without substantial overhauls to existing infrastructure. Moreover, one or more servers can integrate cleaning robot(s)’ operations with various different human and / or operational environment management systems such as hospitality, restaurant, healthcare, retail, business, private and / or public facility management systems. Said management systems may include room-booking systems, customer service portals, employee scheduling, payroll systems, and the like. This may permit dynamic scheduling of autonomous cleaning and dispatching of one or more cleaning robots of a cleaning robot fleet based at least in part on real-time data collected from such environments.

[0009] The present disclosure further provides a cleaning robot system and methods thereof that can include scanning rooms and fixtures and creating cleaning protocols based at least in part on such scans (e.g., which surface in a room a cleaning robot cleans first). This information can be compiled and collected by one or more servers of a cleaningrobot system and sent to one or more cleaning robots of the cleaning robot system. Such information can be packaged and delivered to various human and / or operational environments as preplanned cleaning protocols for autonomous cleaning via a cleaning robot of a cleaning robot system. Cleaning protocol data can be advantageously updated and customized based on the specific needs of various human and / or operational environments (e.g., a cleaning protocol for a hotel bathroom can differ from a cleaning protocol for a restaurant bathroom or residential bathroom), permitting wide-spread use and / or adoption of a cleaning robot system and associated cleaning robot fleet(s).

[0010] The systems, methods, and devices described herein each have several aspects, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this disclosure, several non-limiting features will now be described briefly.

[0011] Details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages will become apparent from the description, the drawings, and the claims.

[0012] In some aspects, the techniques described herein relate to a human or operational environment service cleaning robot system, utilizing tools connected to a closed loop control system robotic arm on an autonomous mobile robot with decision making algorithms, wherein the system is integrated into business management operations including in-room hardware and sensors through a centralized software interface.

[0013] In some aspects, the techniques described herein relate to a system, further including a centralized controlled software based decision-making robot cleaning system capturing data from a process environment through integrated sensors and actuations, monitoring supply chain management and resource allocation, and cleaning quality test metrics to integrate service cleaning into a process decisioning architecture utilizing a business management software system.

[0014] In some aspects, the techniques described herein relate to a cleaning tool robot system for cleaning a surface by moving a cleaning tool based on a cleaning path and position relative to the surface, the cleaning tool robot system including: a base including one or more wheels configured to maneuver the base; a robot arm connected to the base, the robot arm configured to move a connection end of the robot arm relative to the base; a cleaning tool configured to be connected to the connection end of the robot arm, the cleaning tool configured to clean a surface; an operation sensor configured to generate an operation signal indicative of an operation parameter associated with the cleaning tool; a memoryconfigured to store specific computer-executable instructions; and at least one hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: cause the base to move to position the base for moving the cleaning tool relative to the surface; cause the robot arm to position the cleaning tool in a cleaning position relative to the surface; cause the cleaning tool to clean the surface; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to clean a corresponding portion of the different portions of the surface; receive the operation signal; determine the operation parameter based on the operation signal; and based on the operation parameter, cause the robot arm to adjust to maintain the cleaning position of the cleaning tool relative to the surface at the corresponding portion of the surface.

[0015] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the system further includes a position sensor configured to generate a position signal indicative of a position of the base, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: receive the position signal from the position sensor; determine the position of the base based on the position signal; and cause the base to move based on the determined position of the base.

[0016] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: cause the robot base to move to a location in a space for cleaning; cause the robot arm to contact one or more surfaces in the space; and determine a position of the base in the space based on the contact between the robot arm and the one or more surfaces.

[0017] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a position of the robot arm upon contact of the robot arm with the one or more surfaces, wherein the position of the arm is determined in relation to x-, y-, and z-coordinates of at least a portion of a surface of the one or more surfaces; and determine an x-coordinate and a y-coordinate of the robot base in the space having the surface based on at least the x-, y-, and z-coordinates of the portion of the surface of the one or more surfaces contacted by the robot arm, wherein the determined x-coordinate and y-coordinate of the base correspond to the position of the base in the space.

[0018] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to executethe specific computer-executable instructions to at least determine an offset value based at least on a desired position of the base and the determined position of the base.

[0019] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein: the desired position of the robot base is associated with a desired x- coordinate and a desired y-coordinate in the space; the determined position of the robot base is associated with a determined x-coordinate and a determined y-coordinate in the space; and the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least determine the offset value based on a difference between the desired x-coordinate and determined x-coordinate and a difference between the desired y-coordinate and determined y-coordinate.

[0020] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least modify at least one of the cleaning position of the cleaning tool or the cleaning path based on the offset value.

[0021] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the cleaning position of the cleaning tool is associated with an x- coordinate and y-coordinate of the cleaning tool in the space, and wherein modifying the cleaning position includes increasing or decreasing at least one of the x-coordinate or y- coordinate by the offset value.

[0022] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the cleaning path is associated with a plurality of x-coordinates and a plurality of y-coordinates representative of the cleaning position of the cleaning tool in the space as the cleaning tool is moved to different portions of the surface, and wherein modifying the cleaning path includes at least one of increasing or decreasing, by the offset value, at least one of one or more x-coordinates of the plurality of x-coordinates or one or more y- coordinates of the plurality of y-coordinates.

[0023] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine that the offset value does not satisfy a threshold; and based on the determination that the offset value does not satisfy the threshold, cause the base to move to the desired position from the determined position.

[0024] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: cause the robot arm to contact theone or more surfaces; determine the position of the base based on the contact between the robot arm and the one or more surfaces; and determine a new offset value based at least on the desired position of the base and the determined position of the base.

[0025] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: receive a three-dimensional scan of a space; and determine a surface in the space to clean based on the three-dimensional scan.

[0026] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine the position of the base based on the position signal using the three-dimensional scan; and cause the base to move based on the determined position of the base.

[0027] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine, based on the three- dimensional scan, one or more contact points on one or more surfaces of the space to contact using the robot arm.

[0028] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a difference between a desired cleaning position and an actual cleaning position of the cleaning tool based on the operation parameter; and cause the robot arm to move to reduce the difference between the desired cleaning position and the actual cleaning position.

[0029] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a difference between the operation parameter and a desired operation parameter of the cleaning tool based on the operation signal; and determine the difference between the desired cleaning position and the actual cleaning position of the cleaning tool based on the difference between the operation parameter and the desired operation parameter of the cleaning tool.

[0030] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine a difference between the operation parameter and a desired operation parameter of the cleaning tool based on adetermination of whether the difference between the determined and desired operation parameters satisfies a tool tolerance threshold.

[0031] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine whether the difference between the determined and desired operation parameters satisfies the tool tolerance threshold based on a comparison between the difference and a predetermined tool tolerance value.

[0032] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot arm to position the cleaning tool in the cleaning position relative to the surface based on the operation parameter.

[0033] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the operation parameter includes at least one of a force measurement, a torque measurement, a deflection measurement, a distance measurement, or a movement rate measurement.

[0034] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the operation parameter includes at least one of: a force, torque, or both generated between at least a portion of the cleaning tool and at least a portion of the surface; a force, torque, or both generated at the connection end of the robot arm; or a force, torque, or both generated at a joint of the robot arm.

[0035] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the cleaning tool is configured perform at least one of: vacuuming at least a portion of the surface; buffing at least a portion of the surface; squeegeeing at least a portion of the surface; spraying at least a portion of the surface; or blowing air on at least a portion of the surface.

[0036] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least modify at least one of the cleaning position of the cleaning tool or the cleaning path based on at least one of a tool type of the cleaning tool, a surface type of the surface, or a level of cleanliness of the surface.

[0037] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the cleaning position of the cleaning tool is associated with a distanceof the cleaning tool relative to the surface, and wherein modifying the cleaning position includes increasing or decreasing the distance.

[0038] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the cleaning path is associated with a plurality of distances of the cleaning tool relative the surface as the cleaning tool is moved to different portions of the surface, and wherein modifying the cleaning path includes at least one of increasing or decreasing of one or more distances of the plurality of distances.

[0039] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the cleaning path is associated with a speed of the cleaning tool relative the surface, and wherein modifying the cleaning path includes increasing or decreasing the speed.

[0040] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot arm to move the robot base above a fixture in a space to provide clearance to close or open a door.

[0041] In some aspects, the techniques described herein relate to a cleaning tool robot system, the system further including a water refill system including: a reservoir configured to store a volume of water; a conduit configured to direct a flow of water through the conduit, the conduit in fluid communication with the reservoir, the conduit including a connection end configured to interface with a water supply; a sensor configured to generate a signal indicative of a level of water in the reservoir; and wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: cause the robot arm to move the connection end of the conduit to interface the conduit with the water supply; cause the robot arm to move to cause water to flow from the water supply through the conduit into the reservoir; receive or access the water level signal; determine the level of water in the reservoir based on the water level signal; and based on the determined level of water in the reservoir, cause the robot arm to move to prohibit water from flowing from the water supply.

[0042] In some aspects, the techniques described herein relate to a cleaning tool robot system, the system further including a water disposal system including: a reservoir configured to store a volume of wastewater; a pump in fluid communication with the reservoir, the pump configured to pump wastewater out of the reservoir; a conduit for directing a flow of wastewater through the conduit, the conduit in fluid communication with the pump, the conduit including an end configured to direct the flow of wastewater from the conduit into a wastewaterreceptacle; a wastewater level sensor configured to generate a signal indicative of a level of wastewater in the reservoir; and wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: receive or access the wastewater level signal; determine the level of wastewater in the reservoir based on the wastewater level signal; and based on the determined level of wastewater in the reservoir: cause the robot base to move toward the wastewater receptacle; cause the robot arm to move to position the end of the conduit in fluid contact with the wastewater receptacle; and cause the pump to pump the wastewater out of the reservoir through the conduit end into the wastewater receptacle.

[0043] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the wastewater receptacle includes a toilet.

[0044] In some aspects, the techniques described herein relate to a cleaning tool robot system, the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot arm to move to lift a cover of the toilet.

[0045] In some aspects, the techniques described herein relate to a cleaning tool robot system, the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot arm to move to acuate flushing of the toilet.

[0046] In some aspects, the techniques described herein relate to a cleaning tool robot system for spraying a surface by adjusting a spray rate of a cleaning tool as the cleaning tool moves along the surface, the cleaning tool robot system including: a base including one or more wheels configured to maneuver the base; a robot arm connected to the base, the robot arm configured to move a connection end of the robot arm relative to the base; a cleaning tool configured to be connected to the connection end of the robot arm, the cleaning tool configured to spray a surface; a memory configured to store specific computer-executable instructions; and at least one hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: cause the base to move to position the base for moving the cleaning tool relative to the surface; cause the robot arm to position the cleaning tool in a spraying position relative to the surface; cause the cleaning tool to spray the surface at a spray rate; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to spray a corresponding portion of the different portions of the surface; and cause the cleaning tool to adjust the spray ratebased on a velocity of the cleaning tool relative to the surface as the cleaning tool moves to the different portions of the surface.

[0047] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least adjust the spray rate of the cleaning tool via pulse width modulation.

[0048] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least increase a duty cycle of a valve of the cleaning tool based on the cleaning tool accelerating relative to the surface and decrease the duty cycle of the valve based on the cleaning tool decelerating relative to the surface.

[0049] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least increase the spray rate based on the cleaning tool increasing velocity relative to the surface and decrease the spray rate based on the cleaning tool decreasing velocity relative to the surface.

[0050] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the spray rate includes a spray pressure.

[0051] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the cleaning tool to increase or decrease the spray rate based on at least one of a surface type of the surface or a level of cleanliness of the surface.

[0052] In some aspects, the techniques described herein relate to a cleaning tool robot system for blowing air on a surface by adjusting a flow rate of a cleaning tool as the cleaning tool moves along the surface, the cleaning tool robot system including: a base including one or more wheels configured to maneuver the base; a robot arm connected to the base, the robot arm configured to move a connection end of the robot arm relative to the base; a cleaning tool configured to be connected to the connection end of the robot arm, the cleaning tool configured to blow air on a surface; a memory configured to store specific computerexecutable instructions; and at least one hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: cause the base to move to position the base for moving the cleaning tool relative to the surface; cause the robot arm to position the cleaning tool in a blowing position relative to thesurface; cause the cleaning tool to blow air on the surface at a flow rate; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to blow air on a corresponding portion of the different portions of the surface; and cause the cleaning tool to adjust the flow rate as the cleaning tool moves to the different portions of the surface.

[0053] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the flow rate includes an air pressure.

[0054] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the cleaning tool to increase or decrease the flow rate based on at least one of a surface type of the surface or a level of cleanliness of the surface.

[0055] In some aspects, the techniques described herein relate to a cleaning tool robot system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: cause the cleaning tool to blow air on the surface at an air temperature; and cause the cleaning tool to increase or decrease the air temperature as the cleaning tool moves to the different portions of the surface.

[0056] In some aspects, the techniques described herein relate to a cleaning tool for a robot to clean a surface, the cleaning tool including: a connector configured to connect to a robot arm, wherein the cleaning tool is configured to be positioned by the robot arm in a cleaning position relative to a surface; wherein the connector is configured to be moved by the robot arm to different portions of the surface along a cleaning path to clean a corresponding portion of the different portions of the surface; and wherein, in response to a feedback signal from a feedback sensor, the connector is configured to be adjusted by the robot arm to maintain the cleaning position of the cleaning tool relative to the surface at the corresponding portion of the surface.

[0057] In some aspects, the techniques described herein relate to a cleaning tool, the cleaning tool further including: a housing including the connector, the housing including a conduit configured to direct an airflow through said conduit; a nozzle connected to the housing, the nozzle including a tip configured to contact the surface, the nozzle including a duct configured to pass the airflow through the duct into the conduit of the housing; a vacuum adapter connected to the housing, the vacuum adapter configured to connect to a vacuum that creates a suction through the conduit to pull the airflow from the tip through the duct into the conduit to vacuum debris from the surface with the tip contacting the surface; and wherein the feedback signal is indicative of at least one of a force or a torque generated between thetip and the surface to position the housing at a distance relative to the surface such that the tip maintains contact with the surface at the distance with the airflow flowing through the duct as the nozzle is moved to different portions of the surface for cleaning.

[0058] In some aspects, the techniques described herein relate to a cleaning tool, wherein the feedback signal is associated with the distance between the housing and the surface.

[0059] In some aspects, the techniques described herein relate to a cleaning tool, the cleaning tool further including: a housing including the connector; a rotatable buffer extending from the housing, the rotatable buffer configured to contact the surface and to rotate to clean the surface; a motor in the housing, the motor connected to the rotatable buffer and configured to rotate the rotatable buffer; and wherein the feedback signal is indicative of at least one of a force or a torque generated between the rotatable buffer and the surface to position the housing at a distance relative to the surface such that the rotatable buffer maintains contact with the surface at the distance as the rotatable buffer is moved to different portions of the surface for cleaning.

[0060] In some aspects, the techniques described herein relate to a cleaning tool, wherein the feedback signal is indicative of a normal force applied along a rotation axis of the rotatable buffer by the surface in contact with the rotatable buffer.

[0061] In some aspects, the techniques described herein relate to a cleaning tool, wherein the feedback signal is indicative of a torque based on a normal force applied perpendicular to a rotation axis of the rotatable buffer by the surface in contact with the rotatable buffer.

[0062] In some aspects, the techniques described herein relate to a cleaning tool, the cleaning tool further including: a housing including the connector; an arm pivotably connected to the housing, the arm configured to pivot relative to the housing about a pivot axis; an edge connected to the arm, the edge configured to wipe the surface; and wherein the feedback signal is indicative of at least one of a force or a torque generated between the edge and the surface to position the housing at a distance relative to the surface such that the edge maintains contact with the surface at the distance as the edge is moved to different portions of the surface for cleaning.

[0063] In some aspects, the techniques described herein relate to a cleaning tool, wherein the feedback signal is associated with a degree of pivot between the arm and the housing.

[0064] In some aspects, the techniques described herein relate to a cleaning tool, wherein the edge is configured to cause the arm to pivot relative to the housing based on the force applied to the edge by the surface in contact with the edge.

[0065] In some aspects, the techniques described herein relate to a cleaning tool, further including a nozzle including a duct, the nozzle positioned to enclose at least a portion of the edge to vacuum about the portion of the edge, the duct configured to pass an airflow through the duct to vacuum about the portion of the edge.

[0066] In some aspects, the techniques described herein relate to a cleaning tool, further including a vacuum adapter in fluid communication with the duct, the vacuum adapter configured to connect to a vacuum that creates a suction through the duct to pull the airflow through the duct into the duct to vacuum about the portion of the edge.

[0067] In some aspects, the techniques described herein relate to a cleaning tool, wherein the feedback sensor is a force sensor, a torque sensor, or both.

[0068] In some aspects, the techniques described herein relate to a cleaning tool robot system for spraying a surface by adjusting a spray rate 43 as the cleaning tool moves along the surface, the cleaning tool robot system including: at least one hardware processor in communication with a memory configured to store specific computer-executable instructions, the at least one hardware processor configured to execute the specific computerexecutable instructions to at least: cause the robot arm to position the cleaning tool in spray position relative to the surface; cause the cleaning tool to spray the surface at a spray rate; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to spray a corresponding portion of the different portions of the surface; and cause the cleaning tool to adjust the spray rate as the cleaning tool moves to the different portions of the surface.

[0069] In some aspects, the techniques described herein relate to a cleaning tool, the cleaning tool further including: a housing including the connector; a conduit connected to the housing, the conduit configured to be in fluid communication with a cleaning liquid source, the conduit configured to direct a flow of cleaning liquid from the cleaning liquid source through the conduit; a spray nozzle connected to the housing, the spray nozzle in fluid communication with the conduit to direct the cleaning liquid from the conduit onto the surface through the spray nozzle.

[0070] In some aspects, the techniques described herein relate to a cleaning tool, wherein the spray nozzle is configured to direct the cleaning liquid from the conduit onto the surface through the spray nozzle with the spray rate of the cleaning liquid being adjustedbased on a velocity of the cleaning tool as the spray nozzle is moved to different portions of the surface for spraying.

[0071] In some aspects, the techniques described herein relate to a cleaning tool, the cleaning tool further including: a pump in fluid communication with the conduit and configured to be in fluid communication with the cleaning liquid source, the pump configured to pump the cleaning liquid from the cleaning liquid source and through the conduit; and a motor connected to the pump, the motor configured to drive the pump at a pump speed.

[0072] In some aspects, the techniques described herein relate to a cleaning tool, wherein the spray nozzle is configured to direct the cleaning liquid from the conduit onto the surface through the spray nozzle with a spray pressure of the cleaning liquid being adjusted as the spray nozzle is moved to different portions of the surface for spraying.

[0073] In some aspects, the techniques described herein relate to a cleaning tool robot system for blowing air on a surface by adjusting a flow rate 43 as the cleaning tool moves along the surface, the cleaning tool robot system including: at least one hardware processor in communication with a memory configured to store specific computer-executable instructions, the at least one hardware processor configured to execute the specific computerexecutable instructions to at least: cause the robot arm to position the cleaning tool in blowing position relative to the surface; cause the cleaning tool to blow air on the surface at a flow rate; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to blow air on a corresponding portion of the different portions of the surface; and cause the cleaning tool to adjust the flow rate as the cleaning tool moves to the different portions of the surface.

[0074] In some aspects, the techniques described herein relate to a cleaning tool, the cleaning tool further including: a housing including the connector, the housing including a conduit configured to direct an airflow through said conduit, the housing further including an inlet in fluid communication with the conduit, the inlet configured to pass the airflow through the inlet into the conduit; a nozzle connected to the housing, the nozzle including a duct in fluid communication with the conduit to direct the airflow from the conduit onto the surface through the duct; a fan in fluid communication with the conduit, the fan configured to generate suction to pull the airflow through the inlet into the conduit, the fan further configured to push the airflow through the conduit and out the nozzle; and a motor connected to the fan, the motor configured to drive the fan at a fan speed.

[0075] In some aspects, the techniques described herein relate to a cleaning tool, the cleaning tool further including a heating element, wherein the fan is further configured toblow the airflow over or through the heating element to heat the air such that heated air is discharged from the nozzle onto the surface.

[0076] In some aspects, the techniques described herein relate to a cleaning tool, wherein the nozzle is configured to direct the airflow from the conduit onto the surface through the nozzle with an air pressure of the airflow being adjusted as the nozzle is moved to different portions of the surface for blowing.

[0077] In some aspects, the techniques described herein relate to a cleaning tool, the cleaning tool including: a connector configured to connect the cleaning tool to a connection end of a robot arm, the robot arm configured to position the cleaning tool in a cleaning position relative to a surface; and wherein the robot arm is configured to move the cleaning tool to different portions of the surface along a cleaning path to clean a corresponding portion of the different portions of the surface.

[0078] In some aspects, the techniques described herein relate to a cleaning quality detection system, the system including: cleaning tool robot including a base, the base including one or more wheels configured to maneuver the base; an optical sensor coupled with the base, the optical sensor configured to capture an image of at least a portion of a surface; a memory configured to store specific computer-executable instructions; and at least one hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: cause the optical sensor to capture the image of at least the portion of the surface; receive or obtain image data representative of the captured image; determine a difference between the captured image data and reference image data; and based on the difference, determine a cleanliness value.

[0079] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the cleanliness value is indicative of a level of soiling of the surface.

[0080] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot base to move on a floor of a space to position the base for moving the optical sensor relative to the surface to capture the image of the surface.

[0081] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the optical sensor is connected to a robot arm connected to the base, and wherein the at least one hardware processor is further configured to executethe specific computer-executable instructions to at least cause the robot arm to position the optical sensor in an imaging position for capturing the image of the surface.

[0082] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the reference image data is representative of a reference image of the surface corresponding to a desired cleanliness value.

[0083] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: receive or obtain data indicative of a portion of interest of the surface; and crop the captured image and the reference image based on the indicated portion so as to reduce a quantity of image data to review to determine the cleanliness value of the surface.

[0084] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the portion of interest corresponds to at least one of: a portion of the surface at which to execute a cleaning protocol; or a portion of the surface at which a cleaning protocol has completed.

[0085] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: map the captured image to the reference image to generate an aligned image; and determine a difference metric based on at least the aligned image, wherein the difference metric corresponds to the cleanliness value.

[0086] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a displacement field based on differences between pixel locations of the captured image and pixel locations of the reference image, each pixel of a respective image corresponding to a pixel location having an x-coordinate and y-coordinate in a plane of the respective image, the displacement field including vectors representative of at least one of x-coordinate displacement or y- coordinate displacement of one or more pixels between the captured image and the reference image; and increase or decrease at least one of an x-coordinate or y-coordinate of one or more captured image pixels, using an inverse of the determined displacement field, to map the captured image to the reference image to generate the aligned image.

[0087] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured toexecute the specific computer-executable instructions to at least: upsample or downsample the captured image and the reference image from an original resolution to generate a plurality of captured images having at least two resolutions, and a plurality of reference images having the at least two resolutions.

[0088] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a first displacement field at a first resolution based on differences between pixel locations of a captured image having the first resolution and pixel locations of a reference image having the first resolution; upsample the first displacement field to a second resolution, the second resolution being a next higher resolution from the first resolution; using an inverse of the upsampled first displacement field, map a captured image having the second resolution to a reference image having the second resolution to generate an aligned image having the second resolution; determine a correction factor based on differences between pixel locations of the aligned image having the second resolution and pixel locations of the reference image having the second resolution; and determine a second displacement field based on the upsampled first displacement field and the correction factor.

[0089] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein: the second resolution is the original resolution; the second displacement field includes vectors representative of displacement, at the original resolution, of one or more pixels between the captured image and the reference image; and the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least map the captured image to the reference image, using an inverse of the second displacement field, to generated the aligned image.

[0090] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine a stain area in the captured image based on the determined difference metric.

[0091] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the difference metric includes a difference between pixel intensity values of the aligned image and pixel intensity values of the reference image, and wherein the difference between pixel intensity values is indicative of the stain area.

[0092] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the difference between pixel intensity values includes atleast one of: a pixel-by-pixel difference in intensity values; or an average difference in intensity values over all pixels.

[0093] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the difference metric includes an absolute difference image representative of a pixel-by-pixel absolute difference between intensity values of the aligned image and intensity values of the reference image.

[0094] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein each pixel of the absolute difference image includes an intensity value associated with an absolute difference between an intensity value of a corresponding pixel in the aligned image and an intensity value of a corresponding pixel in the reference image, and wherein the pixel intensity values of the absolute difference image are indicative of a stain area in the absolute difference image, the stain area in the absolute difference image corresponding to the stain area in the captured image.

[0095] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the absolute difference image includes a total pixel area, and wherein the stain area includes a pixel area corresponding to at least a portion of the total pixel area.

[0096] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine the cleanliness value based on the total pixel area of the absolute difference image and the pixel area of the stain area.

[0097] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a total number of stains in the absolute difference image; determine a total stain area based on the total number of stains and the pixel area of each stain, the total stain area including a pixel area corresponding to at least a portion of the total pixel area of the absolute difference image; and determine a stain ratio based on the total pixel area of the absolute difference image and the pixel area of the total stain area, the stain ratio corresponding to the cleanliness value.

[0098] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least, in response to determiningthe stain area in the captured image, label the captured image to indicate a presence of soiling on at least the portion of the surface.

[0099] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the cleanliness value is indicative of a level of soiling of a portion of the surface prior to commencing cleaning of at least the portion of the surface.

[0100] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the cleanliness value is indicative of a level of soiling of a portion of the surface after completing cleaning of at least the portion of the surface.

[0101] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold, cause an increase of at least one of a force or torque to be applied to at least a portion of the surface via a cleaning tool; and cause a robot arm connected to the base to clean at least the portion of the surface using the cleaning tool with at least one of the increased force or torque.

[0102] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold, cause a decrease of a speed of a cleaning tool relative to at least a portion of the surface; and cause a robot arm connected to the base to clean at least the portion of the surface using the cleaning tool at the decreased speed.

[0103] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value satisfies a cleanliness threshold, cause a decrease of at least one of a force or torque to be applied to at least a portion of the surface via a cleaning tool; and cause a robot arm connected to the base to clean at least the portion of the surface using the cleaning tool with at least one of the decreased force or torque.

[0104] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value satisfies a cleanliness threshold, cause an increase of a speed of a cleaning tool relative to at least a portion of the surface; and cause a robotarm connected to the base to clean at least the portion of the surface using the cleaning tool at the increased speed.

[0105] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold, generate at least one of an alert or notification indicative of a request for human assistance.

[0106] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value satisfies a cleanliness threshold, commence cleaning of at least the portion of the surface.

[0107] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold, generate at least one of an alert or notification indicative of at least one of a failed cleaning or a request for human assistance.

[0108] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold a certain number of times, generate at least one of an alert or notification indicative of a request for human assistance.

[0109] In some aspects, the techniques described herein relate to a cleaning quality detection system, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: responsive to a determination that the cleanliness value satisfies a cleanliness threshold, generate at least one of an alert or notification indicative of a successful cleaning.

[0110] Various combinations of the above and below recited features, embodiments, implementations, and aspects are also disclosed and contemplated by the present disclosure.

[0111] Additional implementations of the disclosure are described below in reference to the appended claims, which may serve as an additional summary of the disclosure.

[0112] Methods of using the system(s) (including device(s), apparatus(es), assembly(ies), structure(s), and / or the like) disclosed herein are included; the methods of use can include using or assembling any one or more of the features disclosed herein to achieve functions and / or features of the system(s) as discussed in this disclosure. Methods of manufacturing the system(s) disclosed herein are included; the methods of manufacture can include providing, making, connecting, assembling, and / or installing any one or more of the features of the system(s) disclosed herein to achieve functions and / or features of the system(s) as discussed in this disclosure.

[0113] In various implementations, systems and / or computer systems are disclosed that comprise one or more computer-readable storage mediums or devices comprising, configured to store, and / or storing program instructions, and one or more processors configured to execute the program instructions to cause the systems and / or computer systems to perform operations comprising one or more aspects of the above- and / or below-described implementations (including one or more aspects of the appended claims).

[0114] In various implementations, computer-implemented methods are disclosed in which, by one or more processors executing program instructions, one or more aspects of the above- and / or below-described implementations (including one or more aspects of the appended claims) are implemented and / or performed.

[0115] In various implementations, computer program products comprising one or more computer-readable storage mediums or devices, and / or one or more computer-readable storage mediums or devices, are disclosed, wherein the computer-readable storage mediums comprise, are configured to store, and / or store program instructions, the program instructions executable by one or more processors to cause the one or more processors to perform operations comprising one or more aspects of the above- and / or below-described implementations (including one or more aspects of the appended claims).BRIEF DESCRIPTION OF THE DRAWINGS

[0116] Example features of the present disclosure, its nature and various advantages will be apparent from the accompanying drawings and the following detailed description of various implementations. Non-limiting and non-exhaustive implementations are described with reference to the accompanying drawings, wherein like labels or referencenumbers refer to like parts throughout the various views unless otherwise specified. The sizes and relative positions of elements in the drawings are not necessarily drawn to scale. For example, the shapes of various elements may be selected, enlarged, and positioned to improve drawing legibility. The particular shapes of the elements as drawn have been selected for ease of recognition in the drawings.

[0117] Figure 1 is a block diagram illustrating an example embodiment of a cleaning robot system, in accordance with various implementations of the present disclosure.

[0118] Figure 2 is a block diagram illustrating an example embodiment of a server of a cleaning robot system, in accordance with various implementations of the present disclosure.

[0119] Figure 3 is a block diagram illustrating an example embodiment of a cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0120] Figure 4 illustrates a perspective view of an example embodiment of the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0121] Figure 5 illustrates a perspective view of an example embodiment of an aspect of a tool cleaning and sanitization system, in accordance with various implementations of the present disclosure.

[0122] Figure 6 is a block diagram illustrating an example embodiment of a device of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0123] Figure 7 illustrates a perspective view of an example embodiment of a vacuum-based cleaning tool useable by the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0124] Figure 8 illustrates a perspective view of an example embodiment of a buffer-based cleaning tool useable by the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0125] Figures 9A-9B illustrate perspective and cross-sectional views, respectively, of an example embodiment of a squeegee-based cleaning tool useable by the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0126] Figure 10A illustrates a perspective view of an example embodiment of a fluid spray tool useable by the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0127] Figure 10B illustrates a perspective view of an example embodiment of a fluid spray tool useable by the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0128] Figure 10C illustrates a perspective view of an example embodiment of an air blower tool useable by the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0129] Figures 11A-11 B are flow diagrams illustrating example processes associated with operating the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0130] Figure 12 is a flow diagram illustrating an example process associated with operating the vacuum-based tool, in accordance with various implementations of the present disclosure.

[0131] Figure 13 is a flow diagram illustrating an example process associated with operating the buffer-based tool, in accordance with various implementations of the present disclosure.

[0132] Figure 14 is a flow diagram illustrating an example process associated with operating the squeegee-based tool, in accordance with various implementations of the present disclosure.

[0133] Figure 15 is a flow diagram illustrating an example process associated with operating the fluid spray tool, in accordance with various implementations of the present disclosure.

[0134] Figures 16A-16B are flow diagrams illustrating example processes associated with operating the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.

[0135] Figures 17A-17D are flow diagrams illustrating example processes associated with determining the soiling and / or cleanliness of a surface for cleaning by the cleaning robot of the cleaning robot system, in accordance with various implementations of the present disclosure.DETAILED DESCRIPTION

[0136] Although certain implementations, aspects, and examples are disclosed below, the inventive subject matter extends beyond the specifically disclosed implementations to other alternative implementations and / or uses and to modifications and equivalents thereof. Thus, the scope of the claims appended hereto is not limited by any of the particular implementations described below. For example, in any method or process disclosed herein, the acts or operations of the method or process may be performed in any suitable sequence and are not necessarily limited to any particular disclosed sequence. Various operations may be described as multiple discrete operations in turn, in a manner that may be helpful in understanding certain implementations; however, the order of description should not be construed to imply that these operations are order dependent. Additionally, the structures, systems, and / or devices described herein may be embodied as integrated components or as separate components. For purposes of comparing various implementations, certain aspects and advantages of these implementations are described. Not necessarily all such aspects or advantages are achieved by any particular implementation. Thus, for example, various implementations may be carried out in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other aspects or advantages as may also be taught or suggested herein.Example Cleaning Robot System

[0137] Figure 1 depicts a block diagram illustrating an example implementation of a cleaning robot system 100. Figure 1 depicts an aspect of, for example, communication pathways between various components of the cleaning robot system 100. In some aspects, the system 100 can include controller 102, cleaning robot 104, sensor(s) 106, user interface device 108, network 110, device application 112, web application 114, server 116, scanner 118, and updates 120.

[0138] Controller 102 can control operation of a cleaning robot 104 as described herein. The controller 102 can be in communication with the robot 104. In some aspects, the robot 104 can include or house the controller 102. Controller 102 may comprise one or more computing devices including one or more hardware processors. The one or more hardware processors may be configured to analyze, cleanse, edit, reduce, wrangle, or otherwise process data. The controller 102 may comprise program instructions configured to cause the controller 102 to perform one or more operations when executed by the hardware processors. The controller 102 may comprise program instructions configured to cause the controller 102to provide one or more control functions described herein when executed by hardware processors.

[0139] The robot 104 can be a mobile robot. The robot 104 can include a closed- loop control system robotic arm to carry out data-driven cleaning tasks as described herein. In some aspects, the robot 104 can be configured to automatically identify a room for cleaning. In some aspects, the robot arm can open and close doors. The robot 104 may comprise one or more computing devices including one or more hardware processors configured to implement machine learning (ML) to improve robot arm performance. For example, the one or more hardware processors may be configured to implement ML algorithms for determining environment details (e.g., features / fixtures in a room or outdoor area), determining a level of cleanliness after cleaning a certain environment, and / or detecting new or additional obstacles within an environment to be cleaned. In some aspects, the robot 104 can manipulate doors while completing cleaning tasks.

[0140] One or more sensors 106 may be in communication with the controller 102 and / or the cleaning robot 104. Sensor(s) 106 may be integrated into, housed by, or coupled to a cleaning tool used by the cleaning robot 104 for cleaning. Sensor(s) 106 may be integrated into, housed by, or coupled to the cleaning robot 104. Sensor(s) 106 can include an ultrasonic sensor, an optical sensor (e.g., LiDAR), an infrared sensor, a laser-based sensor, a pressure sensor, a capacitive sensor, an acoustic sensor, an inclinometer, a gyroscope, an accelerometer, a time-of-flight sensor, a hall-effect sensor, a force sensor, a load cell, a torque sensor, a speed sensor, a rotary encoder, a position sensor, a cleaning tool sensor, and / or the like. Sensor(s) 106 may be implemented as an inertia measurement unit (IMU). The IMU can include an accelerometer, gyroscope, magnetometer, or any combination thereof.

[0141] In some aspects, the one or more sensors 106 can send an operation signal to the controller 102 and / or robot 104 (or any other component of system 100) indicative of an operation parameter of a cleaning tool as described herein. In some examples, the controller 102 and / or robot 104 (or any other component of system 100) can cause an adjustment of a toolpath associated with a cleaning tool (e.g., modify a speed, position, and / or orientation of a cleaning tool) based at least in part on the operation parameter, as described herein.

[0142] In some aspects, the one or more sensors 106 can send a navigation signal to the controller 102 and / or robot 104 (or any other component of system 100) indicative of a navigation parameter of the robot as described herein. For example, the controller 102 and / orrobot 104 (or any other component of system 100) can navigate the robot 104 by causing an adjustment of the movement, position, and / or orientation of the cleaning robot based at least in part on the navigation parameter as described herein. In some examples, one or more sensors 106 may send image and / or video feedback to the controller 102 and / or robot 104 (or any other component of system 100) to navigate the robot 104.

[0143] In some aspects, one or more sensors 106 may be implemented as, or part of, an optical clean detection system as described herein. For example, sensor(s) 106 can send image and / or video feedback to the controller 102 and / or robot 104 (or any other component of system 100) to determine the cleanliness of a surface and / or feature / fixture of a room or outdoor area to be cleaned by the cleaning robot 104. In some aspects, the one or more sensors 106 can send optical signals to the controller 102 and / or robot 104 (or any other component of system 100) indicative of the cleanliness of the surface and / or feature / fixture of a room or outdoor area.

[0144] A user interface device 108 as discussed herein, which can include or house the controller 102, can be in communication with the controller 102 and / or robot 104 (or any other component of system 100). In some aspects, the user interface device 108 can at least partially control the controller 102 and / or operation of the robot 104.

[0145] In some aspects, the controller 102 can be in wired, wireless, or wire-like connection with robot 104 to cause and control operation of the robot via, for example, one or more control signals. In some aspects, the controller 102 can be integrated into robot 104 to cause and control operation of the robot via, for example, one or more control signals. In some aspects, the controller 102 may be in two-way communication with the robot 104. In some aspects, the user interface device 108 can be in wired, wireless, or wire-like connection with the controller 102 and / or robot 104 to cause and control operation of the robot via, for example, one or more control signals. In some aspects, the user interface device 108 may be in two-way communication with the controller 102 and / or robot 104.

[0146] As discussed above, in some aspects, the controller 102 can be in wired (or wire- 1 ike) connection or integrated with the robot 104 and / or user interface device 108 (or any other component of system 100) via a wire or cable connection or any other suitable electronic connection to cause operation of robot 104. In some aspects, the controller 102 can be in wireless connection with the robot 104 and / or user interface device 108 (or any other component of system 100) via any of a variety of communication protocols, including nearfield communication protocols and far-field communication protocols. Near-field communication protocols, which may also be referred to as non-radiative communication, canimplement inductive coupling between coils of wire to transfer energy via magnetic fields (e.g., NFMI). Near-field communication protocols can implement capacitive coupling between conductive electrodes to transfer energy via electric fields. Far-field communication protocols, which may also be referred to as radiative communication, can transfer energy via electromagnetic radiation (e.g., radio waves). The controller 102 can communicate via any variety of communication protocols such as Wi-Fi (e.g., 2.4 GHz channel, 5 GHz channel), Bluetooth® (e.g., Bluetooth Low Energy 5.0 / Mesh), ZigBee®, Z-wave®, cellular telephony, infrared, radio frequency identification (RFID), satellite transmission, inductive coupling, capacitive coupling, proprietary protocols, any combination of the foregoing, or any other suitable wireless connection or the like.

[0147] Scanner 118 can be configured to scan a room or outdoor area, such as a bathroom, of a human and / or operational environment such as hospitality, restaurant, retail, and / or healthcare environments, other commercial and / or industry environments, private and / or public environments, or residential environments. In some aspects, the scanner 118 can be configured to scan features / fixtures (e.g., fixtures) within the room or outdoor area. The scanner 118 can be a laser scanner, a structured-light scanner, camera(s) configured for use in photogrammetry, a LiDAR scanner, and the like. In some aspects, the scanner 118 may be a hand-held scanner or may be integrated into or housed by the robot 104. The scanner 118 can collect data (e.g., raw or unfiltered data) indicative of physical dimensions of a room or outdoor area and / or features / fixtures within a room or outdoor area and send the data to a server such as server 116 for data processing and generation of three-dimensional models 122 as described herein. In some aspects, as discussed herein, three-dimensional models 122 may be used to generate toolpaths 124 and cleaning protocols to be performed by cleaning robot 104. In some aspects, toolpaths and / or cleaning protocols can be updated and modified to suit various different needs of various different human and / or operational environments.

[0148] In some aspects, the controller 102 and robot 104 may communicate (e.g., with each other and / or other components of system 100) via a network 110. Controller 102 and / or robot 104 may be coupled to server 116 (or any other component of system 100) via network 110. In some aspects, the user interface device 108 may communicate via the network 110. The user interface device 108 may be coupled to server 116 (or any other component of system 100) through network 110. In some aspects, the scanner 118 may communicate via the network 110. Scanner 118 may be coupled to the server 116 (or any other component of system 100) via network 110.

[0149] The network 110 can include any one or more communication networks. The network 110 can include a plurality of computing devices configured to communicate with one another. The network 110 can include the Internet. Network 110 can include a cloudbased service. The network 110 may be any combination of local area network (“LAN”) and / or a wide area network (“WAN”), or the like. Accordingly, various devices can communicate with one another directly or indirectly via any appropriate communications links and / or networks, such as network 110 (e.g., one or more communications links, one or more computer networks, one or more wired or wireless connections, the Internet, any combination of the foregoing, and / or the like).

[0150] In some aspects, network 110 can be configured to handle increased data traffic as cleaning robots are added to system 100. For example, the network 110 can include hardware such as switches, routers, WAN optimization devices, other connection points and the like for handling increased data throughput and more connections simultaneously. In some examples, the network 110 may implement virtual local area networks (“VLANs”) to segment traffic within specific areas of the network. In some examples, the network 110 can include quality-of-service rules to set priorities for certain data traffic. In some aspects, the network 110 may implement advanced routing techniques to adapt network conditions to find efficient paths for data traffic. For example, the network 110 can implement dynamic routing, load balancing, and the like.

[0151] The server 116 may comprise one or more computing devices including one or more hardware processors. The one or more hardware processors may be configured to analyze, cleanse, edit, reduce, wrangle, or otherwise process data. The server 116 may comprise program instructions configured to cause the server 116 to perform one or more operations when executed by the hardware processors. The server 116 may comprise program instructions configured to cause the server 116 to provide one or more control functions described herein when executed by hardware processors. The server 116 may include, and / or have access to (e.g., be in communication with) a storage device or system which can include any computer readable storage medium and / or device (or collection of data storage mediums and / or devices), including, but not limited to, one or more memory devices that store data, including without limitation, dynamic and / or static random-access memory (RAM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), optical disks (e.g., CD-ROM, DVD-ROM, etc.), magnetic disks (e.g., hard disks, floppy disks, etc.), memory circuits (e.g., solid state drives, random-access memory (RAM), etc.), and / or the like.

[0152] In some examples, the server 116 may host a database which can be any data structure (and / or combinations of multiple data structures) for storing and / or organizing data, including, but not limited to, relational databases (e.g., Oracle databases, PostgreSQL databases, MySQL databases and the like), non-relational databases (e.g., NoSQL databases, and the like), in-memory databases, spreadsheets, as comma separated values (“CSV”) files, extensible markup language (“XML”) files, TeXT (“TXT”) files, flat files, spreadsheet files, and / or any other widely used or proprietary format for data storage. Databases can be stored in one or more data stores. In some examples, the server 116 may include and / or be in communication with a hosted storage environment that includes a collection of physical data storage devices that may be remotely accessible and may be rapidly provisioned as needed (commonly referred to as “cloud” storage). Data stored in and / or accessible by the server 116 can include data obtained by a scanner 118 and / or data originating from controller 102, robot 104, sensor(s) 106, user interface device 108, and / or any other component of system 100 as described herein.

[0153] In some aspects, server 116 can include three-dimensional model database 122 and / or toolpath database 124. Three-dimensional model database 122 can include data corresponding to three-dimensional models of rooms (or outdoor areas) and / or data corresponding to features / fixtures within rooms (or outdoor areas) as further described with reference to Figure 2. Toolpath database 124 can include data corresponding to toolpaths as further described with reference to Figure 2.

[0154] In some aspects, server 116 may comprise or be in communication with one or more human and / or operational environment management systems such as hospitality, restaurant, healthcare, retail, business, private and / or public facility data storage and / or management system(s).

[0155] Server 116 can provide system 100 a central point from which to control cleaning operations using one or more cleaning robots (e.g., robot 104) of the system. As described herein, server 116 can be configured to obtain and manage data originating from one or more components of system 100 to manage various tasks associated with cleaning operations of the system such as maintaining and / or modifying cleaning robot schedules, assigning robots to various cleaning tasks, monitoring robot statuses, optimizing cleaning performance (e.g., improving cleaning efficiency such as by reducing time taken to clean a room) based at least in part on system-wide data, maintaining consistent and desirable standards of cleanliness, maintaining uniform standards of cleanliness across various different hospitality, restaurant, or healthcare establishments, and the like. Moreover, server116 can integrate the cleaning robot system 100 with management systems of participating hospitality, restaurant, or healthcare establishments, which can permit various different hospitality, restaurant, or healthcare establishments to utilize cleaning robots without overhauling their respective system infrastructures. For example, the server 116 may be configured to integrate system 100 with a room booking system of a participating hotel such that the system 100 can manage and modify cleaning robot schedules based on changes in the respective hotel’s room occupancy. Furthermore, server 116 can be configured to permit system 100 to scale and facilitate the addition of cleaning robots to the system without a need for system infrastructure overhauls, as described herein.

[0156] Server 116, in some aspects, may be configured to manage distribution of firmware, software, navigation paths, cleaning protocols, and / or cleaning path updates 120 for system 100. Server 116 can receive such updates from an internet-based service and / or a cloud-based service. In some examples, such updates 120 can be locally downloaded and stored on server 116. Server 116 can send such updates 120 to one or more components of system 100 such as controller 102, cleaning robot 104, sensor(s) 106, user interface device 108, and / or scanner 118. In some aspects, one or more components of system 100 may retrieve such updates from server 116.

[0157] In some aspects, the controller 102 (or any other device of system 100) can be connected to cloud-based or internet-based services by a Bluetooth connection, a WiFi connection, and / or any other suitable wireless connection to the Internet. In some aspects, the controller 102 (or any other component of system 100) can be in two-way communication with an internet-based web application 114 that can allow a user to operate the system 100 from a webpage or another other internet-based protocol through network 110 to provide one or more control functions described herein, including with a device application 112. The web application 114 may connect to the network 110 to send and receive communication signals to and from the controller 102. The controller 102 can be in communication with the network 110 as discussed herein, allowing for communication with the web application 114 through network 110. The web application 114 may communicate with the controller 102 via a Bluetooth connection, a Wi-Fi connection, over the Internet, or any other suitable communication protocol, including via network 110.

[0158] In some aspects, the controller 102 (or any other component of system 100) can be in two-way communication with a device application 112 that can allow a user to operate the system 100 from a device application user interface to provide one or more control functions described herein. The controller 102 can be in wireless communication with thedevice application 112 via a Bluetooth connection, a Wi-Fi connection, and / or any other suitable wireless communication protocol to send and receive communication signals. Such communication protocols may be used when a user with the user interface device 108 is proximate the controller 102.

[0159] In some aspects, the device application 112 can be in two-way communication with the controller 102 (or any other component of system 100) through the network 110 to provide one or more of the control functions discussed herein. The device application 112 can send control signals to the controller 102 via network 110 when in range of, for example, a Bluetooth or Wi-Fi connection. The device application 112 can utilize cloudbased or Internet-based services when the user with user interface device 108 is not proximate the controller 102. For example, when the user is not within Bluetooth or Wi-Fi range of the controller 102, the device application 112 may connect to the controller 102 through the network 110. The controller 102 can be in communication with the network 110 as discussed herein, allowing for communication with the device application 112 through network 110.

[0160] In some aspects, firmware, software, navigation paths, cleaning protocols, and / or cleaning path updates 120 can be sent to the controller 102 (or any other component of system 100) via the device application 112 and / or web application 114. In some examples, if Wi-Fi or Internet-based services are not available, the device application 112 can be used to provide such updates 120 to the controller 102 (or any other component of system 100) via Bluetooth. In some aspects, the controller 102 can obtain and implement updates 120. In some aspects, the robot 104 can obtain and implement updates 120. In some aspects, the user interface device 108 can obtain and implement updates 120. In some aspects, the scanner 118 can obtain and implement updates 120. In some aspects, server 116 can obtain and implement updates 120. Such updates can be provided by internet-based and / or cloudbased services.

[0161] The device application 112 and / or web application 114 can display various user interfaces that include various information associated with the system 100. For example, device application 112 and / or web application 114 can display in the same or different user interfaces information associated with robot 104 such as status overviews, battery levels, realtime location tracking, cleaning schedules, usage statistics, maintenance histories, and the like.

[0162] Status overviews can include whether robot 104 is connected to / disconnected from the system 100, cleaning, charging, in maintenance, and the like.

[0163] Location tracking can include in a user interface an integrated map or floor plan of an associated human and / or operational environment on which the locations of one or more cleaning robots are indicated.

[0164] Cleaning schedules can include a user interface configured to allow a user to set up, adjust, and / or review cleaning times and / or dates for specific areas and / or rooms. Cleaning schedules can include a user interface configured to allow a user to set up, adjust, and / or review specific areas and / or rooms for cleaning.

[0165] Usage statistics can include analytics associated with cleaning durations, area coverage, cleaning frequency, and the like.

[0166] Maintenance logs can include a user interface configured to display maintenance histories associated with respective cleaning robots, issues encountered by or with certain cleaning robots, solutions applied, and the like.

[0167] In some examples, device application 112 and / or web application 114 can display in a user interface alerts and / or notifications such as robot maintenance needs, when a robot deviates from scheduled tasks, and other information associated with robot operation errors. In some aspects, device application 112 and / or web application 114 can display in a user interface manual controls configured to permit a user to manually control a robot or intervene in autonomous tasks when needed.

[0168] In some aspects, device application 112 and / or web application 114 may be fully integrable into various different human and / or operational environment management systems such as hospitality, restaurant, healthcare, retail, business, private and / or public facility management systems. For example, device application 112 and / or web application 114 can be integrated with a hotel management system (e.g., room-booking system) and display in a user interface information such as rooms that are occupied by guests, rooms that are checked out, rooms that are ready for cleaning, and the like.

[0169] In some aspects, device application 112 and / or web application 114 can include customizable access controls that allow different permissions for different users. For example, managers and maintenance personnel may have different access permissions to enhance security of system 100.

[0170] As used herein, a device application 112 and / or web application 114 can be used with any portable electronic device, such as a smartphone or tablet. The device application 112 and / or web application 114 can allow a user to view information about and input information / commands to the system 100 and operate the system 100. The controller 102 and / or any other components of the system 100 can receive control inputs or commandsignals from the device application 112 and / or web application 114. For example, device application 112 and / or web application 114 can be used to direct communication with the controller 102 and / or robot 104, create and / or modify cleaning protocols to be executed by robot 104, schedule cleaning tasks, and / or any other operation that the controller 102 can perform as discussed herein. Such integration through device application 112 and / or web application 114 allows for easier use of the system 100. For example, the device application 112 and / or web application 114 can allow a user to assign a cleaning robot 104 to an area (e.g., an outdoor area) or room of a human and / or operational environment.

[0171] Figure 2 depicts a block diagram 200 illustrating an example implementation of a server 202 of cleaning robot system 100. In some aspects, server 202 can be implemented as the server 116. In some aspects, server 202 can be implemented as a cloud-based service. In some aspects, the server 202 may comprise one or more computing devices including one or more hardware processors. The one or more hardware processors may be configured to analyze, cleanse, edit, reduce, wrangle, or otherwise process data. The server 202 may comprise program instructions configured to cause server 202 to perform one or more operations when executed by the hardware processors. The server 202 may comprise program instructions configured to cause server 202 to provide one or more control functions described herein when executed by hardware processors. In some aspects, one or more other components of system 100 that are in communication with server 202 (e.g., controller 102, cleaning robot 104, user interface device 108) via, for example, a network such as network 110 may be configured to provide one or more control functions described herein.

[0172] Server 202 may include, and / or have access to, the same or similar features directed to storage, memory, databases, datastores, data obtained from one or more components of system 100, and one or more human and / or operational environment management systems such as hospitality, restaurant, healthcare, retail, business, private and / or public facility data storage and / or management systems as described herein for server 116.

[0173] In some aspects, server 202 may be configured to scale with addition of cleaning robots to system 100. In some aspects, the server 202 may comprise program instructions configured to cause server 202 to provide one or more control functions for a plurality of cleaning robots when executed by hardware processors. Server 202 may provide one or more control functions for an increasing number of cleaning robots as cleaning robots are added to system 100. Server 202 may store data for an increasing number of cleaning robots as cleaning robots are added to system 100. For example, server 202 can beimplemented with a microservices architecture that permits server 202 to provide various different control functions independently of one another and scale specific components of the server as needed for respective control functions. In some aspects, system 100 may include a plurality of servers. For example, system 100 can implement load balancing to distribute workloads across two or more servers. In some aspects, server 202 can be in communication with a cloud service that can rapidly provide on-demand resources as needed by the system 100.

[0174] Server 202 can be configured to store and / or access data obtained by a scanner such as scanner 118 of system 100. The scanner may be handheld or may be integrated into or housed by a cleaning robot such as cleaning robot 104. A user of a handheld scanner or the cleaning robot may enter an outdoor area or a room of a human and / or operational environment, such as a bathroom or any other room or area, and scan the area or room using the scanner to acquire data (e.g., raw or unfiltered data) associated with physical dimensions of the area or room and / or features / fixtures within the area or room. For example, the scanner may be a laser scanner with one or more emitters configured to emit laser pulses. The scanner can include one or more sensors such as a time-of-f light sensor configured to measure the time duration for a pulse to reflect off surface(s) and / or featureZfixture(s) in a room and be detected by a detector (e.g., impinge upon a detector) of the scanner. The time-of-flight duration may be indicative of a distance between the scanner and targeted surface(s) and / or feature / fixture(s). The scanner can include one or more sensors configured to measure the angle of emission of the laser pulse such as encoders, inertial measurement units (e.g., gyroscope), and / or the like. The angle of emission may be indicative of an angular position (e.g., azimuthal and / or elevation angles) of the scanner relative to targeted surface(s) and / or feature / fixture(s) of the room.

[0175] The example of a laser scanner is not limiting. The scanner can be any other device configured for use in generating three-dimensional models of rooms and / or features / fixtures of a room such as a structured-light scanner, camera(s) configured for use in photogrammetry, a LiDAR scanner, and the like.

[0176] In some aspects, the emitter of the scanner may emit a plurality of laser pulses consecutively or simultaneously. The time-of-flight of each of the plurality of laser pulses may be indicative of distances between various different portions of targeted surface(s) and / or featureZfixture(s) of the area or room and the scanner. The angle of emission of each of the plurality of laser pulses may be indicative of an angular position of the scanner relative to various different portions of targeted surface(s) and / or feature / fixture(s) of the room.

[0177] The example of time-of-flight is not limiting. The scanner can use any other method of measuring physical dimensions and orientations such as determining phase shifts between emitted and detected light pulses.

[0178] Data collected by the scanner may be aggregated to represent physical aspects of a room (e.g., physical dimensions, surfaces, features / fixtures, etc.). For example, the scanner may aggregate the collected data to create a “point cloud” indicative of surface(s) and / or feature / fixture(s) of the area or room represented in three-dimensional space (e.g., shapes, distances, sizes, locations, orientations, etc.). A “point cloud” can be a collection of data in a three-dimensional coordinate system representative of surfaces and / or features / fixtures of an environment. In some examples, the server 202 can be configured to aggregate data received from the scanner to create a point cloud.

[0179] In some aspects, the collected data may be associated with spherical coordinates representative of various different surfaces and / or features / fixtures of the area or room in the three-dimensional coordinate system. For example, data based at least in part on signals received from a time-of-flight sensor may be associated with Z coordinate points within the three-dimensional coordinate system, the Z coordinate points indicative of distances between various different surfaces and / or features / fixtures of an area or room and the scanner. In some examples, data based at least in part on signals received from sensors configured to measure angles of laser emission may be associated with azimuthal and elevation angles within the three-dimensional coordinate system, the azimuthal and elevation angles indicative of horizontal and vertical angular positions, respectively, of the scanner relative to various different surfaces and / or features / fixtures of the area or room. In some aspects, the scanner may include one or more computing devices including one or more hardware processors. The scanner may comprise program instructions configured to cause the scanner to convert data associated with spherical coordinates (e.g., Z, azimuth, elevation) to data associated with cartesian coordinates in a three-dimensional coordinate system (e.g., X, Y, Z). For example, the scanner can use trigonometric transformations to convert the data. In some aspects, the scanner can generate a three-dimensional point cloud of the scanned room based on the converted data.

[0180] In some aspects, the server 202 may be configured to store and / or access scanner data obtained from the scanner (such as scanner 118) as Scanner Data 204. For example, Scanner Data 204 can include raw and / or unfiltered data collected by the scanner (e.g., data associated with spherical coordinates). In some aspects, the server 202 may include one or more computing devices including one or more hardware processors. Theserver 202 may comprise program instructions configured to cause the server 202 to convert data associated with spherical coordinates to data associated with cartesian coordinates. The server 202 may generate a three-dimensional point cloud of the scanned room based on the converted data. In some examples, Scanner Data 204 can include raw and / or unfiltered point cloud data obtained from the scanner. In some examples, Scanner Data 204 can include raw and / or unfiltered point cloud data generated by the server 202.

[0181] In some aspects, the server 202 may be configured to process raw point cloud data to generate three-dimensional models of scanned rooms. Server 202 can be configured to filter point cloud data. For example, server 202 can be configured to remove noise and / or outliers that do not represent meaningful surface data such as reflections, points on moving objects, stray measurements caused by dust, and the like. In some aspects, if multiple scans of an area or room by a scanner at various positions are made, the server 202 may be configured to align a plurality of point clouds into a single three-dimensional coordinate system. For example, the server 202 can use techniques such as iterative closest point (ICP) to find an optimal fit between different point cloud datasets and minimize distances between corresponding points. The server 202 may be configured to convert filtered point cloud data into a representation of a three-dimensional surface. For example, the server 202 can be configured to generate a mesh of polygons (e.g., triangles) representative of the three- dimensional surface. The server 202 can implement various techniques such as Deluanay triangulation, Poisson surface reconstruction, and the like. In some aspects, the server 202 may be configured to make geometric corrections to point cloud data to adjust for potential distortions introduced by the scanning process. For example, the server 202 may refine the point cloud data such that it more accurately represents real-world shapes. In some examples, the server 202 may provide missing point cloud data. In some aspects, additional data such as image data or other different data from sensors may be available and integrated into the point cloud to improve fidelity of any generated three-dimensional models. For example, the server 202 can be configured to map high-resolution images onto the surfaces of a generated model to capture realistic textures.

[0182] The server 202 may be configured to store three-dimensional models of scanned areas (e.g., outdoor areas) or rooms as Room Model Data 206. For example, after generating models, the server 202 can store the three-dimensional models in formats compatible for viewing (e.g., CAD, BIM, VR, and the like). In some aspects, the server 202 can access Room Model Data 206 to provide a user with access to the generated models.For example, a user can view a selected three-dimensional model and / or use a selected model for generating cleaning toolpaths and cleaning protocols, as described herein.

[0183] In some aspects, server 202 may be configured to generate toolpaths and / or cleaning protocols based at least in part on stored room model data. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to generate toolpaths and / or cleaning protocols based at least in part on stored room model data.

[0184] In some aspects, the server 202 may be configured to process raw point cloud data to generate three-dimensional models of features / fixtures (e.g., fixtures) within a room such as a toilet, a faucet, a sink, a showerhead, and the like. For example, the server 202 may be configured to extract features / fixtures from filtered point cloud data. In some examples, the server 202 can analyze the filtered point cloud data and detect changes in surface normals (e.g., a vector perpendicular to a surface) to detect edges, corners, planar regions, and the like. In some examples, the server 202 can analyze clusters of filtered point cloud data to detect features / fixtures not detectable when analyzing individual data points. In some examples, the server 202 may be trained with training data including complex geometric patterns to detect features / fixtures. The server 202 may be configured to store three- dimensional models of scanned features / fixtures as Fixture Model Data 208. For example, the generated models may be rendered using 3-D modeling software and stored in formats compatible for viewing (e.g., CAD, BIM, VR, and the like). In some aspects, the server 202 can access Fixture Model Data 208 to provide a user with access to the generated models. For example, a user can view a selected three-dimensional model and / or use a selected model for generating cleaning toolpaths and cleaning protocols, as described herein.

[0185] In some aspects, server 202 may be configured to generate toolpaths and / or cleaning protocols based at least in part on stored fixture model data. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to generate toolpaths and / or cleaning protocols based at least in part on stored fixture model data.

[0186] The server 202, in some aspects, may be configured to send Room Model Data 206 and / or Fixture Model Data 208 to one or more components of system 100 such as controller 102, cleaning robot 104, and / or user interface device 108. In some aspects, a user device may access generated models stored on server 202. A user may utilize device application 112 and / or web application 114 to select various room and / or fixture models for viewing. For example, device application 112 and / or web application 114 may display in auser interface and / or webpage, respectively, the three-dimensional model in a virtual environment. A user may be able to interact with the virtual environment via device application 112 and / or web application 114. In some examples, the user interface and / or webpage may include a list of selectable cleaning tools of a cleaning robot (e.g., robot 104). A user can select a specific cleaning tool and, for example, use his or her finger to indicate (e.g., paint with the finger) a toolpath in the three-dimensional model. For example, a user can select a cleaning tool for vacuuming a surface and, with his or her finger, paint a toolpath along a bathroom countertop for vacuuming by a cleaning robot. In some examples, a user can use a point-and-click user input (e.g., a mouse) to paint a toolpath. In some examples, a user can manipulate a virtual robot arm to indicate a cleaning toolpath. In some examples, a user can set waypoints in the three-dimensional model to indicate a cleaning toolpath. In some aspects, a different web application other than web application 114 may be configured to provide one or more toolpath generation and / or modification functions described herein.

[0187] In some aspects, server 202 may be configured to generate cleaning toolpaths based at least in part on scanner data and generated three-dimensional models of rooms and / or features / fixtures. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to generate cleaning toolpaths based at least in part on scanner data and generated three-dimensional models of rooms and / or features / fixtures such as described with reference to server 202.

[0188] A cleaning toolpath can include a path on or proximate to a surface or feature / fixture of an area or room along which a cleaning robot moves a cleaning tool. For example, a toolpath can include positioning and / or orienting a cleaning tool at various different portions of a surface and / or feature / fixture. A toolpath can include various different desired cleaning tool positions and / or orientations. In some aspects, a toolpath can include a desired speed relative to a surface and / or feature / fixture at which the robot moves and / or rotates a cleaning tool. In some aspects, a toolpath can include moving a cleaning tool along a surface and / or feature / fixture a certain number of times.

[0189] In some aspects, desired cleaning tool positions and / or orientations can correspond to desired operation parameters. Desired operation parameters may include, but are not limited to, a desired distance and / or angle relative to a surface and / or feature / fixture at which the robot positions and / or orients a cleaning tool, a desired force applied to a surface and / or feature / fixture by the robot via a cleaning tool, a desired torque with which the robot rotates a cleaning tool, a desired spray rate at which the robot sprays a surface and / orfeature / fixture, a desired movement rate at which the robot moves a cleaning tool, and the like.

[0190] Toolpaths, in some aspects, may include cleaning tool tolerances. Cleaning tool tolerances can include an amount of permissible variation between a desired operation parameter and a measured operation parameter such that the cleaning robot can still effectively clean a surface and / or feature / fixture with the cleaning tool.

[0191] In some aspects, a toolpath generated via device application 112 and / or web application 114 (or other web application) can be stored on server 202 as Toolpath Data 210. The server 202 can access Toolpath Data 210 to provide a user with access to generated toolpaths. The server 202 can send Toolpath Data 210 to one or more components of system 100 such as the controller 102, the robot 104, and / or the user interface device 108. In some aspects, a user device may access generated toolpaths stored on server 202. A user may utilize device application 112 and / or web application 114 (or other web application) to select various different toolpaths for various different cleaning tools. For example, device application 112 and / or web application 114 (or other web application) may display in a user interface and / or webpage, respectively, a selection of toolpaths associated with various different tools, various different surfaces, and / or various different features / fixtures. In some examples, upon selection of a toolpath, device application 112 and / or web application 114 (or other web application) may present a view of the three-dimensional model associated with the toolpath and indicate the current toolpath (e.g., highlighted waypoints) in the virtual environment. In some aspects, a user can modify or delete a toolpath.

[0192] Modifying a toolpath can include changing the cleaning tool associated with the toolpath, changing a direction along which the robot moves a cleaning tool on or proximate to a surface and / or feature / fixture, increasing or decreasing a number of times that the robot moves a cleaning tool along a surface and / or feature / fixture. Modifying a toolpath can include increasing or decreasing a desired speed relative to a surface and / or feature / fixture at which the robot moves and / or rotates a cleaning tool. Modifying a toolpath can include modifying a desired position (e.g., increasing or decreasing a distance or height of the cleaning tool relative to the surface) and / or orientation relative to a surface and / or feature / fixture at which the robot positions and / or orients the cleaning tool. Modifying a toolpath can include modifying cleaning tool tolerances (e.g., increasing or decreasing tool tolerance threshold values).

[0193] Desired positions and / or orientations may correspond to various different desired operation parameters as described herein such that modifying desired positions and / or orientations can modify desired operation parameters. Modifying desired operationparameters can include increasing or decreasing a desired distance and / or angle relative to a surface and / or feature / fixture at which the robot positions and / or orients a cleaning tool, increasing or decreasing a desired force applied to a surface and / or feature / fixture by the robot via a cleaning tool, increasing or decreasing a desired torque with which the robot rotates a cleaning tool, increasing or decreasing a desired spray rate at which the robot sprays a surface and / or feature / fixture, increasing or decreasing a desired movement rate at which the robot moves a cleaning tool, and / or the like.

[0194] Centralized storage and / or access to toolpath data can permit toolpaths to be continuously refined (e.g., modified) by users and / or the system 100 based on real-world cleaning data as described herein. This can permit human and / or operational environment participants to reduce times taken to clean areas (including outdoor areas), spaces, rooms, features / fixtures, and the like while maintaining desired cleaning standards. For example, various different human and / or operational environments may require different cleaning approaches due to variations in area or room layouts, furniture placement, fixture arrangements, occupant (e.g., guest, customer, employee, inhabitant, etc.) usage of facilities, and the like. Centralized storage of toolpaths can allow for easy and quick modification of toolpaths tailored to meet the needs of specific area or room and / or feature / fixture types, individual areas or rooms and / or individual features / fixtures, and the like. Moreover, centralized storage of toolpath data can permit cleaning robot operations to scale with changes to the human and / or operational environment. For example, if one or more bathrooms in a hotel are fitted with new faucets, Toolpath Data 210 can be updated with new toolpaths associated with the new faucets, which the server 202 can send to one or more components of the system 100 such as controller 102, robot 104, and / or user interface device 108. This can permit robot cleaning operations to continue with little (or no) interruption (e.g., without need for manual updates or individual reprogramming of cleaning robots).

[0195] Server 202, in some aspects, may be configured to modify toolpaths based at least in part on new data associated with generated room models and / or fixture models. For example, server 202 may receive new and / or improved (e.g., more accurate) scanner data associated with a certain area or room. Server 202 can generate an improved (e.g., more accurate) three-dimensional model of the associated area or room and modify toolpaths associated with various different surfaces of the area or room as described herein. In some examples, server 202 may receive new and / or improved scanner data associated with a certain feature / fixture of an area or room. Server 202 can generate an improved three- dimensional model of the associated feature / fixture and modify toolpaths associated with thefeature / fixture as described herein. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to modify toolpaths based at least in part on new data associated with generated room models and / or fixture models such as described with reference to server 202.

[0196] In some aspects, a user can combine various different toolpaths to generate, via device application 112 and / or web application 114 (or other web application), a cleaning protocol for an area or room. For example, a user can generate a cleaning protocol for a room, such as a bathroom, by combining a plurality of toolpaths associated with various different cleaning tools (e.g., a tool for vacuuming, a tool for squeegeeing, a tool for buffing, a tool for spraying etc.), various different surfaces of a room (e.g., a countertop, a mirror, etc.), and / or various different features / fixtures of a room (e.g., a toilet, a sink, a faucet, a showerhead, etc.). In some aspects, server 202 may be configured to generate cleaning protocols based at least in part on scanner data, generated three-dimensional models of rooms and / or features / fixtures, and / or toolpaths. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to generate cleaning protocols based at least in part on scanner data, generated three-dimensional models of rooms and / or features / fixtures, and / or toolpaths such as described with reference to server 202.

[0197] A cleaning protocol can include one or more sequences of cleaning one or more surfaces and / or features / fixtures of an area or room using one or more cleaning tools associated with one or more respective toolpaths. In some aspects, a cleaning protocol can include cleaning a surface of an area or room using one or more cleaning tools associated with one or more toolpaths. In some aspects, a cleaning protocol can include cleaning a feature / fixture of an area or room using one or more cleaning tools associated with one or more toolpaths. In some aspects, a cleaning protocol can include moving the cleaning robot to an initial position within the area or room such that a robot arm of the cleaning robot can reach the various different surfaces and / or features / fixtures to be cleaned. In some aspects, a cleaning protocol can include moving the cleaning robot from the initial position to another position within the area or room such that the robot arm of the cleaning robot can reach other various different surfaces and / or features / fixtures to be cleaned. For example, a cleaning protocol can include a first sequence of spraying a bathroom countertop, spraying countertop sink(s), and spraying countertop faucet(s), according to an associated toolpath. In some examples, a cleaning protocol can include a second sequence of spraying a bathroom mirror according to an associated toolpath. A cleaning protocol can include a third sequence ofsqueegeeing and vacuuming the bathroom mirror according to an associated toolpath. In some examples, a cleaning protocol can include a fourth sequence of buffing the countertop according to an associated toolpath. A cleaning protocol can include a fifth sequence of vacuuming the countertop according to an associated toolpath.

[0198] In some aspects, a cleaning protocol generated via device application 112 and / or web application 114 (or other web application) can be stored on server 202 as Cleaning Protocol Data 212. The server 202 can access Cleaning Protocol Data 212 to provide a user with access to generated cleaning protocols. The server 202 can send Cleaning Protocol Data 212 to one or more components of system 100 such as the controller 102, the robot 104, and / or the user interface device 108. In some aspects, a user device may access generated cleaning protocols stored on server 202. A user may utilize device application 112 and / or web application 114 to select various different cleaning protocols for various different areas or rooms and / or features / fixtures. For example, device application 112 and / or web application 114 may display in a user interface and / or webpage, respectively, a selection of cleaning protocols associated with various different rooms and / or features / fixtures in a respective human and / or operational environment. In some examples, upon selection of a cleaning protocol, device application 112 and / or web application 114 may present a view of the three- dimensional model associated with the cleaning protocol and indicate the current sequence of cleaning in the virtual environment. In some aspects, a user can modify or delete a cleaning protocol. A different web application other than web application 114, in some aspects, may be configured to provide one or more cleaning protocol generation and / or modification functions described herein.

[0199] Modifying a cleaning protocol can include increasing or decreasing the number of surfaces and / or features / fixtures of a space, area, or room to be cleaned, changing an order in which surfaces and / or features / fixtures are cleaned, modifying toolpaths as described herein, and the like.

[0200] Centralized storage and / or access to cleaning protocol data can allow for widespread and quick access to adaptive cleaning routines that can be tailored to specific room layouts and / or fixture arrangements for various different hospitality, restaurant, or healthcare establishments. For example, if a room layout and / or fixture arrangement changes, or a toolpath is made more efficient (e.g., reduce time needed for a robot to satisfy a cleanliness threshold level when cleaning a surface and / or feature / fixture of a room), an associated cleaning protocol can be modified accordingly and the cleaning protocol data updated. Server 202 can send the updated cleaning protocols to one or more components ofthe system 100 such as controller 102, robot 104, and / or user interface device 108, which can facilitate increased cleaning efficiency by reducing (or minimizing) robot travel and / or cleaning times. Moreover, cleaning protocols for new or altered areas, spaces, rooms, etc., can be quickly implemented without substantial downtime or manual intervention to the system 100, allowing human and / or operational environment participants to maintain consistent cleaning standards across their respective properties.

[0201] Server 202, in some aspects, may be configured to modify cleaning protocols based at least in part on new data associated with generated room models, fixture models, and / or toolpaths. For example, server 202 may receive new and / or improved (e.g., more accurate) scanner data associated with a certain area or room. Server 202 can generate an improved (e.g., more accurate) three-dimensional model of the associated area or room and modify a cleaning protocol associated with the space, area, or room as described herein. In some examples, server 202 may receive new and / or improved scanner data associated with a certain feature / fixture of a certain area or room. Server 202 can generate an improved three-dimensional model of the associated feature / fixture and modify a cleaning protocol associated with the feature / fixture as described herein. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to modify cleaning protocols based at least in part on new data associated with generated room models, fixture models, and / or toolpaths such as described with reference to server 202.

[0202] Cleaning protocols may have standardized formats and compatibility across various different human and / or operational environment management systems such as hospitality, restaurant, healthcare, retail, business, private and / or public facility management systems. For example, server 202 can implement an application programming interface (API) that participating hospitality, restaurant, healthcare, retail, business, private and / or public facility establishments adhere to. Cleaning Protocol Data 212 can be accessible from various different locations. Server 202 can implement version control mechanisms to manage updates and modifications made to cleaning protocols to ensure that participating establishments can access the latest versions of cleaning protocols. In some aspects, server 202 can include a scheduling system for automatic distribution of new cleaning protocols and / or updated cleaning protocols. In some aspects, server 202 can be configured to provide notifications to participating establishments that new and / or updated cleaning protocols are available.

[0203] The server 202, in some aspects, may be configured to provide access to Cleaning Protocol Data 212 to various different establishments (e.g., multiple hotels, multiple restaurants, multiple hospitals, multiple businesses, multiple retail stores, multiple residences, etc.). For example, the API can permit participating establishments to retrieve cleaning protocols from server 202. The API can be implemented to handle requests securely. For example, server 202 can include authentication and authorization mechanisms to verify identities of participating establishments accessing Cleaning Protocol Data 212 and limit access to certain cleaning protocols. In some aspects, the server 202 may be configured to send Cleaning Protocol Data 212 to various different establishments described herein. Cleaning Protocol Data 212 can be encrypted for secure transmission. For example, the server 202 can implement protocols such as HTTPs, SFTP, encrypted VPN tunnels, and the like for data exchange.

[0204] Device application 112 and / or web application 114 (or other web application) can display a user interface and / or webpage, respectively, for cleaning protocol management. For example, an administrator of a participating establishment can use device application 112 and / or web application 114 (or other web application) to view in a user interface and / or webpage, respectively, available cleaning protocols on server 202 and request downloads from server 202 of available cleaning protocols. In some aspects, the administrator can manage their respective establishment’s cleaning protocols locally via device application 112 and / or web application 114 (or other web application).

[0205] Server 202 can be configured to receive and / or store various other information associated with system 100. In some aspects, other stored information can include data associated with cleaning schedules, cleaning robots, cleaning performance, and the like. The server 202 can be configured to provide one or more control functions to various components of system 100 based on the aforementioned data.

[0206] Schedule data such as Schedule Data 214 can include data relating to cleaning schedules such as cleaning times, areas (such as outdoor areas) and / or rooms that require cleaning, cleaning histories, robots scheduled for cleaning duties, cleaning robotcleaning staff pairings, and the like. The server 202 can be configured to track cleaning frequency (e.g., how often a room is cleaned, how often a certain robot cleans, etc.) and thoroughness based at least in part on the schedule data. The server 202 can monitor which room(s) of a hospitality, restaurant, or healthcare establishment require cleaning and cause one or more cleaning robots to navigate to the room(s) for cleaning via, for example, sending control signals to a controller (e.g., controller 102) and / or a cleaning robot (e.g., robot 104).

[0207] The server 202 can update cleaning schedules in real-time, which can be accessed by users (e.g., cleaning staff) and / or cleaning robots of system 100. For example, server 202 can be configured to send notifications to components of system 100 such as controller 102, robot 104, and / or user interface device 108. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to provide one or more operations based at least in part on Schedule Data 214 such as described with reference to server 202.

[0208] Centralized storage and / or access to cleaning schedule data can allow users (e.g., hotel management) and / or system 100 (e.g., server 116, 202, controller 102) to oversee and coordinate robot operations throughout one or more properties of a hospitality, restaurant, or healthcare establishment. For example, centralized control of the cleaning robot schedule can allow for quick adjustment to cleaning schedules based on changes in room occupancy, events, high-priority areas (e.g., unplanned checkouts), other needs and the like, reducing and / or minimizing disruption to guests. Moreover, as additional cleaning robots become available for cleaning tasks (e.g., a new robot is added to the system, a robot returns from maintenance, a robot reconnects to the system, a robot returns from charging, a robot completes assigned cleaning tasks, etc.), the system 100 can quickly modify cleaning schedules to integrate the additionally available robots into the human and / or operational environment’s overall cleaning operations and distribute cleaning tasks across more cleaning robots. This can improve cleaning efficiency by reducing delays in deploying robots to specified areas for cleaning. Furthermore, centralized control of cleaning robot schedules can reduce operation costs by minimizing the time that cleaning robots are not cleaning, which can permit fewer robots to carry out cleaning responsibilities for larger hospitality, restaurant, or healthcare establishments.

[0209] In some aspects, server 202 can access Schedule Data 214 to provide a user with access to cleaning schedule data. The server 202 can send Schedule Data 214 to one or more components of system 100 such as the controller 102, the robot 104, and / or user interface device 108. In some aspects, a user device may access cleaning schedule data stored on server 202. A user may utilize device application 112 and / or web application 114 to view cleaning schedule data associated with various different cleaning robots, rooms, and / or features / fixtures of rooms. For example, device application 112 and / or web application 114 may display in a user interface and / or webpage, respectively, a calendar configured to indicate which cleaning robots are scheduled to clean which areas or rooms and / or features / fixtures at which dates and / or times. In some examples, upon selection of a scheduled cleaning taskindicated on the calendar, the user can view details associated with the cleaning task (e.g., the cleaning robot assigned to the cleaning task) and modify the cleaning task such as by changing the area or room and / or feature / fixture to be cleaned, changing the robot assigned to the cleaning task, changing the day and / or time during which the cleaning is to occur, and the like. In some examples, the user can add or remove cleaning tasks to the cleaning schedule.

[0210] Robot data such as Robot Data 216 can include robot statuses (e.g., whether a robot is connected to / disconnected from system 100, whether a robot is cleaning, whether a robot is charging, whether a robot is in maintenance, etc.), battery levels, real-time location tracking, maintenance histories, usage statistics, and the like. The server 202 can be configured to dynamically allocate cleaning robots based at least in part on robot data. In some aspects, any component of system 100 can be configured to dynamically allocate cleaning robots based at least in part on robot data such as described with reference to server 202. The server 202 can monitor which robots are out of service (e.g., charging, in maintenance, disconnected from system 100, etc.) and deploy one or more cleaning robots currently in service (e.g., having sufficient battery level) to ensure that cleaning responsibilities assigned to now-out-of-service robots are fulfilled. For example, server 202 may determine that one or more cleaning robots assigned to a certain area of a human and / or operational environment are no longer in operation despite the assigned area requiring cleaning and cause one or more cleaning robots currently in operation to navigate to the area for cleaning.

[0211] In some aspects, the server 202 can allocate cleaning tasks to various different cleaning robots of system 100 based at least in part on battery parameters associated with said cleaning robots. For example, the server 202 may be in communication with a robot control monitoring station that is configured to navigate cleaning robots to a charging station based on determined battery parameters. The robot control monitoring station (or any other component of system 100) can be in communication with one or more cleaning robots to monitor various battery parameters of said cleaning robot(s) and determine a value corresponding to remaining charge of the battery of the robot(s). For example, the robot control monitoring station can include a battery management system (BMS) configured to monitor battery parameters of one or more cleaning robots.

[0212] Battery parameters can include voltage, current, temperature, and state of charge (SoC). Battery parameters may also include battery health indicators such as charge cycles and overall charge capacity. In some aspects, battery parameters may be indicative of a level of remaining electrical charge (such as a voltage level) of a battery of the cleaningrobot. For example, battery voltage levels may correspond to the SoC of the robot battery. In some examples, as the battery discharges (such as when the robot is cleaning), the battery voltage level may reduce.

[0213] In some aspects, a robot battery can include a fuel gauge integrated circuit (FGIC) configured to measure a level of current flowing in and out of the robot battery. The level of current flow can correspond to a level of volage remaining in the battery. The monitoring station may be in communication with the FGIC to gather battery information such as data indicative of one or more battery parameters. In some aspects, the monitoring station can include one or more hardware processors configured to obtain battery information from the FGIC. The one or more hardware processors may be configured to determine, based on the battery information, the remaining voltage level of the robot battery. In some examples, the one or more hardware processors may be configured to determine a remaining voltage level value indicative of the remaining voltage level of the robot battery.

[0214] Various different cleaning tasks may require various different energy expenditures by the cleaning robot. For example, a large outdoor patio area may result in a greater electrical energy expenditure by a cleaning robot than that expended while cleaning a small bathroom. Energy expenditure may correspond to reduction in voltage level of a robot battery (e.g., cleaning the patio may reduce the voltage level of the battery by a greater amount than does cleaning the bathroom). Battery voltage level reduction may correspond to an amount (e.g., surface area) or duration of cleaning completed by a cleaning robot. In some examples, the more surface area to be cleaned, or the longer the duration of cleaning, the greater the reduction in battery voltage level.

[0215] In some aspects, the server 202 and / or the robot control monitoring station (or any other component of system 100) may determine which cleaning tasks are to be completed by a cleaning robot based at least in part on battery parameters of the robot (e.g., remaining battery voltage level) and the number and / or priority of cleaning tasks assigned to the robot. For example, a first cleaning robot may be assigned to clean various different areas and / or rooms or surfaces and / or features / fixtures of an area / room but may have insufficient battery level to complete one or more of the assigned cleaning tasks. The server 202 and / or the robot control monitoring station (or any other component of system 100) may determine that the first cleaning robot has insufficient battery level to complete one or more said cleaning tasks. In some aspects, the system may determine to cause the first robot to clean fewer than all assigned areas and / or rooms or assigned surfaces and / or features / fixtures of an area / room and assign remaining cleaning tasks to a second cleaning robot (such as a nearby robot) withgreater battery level (e.g., a robot that has already been recharging). In some aspects, the system may determine to cause the first cleaning robot to complete none of the assigned cleaning tasks and assign all cleaning tasks to a second robot with greater battery level such as a robot with enough battery level to complete all tasks without recharging. In some aspects, the system may determine to cause the first cleaning robot to complete fewer than all assigned cleaning tasks and assign remaining cleaning tasks to a second robot having fewer assigned cleaning tasks than the first robot.

[0216] In some aspects, various surfaces and / or features / fixtures may be assigned predetermined priorities. For example, a toilet may be assigned a first priority, a sink may be assigned a second priority, and a shower may be assigned a third priority. In some examples, the first, second, and third priorities may be different such that if the cleaning robot has insufficient battery level to complete all three cleaning tasks, the system may determine to cause the cleaning robot to complete the task having priority corresponding to the first priority. In some aspects, the system may determine to cause the cleaning robot to complete tasks having priorities corresponding to the first and second priorities, respectively.

[0217] Various different areas and / or rooms, in some aspects, may be assigned predetermined priorities. For example, a bathroom may be assigned a first priority, a bedroom may be assigned a second priority, and a balcony may be assigned a third priority. In some examples, the first, second, and third priorities may be different such that if the cleaning robot has insufficient battery level to clean all three areas and / or rooms, the system may determine to cause the cleaning robot to clean the area and / or room having priority corresponding to the first priority. In some aspects, the system may determine to cause the cleaning robot to clean the area and / or room having priorities corresponding to the first and second priorities, respectively.

[0218] The predetermined priority may be fixed or programmable. In some aspects, the predetermined priority can be set and / or modified by a user utilizing a smartphone application and / or web application such as device application 112 and / or web application 114.

[0219] The monitoring station and / or server 202 (or any other components of system 100), in some aspects, can be configured to determine a priority of cleaning tasks. In some aspects, the priority can be based at least in part on a frequency of use. For example, a sink may have a greater frequency of use than that of a toilet, and the toilet may have a greater frequency of use than that of a shower. The monitoring station and / or server 202 (or any other component of system 100) may assign a first priority to the sink, a second priority to the toilet, and a third priority to the shower. The first, second, and third priorities may bedifferent such that the system determines to cause the cleaning robot to clean the sink and / or the toilet and not the shower. In some examples, a bathroom may have a greater frequency of use than that of a bedroom, and the bedroom may have a greater frequency of use than a balcony. The monitoring station and / or server 202 (or any other component of system 100) may assign a first priority to the bathroom, a second priority to the bedroom, and a third priority to the balcony. The first, second, and third priorities may be different such that the system determines to cause the cleaning robot to clean the bathroom and / or the bedroom and not the balcony.

[0220] In some aspects, the priority can be based on a level of soiling. For example, a toilet may have a greater level of soiling than that of a sink, and the sink may have a greater level of soiling than that of a shower. The monitoring station and / or server 202 (or any other component of system 100) may assign a first priority to the toilet, a second priority to the sink, and a third priority to the shower. The first, second, and third priorities may be different such that the system determines to cause the cleaning robot to clean the sink and / or the toilet and not the shower. In some examples, a bathroom may have a greater level of soiling than that of a bedroom, and the bedroom may have a greater level of soiling than that of a balcony. The monitoring station and / or server 202 (or any other component of system 100) may assign a first priority to the bathroom, a second priority to the bedroom, and a third priority to the balcony. The first, second, and third priorities may be different such that the system determines to cause the cleaning robot to clean the bathroom and / or the bedroom and not the balcony.

[0221] The server 202 and / or the robot control monitoring station (or any other component of system 100), in some aspects, may cause the cleaning robot to navigate, via sending one or more navigation signals, to a charging station. In some examples, the server 202 and / or robot control monitoring station (or any other component of system 100) may determine whether to navigate the cleaning robot to a charging station based on a determination of whether the reaming battery voltage level of the robot satisfies a battery level threshold. In some aspects, the monitoring station can include one or more hardware processors configured to compare a remaining battery voltage level value to a battery level threshold. For example, the monitoring station may determine that the measured remaining battery voltage level value of a cleaning robot does not satisfy the battery level threshold based on a comparison between the remaining battery voltage level value and a predetermined battery voltage level value. In some examples, the monitoring station may determine that the remaining battery voltage level value of the cleaning robot does not satisfythe battery level threshold based on a determination that the remaining battery voltage level value is less than the predetermined battery voltage level value.

[0222] The predetermined battery voltage level value may be fixed or programmable. In some aspects, the predetermined battery voltage level value can be set and / or modified by a user utilizing a smartphone application and / or web application such as device application 112 and / or web application 114.

[0223] In some aspects, the server 202 and / or the robot control monitoring station (or any other component of system 100) may determine which of a plurality of charging stations to cause a cleaning robot to navigate toward. In some examples, the monitoring station may select a charging station to which to cause a cleaning robot to navigate based on the proximity of the charging station. For example, if a first charging station is closer to the cleaning robot than is a second charging station, the monitoring station may cause the cleaning robot to navigate to the first charging station. In some examples, the monitoring station may select a charging station based on ease of navigation. For example, if a cleaning robot must pass through a busy part of an establishment (e.g., an area under construction) to navigate to a first charging station but need not pass through a similarly busy part of the establishment to navigate to the second charging station, the monitoring station may cause the cleaning robot to navigate to the second charging station. In some examples, the monitoring station may select a charging station based on the availability of charging spots. For example, if a first charging station has no available charging spots but a second charging station has available charging sport, the monitoring station may cause the cleaning robot to navigation to the second charging station.

[0224] In some aspects, the server 202 and / or the robot control monitoring station (or any other component of system 100) may cause one or more cleaning robots to navigate to a charging station based at least in part on any of the foregoing or combinations thereof.

[0225] The server 202 can monitor whether cleaning robots are completing assigned cleaning tasks ahead of or behind associated cleaning schedules and allocate robots accordingly. For example, the system may determine that a first cleaning robot has completed cleaning a first room ahead of schedule and that a second cleaning robot is currently cleaning a second room behind schedule. The server 202 may cause the first cleaning robot to navigate to a third room for cleaning where the third room was initially assigned to the second cleaning robot (e.g., assign the third room from the second robot to the first robot). In some aspects, controller 102, cleaning robot 104, user interface device 108,and any other component of system 100 may be configured to provide one or more operations based at least in part on Robot Data 216 such as described with reference to server 202.

[0226] Centralized storage and / or access to robot data can allow system 100 and / or users of system 100 to monitor a robot fleet in real-time and dispatch cleaning robots as needed by a participating establishment. For example, centralized monitoring of cleaning robot locations and statuses can allow for quick adjustment to cleaning task assignments based on robot availability and proximity to areas needing cleaning. This can permit cleaning operations of a human and / or operational environment to continue with little or no interruption if one or more cleaning robots are unavailable for cleaning, one or more robots complete assigned cleaning tasks ahead of schedule, one or more robots are behind schedule, and the like. Moreover, as cleaning robots become available for cleaning tasks (e.g., a new robot is added to the system, a robot returns from maintenance, a robot reconnects to the system, a robot returns from charging, a robot completes assigned cleaning tasks, etc.), the system 100 can dynamically allocate cleaning robots to priority areas of the human and / or operational environment and increase robot fleet efficiency (e.g., reduce robot idle time).

[0227] In some aspects, server 202 can access Robot Data 216 to provide a user with access to robot data. The server 202 can send Robot Data 216 to one or more components of system 100 such as the controller 102, the robot 104, and / or user interface device 108. In some aspects, a user device may access robot stored on server 202. A user may utilize device application 112 and / or web application 114 to view robot data associated with various different cleaning robots. For example, device application 112 and / or web application 114 may display in a user interface and / or webpage, respectively, a selection of cleaning robots of system 100. The user interface and / or webpage can display high-priority information associated with each robot such as battery levels, connectivity, whether the robot is cleaning, and the like, without requiring further user input. In some examples, the user interface and / or webpage can include a map or floor plan of a human and / or operational environment indicating the real-time locations of associated cleaning robots. A user may select a cleaning robot from the selection of cleaning robots and / or from the map to view various information associated with the robot as described herein. A user may cause one or more cleaning robots to navigate to a certain area of a human and / or operational environment for cleaning. For example, a user can select a cleaning robot and then select a room via, for example, the displayed map.

[0228] Performance data such as Performance Data 218 can include the amount of space cleaned (e.g., volume, surface area, etc.), the duration of cleaning tasks, qualityassessments, and the like. Quality assessments can include post-cleaning inspections by staff, guest feedback, and / or data received from cleaning robot sensors indicative of the presence of unwanted contaminants (e.g., dirt, hair, grime, soap scum, mildew, bodily fluids, etc.). Robot sensors can include optical sensors (e.g., a camera, LiDAR), infrared sensors, ultrasonic sensors, pressure sensors, capacitive sensors, acoustic sensors, inclinometers, gyroscopes, accelerometers, time-of-flight sensors, hall-effect sensors, force sensors, load cells, torque sensors, speed sensors, rotary encoders, position sensors, cleaning tool sensors, and the like.

[0229] The server 202 can be configured to determine cleaning efficiencies (e.g., amount of space cleaned per unit time) and patterns in cleaning efficiencies such as times corresponding to when cleaning efficiency satisfies or does not satisfy desired thresholds. In some aspects, the server 202 may determine a decrease in cleaning efficiency based on a desired threshold not being satisfied. For example, the server 202 can determine a decrease in cleaning efficiency by determining an increase in cleaning time and / or a decrease in amount of space covered. In some aspects, the server 202 may determine an increase in cleaning efficiency based on a desired threshold being satisfied. For example, the server 202 can determine an increase in cleaning efficiency by determining a decrease in cleaning time and / or an increase in amount of space covered.

[0230] The server 202 can allocate cleaning robots based on determined cleaning efficiencies. For example, during times corresponding to decreased cleaning efficiency, the server 202 can be configured to deploy additional cleaning robots to complete various different cleaning tasks or the same cleaning task (e.g., a plurality of cleaning robots can be assigned to clean various parts of a single area at the same time or at about the same time to reduce overall cleaning time associated with the area). In some examples, during times corresponding to increased cleaning efficiency, the server 202 can be configured to remove cleaning robots from active cleaning operations and / or prevent additional cleaning robots from being assigned cleaning tasks. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to provide one or more operations based at least in part on Performance Data 218 such as described with reference to server 202.

[0231] In some aspects, server 202 can be configured to modify toolpaths and / or cleaning protocols based at least in part on Performance Data 218. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 can be configured to modify toolpaths and / or cleaning protocols based at least in part onPerformance Data such as described herein with respect to server 202. For example, a user of system 100, an occupant, and / or a cleaning robot may identify that an area or room and / or feature / fixture of an area or room is not being cleaned properly (e.g., a cleaning robot is failing to remove a certain amount of unwanted contaminants). The server 202 can modify one or more toolpaths associated with various different cleaning tools and associated with the area or room and / or feature / fixture as described herein. For example, the server 202 may determine to increase or decrease the cleaning time corresponding to a toolpath such as by decreasing or increasing, respectively, the speed at which a tool traverses along a surface and / or feature / fixture and / or increasing the number of times a tool traverses along the surface and / or feature / fixture. In some examples, the server 202 may determine to increase or decrease the intensity of cleaning such as by increasing or decreasing, respectively, the force applied to a surface and / or feature / fixture by a cleaning tool. In some examples, the server 202 may increasing or decreasing the distance between a cleaning tool and a target surface and / or an angle of a cleaning tool relative to a target surface. In some examples, the server 202 may determine to increasing or decreasing the number of surfaces of a room to clean, change the order in which the surfaces are cleaned, and / or change the tools used to clean the surfaces.

[0232] In some aspects, server 202 can access Performance Data 218 to provide a user with access to collected performance data. The server 202 can send Performance Data 218 to one or more components of system 100 such as the controller 102, the robot 104, and / or user interface device 108. In some aspects, a user device may access performance data stored on server 202. A user may utilize device application 112 and / or web application 114 (or other web application) to view performance data associated with various different cleaning robots, rooms, and / or features / fixtures of rooms. For example, device application 112 and / or web application 114 may display in a user interface and / or webpage, respectively, a selection of cleaning robots, rooms, and / or features / fixtures. In some examples, the user interface and / or webpage can include a map or floor plan of a human and / or operational environment indicating the areas and / or rooms of the establishment and the cleaning robots that have been assigned to the areas and / or rooms. A user can select a cleaning robot, area / room, and / or feature / fixture to view various performance data associated with the robot, room, and / or feature / fixture, respectively. In some examples, the user interface and / or webpage may include a graphical element indicative of a toolpath associated with a room and / or feature / fixture of a room. Selecting the graphical element can cause the device application 112 and / or web application 114 (or other web application) to display a userinterface and / or webpage such as the user interface and / or webpage described with reference to Toolpath Data 210. Accordingly, a user may modify associated toolpaths as described herein.

[0233] Operation data such as Operation Data 220 can include data received from one or more sensors of system 100 such as sensor(s) 106. Sensor data may be indicative of one or more operation parameters associated with various different cleaning tools as the cleaning robot cleans. Sensors of system 100 can be configured to measure various different operation parameters associated with various different cleaning tools as the cleaning robot cleans. For example, operation parameters can include a speed relative to a surface and / or feature / fixture at which the robot moves and / or rotates a cleaning tool, a distance and / or angle relative to a surface and / or feature / fixture at which the robot positions and / or orients a cleaning tool, a force applied to a surface and / or feature / fixture by the robot via a cleaning tool, a torque with which the robot rotates a cleaning tool, and the like.

[0234] The controller 102can be configured to modify toolpaths (e.g., speed, position, orientation, etc.) associated with a cleaning tool in real time as the cleaning robot uses the cleaning tool to clean a surface and / or feature / fixture of an area or room. The controller 102 can modify the kinematics of a cleaning tool based at least in part on Operation Data 220 and Toolpath Data 210. Modifying toolpaths of a cleaning tool in real-time can include modifying the kinematics of the cleaning tool such as a speed, position, and / or orientation of the cleaning tool relative to a target surface and / or feature / fixture of an area or room such that measured operation parameters are the same or substantially the same as corresponding desired operation parameters dictated by a toolpath associated with the cleaning tool, the surface of an area or room, and / or the feature / fixture of an area or room. For example, the controller 102may cause the robot to modify the toolpath of a cleaning tool such that a difference between the measured operation parameter and the corresponding desired operation parameter is reduced.

[0235] In some examples, the controller 102 can cause the robot to modify the toolpath of a cleaning tool such that a difference between a measured distance relative to a surface and / or feature / fixture at which the robot positions the cleaning tool and a corresponding desired distance relative to the surface and / or feature at which the robot positions the cleaning tool is reduced.

[0236] In some examples, the controller 102 can cause the robot to modify the toolpath of a cleaning tool such that a difference between a measured angle relative to a surface and / or feature at which the robot orients the cleaning tool and a corresponding desiredangle relative to the surface and / or feature / fixture at which the robot orients the cleaning tool is reduced.

[0237] In some examples, the controller 102can cause the robot to modify the toolpath of a cleaning tool such that a difference between a measured force the robot applies against a surface and / or feature / fixture via a cleaning tool and a corresponding desired force the robot applies against the surface and / or feature / fixture via the cleaning tool is reduced.

[0238] In some examples, the controller 102can cause the robot to modify the toolpath of a cleaning tool such that a difference between a measured torque with which the robot rotates the cleaning tool and a corresponding desired torque with which the robot rotates the cleaning tool is reduced.

[0239] In some examples, the controller 102 can cause the robot to modify the toolpath of a cleaning tool such that a difference between a measured spray rate at which the robot sprays a surface and / or feature / fixture and a desired spray rate at which the robot sprays the surface and / or feature / fixture is reduced.

[0240] In some examples, the controller 102 can cause the robot to modify the toolpath of a cleaning tool such that a difference between a measured movement rate at which the robot moves the cleaning tool and a desired movement rate at which the robot moves a cleaning tool is reduced.

[0241] In some aspects, the controller 102 can send a control signal to the robot 104, and / or the user interface device 108 to cause the robot 104 to modify the cleaning toolpath as described herein. For example, the cleaning tool may be connected to a connection end of a robot arm. The robot arm can be connected to the cleaning robot 104. In response to receiving the control signal from the controller 102, the controller 102, the robot 104 (e.g., via one or more hardware processors), and / or the user interface device 108 can cause the robot arm to modify the speed, position, and / or orientation of the cleaning tool via, for example, sending a control signal to one or more motors of the robot arm. The motors can be configured to drive the robot arm such that the robot arm moves at various speeds and in various degrees of freedom. For example, the controller 102, one or more hardware processors of cleaning robot 104, and / or user interface device 108 can send a control signal to one or more motors of the robot arm to cause the robot arm to actuate and move the cleaning tool at the desired speed, to the desired position, and / or to the desired orientation.

[0242] In some aspects, controller 102, cleaning robot 104 (e.g., one or more hardware processors of robot 104), user interface device 108, server 116, 202, and any othercomponent of system 100 may be configured to modify cleaning toolpaths in real-time based at least in part on Operation Data 220 and Toolpath Data 210 as described herein.

[0243] Modifying cleaning toolpaths in real-time can permit a cleaning robot to ensure that a cleaning tool is making optimal contact with the target surface (or maintaining an optimal distance between the tool and the target surface) for effective execution of various different cleaning tasks such as vacuuming, spraying, squeegeeing, wiping, buffing, and the like. As a cleaning robot cleans, error can be introduced into the system when a measured operation parameter associated with a cleaning tool deviates from a desired operation parameter dictated by a toolpath associated with the cleaning tool, surface being cleaning, and / or feature / fixture being cleaned. Error can lead to ineffective cleaning of the target surface and / or feature / fixture of an area or room (e.g., the cleaning tool is too far away from the target surface) or to damage of the target surface, feature / fixture, and / or tool (e.g., the tool is pressed against the target surface with too much force). Modifying cleaning toolpaths in real-time can reduce error encountered by the cleaning robot during cleaning, which can improve cleaning effectiveness (e.g., reduce the presence of unwanted contaminants present on a target surface without damaging the target surface or cleaning tool being used).

[0244] In some aspects, the system 100 may be configured to integrate into various different human and / or operational environment management systems such as hospitality, restaurant, healthcare, retail, business, private and / or public facility management systems. For example, server 202 can be configured to receive and / or store information from a management system of a hospitality, restaurant, healthcare, retail, business, private and / or public facility establishment, or any other human and / or operational environment such as described herein. The information can be stored as Integration Data 222. Integration data such as Integration Data 222 can include data that facilitates integration of system 100 with such management systems of participating establishments.

[0245] In some aspects, Integration Data 222 may include data obtained from guest reservation systems such as occupancy data, room check-in / check-out time data, special requests from occupants (such as guests) and the like. For example, occupancy data can be indicative of which rooms of an establishment are vacant or occupied, which areas are scheduled to host events, and the like. Check-in / check-out data can be indicative of an establishment’s cleaning schedule. Special requests from guests can include guest-specific preferences and / or requests for additional cleaning services.

[0246] In some aspects, Integration Data 222 may include data obtained from scheduling systems such as employee schedules, cleaning logs, scheduled cleaning tasks,and the like. For example, cleaning logs can include information indicative of when various different areas or rooms were cleaned, the duration of cleaning, specific cleaning tasks performed, and the like. Scheduled cleaning tasks can include tasks assigned to human cleaning staff and / or cleaning robots.

[0247] In some aspects, Integration Data 222 may include data such as image data associated with maps and / or layouts of a human and / or operational environment. For example, maps and / or layouts can include floor plans of various different floors of a human and / or operational environment, layouts of various different areas (including outdoor areas) and / or rooms of a human and / or operational environment, and the like.

[0248] In some aspects, Integration Data 222 may include data indicative of maintenance operations such as ongoing maintenance to premises of a human and / or operational environment (e.g., room maintenance, hallway maintenance, public area maintenance, etc.), event setups, and the like.

[0249] In some aspects, Integration Data 222 may include data obtained from various Internet-of-Things (loT) sensors such as climate sensors (e.g., thermostat, smoke alarm, etc.), motion sensors, and door locks. In some aspects, Integration Data 222 may include data obtained from energy management systems such as times corresponding to high- and / or low-energy usage associated with the human and / or operational environment. In some aspects, Integration Data 222 may include data obtained from Enterprise Resources Management systems. Automated analysis of the Integration Data 222 may modify how, when, and the order in which cleaning operations occur.

[0250] Server 202, in some aspects, can be configured to access Integration Data 222. For example, server 202 can incorporate Integration Data 222 into various different control functions described with reference to blocks 204, 206, 208, 210, 212, 214, 216, and 218. Server 202 can be implemented as a central point from which various different human and / or operational environment can control their respective cleaning operations using one or more cleaning robots of system 100. Server 202 can use Integration Data 222 to adapt system 100 to meet the cleaning operation needs of various different participating establishments. For example, server 202 can be configured to deploy cleaning robots for cleaning at times corresponding to when an establishment has low occupancy, at times corresponding to the establishment’s respective cleaning schedule, at times corresponding to low energy use to reduce operation costs, and the like. Server 202 can provide data-driven control functions as described herein and / or permit users (e.g., commercial and / or industrial establishment managers, residential inhabitants, etc.) to control various functions of the cleaning robotsystem via, for example, device application 112 and / or web application 114. In some aspects, controller 102, cleaning robot 104, user interface device 108, and any other component of system 100 may be configured to provide one or more operations based at least in part on Integration Data 222 such as described with reference to server 202.

[0251] In some aspects, server 202 can be configured to manage distribution of firmware, software, navigation paths, cleaning protocols, and / or cleaning path updates (such as updates 120) for system 100. In some aspects, server 202 can receive, store, and distribute such updates in the same or substantially the same manner as server 116. In some examples, such updates can be locally downloaded and stored on server 202 as Update Data 224. Update Data 224 can include data indicative of all firmware, software, navigation path, cleaning protocol, and / or cleaning path versions deployed across system 100. In some aspects, one or more components of system 100 may retrieve such updates from server 202.

[0252] Figure 3 depicts a block diagram 300 illustrating an example implementation of a cleaning robot 302 of cleaning robot system 100. In some aspects, cleaning robot 302 can be implemented as cleaning robot 104. Cleaning robot 302 can include a hardware processor 304, a memory 306, a communication interface 308, a power source 310, an image / video capture device 312, sensor(s) 314, motor(s) 316, and a display 318.

[0253] The hardware processor 304 can be configured to execute program instructions to cause the cleaning robot 302 to perform one or more operations. The hardware processor 304 can be configured, among other things, to process data, execute instructions to perform one or more functions, and / or control the operation of the cleaning robot 302 or components thereof. For example, the hardware processor 304 can process sensor data obtained from sensor(s) such as sensors 106, 314 and can execute instructions to perform functions related to storing and / or transmitting such sensor data. In some examples, the hardware processor can process data received from server(s) such as servers 116, 202 and can execute instructions to perform functions related to storing and / or transmitting such data. In some examples, the hardware processor can process scanner data received from a scanner such as scanner 118 and can execute instructions to perform functions related to storing and / or transmitting such data. In some aspects, the hardware processor 304 may be remote to the cleaning robot 302. In some aspects, the hardware processor 304 may be implemented as controller 102.

[0254] The memory 306 can include any computer readable storage medium and / or device (or collection of data storage mediums and / or devices), including, but not limited to, one or more memory devices that store data, including without limitation, dynamic and / orstatic random-access memory (RAM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), optical disks (e.g., CD-ROM, DVD-ROM, etc.), magnetic disks (e.g., hard disks, floppy disks, etc.), memory circuits (e.g., solid state drives, random-access memory (RAM), etc.), and / or the like. Such stored data can be processed and / or unprocessed data obtained from sensor(s) such as sensors 106, 314. Stored data can be processed and / or unprocessed data obtained from server(s) such as server 116, 202. Stored data can be processed and / or unprocessed data obtained from a scanner such as scanner 118. Data stored in the memory 306 can include Scanner Data 204, Room Model Data 206, Fixture Model Data 208, Toolpath Data 210, Cleaning Protocol Data 212, Schedule Data 214, Robot Data 216, Performance Data 218, Operation Data 220, Integration Data 222, Update Data 224 described herein with reference to Figure 2, and / or other relevant data. Stored data can be processed or unprocessed data obtained from other components of the cleaning robot 302 such as image / video capture device 312, sensor(s) 314, motor(s) 316, and / or the like. The memory 306 can store program instructions that when executed by the hardware processor 304 cause the cleaning robot 302 to perform one or more operations.

[0255] The communication interface 308 can facilitate communication (via wireless, wired, and / or wire-like connection) between the cleaning robot 302 (and / or components thereof) and separate devices, such as separate controllers, sensors, user devices, scanners, servers, and the like. For example, the communication interface 308 can be configured to allow the cleaning robot 302 to wirelessly communicate with other devices, systems, and / or networks over any of a variety of communication protocols such as described herein. The communication interface 308 can allow data and / or instructions to be transmitted and / or received to and / or from the cleaning robot 302 and separate computing devices. The communication interface 308 can be configured to transmit and / or receive (for example, wirelessly) processed and / or unprocessed data with separate computing devices including sensors, scanners, servers, and the like. In some aspects, communication interface 308 can transfer power required for operation of a computing device. The communication interface 308 can be embodied in one or more components that are in communication with each other. The communication interface 308 can include one or more of: transceivers, antennas, transponders, radios, emitters, detectors, coils of wire (e.g., for inductive coupling), and / or electrodes (e.g., for capacitive coupling).

[0256] The power source 310 can provide power for the cleaning robot 302 or components thereof. The power source 310 can include a battery. In some aspects, the powersource 310 may be external to the cleaning robot 302. For example, the cleaning robot 302 can include or can be configured to connect to a cable which can itself connect to an external power source to provide power to the cleaning robot 302. The power source 310 can include a plurality of batteries. The cleaning robot 302 can additionally or alternatively be configured to be solar powered and charged, for example, by including a solar panel assembly on the cleaning robot 302.

[0257] The image / video capture device 312 can provide image and / or video feedback to the cleaning robot 302 or components thereof. The image / video capture device 312 can be coupled to the cleaning robot 302 (e.g., connected to the base of the cleaning robot) or integrated into or housed by the cleaning robot 302. The image / video capture device may be in communication (e.g., wired, wire-like, or wireless connection) with a display of the cleaning robot 302 such as display 318 so that an individual viewing the display can view the image / video feedback. In some examples, the image and / or video data can be stored locally in memory 306 and / or stored remotely such as in a server (e.g., server 116, 202) or via a cloud-based service.

[0258] In some examples, the image / video capture device 312 may be in communication with one or more hardware processors 304. The hardware processor 304 can be configured to execute program instructions to cause the image / video capture device 312 to perform one or more operations such as when to start / stop recording, adjust focus and / or exposure, adjust position (e.g., the direction in which the device 312 is pointed), and / or the like. In some aspects, the hardware processor 304 can be configured to process image and / or video data originating from the image / video capture device 312.

[0259] In some aspects, the image / video capture device 312 can provide image and / or video feedback to other components of the cleaning robot system 100 such as user interface device 108. For example, the image / video capture device can be coupled to the user interface device 108 so that a user with the user interface device 108 can view the image and / or video feedback in a display of the user device (e.g., the user can view a surface to be cleaned by the robot).

[0260] The image / video capture device 312 can include a camera. In some examples, the camera can provide image and / or video feedback used for navigating and / or orienting the robot within a room.

[0261] In some examples, the camera can provide image and / or video feedback used for evaluating the cleanliness of a surface and / or feature / fixture of a room. In some aspects, the image capture device 312 can be implemented as, or implemented as part of, anoptical clean detection system for determining cleaning quality. In some examples, the image capture device 312 may provide image and feedback data to the hardware processor 304. The hardware processor 304 may be configured to determine the level of cleanliness of the target surface and / or feature / fixtured based at least in part on captured image feedback. In some aspects, hardware processor 304 can be configured to compare the captured image data to reference image data. Based at least in part on the comparison, hardware processor 304 can be configured to quantify the level of cleanliness of soiled surfaces as a measured cleanliness level value, detecting debris as small as a human hair and / or bed bugs. In some examples, the hardware processor 304 can be configured to distinguish debris in the form of a human hair ranging in diameter from, for example, about 17 to about 181 micrometers, or any value or range within or bounded by any of these values or ranges. Detection of hair having greater or smaller diameters is also possible. In some examples, the hardware processor 304 can be configured to distinguish debris in the form of a huma hair having an average diameter from 50 micrometers to about 70 micrometers, or any value or range within or bounded by any of these values or ranges. Alternatively, additionally, or optionally, the hardware processor 304 can be configured to quantify the level of soiling of soiled surfaces as a measured soiling level value, which may correspond the cleanliness level values. In some aspects, a high or low soiling level value may correspond to a low or high cleanliness level value, respectively.

[0262] The hardware processor 304, in some aspects, may be configured to determine whether the determined cleanliness level and / or soiling level satisfies (e.g., a determined value is greater than a predetermined value, a determined value is greater than or equal to a predetermined value, a determined value is less than a predetermined value, a determined value is less than or equal to a predetermined value, a determined value is equal to a predetermined value, and / or the like) a cleanliness threshold and / or soiling threshold, respectively. In some aspects, the cleanliness threshold and / or soiling threshold can include a predetermined cleanliness level value and / or predetermined soiling level value (e.g., from a cleaning standard database).

[0263] In some aspects, the predetermined cleanliness level value and / or soiling level value may be fixed or programmable. In some aspects, the predetermined cleanliness level value and / or soiling level value can be set and / or modified by a user utilizing a smartphone application and / or web application such as device application 112 and / or web application 114.

[0264] The hardware processor, 304, in some aspects, can select a cleaning level of a cleaning protocol to be applied to a surface and / or feature / fixture, such as based on the determined soiling level and / or cleanliness level. There can be two or more cleaning levels, including 2, 3, 4, or more cleaning levels the hardware processor 304 may select from. A lower cleaning level (e.g., level 1) may be associated with a lighter clean than a higher cleaning level (e.g., level 2). The higher the cleaning level, the deeper the clean to be performed by the robot. For example, the higher the cleaning level, the greater the force and / or torque applied by the cleaning tool to the surface and / or feature / fixture, the lower the speed of the cleaning tool relative to the surface and / or feature / fixture (e.g., the greater the cleaning time), the greater the spray rate and / or spray pressure of the cleaning tool, the greater the flow rate and / or air pressure of the cleaning tool, and / orthe like. Put another way, the lower the cleaning level, the lighter the clean to be performed by the cleaning level. For example, the lower the cleaning level, the lower the force and / or torque applied by the cleaning tool to the surface and / or feature / fixture, the greater the speed of the cleaning tool relative to the surface and / or feature / fixture (e.g., the lower the cleaning time), the lower the spray rate and / or spray pressure of the cleaning tool, the lower the flow rate and / or air pressure of the cleaning tool, and / or the like.

[0265] In some aspects, if the soiling level and / or cleanliness level indicates a low level of soiling or a high level of cleanliness, respectively, the processor 304 may select a lower cleaning level (e.g., level 1) for the cleaning protocol that is to be applied to the surface and / or feature / fixture. In some aspects, if the soiling level and / or cleanliness level indicate a high level of soiling or a low level of cleanliness, respectively, the processor 304 may select a higher cleaning level (e.g., level 2) for the cleaning protocol to be applied to the surface and / or feature / fixture.

[0266] The hardware processor 304, in some aspects, may adjust the cleaning protocol, such as based on the determined soiling level and / or cleanliness level. For example, the processor 304 may adjust the cleaning protocol responsive to whether the determined soiling level and / or cleanliness level satisfies the soiling threshold and / or cleanliness threshold, respectively. In some aspects, adjusting the cleaning protocol can include modifying a toolpath associated with the cleaning protocol as described herein. For example, the hardware processor can increase or decrease one or more operation parameters such as distance, angle, force, torque, spray rate, movement rate, and / or the like.

[0267] In some aspects, adjusting the cleaning protocol can include selecting a cleaning protocol with a cleaning level that is different from the cleaning level of the previouslyexecuted cleaning protocol (e.g., selecting a level of cleaning protocol associated with a deeper clean). For example, if after having completed a first cleaning protocol the processor 304 determines there is still soiling present (e.g., determines a soiling level and / or cleanliness level having a certain value), the processor 304 may cause the robot 300 to execute an additional cleaning protocol having the same or greater cleaning level than the previously performed cleaning protocol. For example, if the first cleaning protocol is associated with a cleaning level of 1 , the hardware processor 304 may select, to execute for the additional cleaning, a cleaning protocol associated with a cleaning level of 1 or 2.

[0268] In some aspects, the image / video capture device 312 can include a microphone to provide audio feedback to the cleaning robot 302, components thereof, and / or other components of the system 100 such as user interface device 108. Audio feedback can be provided separately from image and / or video feedback or at substantially the same time that image and / or video feedback is provided. In some aspects, the image / video capture device 312 can include a speaker for audio playback of audio received from the microphone.

[0269] The sensor(s) 314 can provide sensor data to the robot 302 or components thereof. Sensor(s) 314 can be implemented as sensor(s) 106. Sensor(s) 314 can include an ultrasonic sensor, an optical sensor (e.g., LiDAR), an infrared sensor, a laser-based sensor, a pressure sensor, a capacitive sensor, an acoustic sensor, an inclinometer, a gyroscope, an accelerometer, magnetometer, a time-of-flight sensor, a hall-effect sensor, a force sensor, a load cell, a torque sensor, a speed sensor, a rotary encoder, a position sensor, a cleaning tool sensor, and / or the like. In some aspects, sensor(s) 314 can be implemented as an IMU. The IMU can include the accelerometer, magnetometer, and / or the gyroscope. In some aspects, sensor(s) 314 may be external of the cleaning robot 302. For example, sensor(s) 314 may be integrated into, housed by, or coupled to one or more cleaning tools used by the cleaning robot 302 for cleaning. In some aspects, sensor(s) 314 may be integrated into, housed by, or coupled to the cleaning robot 302 or components thereof (e.g., a robot arm).

[0270] Sensor(s) 314 may be configured to measure an operation parameter of a cleaning tool in real-time as the cleaning robot 302 uses the cleaning tool to clean a surface and / or feature / fixture of a room. Sensor(s) 314 may send an operation signal indicative of the measured operation parameter of the cleaning tool to the robot 302 or components thereof. Measured operation parameters can include operation parameters such as described with reference to Figure 2. In some aspects, sensor(s) 314 may be in communication with one or more hardware processors 304. The hardware processor 304 can be configured to process one or more operation signals originating from the one or more sensors 314 to determine ameasured operation parameter. In some aspects, the hardware processor 304 can be configured to modify toolpaths associated with a cleaning tool in real-time as the robot 302 uses the cleaning tool to clean. The hardware processor 304 can be configured to modify cleaning toolpaths based at least in part on operation signals received from sensor(s) 314 as described herein. The hardware processor 304 can be configured to modify cleaning toolpaths based at least in part on operation data and / or toolpath data such as Operation Data 220, Toolpath Data 210 obtained from server 202 as described herein.

[0271] In some aspects, the hardware processor 304 may determine that a measured operation parameter deviates from a corresponding desired operation parameter. For example, hardware processor 304 can determine a difference between the measured operation parameter and the corresponding desired operation parameter. The hardware processor 304 may determine that there is a difference between the measured and desired operation parameters based on a determination that the difference between the measured and desired operation parameters does not satisfy a tool tolerance threshold. In some aspects, hardware processor 304 may be configured to determine whether the tool tolerance threshold is satisfied based on a comparison between the measured difference and a predetermined tool tolerance value. For example, hardware processor 304 may determine that the tool tolerance threshold is not satisfied based on a determination that the difference between the measured and desired operation parameters is greater than the predetermined tool tolerance value.

[0272] In some aspects, predetermined tool tolerance value(s) may be fixed or programmable. In some aspects, predetermined tool tolerance value(s) can be set and / or modified by the user utilizing a smartphone application and / or web application such as device application 112 and / or web application 114.

[0273] The hardware processor 304 can cause the robot 302 to modify cleaning toolpaths in real-time such that a measured operation parameter of a cleaning tool is the same or substantially the same as a corresponding desired operation parameter dictated by a toolpath associated with the cleaning tool, the surface being cleaned, and / or the feature / fixture being cleaned as described herein. For example, hardware processor 304 can cause the robot 302 to modify cleaning toolpaths in real-time such that difference between the measured operation parameter of the cleaning tool and the corresponding desired operation parameter of the cleaning tool is reduced. Reducing the difference between measured and desired operation parameters can include reducing the measured difference such that the measured difference satisfies the tool tolerance threshold. For example, hardware processor 304 mayreduce the measured difference such that the processor determines that the measured difference is less than or equal to the predetermined tool tolerance value.

[0274] In some examples, the hardware processor 304 can cause the robot 302 to modify the toolpath associated with a cleaning tool such that a difference between a measured distance relative to a surface and / or feature / fixture at which the robot positions the cleaning tool and a corresponding desired distance relative to the surface and / or feature at which the robot positions the cleaning tool is reduced. Hardware processor 304 may send a drive signal to one or more motors 316 of the robot arm to maneuver the robot arm such that the cleaning tool connected to the robot arm is urged toward / away from the target surface.

[0275] In some examples, the hardware processor 304 can cause the robot 302 to modify the toolpath associated with a cleaning tool such that a difference between a measured angle relative to a surface and / or feature at which the robot orients the cleaning tool and a corresponding desired angle relative to the surface and / or feature / fixture at which the robot orients the cleaning tool is reduced. Hardware processor 304 may send a drive signal to one or more motors 316 of the robot arm to maneuver the robot arm such that cleaning tool connected to the robot arm orients at an increased / decreased angle relative to the target surface.

[0276] In some examples, the hardware processor 304 can cause the robot 302 to modify the toolpath associated with a cleaning tool such that a difference between a measured force the robot applies against a surface and / or feature / fixture via a cleaning tool and a corresponding desired force the robot applies against the surface and / or feature / fixture via the cleaning tool is reduced. Hardware processor 304 may send a drive signal to one or more motors 316 of the robot arm to maneuver the robot arm such that cleaning tool connected to the robot arm is urged toward / away from the target surface.

[0277] In some examples, the hardware processor 304 can cause the robot 302 to modify the toolpath associated with a cleaning tool such that a difference between a measured torque with which the robot rotates the cleaning tool and a corresponding desired torque with which the robot rotates the cleaning tool is reduced. Hardware processor 304 may send a drive signal to one or more motors 316 of the robot arm to maneuver the robot arm such that cleaning tool connected to the robot arm is urged toward / away from the target surface.

[0278] In some examples, the hardware processor 304 can cause the robot 302 to modify the toolpath associated with a cleaning tool such that a difference between a measured spray rate at which the robot sprays a surface and / or feature / fixture and a desiredspray rate at which the robot sprays the surface and / or feature / fixture is reduced. Hardware processor 304 may send a drive signal to one or more motors 316 of the robot arm to maneuver the robot arm such that cleaning tool connected to the robot arm moves along the surface in an arcing motion of increased or decreased radius.

[0279] In some examples, the hardware processor 304 can cause the robot 302 to modify the toolpath associated with a cleaning tool such that a difference between a measured movement rate at which the robot moves the cleaning tool relative to a target surface and / or feature / fixture and a desired movement rate at which the robot moves a cleaning tool relative to the target surface and / or feature / fixture is reduced. Hardware processor 304 may send a drive signal to one or more motors 316 of the robot arm to maneuver the robot arm such that cleaning tool connected to the robot arm moves along the surface at an increased or decreased speed.

[0280] In some aspects, sensor(s) 314 may be configured to send navigation signals such as speed signals, position signals, and / or the like. Navigation signals can be indicative of navigation parameters. Navigation parameters can include positions and / or orientations of various different objects in a room. Navigation parameters can include a speed, position, and / or orientation of the robot 302 within a room. In some aspects, the hardware processor 304 can be configured to process one or more navigation signals to cause the robot to move within a room. In some aspects, the hardware processor 304 can cause the robot 302 to move within the room based on one or more received navigation signals and without receiving image or video feedback.

[0281] The motor 316 can facilitate movement of the cleaning robot 302 or components thereof. The motor 316 can include a direct current (DC) motor, a stepper motor, a servo motor, an alternating current (AC) motor, and the like. In some aspects, one or more motors 316 may be configured to drive one or more locomotion mechanisms of the robot 302. A locomotion mechanism may be configured to maneuver the cleaning robot 302 within a room. Locomotion mechanisms can include one or more wheels, a continuous track system (e.g., treads), articulated legs, and the like.

[0282] The motor 316 may be in communication with the hardware processor 304. The hardware processor 304 may be configured to send one or more drive signals to the motor 316 to cause the motor 316 to drive one or more locomotion mechanisms such as wheels. In some aspects, the motor 316 may be connected to a drive shaft such that the motor 316 can rotate the drive shaft. The drive shaft may be connected to one or more gears. The drive shaft may be connected to one or more wheels via one or more couplings that canfacilitate a transfer of rotational motion from the drive shaft to the one or more wheels. The motor 316 may be configured to drive the wheels at variable speeds.

[0283] In some aspects, one or more motors 316 may be configured to move a robot arm of the robot 302. The hardware processor 304 may be configured to send one or more drive signals to the motor 316 to cause the motor 316 to move the robot arm. One or more motors 316 may be positioned at one or more joints of the robot arm such that the motors 316 drive movement through the joints of the robot arm, respectively. The motors 316 may be configured to move the robot arm at variable speeds. In some aspects, motors 316 may be configured to drive one or more wheels of the robot 302 and the robot arm of the robot 302 at the same time or substantially the same time for a coordinated cleaning movement.

[0284] The display 318 can display user interfaces such as any of the example user interfaces, or aspects thereof, that are shown and / or described herein. The display 318 can include an LED screen, an LCD screen, an OLED screen, a QLED screen, a plasma display screen, a quantum dot display, or the like. The display 318 can be a colored display or a monochrome display. The display 318 may be responsive to touch. For example, the display 318 may comprise a touch screen such as a resistive touch screen, a capacitive touchscreen, an infrared touchscreen, a surface acoustic wave touchscreen, or the like. In some aspects, the display 318 can display various information such as information based on data gathered from sensor(s) 314. In some aspects, the displayed information may be based on data gathered from a server of system 100 such as server 116, 202. In some aspects, the displayed information may be based on data gathered from a cloud-based or internet-based service. In some aspects, the displayed information may be based on data gathered from one or more components of system 100 such as scanner 118.Example Cleaning Robot

[0285] Figure 4 depicts a perspective view of an example implementation of a cleaning robot 400 of cleaning robot system 100. In some aspects, cleaning robot 400 can be implemented as cleaning robot 104. In some aspects, cleaning robot 400 can be implemented as cleaning robot 302. Cleaning robot 400 can include a base 410, a robot arm 420, a tool change system 430, a fluid system 440, a refill system 450, wastewater system 460, and a spray box sanitization system 470.

[0286] The base 410 can be configured as a structural chassis or platform that supports and / or houses one or more components of the cleaning robot 400. In some aspects, the base 410 may comprise one or more wheels configured to maneuver on a floor of a room. In some aspects, the base 410 may include one or more sensors such as sensor(s) 106, 314.The cleaning robot 400 may navigate to and within a room autonomously (e.g., via received navigation signals). The cleaning robot 400 may be navigated manually via a user of system 100 (e.g., remotely via user interface device 108, locally via pushing by cleaning staff, etc.). Wheels can be configured to maneuver in any direction within a plane of motion (e.g., left, right, forward, backward, and combinations thereof). Wheels may comprise brakes. Brakes can be configured to frictionally engage wheels to reduce a rotational motion of wheels. This can cause the cleaning robot 400 to reduce speed. In some aspects, brakes may be configured to frictionally engage the wheels such that the wheels are prohibited from rotating. This can prohibit the cleaning robot 400 from moving (e.g., the robot is parked in a room). The example of wheels is not limiting. The base 410 may comprise any other locomotion mechanism configured to maneuver on a floor of a room such as a continuous track system, articulable legs, and the like.

[0287] The robot arm 420 can be connected to the base 410 and be configured to maneuver a cleaning tool 422 relative to a target surface of room and / or feature / fixture of a room for cleaning. The robot arm 420 can include a connection end 424 configured to connect to a connector 426 (e.g., a receiving end) of a cleaning tool 422. The connection end 424 can connect to various different cleaning tools. The modularity of the connection end 424 can permit the robot arm 420 to use various different cleaning tools to complete various different cleaning tasks. In some aspects, the connection end 424 may be located at the distal end of the robot arm 420. In some aspects, the connection end 424 may be located elsewhere on the robot arm 420. When the robot arm 420 moves (e.g., via one or more motors), the robot arm 420 can move the connection end 424 of the robot arm 420. The robot arm 420 can comprise one or more sensors such as sensor(s) 314 and / or sensor(s) 106. The robot arm 420 can comprise one or more joints 428. The one or more joints 428 may permit the robot arm 420 to move in multiple degrees of freedom. For example, joint(s) 428 can permit the robot arm 420 to move in 1 , 2, 3, 4, 5, 6, 7 or more degrees of freedom.

[0288] A robot arm with multiple joints can permit improved measurement of operation parameters by one or more sensors (e.g., sensor(s) 314). For example, the use of multiple joints 428 can permit a force sensor of the robot arm 420 to measure a force generated in multiple directions.

[0289] In some aspects, the robot arm 420 may extend such that the robot arm 420 can cause a cleaning tool 422 to reach a target surface and / or feature / fixture that may otherwise be beyond operational boundaries of the robot arm 420. For example, the robot arm420 can include an extender, a telescoping section, and the like configured to increase the reach of the robot arm 420.

[0290] In some aspects, the base 410 can be configured to lift the robot 400. In some aspects, the base 410 may be configured to lift the robot 400 over a fixture in a room such as a toilet. In some aspects, the base 410 may be configured to lift the robot 400 over a fixture and lower the robot 400 into the fixture such as a bathtub. For example, the robot 400 may cause the base 410 to press against the floor of the room. Pressing the base 410 against the floor may cause the robot 400 to lift from the floor. In some examples, the robot may cause the base 410 to press against the floor with less force such that the robot 400 lowers toward the floor.

[0291] Lifting and / or lowering the robot 400 via the robot base 410 can permit the robot 400 to make space (e.g., provide clearance) in a tightly enclosed environment such as a small bathroom for a door to open and / or close. In some aspects, the robot 400 can cause the robot arm 420 to open and / or close the door. For example, the robot 400 can maneuver the robot arm 420 such that it presses against or pulls the door.

[0292] The tool change system 430 can facilitate the interchange of cleaning tools 422 with the connection end 424 of the robot arm 420. The tool change system 430 can include storage for tools not in use. For example, the tool change system 430 can be configured to store cleaning tools not connected to the connection end 424. In some aspects, the tool change system 430 may be configured to store one or more cleaning tools 422 for retrieval by the robot arm 420. For example, the tool change system 430 can include one or more docks 432 configured to securely store one or more cleaning tools 422. In some examples, the cleaning tools 422 may be stored in an orientation such that a connector 426 of the cleaning tool is positioned upright. The robot arm 420 may align the connection end 424 of the robot arm 420 with the connector 426 of the cleaning tool 422 such that the connection end 424 of the robot arm 420 couples to the connector 426 of the cleaning tool 422. The robot arm 420, when coupled to the cleaning tool 422, may remove the cleaning tool 422 from the dock 432 of the tool change system 430. In some aspects, the tool change system 430 may be configured to receive a cleaning tool 422 from the robot arm 420. For example, the robot arm 420 can position the cleaning tool 422 such that the cleaning tool engages with the dock 432 of the tool change system 430. The robot arm 420 can decouple the connection end 424 of the robot arm 420 from the connector 426 of the cleaning tool.

[0293] The fluid system 440 can supply the cleaning robot 400 with cleaning fluids for cleaning tasks. The fluid system 440 can include various different fluids such as water,surfactants, and / or the like. In some aspects, the fluid system 440 can be configured to generate a cleaning liquid by mixing two or more fluids of the fluid system 440. For example, the cleaning liquid may comprise water, surfactant, or combinations thereof.

[0294] In some aspects, the fluid system 440 can be configured to store a premixed cleaning liquid. The fluid system 440 can include one or more reservoirs 442 that store various different cleaning liquids. In some aspects, the fluid system 440 can include a pump configured to move cleaning liquid from a reservoir 442 to a cleaning tool 422 such as a sprayer. A sprayer may be in fluid communication with the fluid system 440. For example, one or more conduits (e.g., a hose, tube, a pipe, etc.) may be connected to a pump and connected to the sprayer. The one or more conduits can be configured to transport cleaning liquid from the reservoir 442 to the sprayer as the pump pumps cleaning liquid out of the reservoir 442. For example, the pump can pump water from the reservoir 442 through the conduit to the sprayer. The one or more conduits can be configured to transport cleaning liquid from a reservoir 442 to the sprayer for spraying of a surface and / or feature / fixture of a room by the cleaning robot 400.

[0295] In some aspects, the fluid system 440 can include a valve configured to regulate a flow of cleaning liquid from one or more reservoirs 442. For example, the valve can open and / or close to permit and / or prohibit a flow of cleaning liquid from reservoir 442. In some examples, when the cleaning robot 400 engages the fluid system 440 to spray a surface and / or feature / fixture, the valve can open and permit a flow of cleaning liquid from the reservoir 442 through a pump to be directed though the conduit and out the sprayer. In some examples, when the cleaning robot disengages the fluid system 440, the valve can close and prohibit a flow of cleaning liquid from the reservoir 442.

[0296] Various different surfaces and / or features / fixtures of an area or room may require various different cleaning liquids. The fluid system 440 may be configured to purge the sprayer between spraying various different surfaces. In some aspects, purging the sprayer can include flushing a nozzle of the sprayer with water between spraying various different surfaces. Flushing the sprayer nozzle with water can remove unwanted cleaning liquid (e.g., chemical residue). Purging the sprayer nozzle can prohibit the mixing of various different cleaning liquids. Mixing cleaning liquids can cause ineffective cleaning or damage to a target surface. Purging the sprayer nozzle can maintain effective cleaning and prevent damage to surfaces being cleaned by ensuring that cleaning liquids are not cross-contaminated with other chemicals.

[0297] The refill system 450 can supply the cleaning robot 400 with water for various cleaning tasks without interruption of a cleaning schedule of the robot (e.g., without the robot navigating away from a room to a water refill station). The refill system 450 can include a reservoir 452 that stores water. For example, the reservoir 452 can have a volume of 5 gallons. As the cleaning robot 400 cleans, water may be used from the reservoir 452 (e.g., for spraying a surface).

[0298] The cleaning robot 400 may be configured to refill the water reservoir 452 between cleaning tasks. In some aspects, the cleaning robot 400 may include a conduit configured to direct water from a water supply, such as a faucet of a bathroom sink, to the water reservoir 452. For example, a first end of the conduit may be connected to or positioned within the reservoir 452 and a second end of the conduit may be positioned below the faucet spout such that as water exits the spout it is collected by the conduit and transported through the conduit to the reservoir 452 via the pull of gravity.

[0299] In some examples, the second end of the conduit may be connected to the faucet spout such that the water moves through the conduit to the reservoir 452 via water pressure from the faucet. The robot arm 420 can position the conduit accordingly to transport water from the faucet to the water reservoir 452 for refilling. In some aspects, the robot arm 420 can cause the faucet to release water (e.g., turn on the faucet) into the conduit such as by engaging a sink knob.

[0300] The reservoir 452 may include a sensor (e.g., sensor 106, 314) configured to detect the water level in the reservoir 452. A hardware processor of the cleaning robot 400 (e.g., controller 102, processor 304) may be in communication with the reservoir sensor. The reservoir sensor can send signals indicative of a water level in the reservoir 452. The hardware processor can be configured to determine a water level value corresponding to the water level in the reservoir 452 based on the signals obtained from the reservoir sensor.

[0301] In some aspects, the hardware processor may implement a series of determinations such as according to multiple different water level thresholds. For example, the hardware processor can be configured to determine whether the measured water level value satisfies a first water level threshold. The hardware processor, in some aspects, can determine whether the first water level threshold is satisfied based on a comparison between the measured water level value and a first predetermined water level value. The hardware processor may determine that the measured water level value satisfies the first water level threshold based on a determination that the measured water level value is less than or equal to the first predetermined water level value. Based on a determination that the first water levelthreshold is satisfied, in some aspects, the hardware processor can cause the cleaning robot 400 to refill the reservoir 452. For example, the hardware processor can send a control signal to one or more motors (e.g., motor(s) 316) of the robot arm 420 to drive the robot arm 420 (e.g., maneuver the robot arm) such that the robot arm 420 positions the conduit relative to the faucet and reservoir 452 as described herein and causes the faucet to release water from the faucet into and through the conduit to the reservoir 452.

[0302] In some examples, the hardware processor can be configured to determine whether the measured water level value satisfies a second water level threshold. The hardware processor, in some aspects, can determine whether the second water level threshold is satisfied based on a comparison between the measured water level value and a second predetermined water level value. The hardware processor may determine that the measured water level value satisfies the second water level threshold based on a determination that the measured water level value greater than or equal to the second predetermined water level value. Based on a determination that the second water level threshold is satisfied, in some aspects, the hardware processor can cause the cleaning robot 400 to stop refilling the reservoir 452. For example, the hardware processor can send a control signal to the one or more motors of the robot arm 420 to drive the robot arm 420 to disengage the faucet (e.g., turn off the faucet) such that no more water is released into the conduit.

[0303] Predetermined water level value(s) may be fixed or programmable. In some aspects, predetermined water level value(s) can be set and / or modified by the user utilizing a smartphone application and / or web application such as device application 112 and / or web application 114.

[0304] Wastewater system 460 can include a reservoir 462 that stores wastewater. In some aspects, the reservoir 462 can be implemented as the vacuum such as described with further reference to Figure 7. Wastewater can accumulate during cleaning. For example, water that is used to rinse cleaning tools between cleaning tasks can become dirty. The robot 400 may be configured dispose of accumulated wastewater between cleaning tasks. For example, the robot 400 can be configured to empty the wastewater reservoir 462 without interruption of a cleaning schedule of the robot (e.g., without the robot navigating away from a room to a water dumping station).

[0305] In some aspects, the wastewater reservoir 462 can include a valve configured to permit and / or prohibit a flow of wastewater out of the reservoir 462. The valve may be positioned at the bottom of the reservoir to allow the reservoir to be emptied througha gravity drain. The reservoir 462 can be configured to allow attachment to the robotic arm 420.

[0306] In some aspects, the wastewater system 450 can include a conduit configured to direct wastewater from reservoir 462 to a suitable dumping location. For example, a first end of the conduit may be connected to the reservoir 462 and a second end of the conduit may be positioned above or within a dumping location (such as a toilet of a bathroom) such that water exits the reservoir 462 and moves through the conduit to the dumping location via the pull of gravity. The valve may be configured to permit and / or prohibit a flow of wastewater out of the reservoir 462 and through the conduit.

[0307] In some aspects, the wastewater reservoir 462 can include a pump configured to expel wastewater from the wastewater reservoir 462. The first end of the conduit may be connected to the pump such that wastewater moves through the conduit from the wastewater reservoir 462 to the dumping location as the pump pumps wastewater out of the wastewater reservoir 462.

[0308] The wastewater reservoir 462 may include a sensor (e.g., sensor 314) configured to detect the wastewater level in the reservoir 462. A hardware processor of the cleaning robot 400 (e.g., controller 102, processor 304) may be in communication with the wastewater reservoir sensor. The wastewater reservoir sensor can send signals indicative of a wastewater level in the wastewater reservoir 462. The hardware processor can be configured to determine a wastewater level value corresponding to the wastewater level in the wastewater reservoir 462 based on the signals obtained from the wastewater reservoir sensor.

[0309] In some aspects, the hardware processor may implement a series of determinations such as according to multiple different wastewater level thresholds. For example, the hardware processor can be configured to determine whether the wastewater level value satisfies a first wastewater level threshold. The hardware processor, in some aspects, can determine whether the first wastewater level threshold is satisfied based on a comparison between the measured wastewater level value and a first predetermined wastewater level value. The hardware processor may determine that the measured wastewater level value satisfies the first wastewater level threshold based on a determination that the measured wastewater level value greater than or equal to the first predetermined wastewater level value.

[0310] Based on a determination that the first wastewater level threshold is satisfied, in some aspects, the hardware processor can cause the cleaning robot 400 to emptythe wastewater reservoir 462. For example, the hardware processor can send a control signal to one or more motors (e.g., motor(s) 316) of the robot arm 420 to drive the robot arm 420 (e.g., maneuver the robot arm) such that the robot arm 420 lifts a cover of the toilet and places the second end of the conduit into a toilet bowl. The hardware processor may be in communication with the valve and send control signals to the valve to actuate the value to permit wastewater to flow out of the reservoir 462 and be pulled through the conduit via gravity to the dumping location. The hardware processor, in some examples, may cause the robot arm 420 to couple to the wastewater reservoir 462 and maneuver the reservoir over the dumping location. The hardware processor may then cause the valve to open, allowing the wastewater to drain into the dump location. In some examples, the hardware processor may be in communication with the wastewater reservoir pump and send a control signal to the pump to turn on the pump to pump wastewater from the wastewater reservoir 462 through the conduit into the toilet bowl.

[0311] In some aspects, the hardware processor can be configured to determine whether the measured wastewater level value satisfies a second wastewater level threshold. The hardware processor, in some aspects, can determine whether the second wastewater level threshold is satisfied based on a comparison between the measured wastewater level value and a second predetermined wastewater level value. The hardware processor may determine that the measured wastewater level value satisfies the second wastewater level threshold based on a determination that the measured wastewater level value is less than or equal to the second predetermined wastewater level value.

[0312] Based on a determination that the second wastewater level threshold is satisfied, in some aspects, the hardware processor can cause the cleaning robot 400 to stop emptying the wastewater reservoir 462. For example, the hardware processor can send a control signal to the valve to actuate the value to prohibit a flow of wastewater from the reservoir 462. In some examples, the hardware processor can send a control signal to the pump to turn off the pump. The hardware processor can send a control signal to the one or more motors of the robot arm 420 to drive the robot arm 420 to remove the conduit from the toilet bowl and cause the toilet to flush. In some examples, the hardware processor can cause the robot arm 420 to move the reservoir 462 away from the dumping location.

[0313] Predetermined wastewater level value(s) may be fixed or programmable. In some aspects, predetermined wastewater level value(s) can be set and / or modified by the user utilizing a smartphone application and / or web application such as device application 112 and / or web application 114.

[0314] Refilling water from a bathroom sink and / or dumping wastewater into a toilet between cleaning tasks can permit a cleaning robot to carry out assigned cleaning tasks without interruption to a cleaning schedule of the cleaning robot. For example, refilling a water reservoir with water from a sink can reduce time taken to complete cleaning tasks by eliminating a need for the cleaning robot to navigate to a water refill station, which can take time away from cleaning tasks, can improve robot cleaning times. In some examples, dumping wastewater into a toilet can reduce time taken to complete cleaning tasks by eliminating a need for the cleaning robot to navigate to a wastewater dump station, which can take time away from cleaning tasks.

[0315] The robot 400, in some aspects, may include a water filtration system configured to reduce (or eliminate) water spotting and hard water stains on surfaces and / or features / fixtures being cleaned. The water filtration system can include one or more filters, a water softener, and a water conditioner. Prior to wetting a surface via, for example, a cleaning tool configured for spraying, water may be directed through the water filtration system via one or more conduits described herein. The filtered water may then be directed to the cleaning tool. In some aspects, the filter can be implemented as a reverse osmosis filter. In some aspects, the filter may be implemented as a particulate filter. The water softener may be implemented as an ion-exchange softener. In some aspects, the water conditioner can be implemented as a template-assisted crystallization (TAC) resin bed. The water conditioner may be implemented as an electromagnetic or magnetic conditioner.

[0316] The spray box sanitization system 470 can be configured to sanitize one or more cleaning tools 422 between cleaning tasks. The sanitization system 470 can include a sanitization container 472. A component of a cleaning tool 422 that has been used to clean a surface (e.g., a sponge of a buffer) may be placed in the sanitization container 472. For example, a hardware processor can cause the robot arm 420 to place the cleaning tool component in the sanitization container 472. The sanitization container 472 can include one or more nozzles configured to spray and / or steam the cleaning tool component. The sanitization container 472 may be configured to agitate the cleaning tool component within the container either by moving the tool with respect to the container 472 and / or moving the container 472 with respect to the tool. For example, the robot 400 can cause the cleaning tool to spin while placed in the sanitization container 472 to aid in cleaning and sanitization of the tool. In some examples, the robot 400 can cause the container 472 to spin while the cleaning tool is placed within the sanitization container.

[0317] The spray box sanitization system 470 can permit cleaning tool components to be sanitized multiple times during a cleaning period (e.g., when a cleaning robot is executing assigned cleaning tasks). Sanitizing cleaning tool components during a cleaning period can improve cleaning performance by ensuring that cleaning tools are not contaminated with dirt or other unwanted substances prior to contacting a surface and / or feature / fixture for cleaning.

[0318] The spray box sanitization system 470 can be configured to moisten a buffer of a cleaning tool with cleaning liquid. In some aspects, the spray container 472 can be configured to moisten the buffer with cleaning liquid prior to buffing a surface and / or feature / fixture. In some aspects, the spray container 472 can be configured to load the buffer with cleaning liquid between cleaning tasks (e.g., between buffing a first surface and a second surface). The spray container 472 can include one or more nozzles to rinse, spray, and / or steam the buffer with cleaning liquid when the buffer is placed within the spray container 472. In some aspects, the robot 400 can cause the buffer to spin while in the spray container 472. For example, one or more hardware processors can send drive signals to a motor of the cleaning tool to cause the buffer to rotate as described herein. In some aspects, spinning the buffer can control the amount of cleaning liquid remaining on the buffer. For example, the motor can rotate the buffer at various speeds to modify the amount of fluid remaining on the buffer. In some examples, rotating the buffer at high speeds (e.g., high RPM) can cause more fluid to be expelled from the buffer than if the buffer is rotated at low speeds (e.g., low RPM).

[0319] In some aspects, the cleaning robot can include a plurality of spray containers 472 for a plurality of buffers. For example, a first buffer may be used to buffer a bathroom countertop and may be loaded with cleaning liquid in a first spray container. In some examples, a second buffer may be used to exclusively buffer a toilet and / or other heavily contaminated surfaces and may be loaded with cleaning liquid in a second spray container. This can reduce and / or eliminate cross contamination of surfaces.

[0320] Figure 5 depicts a perspective view of an example implementation of a spray box sanitization system 500 of a cleaning robot of cleaning robot system 100. In some aspects, the spray box sanitization system 500 can be implemented as the spray box sanitization system 470.

[0321] The spray box sanitization system 500 can include a sanitization container 502 such as described with reference to Figure 4. The sanitization container 502 can include a cavity 504 configured to receive a buffer of a cleaning tool. In some aspects, the cavity 504 can include one or more nozzles configured to spray the buffer with cleaning liquid.

[0322] The spray container 502 can include an insertion point 506 positioned at an end of the cavity 504 through which the robot arm moves the buffer to place the buffer within the cavity 504. In some aspects, the insertion point 506 can include a skirt 508 configured to prohibit liquid from escaping the cavity 504 as the buffer is loaded with cleaning liquid and / or as the buffer is spun to expel cleaning liquid from the buffer. The skirt 508 may enclose the insertion point 506. The skirt may include an opening having a diameter that is the same or substantially the same as the cross-sectional diameter of a shaft connected to the buffer. The opening can permit the skirt to enclose around the shaft of the buffer.

[0323] In some aspects, the skirt 508 may be flexible such that the skirt 508 can permit the buffer to pass through the insertion point 506 into the cavity 504. For example, the inner lip of the skirt 508 may displace from its original position as the buffer passes through the insertion point 506. In some examples, the buffer may frictionally engage the inner lip of the skirt 508 as it passes through the insertion point 506. The skirt 508 may return to its original position to prohibit liquid from escaping through the insertion point 506. For example, when the buffer has passed through the insertion point 506 and into the cavity, the buffer may no longer frictionally engage the inner lip of the skirt 508.

[0324] In some aspects, the skirt 508 may be configured to retract and / or extend. For example, the skirt 508 may retract such that the diameter of the opening in the skirt 508 is big enough to permit the buffer to pass through the insertion point 506 into the cavity 504. In some examples, when the buffer is placed within the cavity 504, the skirt 508 may extend such that the skirt 508 encloses around the shaft of the buffer. For example, the skirt 508 may extend such that the diameter of the opening in the skirt 508 is the same or substantially the same as the cross-sectional diameter of the shaft of the buffer.

[0325] Figure 6 depicts a block diagram 600 illustrating an example implementation of a device of cleaning robot system 100. In some aspects, the device can be implemented as the controller 102. In some aspects, the device can be implemented as the robot 104, 302, 400. In some aspects, the device can be implemented as the user interface device 108. In some aspects, the device can be implemented as the server 116, 202. As illustrated in Figure 6, one or more hardware processors 602 of the device may be configured to process one or more input data 604 (e.g., input signals). The one or more input data 604 may include, but are not limited to, data from one or more sensors such as sensor(s) 106, 314, data from one or more scanners such as scanner 118, and / or data from one or more servers such as server 116, 202. Sensor data can be indicative of operation parameters of a cleaning tool and / or navigation parameters of an area or room and / or cleaning robot asdescribed herein. Toolpath data can be indicative of toolpaths associated with various different cleaning tools, surfaces of an area or room, and / or features / fixtures of an area or room, as described herein. Toolpath data can include Toolpath Data 210 described with reference to Figure 2. Cleaning protocol data can be indicative of cleaning protocols associated with an area or room as described herein. Cleaning protocol data can include Cleaning Protocol Data 212 described with reference to Figure 2. Localization data can be indicative of the position of the cleaning robot (or one or more components of the robot) within an area or room. Localization data can be indicative of initial and / or subsequent positions within the area or room to which the robot moves in accordance with toolpaths and / or cleaning protocols. In some examples, localization data can be based at least in part on sensor data. In some examples, localization data can be associated with toolpath data and / or cleaning protocol data.

[0326] In some aspects, the one or more hardware processors 602 may be configured to cause one or more operations 606, which may include, but are not limited to, positioning / moving a cleaning robot, positioning / moving a cleaning tool, and / or modifying a toolpath / cleaning protocol. The one or more hardware processors 602 may be configured to cause one or more operations 606 based at least in part on input data 604.

[0327] Hardware processor(s) 602, in some aspects, may cause the cleaning robot to position / move based at least in part on input data 604. Positioning / moving the cleaning robot can include maneuvering a base of the robot (e.g., robot base 410) within an area or room. For example, hardware processor(s) 602 can be configured to send drive signals to one or more motors (e.g., motor(s) 316) of a cleaning robot to drive one or more wheels of the robot base. The motor(s) may cause the wheel(s) to rotate as described herein, thereby maneuvering the robot base as the wheels rotate. In some aspects, the robot base may be stationary as the cleaning robot cleans. In some aspects, the robot base may maneuver as the cleaning robot cleans (e.g., for coordinated cleaning movements).

[0328] In some aspects, hardware processor(s) 602 may cause the cleaning robot to move based on operation signals received from one or more sensors. For example, hardware processor(s) 602 may determine that a measured distance of the cleaning tool relative to a target surface deviates from a corresponding desired distance. The hardware processor(s) 602 may cause the robot base to maneuver such that the measured distance between the cleaning tool and the target surface is the same or substantially the same as the corresponding desired distance dictated by an associated toolpath (e.g., reduce a differencebetween the measured distance and the corresponding desired distance between the cleaning tool and the surface and / or feature / fixture).

[0329] In some aspects, hardware processor(s) 602 may cause the robot to move based on navigation signals received from one or more sensors. For example, hardware processor(s) 602 may determine that the cleaning robot is maneuvering along a trajectory and will collide with an object within the room. The hardware processor(s) 602 may cause the robot base to adjust trajectories (e.g., move in a different direction, stop moving, etc.) to avoid a collision.

[0330] In some aspects, hardware processor(s) 602 may cause the cleaning robot to move based on a toolpath. For example, the toolpath may dictate various different desired operation parameters as described herein. The hardware processor(s) 602 may cause the robot base to maneuver within the room such that a robot arm connected to the robot base can position / move the cleaning tool as dictated by the toolpath (e.g., position the cleaning tool at the desired distance relative to the target surface).

[0331] In some aspects, hardware processor(s) 602 may cause the cleaning robot to move based on a cleaning protocol. For example, the cleaning protocol may dictate one or more positions within a room at which to position the robot for cleaning. The hardware processor(s) 602 may cause the robot base to maneuver to an initial position within the room and / or maneuver from the initial position to another position within the room such that the robot arm can reach various different surfaces and / or features / fixtures of the room for cleaning as dictated by the cleaning protocol.

[0332] In some aspects, hardware processor(s) 602 may cause the cleaning robot to position / move a cleaning tool based at least in part on input data 604. Positioning / moving the cleaning tool can include maneuvering a robot arm of the cleaning robot (e.g., robot arm 420) having a connection end coupled to a receiving end of the cleaning tool. Maneuvering the robot arm may cause the cleaning tool coupled to the connection end of the robot arm to move accordingly. For example, hardware processor(s) 602 can be configured to send drive signals to one or more motors of the robot arm. The motor(s) may cause the robot arm to actuate as described herein, thereby maneuvering the connection end of the robot arm.

[0333] The hardware processor(s) 602, in some aspects, may cause the cleaning robot to position / move a cleaning tool based on operation signals received from one or more sensors. Hardware processor(s) 602 may determine that a measured operation parameter of a cleaning tool deviates from a corresponding desired operation parameter dictated by a toolpath associated with the cleaning tool, the surface being cleaned, and / or the feature / fixturebeing cleaned. For example, the hardware processor(s) 602 may be configured to determine a difference between the measured operation parameter and the corresponding desired operation parameter. Hardware processor(s) 602 may cause the robot arm to maneuver such that the measured operation parameter is the same or substantially the same as the corresponding desired operation parameter. For example, hardware processor(s) 602 may cause the robot arm to maneuver such that a difference between the measured operation parameter and the corresponding desired operation parameter is reduced. In some aspects, hardware processor 602 can cause the robot to modify the toolpath associated with a cleaning tool such that the difference between the measured operation parameter and the corresponding desired operation parameter is reduced as described with reference to hardware processor 304.[00334J In some aspects, hardware processor(s) 602 may cause the cleaning robot to position / move a cleaning tool based on a toolpath. For example, the hardware processor(s) 602 may cause the robot arm to move the cleaning tool to an initial position relative to a target surface and / or move the cleaning tool from the initial position to another position such that the cleaning tool can clean various different portions of the target surface and / or feature / fixture as dictated by the toolpath.

[0335] In some aspects, hardware processor(s) 602 may cause the cleaning robot to position / move a cleaning tool based on a cleaning protocol. For example, hardware processor(s) 602 may cause the robot arm to move the cleaning tool to an initial position relative to a target surface and / or move the cleaning tool from the initial position to another position such that the cleaning tool can clean various different surfaces and / or features / fixtures of the area or room as dictated by the cleaning protocol.

[0336] Hardware processor(s) 602, in some aspects, may be configured to modify a toolpath and / or cleaning protocol based at least in part on input data 604. Input data 604 can include sensor data indicative of the cleanliness of a surface and / or feature / fixture of an area or room as described herein. The hardware processor 602 may determine, based at least in part on the sensor data, whether a cleanliness level threshold for a certain surface and / or feature / fixture is satisfied as described herein. Responsive to the determination, the hardware processor(s) 602 may modify a toolpath and / or cleaning protocol, as described herein, associated with the problem surface and / or feature / fixture. The hardware processor(s) may modify one or more desired operation parameters of a toolpath associated with the problem surface. For example, the hardware processor(s) 602 may cause the robot arm to apply a greater force against the problem surface when buffing. In some examples, the hardwareprocessor(s) 602 may cause the robot arm to move a vacuum closer to the problem surface and / or across the problem surface more slowly when vacuuming.Example Cleaning Tools

[0337] Figure 7 depicts a perspective view of an example embodiment of a cleaning tool 700 of cleaning robot system 100. The cleaning tool 700 may be configured to vacuum a surface and / or feature / fixture of an area or room. For example, the cleaning tool 700 can be configured to vacuum debris from the surface and / or feature / fixture. The cleaning tool 700 may include, but is not limited to, a housing 710, a nozzle 720, an adapter 730, and a connection end 740.

[0338] The housing 710 may include a conduit configured to pass airflow through the conduit. The nozzle 720 may be connected to the housing 710. The nozzle 720 may be flexible or rigid. The nozzle 720 may be of variable widths. The nozzle 720 may be configured to direct air suction to the surface and / or feature / fixture being cleaned. For example, the nozzle 720 can include a tip 722 configured to contact the surface and / or feature / fixture. The tip 722 may be flexible or rigid. The tip 722 can comprise one or more intake ducts 724 configured to pass airflow from the tip 722 through the duct 724 into the conduit of the housing 710.

[0339] The adapter 730 can connect to the housing 710. The adapter 730 can be configured to connect to a vacuum that creates a suction through the conduit to pull airflow from the elastic tip 722 through the intake duct 724 into the conduit of the housing 710 and expel airflow through the exhaust port 726. The vacuum can include a fan that can create the suction that pulls air through the intake duct 724 and expels air through the exhaust port 726 via a motor driving a fan blade assembly. The motor can be connected to a drive shaft such that the motor can rotate the drive shaft. The fan blade assembly can be connected to the drive shaft such that the fan blade assembly rotates in response to a rotational motion of the drive shaft. As the fan blade assembly rotates, the fan blade assembly can generate an air flow toward the exhaust port 726. The generated airflow can create a pressure delta between the anterior and posterior of the fan blade assembly such that a suction is created in the conduit of the housing 710 pulling airflow through the intake duct 724. The motor may be in communication with a hardware processor of the cleaning robot. The hardware processor can send a drive signal to the motor to drive the fan blade assembly. In some aspects, the motor can drive the fan blade assembly at variable speeds (e.g., RPM) to create suctions of different strengths through the conduit of the housing 710.

[0340] The cleaning tool 700 may include a filter system configured to prevent vacuumed debris from being expelled through the exhaust port 726. The filter system can include one or more filters such as a HEPA filter. As debris passes through the conduit of the housing 710, one or more filters can trap debris and other small particles.

[0341] The cleaning tool 700 may include a collection device configured to collect vacuumed debris. The collection device can include a dust bag, a canister, and / or the like. The collection device can be connected to the housing 710 such that debris moving through the conduit is deposited into the collection device.

[0342] The cleaning tool 700 can include a connection end 740 (e.g., a receiving end) configured to connect to a connection end of a robot arm of the cleaning robot. The robot arm can maneuver the cleaning tool 700 when the cleaning tool 700 is connected to the connection end of the robot arm.

[0343] In some aspects, the cleaning tool 700 can include a sensor 750. However, this is not intended to be limiting. The sensor 750 may be integrated into, housed by, or coupled to the robot or components thereof, such as the robot arm. The sensor 750 can be a force sensor, torque sensor, and / or combination thereof, such as may be configured to measure a force and / or torque applied by the cleaning tool 700 (e g., by the tip 722) to a surface and / or feature / fixture. In some aspects, the sensor 750 may measure a force and / or torque generated between the tip 722 and the surface and / or feature / fixture, a force and / or torque generated at the connection end 740, a force and / or torque generated at a joint of the robot arm (e.g., at the robot base), and / or a force and / or torque generated elsewhere on the cleaning tool 700 and / or the robot arm. In some aspects, the generated and / or measured torque may result from the generated force. In some aspects, the measured force and / or torque may be indicative of a distance between the cleaning tool 700 (e.g., the housing 710, the tip 722, or other component of tool 700) and the surface and / or feature / fixture.

[0344] The sensor 750, in some aspects, can be a distance sensor configured to measure a distance between the tool 700 (e.g., the housing 710, the tip 722, or other component of the cleaning tool 700) and the target surface and / or feature / fixture. For example, the sensor 750 can be a time-of-flight sensor.

[0345] The sensor 750 can be in communication with one or more hardware processors of the cleaning robot (and / or any other component of system 100). The sensor 750 can generate and / or send a force signal and / or torque signal indicative of the measured force and / or torque. In some aspects, the sensor 750 can generate and / or send a distance signal indicative of the measured distance.

[0346] The hardware processor may be configured to determine, based on the force signal and / or torque signal, a force and / or torque generated between the cleaning tool 700 (e.g., the tip 722) and the surface and / or feature / fixture, a force and / or torque generated at the connection end 740, a force and / or torque generated at a joint of the robot arm (e.g., at the robot base), and / or a force and / or torque generated elsewhere on the cleaning tool 700 and / or the robot arm. In some aspects, based on the force signal and / or torque signal, the hardware processor maybe configured to determine the distance between the cleaning tool 700 (e.g., the housing 710, the tip 722, or other component of the cleaning tool 700) and / or the surface and / or feature / fixture. In some aspects, the processor may be configured to determine, based on the distance signal, the distance between the tool 700 and the target surface and / or feature / fixture.

[0347] The hardware processor may determine that the measured force, torque, and / or distance deviates from a corresponding desired force, torque, and / or distance dictated by a toolpath. The toolpath may be associated with the cleaning tool 700 and / or with the surface and / or feature / fixture to be cleaned using the cleaning tool 700. For example, the hardware processor can determine a difference between the measured force, torque, and / or distance and the corresponding desired force, torque, and / or distance. Responsive to the determination, the hardware processor may cause one or more motors of the robot arm to move the robot arm via, for example, drive signals as described herein. The hardware processor may cause the robot arm to move the cleaning tool 700 such that the cleaning tool 700 is positioned at a distance relative to the target surface and / or feature / fixture (e.g., a vacuuming position) such that the measured force, torque, and / or distance is the same or substantially the same as the corresponding desired force, torque, and / or distance (e.g., reduce a difference between the measured and desired force, torque, and / or distance). For example, the robot arm can position the housing 710 such that the tip 722 maintains contact with the target surface and / or feature / fixture with the desired force and / or torque, and / or at the desired distance, as the cleaning tool 700 is moved to various different portions of the surface and / or feature / fixture for vacuuming.

[0348] Figure 8 depicts a perspective view of an example embodiment of a cleaning tool 800 of cleaning robot system 100. The cleaning tool 800 may be configured to buff a surface and / or feature / fixture of a room. For example, the cleaning tool 800 can be configured to buff debris from the surface and / or feature / fixture. The cleaning tool 800 may include, but is not limited to, a rotatable buffer 810, a housing 820, and a connection end 830.

[0349] The rotatable buffer 810 can extend from the housing 820 via, for example, a drive shaft. The buffer 810 can be configured to contact a surface and / or feature / fixture and to rotate to clean the surface and / or feature / fixture. For example, the buffer 810 can frictionally engage the surface and / or feature / fixture. The housing 820 can house a motor configured to rotate the buffer 810. For example, the motor can be connected to a drive shaft such that the motor can rotate the drive shaft. The buffer can be connected to the drive shaft such that the buffer 810 rotates in response to a rotational motion of the drive shaft. In some aspects, the motor can drive the buffer 810 at variable speeds (e.g., RPM) to buff a surface and / or feature / fixture at different intensities. For example, the motor may drive the buffer at a high RPM when buffing a sink counter. In some examples, the motor may drive the buffer at a low RPM when buffing a toilet.

[0350] In some aspects, the buffer 810 can be moistened with cleaning fluid. For example, the buffer 810 may be placed within a spray box (e.g., sanitization container 472, 502) of the cleaning robot and sprayed with cleaning fluid. In some aspects, the motor can rotate the buffer 810 at various speeds to modify the amount of fluid remaining on the buffer 810. For example, rotating the buffer at high speeds (e.g., high RPM) can cause more fluid to be expelled from the buffer 810 than if the buffer 810 is rotated at low speeds (e.g., low RPM).

[0351] The cleaning tool 800 can include a connection end 830 (e.g., a receiving end) configured to connect to a connection end of a robot arm of the cleaning robot. The robot arm can maneuver the cleaning tool 800 when the cleaning tool 800 is connected to the connection end of the robot arm.

[0352] In some aspects, the cleaning tool 800 can include a sensor 840. However, this is not intended to be limiting. The sensor 840 may be integrated into, housed by, or coupled to the robot or components thereof, such as the robot arm. The sensor 840 can be a force sensor, torque sensor, and / to combination thereof, such as may be configured to measure a force and / or torque applied to a surface and / or feature / fixture by the cleaning tool 800. In some aspects, the sensor 840 may measure a force and / or torque generated between the rotatable buffer 810 and the surface and / or feature / fixture, a force and / or torque generated at the connection end 830, a force and / or torque generated at a joint of the robot arm (e.g., at the robot base), and / or a force and / or torque generated elsewhere on the cleaning tool 800 and / or the robot arm. In some aspects, the generated and / or measured torque may result from the generated force. In some aspects, the measured force and / or torque may be indicative of a distance between the cleaning tool 800 (e.g., the rotatable buffer 810, the housing 820, or other component of tool 800) and the surface and / or feature / fixture.

[0353] The sensor 840 can be in communication with one or more hardware processors of the cleaning robot (and / or any other component of the system 100). The sensor 840 can generate and / or send a force signal and / or torque signal indicative the measured force and / or torque.

[0354] The hardware processor may be configured to determine, based on the force signal and / or torque signal, a force and / or torque generated between the cleaning tool 800 (e.g., the rotatable buffer810) and the surface and / or feature / fixture, a force and / or torque generated at the connection end 830, a force and / or torque generated at a joint of the robot arm (e.g., at the robot base), and / or a force and / or torque generated elsewhere on the cleaning tool 800 and / or the robot arm. In some aspects, based on the force signal and / or torque signal, the hardware processor may be configured to determine the distance between the cleaning tool 800 (e.g., the rotatable buffer 810, the housing 820) and the surface and / or feature / fixture.

[0355] The hardware processor may determine that the measured force and / or torque deviates from a corresponding desired force and / or torque dictated by a toolpath. The toolpath may be associated with the cleaning tool 800 and / or with the surface and / or feature / fixture to be cleaned using the cleaning tool 800. For example, the hardware processor can determine a difference between the measured force and / or torque and the corresponding desired force and / or torque. Responsive to the determination, the hardware processor may cause one or more motors of the robot arm to move the robot arm via, for example, drive signals as described herein. The hardware processor may cause the robot arm to move the cleaning tool 800 such that the cleaning tool 800 is positioned at a distance relative to the target surface and / or feature / fixture (e.g., a buffing position) such that that measured force and / or torque is the same or substantially the same as the corresponding desired force and / or torque (e.g., reduce a difference between the measured and desired force and / or torque). For example, the robot arm can position the housing 820 such that the buffer 810 maintains contact with the target surface and / or feature / fixture at the desired force and / or torque as the cleaning tool 800 is moved to various different portions of the surface and / or feature / fixture for buffing.

[0356] In some aspects, the force signal can be indicative of a normal force applied along a rotation axis of the buffer 810 by the surface and / or feature / fixture in contact with the buffer 810. For example, the robot arm may position the cleaning tool 800 such that an end face of the buffer 810 is in contact with the surface and / or feature / fixture. In some aspects, the force signal can be indicative of a torque based on a normal force applied perpendicularto a rotation axis of the buffer 810 by the surface and / or feature / fixture in contact with the buffer 810. For example, the robot arm may position the cleaning tool 800 such that a lateral face of the buffer 810 is in contact with the surface and / or feature / fixture. In some examples, a high torque may indicate too much frictional engagement between the buffer 810 and the surface and / or feature / fixture. The robot arm may urge the cleaning tool 800 away from the surface and / or feature / fixture to reduce the torque on the buffer 810. In some examples, a low torque may indicate too little frictional engagement between the buffer 810 and the surface and / or feature / fixture. The robot arm may urge the cleaning tool 800 toward the surface and / or feature / fixture to increase the torque on the buffer 810.

[0357] Figures 9A-9B depict perspective and cross-sectional views, respectively, of an example embodiment of a cleaning tool 900 of cleaning robot system 100. Figure 9A illustrates a perspective view of an implementation of the cleaning tool 900. The cleaning tool 900 may be configured to squeegee a surface and / or feature / fixture of a room. For example, the cleaning tool 900 can be configured to wipe fluid from the surface and / or feature / fixture. The cleaning tool 900 may include, but is not limited to, a housing 910, an arm 920, a flexible edge 930, a nozzle 940, and a connection end 950.

[0358] The arm 920 may be pivotably connected to the housing 910 such that the arm 920 can pivot relative to the housing 910 about a pivot axis 912 as shown by the dashed line extending through the housing 910. For example, the arm 920 may pivot about a pivot point or joint 914 located on the pivot axis 912. The degree of pivot may correspond to an angle (e.g., a pivot angle, deflection angle) between the arm 920 and the pivot axis 912. For example, when the arm 920 does not pivot relative to the housing 910, the angle between the arm 920 and the pivot axis 912 may be 0 degrees. In some examples, when the arm 920 pivots relative to the housing 910, the angle between the arm 920 and the pivot axis 912 may be greater or less than 0 degrees (positive / negative degrees can correspond to opposite pivot directions). The direction of pivot of the arm 920 is shown by the dashed bi-directional arrow 916.

[0359] In some aspects, the arm 920 can include a honeycomb and / or other geometric structures. These structures can include hollow portions (e.g., hollow cells) that allow for the overall weight of the assembly to be reduced (or minimized). The honeycomb and / or other geometric structures can permit the squeegee to be lightweight while maintaining structural integrity.

[0360] The flexible edge 930 can be connected to the arm 920. The flexible edge 930 can cause the arm 920 to pivot relative to the housing 910 as the flexible edge contactsa surface and / or feature / fixture. For example, the flexible edge 930 may have a length that extends parallel to the pivot axis 912. In some aspects, as a force between the flexible edge 930 and the surface and / or feature / fixture increases, the arm 920 may pivot such that the angle of the arm 920 relative to the pivot axis 912 increases (e.g., moves away from 0 degrees). In some aspects, as a force between the flexible edge 930 and the surface and / or feature / fixture decreases, the arm 920 may pivot such that the angle of the arm 920 relative to the pivot axis 912 decreases (e.g., approaches 0 degrees).

[0361] The force applied between the flexible edge 930 and the surface and / or feature / fixture can correspond to an angle between the flexible edge and the surface and / or feature / fixture (e.g., a pivot angle, a deflection angle). When there is little or no force between the flexible edge 930 and the surface and / or feature / fixture, the flexible edge 930 may be positioned perpendicular to the surface and / or feature / fixture. In some aspects, as a force between the flexible edge 930 and the surface and / or feature / fixture increases, the flexible edge 930 may pivot relative to the surface and / or feature / fixture such that the angle between the flexible edge 930 and the surface and / or feature / fixture decreases (e.g., moves away from 90 degrees). In some aspects, as a force between the flexible edge 930 and the surface and / or feature / fixture decreases, the flexible edge 930 may pivot relative to the surface and / or feature / fixture such that the angle between the flexible edge 930 and the surface and / or feature / fixture increases (e.g., approaches 90 degrees). The angle between the flexible edge 930 and the surface and / or feature may correlate to the angle between the arm 920 and the pivot axis 912. For example, as the angle between the arm 920 and the pivot axis 912 increases, the angle between the flexible edge 930 and the surface and / or feature / fixture may decrease. In some examples, as the angle between the arm 920 and the pivot axis 912 decreases, the angle between the flexible edge 930 and the surface and / or feature / fixture may increase. The angle between the flexible edge 930 and the surface and / or feature / fixture and the angle between the arm 920 and the pivot axis 912 may increase and / or decrease by the same or substantially the same amount. In some examples, the angle between the flexible edge 930 and the surface and / or feature / fixture and the angle between the arm 920 and the pivot axis 912 may increase and / or decrease by different amounts.

[0362] In some aspects, the nozzle 940 can be connected to the arm 920 such that the nozzle 940 pivots in unison with the arm 920. The nozzle 940, in some aspects, may be connected to a conduit configured to pass airflow through the conduit. The conduit can be flexible to permit the nozzle 940 to pivot with the arm 920 while maintaining suction. For example, the nozzle 940 may pivot at the same or substantially the same degree of pivot asthe arm 920 with respect to the housing 910. The nozzle 940 can be positioned to enclose at least a portion of the flexible edge 930. For example, the nozzle 940 may be aligned with the flexible edge 930. In some examples, the nozzle 940 can be positioned at the same or substantially the same deflection angle as the flexible edge 930 with respect to the surface and / or feature / fixture to be cleaned. The nozzle 940 can be implemented as the nozzle 720 as shown and / or described in Figure 7. The nozzle 940 can include an intake duct 942 configured to enclose at least a portion of the flexible edge 930. In some aspects, the intake duct 942 can be configured to enclose both sides of the flexible edge 930. For example, the intake duct 942 can include lips that follow the surface of the flexible edge 930. The lips may extend about at least a portion of the length of the flexible edge 930. In some aspects, the lips may have the length of the flexible edge 930.[00363J The intake duct 942 can be configured to pass airflow through the duct to vacuum about the portion of the flexible edge 930. Air can pass along either side of the flexible edge 930 through the duct 942 as shown by dashed arrows 944. Air can pass along either side of the arm 920 as air is drawn toward the flexible edge 930 by suction generated at the nozzle 940, as shown by dashed arrows 944. In some aspects, at least a portion of the intake duct 942 may be positioned below at least a portion of the flexible edge 930 such that the nozzle 940 can vacuum liquid that comes off the flexible edge 930. The nozzle 940 can be connected to the housing 910. The housing 910 can include a conduit such as described with reference to Figure 7. The housing 910 can connect to an adapter configured to connect to a vacuum that creates a suction through the conduit to pull airflow through the intake duct 942 into the conduit of the housing 910 and expel airflow through an exhaust port such as described in Figure 7.

[0364] Vacuuming around the flexible edge 930 can prevent streaking as the cleaning tool 900 wipes or squeegees fluid from a surface such as a mirror. For example, vacuuming around the flexible edge 930 can prevent a buildup of fluid at the bottom of a mirror (or other vertical surface) by vacuuming excess fluid before the fluid drips to the bottom of the mirror.

[0365] The cleaning tool 900 can include a connection end 950 (e.g., a receiving end) configured to connect to a connection end of a robot arm of the cleaning robot. The robot arm can maneuver the cleaning tool 900 when the cleaning tool 900 is connected to the connection end of the robot arm.

[0366] In some aspects, the cleaning tool 900 can include a sensor 960. However, this is not intended to be limiting. The sensor 960 may be integrated into, housed by, orcoupled to the robot or components thereof, such as the robot arm. The sensor 960 can be a force sensor, torque sensor, and / or combination thereof, such as may be configured to measure a force and / or torque applied by the cleaning tool 900 (e.g., by the edge 930) to a surface and / or feature / fixture. In some aspects, the sensor 960 may measure a force and / or torque generated between the edge 930 and the surface and / or feature / fixture, a force and / or torque generated at the connection end 950, a force and / or torque generated at a joint of the robot arm (e.g., at the robot base), and / or a force and / or torque generated elsewhere on the cleaning tool 900 and / or the robot arm. In some aspects, the generated and / or measured torque may result from the generated force. In some aspects, the measured force and / or torque may be indicative of a degree of pivot between the flexible edge 930 and the surface and / or feature / fixture, and / or a degree of pivot between the arm 920 and the housing 910.

[0367] In some aspects, the sensor 960 can be a pivot sensor configured to measure an angle of pivot between the arm 920 and the housing 910 and / or an angle of pivot between the edge 930 and the surface and / or feature / fixture. For example, the sensor 960 may be a Hall effect sensor. The pivot angle between the arm 920 and the housing 910, in some aspects, may correspond to the angle between the flexible edge 930 and the surface and / or feature / fixture being cleaned as described herein.

[0368] The sensor 960 can be in communication with one or more hardware processors of the cleaning robot (and / or any other component of the system 100). The sensor 960 can generate and / or send a force signal, a torque signal, and / or pivot signal indicative of the measured force, torque, and / or degree of pivot.

[0369] The hardware processor may be configured to determine, based on the force signal and / or the torque signal, a force and / or toque generated between the cleaning tool 900 (e.g., the edge 930) and the surface and / or feature / fixture, a force and / or torque generated at the connection end 950, a force and / or torque generated at a joint of the robot arm (e.g., at the robot base), and / or a force and / or torque generated elsewhere on the cleaning tool 900 and / or the robot arm. In some aspects, based on the force signal and / or torque signal, the hardware processor may be configured to determine a degree of pivot between the flexible edge 930 and the surface and / or feature / fixture, and / or a degree of pivot between the arm 920 and the housing 910. In some aspects, based on the force signal and / or the torque signal, the hardware processor may be configured to determine a distance between the cleaning tool 900 (e.g., the edge 930, the arm 920, the housing 910, or other component of the cleaning tool 900) and the surface and / or feature / fixture. In some aspects, based on the pivot signal, the hardware processor may be configured to determine an angle of pivotbetween the arm 920 and the housing 910 and / or an angle of pivot between the flexible edge 930 and the target surface and / or feature / fixture.

[0370] The hardware processor may determine that the measured force, torque, and / or pivot angle(s) deviates from a corresponding desired force, torque, and / or pivot angle(s) dictated by a toolpath. The toolpath may be associated with the cleaning tool 900 and / or the surface and / or feature / fixture to be cleaning using the cleaning tool 900. For example, the hardware processor can determine a difference between the measured force, torque, and / or pivot angle(s) and the corresponding desired force, torque, and / or pivot angle(s). Responsive to the determination, the hardware processor may cause one or more motors of the robot arm to move the robot arm via, for example, drive signals as described herein. The hardware processor may cause the robot arm to move the cleaning tool 900 such that the cleaning tool 900 is positioned at a distance relative to the target surface and / or feature / fixture (e.g., a squeegeeing / wiping position) such that the measure force, torque, and / or pivot angle(s) are the same or substantially the same as the corresponding desired force, torque, and / or pivot angle(s) (e.g., reduce a difference between the measured and desired force, torque, and / or pivot angle(s)). For example, the robot arm can position the housing 910 such that the flexible edge 930 maintains contact with the target surface and / or feature / fixture at the desired force, torque, and / or pivot angle as the cleaning tool 900 is moved to various different portions of the surface and / or feature / fixture for wiping and / or squeegeeing.

[0371] Figure 9B illustrates a perspective cross-sectional view of an example embodiment of the cleaning tool 900, such as shown and / or described in Figure 9A. As further depicted in Figure 9B, the arm 920 may be pivotably connected to the housing 910 such that the arm 920 can pivot about a pivot axis 912 with respect to the housing 910. For example, the arm 920 may pivot about a pivot point 914 located on the pivot axis 912. The pivot axis 912 may extend through the housing 910. The direction of pivot is shown by the dashed bidirectional arrow 916. The arm 920 can include a flexible edge 930 configured to frictionally engage a surface and / or feature / fixture and remove liquid from the surface and / or feature / fixture. The flexible edge 930 can frictionally engage the surface and / or feature / fixture at a deflection angle that can correspond to the pivot angle as described herein.

[0372] In some aspects, a nozzle 940 can be connected to the arm 920 such that the nozzle 940 pivots at the same or substantially the same degree of pivot as the arm 920 with respect to the housing 910. The nozzle 940 may be positioned at the same or substantially the same deflection angle as the flexible edge 930 with respect to the surfaceand / or feature / fixture to be cleaned. The nozzle 940 can be configured to vacuum about the flexible edge 930 as described herein. For example, the nozzle 940 can include an intake duct 942 that extends about the flexible edge and configured to pass airflow through the duct 942 to vacuum about at least a portion of the flexible edge 930. Air can pass along either side of the flexible edge 930 through the duct 942 as shown by dashed arrows 944. Air can pass along either side of the arm 920 as air is drawn toward the flexible edge 930 by suction generated at the nozzle 940, as shown by dashed arrows 944.

[0373] Figure 10A depicts a perspective view of an example implementation of a cleaning tool 1000a of cleaning robot system 100. The cleaning tool 1000a may be configured to spray a surface and / or feature / fixture of a room. For example, the cleaning tool 1000a can be configured to spray a surface and / or feature / fixture of a room with a cleaning liquid. In some aspects, the cleaning tool 1000a may be configured to spray a surface and / or feature / fixture at various different flow rates. The cleaning tool 1000a may include, but is not limited to, a housing 1010a, a nozzle 1020a, and a connection end 1030a.

[0374] The housing 1010a may include a conduit 1012a configured to pass a flow of liquid through the conduit. The conduit 1012a may be connected to (e.g., in fluid communication with) a fluid source such as a reservoir of fluid system 440 described with reference to Figure 4. In some aspects, the conduit 1012a may be connected to a fluid source such as the reservoir 452. In some examples, the conduit 1012a may be connected to the water filtration system described herein.

[0375] The nozzle 1020a may be connected to the housing 1010a. The nozzle 1020a may be configured to direct cleaning liquid to the surface and / or feature / fixture being cleaned. For example, the nozzle 1020a can be in fluid communication with the conduit 1012a such that the nozzle 1020a can direct cleaning liquid from the conduit 1012a to the target surface and / or feature / fixture. The nozzle 1020a can include a tip 1022a configured to generate a spray pattern as cleaning liquid passes through the nozzle 1020a. The tip 1022a can comprise a duct 1024a configured to pass a flow of cleaning liquid out of the conduit 1012a from the tip 1022a through the duct 1024a. The duct 1024a may be configured to generate cleaning liquid droplets of certain sizes as cleaning liquid passes through the duct 1024a.

[0376] In some aspects, the nozzle 1020a can control the spray pattern of liquid directed out of the nozzle 1020a and / or can control a droplet size of cleaning liquid directed out of the nozzle 1020a. For example, the nozzle 1020a and / or tip 1022a can be adjustable such that the cross-sectional area of the duct 1024a through which cleaning liquid flows ischanged. In some examples, the nozzle 1020a and / or tip 1022a may be swappable with another nozzle and / or tip, respectively. Certain nozzles and / or tips may correspond to certain spray patterns.

[0377] In some aspects, the cleaning tool 1000a can include a valve configured to regulate a flow of cleaning liquid through the nozzle 1020a. For example, the valve can open and / or close to permit and / or prohibit a flow of cleaning liquid. In some examples, when the cleaning robot engages the cleaning tool 1000a to spray a surface and / or feature / fixture, the valve can open and permit a flow of cleaning liquid from the reservoir through a pump (e.g., a pump of fluid system 440) to be directed though the conduit 1012a and out nozzle 1020a. In some examples, when the cleaning robot disengages the cleaning tool 1000a, the valve can close and prohibit a flow of cleaning liquid from the reservoir. In some aspects, the valve may be implemented as the valve of the fluid system 440 described with reference to Figure 4.

[0378] Adjusting the nozzle 1020a, adjusting the tip 1022a, and / or actuating the valve can modify the volume of cleaning liquid that flows through the nozzle 1020a. In some examples, the cleaning tool 1000a can be configured to spray various surfaces and / or features / fixtures at various flow rates.

[0379] The cleaning tool 1000a can include a connection end 1030a (e.g., a receiving end) configured to connect to a connection end of a robot arm of the cleaning robot. The robot arm can maneuver the cleaning tool 1000a when the cleaning tool 1000a is connected to the connection end of the robot arm.

[0380] The cleaning tool 1000a, in some aspects, can include a sensor 1040a. However, this is not intended to be limiting. In some aspects, the sensor 1040a may be integrated into, housed by, or coupled to the robot or components thereof such as the robot arm. The sensor 1040a can be configured to measure a speed and / or velocity of the cleaning tool 1000a relative to a target surface and / or feature / fixture to be cleaned. In some aspects, the sensor 1040a can be configured to measure an acceleration of the cleaning tool 1000a relative to the target surface and / or feature / fixture. The sensor 1040a can be in communication with one or more hardware processors of the cleaning robot (and / or any other component of the system 100). In some aspects, the sensor 1040a can send a signal indicative of a speed and / or velocity of the cleaning tool 1000a relative to the target surface and / or feature / fixture. In some aspects, the sensor 1040a can send a signal indicative of an acceleration of the cleaning tool 1000a relative to the target surface and / or feature / fixture. The hardware processor may be configured to determine a speed and / or velocity of the cleaning tool 1000a relative to the target surface and / or feature / fixture based on the speed signal. Insome aspects, the hardware processor may be configured to determine an acceleration of the cleaning tool 1000a relative to the target surface and / or feature / fixture based on the speed signal.

[0381] In some aspects, the hardware processor may be configured to modify a spray flow rate of the cleaning tool 1000a based on the determined speed, velocity, and / or acceleration. For example, the hardware processor may increase or decrease the spray rate as a speed of the cleaning tool increases or decreases. Adjusting a spray rate can include adjusting the nozzle 1020a and / or tip 1022a to modify a spray pattern and / or droplet size as described herein. Adjusting a spray rate can include adjusting the volume of cleaning liquid traveling through the conduit 1012a from a fluid system to the cleaning tool 1000a. For example, the hardware processor may rapidly actuate the valve to increase or decrease flow rate while maintaining the desired spray pattern. In some examples, the hardware processor may rapidly actuate the valve to increase or decrease flow rate while maintaining a constant or substantially constant pressure at which cleaning liquid passes through nozzle 1020a.

[0382] In some aspects, the hardware processor may be configured to adjust the spray rate using pulse width modulation of, for example, the spray valve. The hardware processor may be configured to increase or decrease a duty cycle of the valve based on the speed of the cleaning tool 1000a increasing or decreasing proportional to the tool motion relative to the target surface and / or feature / fixture. In some aspects, the hardware controller may be configured to control an arcing motion of the robot arm as the cleaning tool 1000a is moved to various different portions of the surface and / or feature / fixture for spraying.

[0383] Adjusting the spray rate of the cleaning tool 1000a as the speed (or velocity, acceleration, etc.) of the cleaning tool 1000a changes can ensure that cleaning liquid is distributed uniformly on the surface and / or feature / fixture being cleaned as the cleaning robot moves the cleaning tool 1000a to different portions of the surface and / or feature / fixture for spraying. For example, the cleaning robot (via one or more hardware processors) can reduce a spray rate of the cleaning tool 1000a as the speed of the cleaning tool 1000a decreases to ensure that a target surface and / or feature / fixture is not overwhelmed with cleaning liquid (e.g., prohibit cleaning liquid from pooling on a target surface and / or feature / feature) as the cleaning tool 1000a moves to various different portions of the surface and / or feature / fixture for spraying. In some examples, the cleaning robot can increase a spray rate of the cleaning tool 1000a as the speed of the cleaning tool 1000a increases to ensure that sufficient cleaning liquid is distributed on the target surface and / or feature / fixture as thecleaning tool 1000a moves to various different portions of the surface and / or feature / fixture for spraying.

[0384] Figure 10B depicts a perspective view of an example implementation of a cleaning tool 1000b of cleaning robot system 100. The cleaning tool 1000b may be configured to spray a surface and / or feature / fixture of a room. For example, the cleaning tool 1000b can be configured to spray a surface and / or feature / fixture of a room with a cleaning liquid such as water at high velocity. In some aspects, the cleaning tool 1000b may be configured to spray a surface and / or feature / fixture at various different pressures. The cleaning tool 1000b may include, but is not limited to, a housing 1010b, a nozzle 1020b, a motor 1030b, a pump 1032b, and a connection end 1040b.

[0385] The housing 1010b may include a conduit 1012b configured to pass a flow of liquid through the conduit 1012b such as described with reference to Figure 10A. For example, the conduit 1012b may be connected to (e.g., in fluid communication with) a fluid source such as a reservoir of fluid system 440. In some examples, the conduit 1012b may be connected to a fluid source such as the reservoir 452 of water refill system 450. In some aspects, the conduit 1012b may be connected to a fluid source that receives cleaning liquid such as water from any of the reservoirs described herein. In some examples, the conduit 1012b may be connected to the water filtration system described herein.

[0386] The nozzle 1020b may be connected to the housing 1010b such as described with reference to Figure 10A. For example, the nozzle 1020b may be configured to direct cleaning liquid to the surface and / or feature / fixture being cleaned. Nozzle 1020b may be in fluid communication with the conduit 1012b such that the nozzle 1020b can direct cleaning liquid from the conduit 1012b to the target surface and / or feature / fixture. The nozzle 1020b can include a tip 1022b configured to generate a spray pattern as cleaning liquid passes through the nozzle 1020b. The tip 1022b can comprise a duct 1024b configured to pass a flow of cleaning liquid out of the conduit 1012b from the tip 1022b through the duct 1024b. The duct 1024b may be configured to generate cleaning liquid droplets of certain sizes as cleaning liquid passes through the duct 1024b.

[0387] In some aspects, the nozzle 1020b can control the spray pattern of liquid directed out of the nozzle 1020b and / or can control a droplet size of cleaning liquid directed out of the nozzle 1020b. For example, the nozzle 1020b and / or tip 1022b can be adjustable such that the cross-sectional area of the duct 1024b through which cleaning liquid flows is changed. In some examples, the nozzle 1020b and / or tip 1022b may be swappable withanother nozzle and / or tip, respectively. Certain nozzles and / or tips may correspond to certain spray patterns.

[0388] Motor 1030b may configured to drive a pump 1032b at various different speeds. Different motor speeds (e.g., RPM) may correspond to different pressures generated by the pump. In some aspects, the motor 1030b may be integrated into, housed by, or coupled to the robot. The pump 1032b may be implemented as the pump of fluid system 440. The motor 1030b may be physically connected to the pump 1032b such that the motor can drive the pump 1032b to pump water through the pump 1032b to be directed through the conduit 1012b and out the nozzle 1020b. For example, a drive shaft of motor 1030b can be coupled to a pump shaft such that the motor 1030b drives the pump 1032b. In some examples, the motor 1030b may share a shaft with the pump 1032b.

[0389] In some aspects, the hardware processor may be configured to modify the pressure at which cleaning liquid passes through nozzle 1020b. For example, the hardware processor may be in communication with the motor 1030b and send one or more drive signals to the motor 1030b to drive the motor 1030b at a certain speed. Certain speeds can correspond to certain pressures generated by the pump 1032b. For example, if the hardware processor causes the motor 1030b to be driven at a high speed (e.g., high RPM), the pump 1032b may pump liquid through the conduit 1012b at high pressure. Pumping cleaning liquid through the conduit 1012b at high pressure may cause the cleaning liquid to exit nozzle 1020b at high velocity. In some examples, if the hardware processor causes the motor to be driven at a low speed (e.g., low RPM), the pump 1032b may pump liquid through the conduit 1012b at low pressure. Pumping cleaning liquid through the conduit 1012b at low pressure may cause the cleaning liquid to exit nozzle 1020b at low velocity. In some examples, the hardware processor can adjust the pressure at which cleaning liquid flows through the nozzle 1020b so as to maintain a desired spray pattern.

[0390] The cleaning tool 1000b can include a connection end 1040b (e.g., a receiving end) configured to connect to a connection end of a robot arm of the cleaning robot. The robot arm can maneuver the cleaning tool 1000b when the cleaning tool 1000b is connected to the connection end of the robot arm.

[0391] Figure 10C depicts a perspective view of an example implementation of a cleaning tool 1000c of cleaning robot system 100. The cleaning tool 1000c may be configured to blow air onto a surface and / or feature / fixture of a room. For example, the cleaning tool 1000c can be configured to blow liquid and / or debris from a surface and / or feature / fixture, such as may reside in a crack or crevice. In some aspects, the cleaning tool 1000c may beconfigured to blow air on a surface and / or feature / fixture at various different air pressures. The cleaning tool 1000c may include, but is not limited to, a housing 1010c, a nozzle 1020c, a motor 1030c, a fan 1032c, and a connection end 1040c.

[0392] The housing 1010c may include a conduit 1012c configured to pass an airflow through the conduit 1012c. The conduit 1012c may be in fluid communication with an air inlet 1014c that is configured to pass airflow through the inlet 1014c and into the conduit 1012c.

[0393] The nozzle 1020c can be connected to the housing 1010c. The nozzle 1020c may be configured to direct the airflow to the surface and / or feature / fixture being cleaned. For example, the nozzle 1020c may be in fluid communication with the conduit 1012c such that the nozzle 1020c can direct airflow from the conduit 1012c to the target surface and / or feature / fixture. The nozzle 1020c can include one or more ducts 1022c configured to pass the airflow out of the conduit 1012c from the nozzle 1020c through the duct(s) 1022c.

[0394] The motor 1030c may be configured to drive a fan 1032c at various different fan speeds. The fan 1032c can be configured to generate suction to pull air into the air inlet and through the conduit 1012c. Additionally, the fan 1032 can be configured to push the airflow through the conduit 1012c and out the nozzle 1020c. In some aspects, the motor 1030c may drive the fan 1032c at a fan speed sufficient to generate high air pressure such that air directed to the target surface and / or feature / fixture can blow liquid and / or debris from said surface and / or feature / fixture. For example, the airflow may be expelled from the nozzle 1020c with sufficient air pressure to blow liquid and / or debris from a crack or crevice that may otherwise by difficult to reach with another cleaning tool. However, the air pressure may not be so great as to damage the surface and / or feature / fixture. In some aspects, the motor 1030c may be integrated into, housed by, or coupled to the robot. The motor 1030c may be physically connected to the fan 1032c such that the motor 1030c drives the fan 1032c. For example, a drive shaft of the motor 1030c may be coupled with a shaft of the fan 1032. In some examples, the motor 1030c and fan 1032c may be coupled to a common shaft. In some aspects, the fan 1032c may be a centrifugal fan, a backward curved fan, a forward curved fan, or other type of fan suitable for generating air flow out of the nozzle 1020c. In some aspects, the fan 1032c can include one or more impellers configured to move and / or accelerate the airflow.

[0395] In some aspects, the hardware processor may be configured to modify the air pressure at which the airflow passes through the nozzle 1020c. For example, the hardware processor may be in communication with the motor 1030c and send one or more drive signals to the motor 1030c to drive the motor 1030c at a certain speed. Certain speeds cancorrespond to certain pressures generated by the fan 1032c. For example, if the hardware processor causes the motor 1030c to be driven at a high speed (e.g., high RPM), the fan 1032c may push the airflow through the conduit 1012c at high pressure. Pushing the airflow through the conduit 1012c at high pressure may cause the airflow to exit nozzle 1020c at high velocity. In some examples, if the hardware processor causes the motor to be drive at a low speed (e.g., low RPM), the fan 1032c may push the airflow through the conduit 1012c at low pressure. Pushing the airflow liquid through the conduit 1012c at low pressure may cause the airflow to exit nozzle 1020c at low velocity. In some aspects, the hardware processor may adjust the air pressure of the airflow based on the target surface and / or feature / fixture. For example, a surface and / or feature / fixture that comprises cracks or crevices may require airflow with greater air pressure to remove liquid and / or debris from said cracks and / or crevices. In some examples, a surface and / or feature / fixture having no (or few or shallow) cracks and / or crevices, and / or a delicate surface and / or feature / fixture, may require air flow having less air pressure. In some aspects, the hardware processor may be configured to adjust the air pressure of the airflow expelled from the nozzle 1020c as the robot arm moves the cleaning tool 1000c to different portions of a surface and / or feature / fixture.

[0396] In some aspects, the cleaning tool 1000c can include a heating element 1034c. The heating element 1034c can be configured to heat airflow that passes over and / or through the heating element 1034c such that hot airflow is expelled from the nozzle 1020c. For example, heat produced by the heating element 1034c may be transferred to the airflow. In some aspects, the heating element 1034c can include one or more conductive wires configured to heat airflow passing over and / or through said wire(s). In some aspects, the heating element 1034c can include a variable resistance to control the amount of current flowing through the heating element 1034c, and thus the heat generated by the heating element 1034c.

[0397] The hardware processor, in some aspects, may be configured to modify the temperature of the airflow expelled from the nozzle 1020c. For example, it may be advantageous to blow hotair onto a surface and / or feature / fixture to remove liquid (e.g., water) from said surface and / or feature / fixture. In some examples, however, it may be advantageous to blow cool, cold, or unheated air onto a surface and / or feature / fixture such as may be susceptible to heat damage. The hardware processor, in some aspects, may be in communication with a current source configured to drive electrical current through the heating element 1034c. Different levels of current (e.g. , current amplitudes or magnitudes) may cause the heating element 1034c to heat to different temperatures, thus heating the airflow passingover and / or through the heating element 1034c to different temperatures. The hardware processor can send one or more control signals to the current source to adjust (e.g., increase or decrease, duty cycle, and / or the like) the amount of electrical current delivered to the heating element 1034c, thereby adjusting the temperature of the airflow expelled from the nozzle 1020c. In some examples, the hardware processor may be in communication with a tunable resistor of the heating element 1034c and send one or more control signals to adjust the resistance of the heating element 1034c.

[0398] The connection end 1040c (e.g., a receiving end) can be configured to connect to a connection end of a robot arm of the cleaning robot. In this way, the cleaning tool 1000c can be coupled with the robot arm. The robot arm can maneuver the cleaning tool 1000c when the cleaning tool 1000c is connected to the connection end of the robot arm.Example Processes Associated with the Cleaning Robot System

[0399] Figures 11A-11B are flow diagrams illustrating an example process 1100 for controlling the cleaning robot system 100. The process 1100, or portions thereof, can be implemented by a computing device such as a hardware processor. The process 1100, or portions thereof, can be executed by one or more hardware processors, whether they are associated with a singular or multiple computing devices like controller 102, robot 104, 302, 400, user interface device 108, server 116, 202, processor(s) 602, and / or devices in remote or wireless communication. The implementation may vary. For example, it could be controlled by processors related to a system, such as system 100 (and / or components thereof), or can involve modifications like omitting blocks, adding blocks, rearranging the order of execution of the blocks, combining blocks, and / or separating blocks into additional blocks. The process 1100 serves as an example and is not intended to restrict the present disclosure. In some embodiments, one or more portions of example process 1100 may or may not be performed in the ordinary course of controlling the cleaning robot system 100. In some embodiments, the process 1100, or portions thereof, can be performed by a computing device associated with the cleaning robot system 100 and / or one or more components thereof as described herein.

[0400] At block 1102, a robot (e.g., robot 104, 302, 400) within a space, area (e.g., an outdoor area), or room to be cleaned by the robot can receive a three-dimensional scan of the room (or feature / fixture). For example, the robot can receive a three-dimensional scan from a server such as server 116, 202. In some examples, one or more processors (e.g., processor(s) 602) can receive a three-dimensional scan (e.g., a three-dimensional model) from a scanner such as scanner 118. Responsive to receiving the three-dimensional scan,the robot can localize itself within a virtual environment of the three-dimensional scan. For example, the robot can maneuver a robot arm (e.g., robot arm 420) of the robot as described herein such that the robot arm gently contacts one or more surfaces of the room. Hardware processor(s) may send one or more drive signals to one or more motors of the robot arm to cause the robot arm to move. Movement of the robot arm can correspond to a pose or position of the robot arm (e.g., a kinematic configuration). Upon contact with the surface by the robot arm, the hardware processor(s) may determine the current pose of the robot arm. One or more hardware processors may receive a force signal from a force sensor of the robot arm indicative of contact between the robot arm and the surface. The robot can determine a distance between the robot (or components thereof) and the one or more surfaces. For example, one or more hardware processors of the robot can be configured to determine the current pose of the robot arm upon contact with the surface. The pose may be indicative of coordinates of the robot or components thereof in three-dimensional space. The hardware processor(s) may determine a distance between the robot (e.g., the robot base) and the surface based at least in part on the determined pose.

[0401] At block 1104, the robot can determine one or more surfaces to clean based on the received three-dimensional scan. For example, at block 1104, the three- dimensional scan may be associated with a cleaning protocol. At block 1104, in some aspects, the cleaning protocol can include one or more sequences of cleaning one or more surfaces and / or features / fixtures of a room using one or more cleaning tools as described herein. The cleaning protocol can include one or more toolpaths such as described herein.

[0402] At block 1106, the robot can receive a position signal indicative of a position of the robot base in the room from one or more position sensors. For example, at block 1106, one or more hardware processors of the robot may receive the position signal from one or more position sensors.

[0403] At block 1108, the robot may determine the position of the robot base in the room based on the position signal. For example, at block 1108, one or more hardware processors may be configured to determine the position of the robot base based on the position signal.

[0404] At block 1110, responsive to a determination of the position of the robot base in the room, the robot may cause the robot base to move along the floor of the room. For example, at block 1110, one or more hardware processors can send drive signals to one or more motors to drive one or more wheels of the robot base such that the robot base moves as described herein. In some aspects, at block 1110, the one or more hardware processorsmay cause the robot base to move to an initial position within the room as dictated by a cleaning toolpath and / or cleaning protocol as described herein. In some aspects, at block 1110, the one or more hardware processors may cause the robot base to move from the initial position within the room to another position within the room in accordance with a toolpath and / or cleaning protocol.

[0405] At block 1112, the robot may cause the robot arm to move to position a cleaning tool connected to a connection end of the robot arm. In some aspects, at block 1112, the robot may cause the robot arm to move to position the cleaning tool in a desired cleaning position and / or orientation dictated by the toolpath and / or cleaning protocol as described herein. For example, at block 1112, one or more hardware processors of the robot may send drive signals to one or more motors of the robot arm to cause the robot arm to move as described herein.

[0406] In Figure 11 A, block 1112 is connected to a circle annotated with reference alpha “A” indicating that the process 1100 continues between Figures 11A and 11 B. Although multiple blocks are illustrated in Figure 11 B, not all blocks may necessarily be performed in the ordinary course when performing processes associated with controlling the cleaning robot system 100. For example, one or more blocks may be omitted or added, the order of execution of the blocks may be rearranged, blocks may be combined into fewer blocks and / or separated into additional blocks.

[0407] As illustrated in Figure 11 B, the process 1100 may proceed to block 1114. At block 1114, the robot may begin to clean a target surface and / or feature / fixture within the room. For example, at block 1114, one or more hardware processors may engage the cleaning tool connected to the robot arm via, for example, control signals sent to the cleaning tool or to one or more components of the cleaning robot, such that the cleaning tool performs a cleaning action to the surface and / or feature / fixture. A cleaning action can include vacuuming, spraying, squeegeeing, wiping, buffing, scrubbing, and / or the like.

[0408] At block 1116, the robot may cause the robot arm to move the cleaning tool to various different portions of the surface and / or feature / fixture being cleaned. For example, at block 1116, one or more hardware processors can send drive signals to one or more motors of the robot arm to maneuver the robot arm as described herein. Moving the robot arm can move the cleaning tool connected to the connection end of the robot arm relative to the surface and / or feature / fixture.

[0409] In some aspects, at block 1116, the robot may cause the robot base to move, thereby moving the cleaning tool to various different portions of the surface and / orfeature / fixture being cleaned. For example, at block 1116, the one or more hardware processors can send drive signals to one or more motors to drive one or more wheels of the robot base such that the robot base moves as described herein. The robot arm can be connected to the robot base such that moving the robot base can cause the robot arm to move.

[0410] At block 1118, the robot can receive a feedback signal such as an operation signal from a feedback sensor configured to measure operation parameters during cleaning. Operation parameters can include any of the operation parameters described herein. For example, at block 1118, one or more hardware processors may receive an operation signal indicative of an operation parameter from a sensor such as a distance sensor, a force sensor, a pivot sensor, a movement sensor, and / or the like associated with the cleaning tool and / or robot. In some aspects, at block 1118, the operation signal may be based on a prior movement of the cleaning tool.

[0411] At block 1120, the robot may determine a measured operation parameter (e.g., an actual operation parameter) based at least in part on the received operation signal. For example, at block 1120, one or more hardware processors may be configured to determine a measured operation parameter based at least in part on the received operation signal. In some aspects, at block 1120, a measured operation parameter may correspond to an actual position and / or orientation of the cleaning tool as described herein.

[0412] At block 1122, the robot may determine that the measured operation parameter deviates from a corresponding operation parameter dictated by a toolpath associated with the cleaning tool and / or surface and / or feature / fixture being cleaned. For example, at block 1122, one or more hardware processors may be configured to determine a difference between the measured operation parameter and the corresponding desired operation parameter dictated by the associated toolpath. In some aspects, at block 1122, desired operation parameters may correspond to a desired position and / or orientation of the cleaning tool as described herein. The desired position and / or orientation of the cleaning tool may correspond to a desired cleaning action.

[0413] In some examples, one or more hardware processors may determine there is a difference between the measured and desired operation parameters based on a determination that the measured difference does not satisfy a tool tolerance threshold. For example, at block 1122, one or more hardware processors may determine that the tool tolerance threshold is not satisfied based on a determination that the difference between themeasured and desired operation parameters is greater than a predetermined tool tolerance value.

[0414] In some aspects, at block 1122, the robot may determine that the measured operation parameter does not deviate from a corresponding desired operation parameter dictated by a toolpath associated with the cleaning tool and / or surface and / or feature / fixture being cleaned. In some examples, one or more hardware processors may determine there is no difference between the measured and desired operation parameters based on a determination that the measured difference satisfies the tool tolerance threshold. For example, at block 1122, one or more hardware processors may determine that the tool tolerance threshold is satisfied based on a determination that the difference between the measured and desired operation parameters is less than or equal to a predetermined tool tolerance value.

[0415] In some aspects, at block 1122, predetermined tool tolerance value(s) may be fixed or programmable. In some aspects, predetermined tool tolerance value(s) can be set and / or modified by the user utilizing a smartphone application and / or web application such as device application 112 and / or web application 114.

[0416] At block 1124, in response to a determination that the measured operation parameter does not differ from the corresponding operation parameter, the robot may maintain the desired cleaning position of the cleaning tool by staying on the current toolpath. For example, one or more hardware processors may be configured to prohibit the robot arm from moving so as not to modify the actual position and / or orientation of the cleaning tool.

[0417] At block 1124, in response to a determination that the measured operation parameter differs from the corresponding desired operation parameter, the robot may cause the robot arm to move (e.g., adjust the robot arm) to modify the actual position and / or orientation of the cleaning tool to maintain the cleaning tool in a desired position and / or orientation dictated by a cleaning protocol and / or toolpath. The desired position and / or orientation of the cleaning tool may correspond to a desired cleaning action as described herein.

[0418] For example, at block 1124, one or more hardware processors may be configured to send drive signals to one or more motors of the robot arm to move the robot arm as described herein. In some aspects, at block 1124, moving the robot arm may modify the position and / or orientation of the cleaning tool such that the actual position and / or orientation of the cleaning tool is the same or substantially the same as the corresponding desired position and / or orientation of the cleaning tool. For example, at block 1124, the robot maycause the robot arm to move such that a difference between the actual position and / or orientation of the cleaning tool and the corresponding desired position and / or orientation of the cleaning tool is reduced. In some aspects, at block 1124, moving the robot arm may modify the position and / or orientation of the cleaning tool such that the measured operation parameter is the same or substantially the same as the corresponding desired operation parameter. For example, at block 1124, the robot may cause the robot arm to move such that a difference between the measured operation parameter and the corresponding desired operation parameter is reduced.

[0419] In some examples, at block 1124, the robot may cause the robot arm to move such that a difference between a measured distance relative to a surface and / or feature / fixture at which the robot positions the cleaning tool and a corresponding desired distance relative to the surface and / or feature at which the robot positions the cleaning tool is reduced. At block 1124, in some examples, the robot may cause the robot arm to move such that a difference between a measured angle relative to a surface and / or feature at which the robot orients the cleaning tool and a corresponding desired angle relative to the surface and / or feature / fixture at which the robot orients the cleaning tool is reduced. In some examples, at block 1124, the robot may cause the robot arm to move such that a difference between a measured force the robot applies against a target surface and / or feature via the cleaning tool and a corresponding desired force the robot applies against the target surface and / or feature via the cleaning tool is reduced. In some examples, at block 1124, the robot may cause the robot arm to move such that a difference between a measured torque with which the robot rotates the cleaning tool and a corresponding desired torque with which the robot rotates the cleaning tool is reduced. In some examples, at block 1124, the robot may cause the robot arm to move such that a difference between a measured spray rate at which the robot sprays a surface and / or feature / fixture and a desired spray rate at which the robot sprays the surface and / or feature / fixture is reduced. In some examples, at block 1124, the robot may cause the robot arm to move such that a difference between a measured movement rate at which the robot moves the cleaning tool and a desired movement rate at which the robot moves a cleaning tool is reduced.

[0420] Reducing the difference between measured and desired operation parameters can include reducing the measured difference such that the measured difference satisfies the tool tolerance threshold. For example, one or more hardware processors may be configured to reduce the measured difference such that the measured difference is less than or equal to the predetermined tool tolerance value.

[0421] In some aspects, the process 1100, or portions thereof, may be performed in an open or closed loop, such as part of a feedback control process. For example, in the course of performing the process 1100, the process 1100 may be return to any of blocks 1102 through 1124 for cleaning a surface and / or feature / fixture of an area or room. For example, the system can process operation parameters in an open or closed loop such that the most current operation parameter is continuously recalculated. Accordingly, the system may continuously adjust the robot arm during cleaning of a surface and / or fixture / feature such that the cleaning tool is maintained at the desired cleaning position. The system may be configured to terminate the feedback loop upon completion of a cleaning action.

[0422] Figure 12 is a flow diagram illustrating an example process 1200 for controlling the cleaning robot system 100, such when vacuuming a surface and / or feature / fixture of an area or room. The process 1200, or portions thereof, can be implemented by a computing device such as a hardware processor. The process 1200, or portions thereof, can be executed by one or more hardware processors, whether they are associated with a singular or multiple computing devices like controller 102, robot 104, 302, 400, user interface device 108, server 116, 202, processor(s) 602, and / or devices in remote or wireless communication. The implementation may vary. For example, it could be controlled by processors related to a system, such as system 100 (and / or components thereof), or can involve modifications like omitting blocks, adding blocks, rearranging the order of execution of the blocks, combining blocks, and / or separating blocks into additional blocks. The process 1200 serves as an example and is not intended to restrict the present disclosure. In some embodiments, one or more portions of example process 1200 may or may not be performed in the ordinary course of controlling the cleaning robot system 100. In some embodiments, the process 1200, or portions thereof, can be performed by a computing device associated with the cleaning robot system 100 and / or one or more components thereof as described herein.

[0423] At block 1202, a robot (e.g., robot 104, 302, 400) can receive a feedback signal such as an operation signal from a feedback sensor. For example, one or more hardware processors (e.g., processor(s) 602) can receive the feedback signal. In some aspects, at block 1202, the feedback signal may be a force signal, a torque signal, or combination thereof such as may originate from a force sensor and / or torque sensor. The force sensor and / or torque sensor may be configured to measure a force and / or torque generated when cleaning the surface and / or feature / fixture using the cleaning tool. Accordingly, the force signal and / or torque signal may be indicative of a force and / or torquegenerated between the cleaning tool and the target surface and / or feature / fixture, a force and / or torque generated at a connection end of the cleaning tool, a force and / or torque generate at a joint of the robot arm, and / or a force and / or torque generated elsewhere on the cleaning tool and / or robot arm.

[0424] In some aspects, at block 1202, the feedback signal may be a distance signal such as may originate from a distance sensor configured to measure a distance between a cleaning tool and a target surface and / or feature / fixture during cleaning. Accordingly, the distance signal may be indicative of the distance between the cleaning tool and the target surface and / or feature / fixture. In some aspects, the measured force and / or torque may be indicative of the distance between the cleaning tool and the target surface and / or feature / fixture. At block 1202, the robot can be cleaning the surface and / or feature / fixture using a cleaning tool configured for vacuuming such as described with reference to Figure 7.

[0425] At block 1204, the robot may determine the force and / or torque generated between cleaning tool and the target surface and / or feature / fixture, the force and / or torque generated at a connection end of the cleaning tool, the force and / or torque generate at a joint of the robot arm, and / or the force and / or torque generated elsewhere on the cleaning tool and / or robot arm. In some aspects, at block 1204, the robot may determine a measured distance of the cleaning tool relative to the surface and / or feature / fixture based at least in part on the distance signal. For example, at block 1204, the hardware processor(s) may be configured to determine the measured force, torque, and / or distance based at least in part on the force signal, torque signal, distance signal, or combination thereof. In some aspects, at block 1204, a measured force, torque, and / or distance between the cleaning tool and the surface and / or feature / fixture may correspond to an actual position and / or orientation of the cleaning tool as described herein.

[0426] At block 1206, the robot may determine that the measured force, torque, and / or distance deviates from a corresponding desired force, torque, and / or distance dictated by a toolpath associated with the cleaning tool and / or surface and / or feature / fixture being cleaned. For example, at block 1206, one or more hardware processors may be configured to determine a difference between the measured force, torque, and / or distance and the corresponding desired force, torque, and / or distance. In some aspects, at block 1206, the desired force, torque, and / or distance may correspond to a desired position and / or orientation of...

Claims

1. WHAT IS CLAIMED IS:

1. A cleaning tool robot system for cleaning a surface by moving a cleaning tool based on a cleaning path and position relative to the surface, the cleaning tool robot system comprising: a base comprising one or more wheels configured to maneuver the base; a robot arm connected to the base, the robot arm configured to move a connection end of the robot arm relative to the base; a cleaning tool configured to be connected to the connection end of the robot arm, the cleaning tool configured to clean a surface; an operation sensor configured to generate an operation signal indicative of an operation parameter associated with the cleaning tool; a memory configured to store specific computer-executable instructions; and at least one hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: cause the base to move to position the base for moving the cleaning tool relative to the surface; cause the robot arm to position the cleaning tool in a cleaning position relative to the surface; cause the cleaning tool to clean the surface; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to clean a corresponding portion of the different portions of the surface; receive the operation signal; determine the operation parameter based on the operation signal; and based on the operation parameter, cause the robot arm to adjust to maintain the cleaning position of the cleaning tool relative to the surface at the corresponding portion of the surface.

2. The cleaning tool robot system of Claim 1, wherein the system further comprises a position sensor configured to generate a position signal indicative of a position of the base, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: receive the position signal from the position sensor; determine the position of the base based on the position signal; and cause the base to move based on the determined position of the base.

3. The cleaning tool robot system of any one of Claims 1 to 2, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: cause the robot base to move to a location in a space for cleaning; cause the robot arm to contact one or more surfaces in the space; and determine a position of the base in the space based on the contact between the robot arm and the one or more surfaces.

4. The cleaning tool robot system of Claim 3, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a position of the robot arm upon contact of the robot arm with the one or more surfaces, wherein the position of the arm is determined in relation to x-, y-, and z-coordinates of at least a portion of a surface of the one or more surfaces; and determine an x-coordinate and a y-coordinate of the robot base in the space having the surface based on at least the x-, y-, and z-coordinates of the portion of the surface of the one or more surfaces contacted by the robot arm, wherein the determined x-coordinate and y-coordinate of the base correspond to the position of the base in the space.

5. The cleaning tool robot system of Claim 3 or 4, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine an offset value based at least on a desired position of the base and the determined position of the base.

6. The cleaning tool robot system of Claim 5, wherein: the desired position of the robot base is associated with a desired x-coordinate and a desired y-coordinate in the space; the determined position of the robot base is associated with a determined x- coordinate and a determined y-coordinate in the space; and the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine the offset value based on a difference between the desired x-coordinate and determined x-coordinate and a difference between the desired y-coordinate and determined y-coordinate.

7. The cleaning tool robot system of Claim 5 or 6, wherein the at least one hardware processor is further configured to execute the specific computer-executableinstructions to at least modify at least one of the cleaning position of the cleaning tool or the cleaning path based on the offset value.

8. The cleaning tool robot system of Claim 7, wherein the cleaning position of the cleaning tool is associated with an x-coordinate and y-coordinate of the cleaning tool in the space, and wherein modifying the cleaning position comprises increasing or decreasing at least one of the x-coordinate or y-coordinate by the offset value.

9. The cleaning tool robot system of Claim 7 or 8, wherein the cleaning path is associated with a plurality of x-coordinates and a plurality of y-coordinates representative of the cleaning position of the cleaning tool in the space as the cleaning tool is moved to different portions of the surface, and wherein modifying the cleaning path comprises at least one of increasing or decreasing, by the offset value, at least one of one or more x-coordinates of the plurality of x-coordinates or one or more y-coordinates of the plurality of y-coordinates.

10. The cleaning tool robot system of any one of Claims 5 to 9, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine that the offset value does not satisfy a threshold; and based on the determination that the offset value does not satisfy the threshold, cause the base to move to the desired position from the determined position.11 . The cleaning tool robot system of Claim 10, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: cause the robot arm to contact the one or more surfaces; determine the position of the base based on the contact between the robot arm and the one or more surfaces; and determine a new offset value based at least on the desired position of the base and the determined position of the base.

12. The cleaning tool robot system of any one of Claims 1 to 11 , wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: receive a three-dimensional scan of a space; and determine a surface in the space to clean based on the three-dimensional scan.

13. The cleaning tool robot system of Claim 12, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine the position of the base based on the position signal using the three- dimensional scan; and cause the base to move based on the determined position of the base.

14. The cleaning tool robot system of Claim 12 or 13, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine, based on the three-dimensional scan, one or more contact points on one or more surfaces of the space to contact using the robot arm.

15. The cleaning tool robot system of any one of Claims 1 to 14, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: determine a difference between a desired cleaning position and an actual cleaning position of the cleaning tool based on the operation parameter; and cause the robot arm to move to reduce the difference between the desired cleaning position and the actual cleaning position.

16. The cleaning tool robot system of Claim 15, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a difference between the operation parameter and a desired operation parameter of the cleaning tool based on the operation signal; and determine the difference between the desired cleaning position and the actual cleaning position of the cleaning tool based on the difference between the operation parameter and the desired operation parameter of the cleaning tool.

17. The cleaning tool robot system of Claim 16, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine a difference between the operation parameter and a desired operation parameter of the cleaning tool based on a determination of whether the difference between the determined and desired operation parameters satisfies a tool tolerance threshold.

18. The cleaning tool robot system of Claim 17, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine whether the difference between the determined and desired operationparameters satisfies the tool tolerance threshold based on a comparison between the difference and a predetermined tool tolerance value.

19. The cleaning tool robot system of any one of Claims 1 to 18, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least cause the robot arm to position the cleaning tool in the cleaning position relative to the surface based on the operation parameter.

20. The cleaning tool robot system of any one of Claims 1 to 19, wherein the operation parameter comprises at least one of a force measurement, a torque measurement, a deflection measurement, a distance measurement, or a movement rate measurement.

21. The cleaning tool robot system of any one of Claims 1 to 20, wherein the operation parameter comprises at least one of: a force, torque, or both generated between at least a portion of the cleaning tool and at least a portion of the surface; a force, torque, or both generated at the connection end of the robot arm; or a force, torque, or both generated at a joint of the robot arm.

22. The cleaning tool robot system of any one of Claims 1 to 21 , wherein the cleaning tool is configured perform at least one of: vacuuming at least a portion of the surface; buffing at least a portion of the surface; squeegeeing at least a portion of the surface; spraying at least a portion of the surface; or blowing air on at least a portion of the surface.

23. The cleaning tool robot system of any one of Claims 1 to 22, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least modify at least one of the cleaning position of the cleaning tool or the cleaning path based on at least one of a tool type of the cleaning tool, a surface type of the surface, or a level of cleanliness of the surface.

24. The cleaning tool robot system of Claim 23, wherein the cleaning position of the cleaning tool is associated with a distance of the cleaning tool relative to the surface, and wherein modifying the cleaning position comprises increasing or decreasing the distance.

25. The cleaning tool robot system of Claim 23 or 24, wherein the cleaning path is associated with a plurality of distances of the cleaning tool relative the surface as the cleaning tool is moved to different portions of the surface, and wherein modifying the cleaning pathcomprises at least one of increasing or decreasing of one or more distances of the plurality of distances.

26. The cleaning tool robot system of any one of Claims 23 to 25, wherein the cleaning path is associated with a speed of the cleaning tool relative the surface, and wherein modifying the cleaning path comprises increasing or decreasing the speed.

27. The cleaning tool robot system of any one of Claims 1 to 26, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least cause the robot arm to move the robot base above a fixture in a space to provide clearance to close or open a door.

28. The cleaning tool robot system of any one of Claims 1 to 27, the system further comprising a water refill system comprising: a reservoir configured to store a volume of water; a conduit configured to direct a flow of water through the conduit, the conduit in fluid communication with the reservoir, the conduit comprising a connection end configured to interface with a water supply; a sensor configured to generate a signal indicative of a level of water in the reservoir; and wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: cause the robot arm to move the connection end of the conduit to interface the conduit with the water supply; cause the robot arm to move to cause water to flow from the water supply through the conduit into the reservoir; receive or access the water level signal; determine the level of water in the reservoir based on the water level signal; and based on the determined level of water in the reservoir, cause the robot arm to move to prohibit water from flowing from the water supply.

29. The cleaning tool robot system of any one of Claims 1 to 28, the system further comprising a water disposal system comprising: a reservoir configured to store a volume of wastewater; a pump in fluid communication with the reservoir, the pump configured to pump wastewater out of the reservoir;a conduit for directing a flow of wastewater through the conduit, the conduit in fluid communication with the pump, the conduit comprising an end configured to direct the flow of wastewater from the conduit into a wastewater receptacle; a wastewater level sensor configured to generate a signal indicative of a level of wastewater in the reservoir; and wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: receive or access the wastewater level signal; determine the level of wastewater in the reservoir based on the wastewater level signal; and based on the determined level of wastewater in the reservoir: cause the robot base to move toward the wastewater receptacle; cause the robot arm to move to position the end of the conduit in fluid contact with the wastewater receptacle; and cause the pump to pump the wastewater out of the reservoir through the conduit end into the wastewater receptacle.

30. The cleaning tool robot system of Claim 29, wherein the wastewater receptacle comprises a toilet.

31. The cleaning tool robot system of Claim 30, the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot arm to move to lift a cover of the toilet.

32. The cleaning tool robot system of Claim 30 or 31 , the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot arm to move to acuate flushing of the toilet.

33. A cleaning tool robot system for spraying a surface by adjusting a spray rate of a cleaning tool as the cleaning tool moves along the surface, the cleaning tool robot system comprising: a base comprising one or more wheels configured to maneuver the base; a robot arm connected to the base, the robot arm configured to move a connection end of the robot arm relative to the base; a cleaning tool configured to be connected to the connection end of the robot arm, the cleaning tool configured to spray a surface; a memory configured to store specific computer-executable instructions; andat least one hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: cause the base to move to position the base for moving the cleaning tool relative to the surface; cause the robot arm to position the cleaning tool in a spraying position relative to the surface; cause the cleaning tool to spray the surface at a spray rate; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to spray a corresponding portion of the different portions of the surface; and cause the cleaning tool to adjust the spray rate based on a velocity of the cleaning tool relative to the surface as the cleaning tool moves to the different portions of the surface.

34. The cleaning tool robot system of Claim 33, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least adjust the spray rate of the cleaning tool via pulse width modulation.

35. The cleaning tool robot system of Claim 34, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least increase a duty cycle of a valve of the cleaning tool based on the cleaning tool accelerating relative to the surface and decrease the duty cycle of the valve based on the cleaning tool decelerating relative to the surface.

36. The cleaning tool robot system of any one of Claims 33 to 35, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least increase the spray rate based on the cleaning tool increasing velocity relative to the surface and decrease the spray rate based on the cleaning tool decreasing velocity relative to the surface.

37. The cleaning tool robot system of any one of Claims 33 to 36, wherein the spray rate comprises a spray pressure.

38. The cleaning tool robot system of any one of Claims 33 to 37, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least cause the cleaning tool to increase or decrease the spray rate based on at least one of a surface type of the surface or a level of cleanliness of the surface.

39. A cleaning tool robot system for blowing air on a surface by adjusting a flow rate of a cleaning tool as the cleaning tool moves along the surface, the cleaning tool robot system comprising: a base comprising one or more wheels configured to maneuver the base; a robot arm connected to the base, the robot arm configured to move a connection end of the robot arm relative to the base; a cleaning tool configured to be connected to the connection end of the robot arm, the cleaning tool configured to blow air on a surface; a memory configured to store specific computer-executable instructions; and at least one hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: cause the base to move to position the base for moving the cleaning tool relative to the surface; cause the robot arm to position the cleaning tool in a blowing position relative to the surface; cause the cleaning tool to blow air on the surface at a flow rate; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to blow air on a corresponding portion of the different portions of the surface; and cause the cleaning tool to adjust the flow rate as the cleaning tool moves to the different portions of the surface.

40. The cleaning tool robot system of Claim 39, wherein the flow rate comprises an air pressure.41 . The cleaning tool robot system of Claim 39 or 40, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the cleaning tool to increase or decrease the flow rate based on at least one of a surface type of the surface or a level of cleanliness of the surface.

42. The cleaning tool robot system of any one of Claims 39 to 41 , wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: cause the cleaning tool to blow air on the surface at an air temperature; and cause the cleaning tool to increase or decrease the air temperature as the cleaning tool moves to the different portions of the surface.

43. A cleaning tool for a robot to clean a surface, the cleaning tool comprising:a connector configured to connect to a robot arm, wherein the cleaning tool is configured to be positioned by the robot arm in a cleaning position relative to a surface; wherein the connector is configured to be moved by the robot arm to different portions of the surface along a cleaning path to clean a corresponding portion of the different portions of the surface; and wherein, in response to a feedback signal from a feedback sensor, the connector is configured to be adjusted by the robot arm to maintain the cleaning position of the cleaning tool relative to the surface at the corresponding portion of the surface.

44. The cleaning tool of Claim 43, the cleaning tool further comprising: a housing comprising the connector, the housing comprising a conduit configured to direct an airflow through said conduit; a nozzle connected to the housing, the nozzle comprising a tip configured to contact the surface, the nozzle comprising a duct configured to pass the airflow through the duct into the conduit of the housing; a vacuum adapter connected to the housing, the vacuum adapter configured to connect to a vacuum that creates a suction through the conduit to pull the airflow from the tip through the duct into the conduit to vacuum debris from the surface with the tip contacting the surface; and wherein the feedback signal is indicative of at least one of a force or a torque generated between the tip and the surface to position the housing at a distance relative to the surface such that the tip maintains contact with the surface at the distance with the airflow flowing through the duct as the nozzle is moved to different portions of the surface for cleaning.

45. The cleaning tool of Claim 44, wherein the feedback signal is associated with the distance between the housing and the surface.

46. The cleaning tool of any one of Claims 43 to 45, the cleaning tool further comprising: a housing comprising the connector; a rotatable buffer extending from the housing, the rotatable buffer configured to contact the surface and to rotate to clean the surface; a motor in the housing, the motor connected to the rotatable buffer and configured to rotate the rotatable buffer; andwherein the feedback signal is indicative of at least one of a force or a torque generated between the rotatable buffer and the surface to position the housing at a distance relative to the surface such that the rotatable buffer maintains contact with the surface at the distance as the rotatable buffer is moved to different portions of the surface for cleaning.

47. The cleaning tool of Claim 46, wherein the feedback signal is indicative of a normal force applied along a rotation axis of the rotatable buffer by the surface in contact with the rotatable buffer.

48. The cleaning tool of Claim 46 or 47, wherein the feedback signal is indicative of a torque based on a normal force applied perpendicular to a rotation axis of the rotatable buffer by the surface in contact with the rotatable buffer.

49. The cleaning tool of any of Claims 43 to 48, the cleaning tool further comprising: a housing comprising the connector; an arm pivotably connected to the housing, the arm configured to pivot relative to the housing about a pivot axis; an edge connected to the arm, the edge configured to wipe the surface; and wherein the feedback signal is indicative of at least one of a force or a torque generated between the edge and the surface to position the housing at a distance relative to the surface such that the edge maintains contact with the surface at the distance as the edge is moved to different portions of the surface for cleaning.

50. The cleaning tool of Claim 49, wherein the feedback signal is associated with a degree of pivot between the arm and the housing.51 . The cleaning tool of Claim 50, wherein the edge is configured to cause the arm to pivot relative to the housing based on the force applied to the edge by the surface in contact with the edge.

52. The cleaning tool of any one of Claims 49 to 51 , further comprising a nozzle comprising a duct, the nozzle positioned to enclose at least a portion of the edge to vacuum about the portion of the edge, the duct configured to pass an airflow through the duct to vacuum about the portion of the edge.

53. The cleaning tool of Claim 52, further comprising a vacuum adapter in fluid communication with the duct, the vacuum adapter configured to connect to a vacuum that creates a suction through the duct to pull the airflow through the duct into the duct to vacuum about the portion of the edge.

54. The cleaning tool of any one of Claims 43 to 53, wherein the feedback sensor is a force sensor, a torque sensor, or both.

55. A cleaning tool robot system for spraying a surface by adjusting a spray rate of the cleaning tool of any one of Claims 43 to 54 as the cleaning tool moves along the surface, the cleaning tool robot system comprising: at least one hardware processor in communication with a memory configured to store specific computer-executable instructions, the at least one hardware processor configured to execute the specific computer-executable instructions to at least: cause the robot arm to position the cleaning tool in spray position relative to the surface; cause the cleaning tool to spray the surface at a spray rate; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to spray a corresponding portion of the different portions of the surface; and cause the cleaning tool to adjust the spray rate as the cleaning tool moves to the different portions of the surface.

56. The cleaning tool of Claim 55, the cleaning tool further comprising: a housing comprising the connector; a conduit connected to the housing, the conduit configured to be in fluid communication with a cleaning liquid source, the conduit configured to direct a flow of cleaning liquid from the cleaning liquid source through the conduit; a spray nozzle connected to the housing, the spray nozzle in fluid communication with the conduit to direct the cleaning liquid from the conduit onto the surface through the spray nozzle.

57. The cleaning tool of Claim 56, wherein the spray nozzle is configured to direct the cleaning liquid from the conduit onto the surface through the spray nozzle with the spray rate of the cleaning liquid being adjusted based on a velocity of the cleaning tool as the spray nozzle is moved to different portions of the surface for spraying.

58. The cleaning tool of Claim 56 or 57, the cleaning tool further comprising: a pump in fluid communication with the conduit and configured to be in fluid communication with the cleaning liquid source, the pump configured to pump the cleaning liquid from the cleaning liquid source and through the conduit; anda motor connected to the pump, the motor configured to drive the pump at a pump speed.

59. The cleaning tool of any one of Claims 56 to 58, wherein the spray nozzle is configured to direct the cleaning liquid from the conduit onto the surface through the spray nozzle with a spray pressure of the cleaning liquid being adjusted as the spray nozzle is moved to different portions of the surface for spraying.

60. A cleaning tool robot system for blowing air on a surface by adjusting a flow rate of the cleaning tool of any one of Claims 43 to 59 as the cleaning tool moves along the surface, the cleaning tool robot system comprising: at least one hardware processor in communication with a memory configured to store specific computer-executable instructions, the at least one hardware processor configured to execute the specific computer-executable instructions to at least: cause the robot arm to position the cleaning tool in blowing position relative to the surface; cause the cleaning tool to blow air on the surface at a flow rate; cause the robot arm to move the cleaning tool to different portions of the surface along a cleaning path to blow air on a corresponding portion of the different portions of the surface; and cause the cleaning tool to adjust the flow rate as the cleaning tool moves to the different portions of the surface.61 . The cleaning tool of Claim 60, the cleaning tool further comprising: a housing comprising the connector, the housing comprising a conduit configured to direct an airflow through said conduit, the housing further comprising an inlet in fluid communication with the conduit, the inlet configured to pass the airflow through the inlet into the conduit; a nozzle connected to the housing, the nozzle comprising a duct in fluid communication with the conduit to direct the airflow from the conduit onto the surface through the duct; a fan in fluid communication with the conduit, the fan configured to generate suction to pull the airflow through the inlet into the conduit, the fan further configured to push the airflow through the conduit and out the nozzle; and a motor connected to the fan, the motor configured to drive the fan at a fan speed.

62. The cleaning tool of Claim 61 , the cleaning tool further comprising a heating element, wherein the fan is further configured to blow the airflow over or through the heating element to heat the air such that heated air is discharged from the nozzle onto the surface.

63. The cleaning tool of Claim 61 or 62, wherein the nozzle is configured to direct the airflow from the conduit onto the surface through the nozzle with an air pressure of the airflow being adjusted as the nozzle is moved to different portions of the surface for blowing.

64. A cleaning tool, the cleaning tool comprising: a connector configured to connect the cleaning tool to a connection end of a robot arm, the robot arm configured to position the cleaning tool in a cleaning position relative to a surface; and wherein the robot arm is configured to move the cleaning tool to different portions of the surface along a cleaning path to clean a corresponding portion of the different portions of the surface.

65. A cleaning quality detection system, the system comprising: cleaning tool robot comprising a base, the base comprising one or more wheels configured to maneuver the base; an optical sensor coupled with the base, the optical sensor configured to capture an image of at least a portion of a surface; a memory configured to store specific computer-executable instructions; and at least one hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: cause the optical sensor to capture the image of at least the portion of the surface; receive or obtain image data representative of the captured image; determine a difference between the captured image data and reference image data; and based on the difference, determine a cleanliness value.

66. The cleaning quality detection system of Claim 65, wherein the cleanliness value is indicative of a level of soiling of the surface.

67. The cleaning quality detection system of Claim 65 or 66, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot base to move on a floor of a space to position the base for moving the optical sensor relative to the surface to capture the image of the surface.

68. The cleaning quality detection system of any one of Claims 65 to 67, wherein the optical sensor is connected to a robot arm connected to the base, and wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least cause the robot arm to position the optical sensor in an imaging position for capturing the image of the surface.

69. The cleaning quality detection system of any one of Claims 65 to 68, wherein the reference image data is representative of a reference image of the surface corresponding to a desired cleanliness value.

70. The cleaning quality detection system of Claim 69, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: receive or obtain data indicative of a portion of interest of the surface; and crop the captured image and the reference image based on the indicated portion so as to reduce a quantity of image data to review to determine the cleanliness value of the surface.

71. The cleaning quality detection system of Claim 70, wherein the portion of interest corresponds to at least one of: a portion of the surface at which to execute a cleaning protocol; or a portion of the surface at which a cleaning protocol has completed.

72. The cleaning quality detection system of any one of Claims 69 to 71, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: map the captured image to the reference image to generate an aligned image; and determine a difference metric based on at least the aligned image, wherein the difference metric corresponds to the cleanliness value.

73. The cleaning quality detection system of Claim 72, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a displacement field based on differences between pixel locations of the captured image and pixel locations of the reference image, each pixel of a respective image corresponding to a pixel location having an x- coordinate and y-coordinate in a plane of the respective image, the displacement field comprising vectors representative of at least one of x-coordinate displacement or y-coordinate displacement of one or more pixels between the captured image and the reference image; and increase or decrease at least one of an x-coordinate or y-coordinate of one or more captured image pixels, using an inverse of the determined displacement field, to map the captured image to the reference image to generate the aligned image.

74. The cleaning quality detection system of Claim 73, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: upsample or downsample the captured image and the reference image from an original resolution to generate a plurality of captured images having at least two resolutions, and a plurality of reference images having the at least two resolutions.

75. The cleaning quality detection system of Claim 74, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a first displacement field at a first resolution based on differences between pixel locations of a captured image having the first resolution and pixel locations of a reference image having the first resolution; upsample the first displacement field to a second resolution, the second resolution being a next higher resolution from the first resolution; using an inverse of the upsampled first displacement field, map a captured image having the second resolution to a reference image having the second resolution to generate an aligned image having the second resolution; determine a correction factor based on differences between pixel locations of the aligned image having the second resolution and pixel locations of the reference image having the second resolution; and determine a second displacement field based on the upsampled first displacement field and the correction factor.

76. The cleaning quality detection system of Claim 75, wherein: the second resolution is the original resolution; the second displacement field comprises vectors representative of displacement, at the original resolution, of one or more pixels between the captured image and the reference image; andthe at least one hardware processor is further configured to execute the specific computer-executable instructions to at least map the captured image to the reference image, using an inverse of the second displacement field, to generated the aligned image.

77. The cleaning quality detection system of any one of Claims 72 to 76, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least determine a stain area in the captured image based on the determined difference metric.

78. The cleaning quality detection system of Claim 77, wherein the difference metric comprises a difference between pixel intensity values of the aligned image and pixel intensity values of the reference image, and wherein the difference between pixel intensity values is indicative of the stain area.

79. The cleaning quality detection system of Claim 78, wherein the difference between pixel intensity values comprises at least one of: a pixel-by-pixel difference in intensity values; or an average difference in intensity values over all pixels.

80. The cleaning quality detection system of any one of Claims 77 to 79, wherein the difference metric comprises an absolute difference image representative of a pixel-by- pixel absolute difference between intensity values of the aligned image and intensity values of the reference image.

81. The cleaning quality detection system of Claim 80, wherein each pixel of the absolute difference image comprises an intensity value associated with an absolute difference between an intensity value of a corresponding pixel in the aligned image and an intensity value of a corresponding pixel in the reference image, and wherein the pixel intensity values of the absolute difference image are indicative of a stain area in the absolute difference image, the stain area in the absolute difference image corresponding to the stain area in the captured image.

82. The cleaning quality detection system of Claim 80 or 81 , wherein the absolute difference image comprises a total pixel area, and wherein the stain area comprises a pixel area corresponding to at least a portion of the total pixel area.

83. The cleaning quality detection system of Claim 82, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least determine the cleanliness value based on the total pixel area of the absolute difference image and the pixel area of the stain area.

84. The cleaning quality detection system of Claim 83, wherein the at least one hardware processor is further configured to execute the specific computer-executable instructions to at least: determine a total number of stains in the absolute difference image; determine a total stain area based on the total number of stains and the pixel area of each stain, the total stain area comprising a pixel area corresponding to at least a portion of the total pixel area of the absolute difference image; and determine a stain ratio based on the total pixel area of the absolute difference image and the pixel area of the total stain area, the stain ratio corresponding to the cleanliness value.

85. The cleaning quality detection system of any one of Claims 77 to 84, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least, in response to determining the stain area in the captured image, label the captured image to indicate a presence of soiling on at least the portion of the surface.

86. The cleaning quality detection system of any one of Claims 65 to 85, wherein the cleanliness value is indicative of a level of soiling of a portion of the surface prior to commencing cleaning of at least the portion of the surface.

87. The cleaning quality detection system of any one of Claims 65 to 86, wherein the cleanliness value is indicative of a level of soiling of a portion of the surface after completing cleaning of at least the portion of the surface.

88. The cleaning quality detection system of any one of Claims 65 to 87, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold, cause an increase of at least one of a force or torque to be applied to at least a portion of the surface via a cleaning tool; and cause a robot arm connected to the base to clean at least the portion of the surface using the cleaning tool with at least one of the increased force or torque.

89. The cleaning quality detection system of any one of Claims 65 to 88, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least:responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold, cause a decrease of a speed of a cleaning tool relative to at least a portion of the surface; and cause a robot arm connected to the base to clean at least the portion of the surface using the cleaning tool at the decreased speed.

90. The cleaning quality detection system of any one of Claims 65 to 89, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: responsive to a determination that the cleanliness value satisfies a cleanliness threshold, cause a decrease of at least one of a force or torque to be applied to at least a portion of the surface via a cleaning tool; and cause a robot arm connected to the base to clean at least the portion of the surface using the cleaning tool with at least one of the decreased force or torque.91 . The cleaning quality detection system of any one of Claims 65 to 90, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: responsive to a determination that the cleanliness value satisfies a cleanliness threshold, cause an increase of a speed of a cleaning tool relative to at least a portion of the surface; and cause a robot arm connected to the base to clean at least the portion of the surface using the cleaning tool at the increased speed.

92. The cleaning quality detection system of any one of Claims 86 to 91, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold, generate at least one of an alert or notification indicative of a request for human assistance.

93. The cleaning quality detection system of any one of Claims 86 to 92, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: responsive to a determination that the cleanliness value satisfies a cleanliness threshold, commence cleaning of at least the portion of the surface.

94. The cleaning quality detection system of any one of Claims 87 to 93, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold, generate at least one of an alert or notification indicative of at least one of a failed cleaning or a request for human assistance.

95. The cleaning quality detection system of any one of Claims 87 to 94, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: responsive to a determination that the cleanliness value does not satisfy a cleanliness threshold a certain number of times, generate at least one of an alert or notification indicative of a request for human assistance.

96. The cleaning quality detection system of any one of Claims 87 to 95, wherein the at least one hardware processor is further configured to execute the specific computerexecutable instructions to at least: responsive to a determination that the cleanliness value satisfies a cleanliness threshold, generate at least one of an alert or notification indicative of a successful cleaning.

Citation Information

Patent Citations

  • Floor cleaning robot and docking station therefore

    US11266286B2

  • Robot for performing dextrous tasks and related methods and systems

    US11407118B1

  • Cleaning robot with arm and tool receptacles

    US20190246858A1

  • Spring-biased pivoting squeegee

    US7000282B2

  • Vacuum nozzle head with integral squeegee

    US7308729B2