Patent Description:
Autonomous mobile robots include autonomous cleaning robots that autonomously perform cleaning tasks within an environment, e.g., a home. Many kinds of cleaning robots are autonomous to some degree and in different ways. A cleaning robot can include a controller configured to autonomously navigate the robot about an environment such that the robot can ingest debris as it moves.

<CIT> discloses techniques for setting a first area for intensive cleaning of an autonomous cleaning robot in a designated area.

A human user can create cleaning zones for an autonomous mobile cleaning robot, such as by using a mobile device. The mobile device can present a map of the environment to the human user and the human user can indicate a cleaning zone, for example by interacting with a touchscreen of the mobile device. The cleaning zone can define an area where the robot performs additional or reduced cleaning. For example, a human user can create a keep out zone to prevent an autonomous mobile cleaning robot from cleaning certain areas within the environment. In another example, a human user can create a focused cleaning zone where the autonomous mobile cleaning robot can perform additional cleaning (e.g., clean for a longer duration, with a higher vacuum power, more passes with a cleaning pad, or more water) within the environment. After the cleaning zone is established, the robot can confirm the cleaning zone by, for example, moving to the cleaning zone.

Advantages of the foregoing and other implementations described herein may include, but are not limited to, those described below and herein elsewhere. The implementations described herein, for example, can improve ease of selection, accuracy, customizability, and adaptability of behavior control zones for controlling behaviors of autonomous mobile robots.

Implementations described herein can improve the ease of user selection of behavior control zones for autonomous mobile robots. For example, a mobile application can present a representation of an environment of an autonomous mobile robot (e.g., a 2D map), and a user can interact with the representation to define the behavior control zone. The representation can provide context for the user as the user defines a behavior control zone. In addition, indicators of features of the environment (e.g. an icon representing a table) can be overlaid on the representation of the environment to provide further context. In some implementations, the user can simply define a behavior control zone by selecting one of the indicators, with the defined behavior control zone corresponding to an object or feature in the environment corresponding to the selected indicator. Such a selection process can be intuitive to a user, and allow a user to easily discern where a selected behavior control zone is in the environment.

Implementations described herein can further improve the accuracy of placing behavior control zones. Contextual indicators presented on a mobile application can allow the user to select a behavior control zone that more accurately matches a user's intended placement of the behavior control zone. For example, rather than having to crudely interact with a mobile application to establish bounds of a behavior control zone, the user can select the behavior control zone by simply selecting an indicator of a feature of an environment of an autonomous mobile robot.

Confirmation of the behavior control zone can further ensure that the selected behavior control zone matches the user's intended behavior control zone. The robot can physically move to the behavior control zone so that the user can confirm that the location of the robot matches with the user's intended location of the behavior control zone. In some implementations, the user can further provide a confirmation that the location of the robot, after moving to the location of the behavior control zone, matches with the user's intended location of the behavior control zone. Such confirmation steps can improve the accuracy of placing a behavior control zones.

In implementations in which multiple autonomous mobile robots move about an environment, behavior control zones can be established in such a manner to differentially control each robot. For example, a behavior control zone could be used to cause one robot, but not another robot, to avoid the behavior control zone. Such differential control of robots can improve the user's ability to manage a fleet of robots in which each robot performs a different function. For example, one robot can be a vacuum cleaning robot, while another robot can be a mopping robot. In such implementations, the user can benefit from being able to establish a behavior control zone that, for example, allows the vacuum cleaning robot to enter a particular floor area, e.g., a carpet, but does not allow the mopping robot to enter the particular floor area.

Implementations described herein can further improve efficiency of selecting behavior control zones and updating behavior control zones. In some implementations, a user defines a behavior control zone associated with a feature of an environment. A location of the feature of the environment may move in some cases. Rather than a user having to manually update the behavior control zone, the behavior control zone can be automatically updated in response to detection of movement of the feature of the environment, e.g., detection by the robot as the robot moves about the floor surface. Such automatic updating of the behavior control zone reduces the need for user input for updating behavior control zones.

Implementations described herein can further improve customizability of operations of autonomous mobile robots within different environments. The user can select behavior control zones such that an autonomous mobile robot performs a certain behavior in an area of an environment particularly requiring the robot's attention. In examples in which the robot is a cleaning robot, the behavior control zone can be selected to cause the robot to perform a focused cleaning operation in an area of the environment that frequently gets dirtier relative to other areas of the environment.

According to the present invention, as set out in claim <NUM>, an autonomous mobile robot includes a drive system to support the robot above a surface, a sensor system configured to generate a signal indicative of a location of the robot on the surface, and a controller operably connected to the drive system and the sensor system. The drive system is operable to navigate the robot about the surface. The controller is configured to execute instructions to perform operations including establishing a behavior control zone on the surface. Establishing the behavior control zone includes confirming the behavior control zone by moving to the behavior control zone after receiving data indicative of the behavior control. The controller is further operable controlling the drive system, in response to establishing the behavior control zone on the surface, to maneuver the robot to a location of the behavior control zone on the surface, and maneuvering, using the drive system, the robot about the surface and initiating a behavior in response to determining, based on the signal indicative of the location of the robot, that the robot is proximate the behavior control zone.

In some implementations, the robot can further include a light indicator system. The controller can be operably connected to the light indicator system, and the operations can include activating the light indicator system in response to the robot being proximate the behavior control zone.

In some implementations, activating the light indicator system in response to the robot being proximate the behavior control zone can include operating the light indicator system to indicate a direction of the behavior control zone relative to the location of the robot.

In some implementations, the operations can include activating the light indicator system in response to establishing the behavior control zone.

In some implementations, the operations can include, in response to establishing the behavior control zone, controlling the drive system to navigate the robot through at least a portion of the behavior control zone. In some implementations, controlling the drive system to navigate the robot through at least the portion of the behavior control zone can include controlling, in response to wirelessly receiving user instructions, the drive system to navigate the robot through at least the portion of the behavior control zone. In some implementations, the portion of the behavior control zone can include a perimeter of the behavior control zone. In some implementations, the portion of the behavior control zone can include a path through an interior of the behavior control zone.

In some implementations, the operations can further include transmitting mapping data to cause a mobile device to present a map of the surface, and receiving from the mobile device a user instruction to establish the behavior control zone.

In some implementations, the operations can further include, in response to establishing the behavior control zone, controlling the drive system to navigate the robot along a perimeter of the behavior control zone.

In some implementations, the surface can include a first portion having a first surface type and a second portion having a second surface type. The behavior control zone can cover the second portion having the second surface type. Initiating the behavior in response to determining, based on the signal indicative of the location of the robot, that the robot is proximate the behavior control zone can include initiating the behavior in response to determining that the robot is proximate the second portion of the surface as the robot maneuvers about the first portion of the surface.

In some implementations, the robot can include a vacuum system to clean the surface, and the behavior includes adjusting a vacuum power delivered to the vacuum system.

In some implementations, the behavior can include adjusting a movement speed of the robot.

In some implementations, the behavior can include adjusting a movement direction of the robot.

In some implementations, adjusting the movement direction of the robot can include orienting the robot to enter the behavior control zone at an angle.

In some implementations, the behavior control zone can be a keep-out zone. The behavior can include avoiding the keep-out zone.

In some implementations, the operations can include controlling the drive system to maneuver the robot along a path in a first direction into the behavior control zone, and in response to detecting that the robot is within the behavior control zone, controlling the drive system to maneuver the robot along the path in a second direction out of the behavior control zone.

In some implementations, the operations can include detecting that the robot is within the behavior control zone, and preventing initiation of an operation of the robot in response to detecting that the robot is within the behavior control zone. In some implementations, preventing the initiation of the operation of the robot in response to detecting that the robot is within the behavior control zone can include preventing initiation of a movement operation of the robot in response to detecting that the robot is within the behavior control zone.

In some implementations, initiating the behavior in response to determining, based on the signal indicative of the location of the robot, that the robot is proximate the behavior control zone can include initiating the behavior in response to determining, based on the signal indicative of the location of the robot, that the robot is within a buffer zone around the behavior control zone. In some implementations, the sensor system cam ne configured to generate data indicative of locations of the robot on the surface. The operations can include estimating an uncertainty associated with the data indicative of the locations of the robot. A size of the buffer zone can be based on the estimated uncertainty. In some implementations, the size of the buffer zone can be proportional to the estimated uncertainty. In some implementations, a size of the buffer zone can be user-selected. The size can be provided by a mobile device.

In some implementations, the behavior control zone can cover a first portion of the surface containing an object. The operations can include updating the behavior control zone to cover a second portion of the surface in response to the object being moved to the second portion of the surface.

Other potential features, aspects, and advantages will become apparent from the description, the drawings, and the claims.

Autonomous mobile robots can be controlled to move about a floor surface in an environment. In some implementations, these robots can initiate behaviors dependent on their locations on the floor surface. For example, a robot can be controlled to initiate a certain behavior in response to being proximate to an area on the floor surface. A user can define the area by using an application, e.g., being executed on a computing device. Once the user defines the area, the robot can move to or toward the area to confirm the selection.

<FIG> depicts an example of a robot <NUM> on a floor surface <NUM> in an environment <NUM>, e.g., a home. A user <NUM> can define a behavior control zone <NUM> using, for example, the methods and systems described herein. In response to the user <NUM> defining the behavior control zone <NUM>, the robot <NUM> moves toward the behavior control zone <NUM> to confirm the selection, e.g., moves to a location proximate the behavior control zone <NUM>. This movement behavior can allow the user <NUM> to confirm that the actual location of the behavior control zone <NUM> matches with the user's intended location for the behavior control zone <NUM>.

After confirmation, an autonomous operation of the robot <NUM> can be initiated. In this autonomous operation, the robot <NUM> can initiate a behavior in response to being proximate to the behavior control zone <NUM>. For example, in some examples in which the robot <NUM> is an autonomous cleaning robot, the user <NUM> defines an area of the environment <NUM> that is prone to becoming dirty to be the behavior control zone <NUM>. In response to being proximate to the behavior control zone <NUM>, the robot <NUM> can initiate a focused cleaning behavior in which the robot <NUM> performs a focused clean of a portion of a floor surface <NUM> in the behavior control zone <NUM>. As described herein, behavior control zones, such as the behavior control zone <NUM>, can allow the robot <NUM> to efficiently and adaptively clean the floor surface <NUM> in the environment <NUM>.

<FIG> and <FIG> depict an example of the robot <NUM>. Referring to <FIG>, the robot <NUM> collects debris <NUM> from the floor surface <NUM> as the robot <NUM> traverses the floor surface <NUM>. Referring to <FIG>, the robot <NUM> includes a robot housing infrastructure <NUM>. The housing infrastructure <NUM> can define the structural periphery of the robot <NUM>. In some examples, the housing infrastructure <NUM> includes a chassis, cover, bottom plate, and bumper assembly. The robot <NUM> is a household robot that has a small profile so that the robot <NUM> can fit under furniture within a home. For example, a height H1 (shown in <FIG>) of the robot <NUM> relative to the floor surface is, for example, no more than <NUM> centimeters. The robot <NUM> is also compact. An overall length L <NUM> (shown in <FIG>) of the robot <NUM> and an overall width W <NUM> (shown in <FIG>) are each between <NUM> and <NUM> centimeters, e.g., between <NUM> and <NUM> centimeters, <NUM> and <NUM> centimeters, or <NUM> and <NUM> centimeters. The overall width W1 can correspond to a width of the housing infrastructure <NUM> of the robot <NUM>.

The robot <NUM> includes a drive system <NUM> including one or more drive wheels. The drive system <NUM> further includes one or more electric motors including electrically driven portions forming part of the electrical circuitry <NUM>. The housing infrastructure <NUM> supports the electrical circuitry <NUM>, including at least a controller <NUM>, within the robot <NUM>.

The drive system <NUM> is operable to propel the robot <NUM> across the floor surface <NUM>. The robot <NUM> can be propelled in a forward drive direction F or a rearward drive direction R. The robot <NUM> can also be propelled such that the robot <NUM> turns in place or turns while moving in the forward drive direction F or the rearward drive direction R. In the example depicted in <FIG>, the robot <NUM> includes drive wheels <NUM> extending through a bottom portion <NUM> of the housing infrastructure <NUM>. The drive wheels <NUM> are rotated by motors <NUM> to cause movement of the robot <NUM> along the floor surface <NUM>. The robot <NUM> further includes a passive caster wheel <NUM> extending through the bottom portion <NUM> of the housing infrastructure <NUM>. The caster wheel <NUM> is not powered. Together, the drive wheels <NUM> and the caster wheel <NUM> cooperate to support the housing infrastructure <NUM> above the floor surface <NUM>. For example, the caster wheel <NUM> is disposed along a rearward portion <NUM> of the housing infrastructure <NUM>, and the drive wheels <NUM> are disposed forward of the caster wheel <NUM>.

Referring to <FIG>, the robot <NUM> includes a forward portion <NUM> that is substantially rectangular and a rearward portion <NUM> that is substantially semicircular. The forward portion <NUM> includes side surfaces <NUM>, <NUM>, a forward surface <NUM>, and corner surfaces <NUM>, <NUM>. The corner surfaces <NUM>, <NUM> of the forward portion <NUM> connect the side surface <NUM>, <NUM> to the forward surface <NUM>.

In the example depicted in <FIG>, <FIG>, and <FIG>, the robot <NUM> is an autonomous mobile floor cleaning robot that includes a cleaning assembly <NUM> (shown in <FIG>) operable to clean the floor surface <NUM>. For example, the robot <NUM> is a vacuum cleaning robot in which the cleaning assembly <NUM> is operable to clean the floor surface <NUM> by ingesting debris <NUM> (shown in <FIG>) from the floor surface <NUM>. The cleaning assembly <NUM> includes a cleaning inlet <NUM> through which debris is collected by the robot <NUM>. The cleaning inlet <NUM> is positioned forward of a center of the robot <NUM>, e.g., a center <NUM>, and along the forward portion <NUM> of the robot <NUM> between the side surfaces <NUM>, <NUM> of the forward portion <NUM>.

The cleaning assembly <NUM> includes one or more rotatable members, e.g., rotatable members <NUM> driven by a motor <NUM>. The rotatable members <NUM> extend horizontally across the forward portion <NUM> of the robot <NUM>. The rotatable members <NUM> are positioned along a forward portion <NUM> of the housing infrastructure <NUM>, and extend along <NUM>% to <NUM>% of a width of the forward portion <NUM> of the housing infrastructure <NUM>, e.g., corresponding to an overall width W1 of the robot <NUM>. Referring also to <FIG>, the cleaning inlet <NUM> is positioned between the rotatable members <NUM>.

As shown in <FIG>, the rotatable members <NUM> are rollers that counter rotate relative to one another. For example, the rotatable members <NUM> can be rotatable about parallel horizontal axes <NUM>, <NUM> (shown in <FIG>) to agitate debris <NUM> on the floor surface <NUM> and direct the debris <NUM> toward the cleaning inlet <NUM>, into the cleaning inlet <NUM>, and into a suction pathway <NUM> (shown in <FIG>) in the robot <NUM>. Referring back to <FIG>, the rotatable members <NUM> can be positioned entirely within the forward portion <NUM> of the robot <NUM>. The rotatable members <NUM> include elastomeric shells that contact debris <NUM> on the floor surface <NUM> to direct debris <NUM> through the cleaning inlet <NUM> between the rotatable members <NUM> and into an interior of the robot <NUM>, e.g., into a debris bin <NUM> (shown in <FIG>), as the rotatable members <NUM> rotate relative to the housing infrastructure <NUM>. The rotatable members <NUM> further contact the floor surface <NUM> to agitate debris <NUM> on the floor surface <NUM>.

The robot <NUM> further includes a vacuum system <NUM> operable to generate an airflow through the cleaning inlet <NUM> between the rotatable members <NUM> and into the debris bin <NUM>. The vacuum system <NUM> includes an impeller and a motor to rotate the impeller to generate the airflow. The vacuum system <NUM> cooperates with the cleaning assembly <NUM> to draw debris <NUM> from the floor surface <NUM> into the debris bin <NUM>. In some cases, the airflow generated by the vacuum system <NUM> creates sufficient force to draw debris <NUM> on the floor surface <NUM> upward through the gap between the rotatable members <NUM> into the debris bin <NUM>. In some cases, the rotatable members <NUM> contact the floor surface <NUM> to agitate the debris <NUM> on the floor surface <NUM>, thereby allowing the debris <NUM> to be more easily ingested by the airflow generated by the vacuum system <NUM>.

The robot <NUM> further includes a brush <NUM> that rotates about a non-horizontal axis, e.g., an axis forming an angle between <NUM> degrees and <NUM> degrees with the floor surface <NUM>. The non-horizontal axis, for example, forms an angle between <NUM> degrees and <NUM> degrees with the longitudinal axes of the rotatable members <NUM>. The robot <NUM> includes a motor <NUM> operably connected to the brush <NUM> to rotate the brush <NUM>.

The brush <NUM> is a side brush laterally offset from a fore-aft axis FA of the robot <NUM> such that the brush <NUM> extends beyond an outer perimeter of the housing infrastructure <NUM> of the robot <NUM>. For example, the brush <NUM> can extend beyond one of the side surfaces <NUM>, <NUM> of the robot <NUM> and can thereby be capable of engaging debris on portions of the floor surface <NUM> that the rotatable members <NUM> typically cannot reach, e.g., portions of the floor surface <NUM> outside of a portion of the floor surface <NUM> directly underneath the robot <NUM>. The brush <NUM> is also forwardly offset from a lateral axis LA of the robot <NUM> such that the brush <NUM> also extends beyond the forward surface <NUM> of the housing infrastructure <NUM>. As depicted in <FIG>, the brush <NUM> extends beyond the side surface <NUM>, the corner surface <NUM>, and the forward surface <NUM> of the housing infrastructure <NUM>. In some implementations, a horizontal distance D1 that the brush <NUM> extends beyond the side surface <NUM> is at least, for example, <NUM> centimeters, e.g., at least <NUM> centimeters, at least <NUM> centimeters, at least <NUM> centimeters, at least <NUM> centimeters, at least <NUM> centimeter, or more. The brush <NUM> is positioned to contact the floor surface <NUM> during its rotation so that the brush <NUM> can easily engage the debris <NUM> on the floor surface <NUM>.

The brush <NUM> is rotatable about the non-horizontal axis in a manner that brushes debris on the floor surface <NUM> into a cleaning path of the cleaning assembly <NUM> as the robot <NUM> moves. For example, in examples in which the robot <NUM> is moving in the forward drive direction F, the brush <NUM> is rotatable in a clockwise direction (when viewed from a perspective above the robot <NUM>) such that debris that the brush <NUM> contacts moves toward the cleaning assembly and toward a portion of the floor surface <NUM> in front of the cleaning assembly <NUM> in the forward drive direction F. As a result, as the robot <NUM> moves in the forward drive direction F, the cleaning inlet <NUM> of the robot <NUM> can collect the debris swept by the brush <NUM>. In examples in which the robot <NUM> is moving in the rearward drive direction R, the brush <NUM> is rotatable in a counterclockwise direction (when viewed from a perspective above the robot <NUM>) such that debris that the brush <NUM> contacts moves toward a portion of the floor surface <NUM> behind the cleaning assembly <NUM> in the rearward drive direction R. As a result, as the robot <NUM> moves in the rearward drive direction R, the cleaning inlet <NUM> of the robot <NUM> can collect the debris swept by the brush <NUM>.

The electrical circuitry <NUM> includes, in addition to the controller <NUM>, a memory storage element <NUM> and a sensor system with one or more electrical sensors, for example. The sensor system, as described herein, can generate a signal indicative of a current location of the robot <NUM>, and can generate signals indicative of locations of the robot <NUM> as the robot <NUM> travels along the floor surface <NUM>. The controller <NUM> is configured to execute instructions to perform one or more operations as described herein. The memory storage element <NUM> is accessible by the controller <NUM> and disposed within the housing infrastructure <NUM>. The one or more electrical sensors are configured to detect features in an environment of the robot <NUM>. For example, referring to <FIG>, the sensor system includes cliff sensors <NUM> disposed along the bottom portion <NUM> of the housing infrastructure <NUM>. Each of the cliff sensors <NUM> is an optical sensor that can detect the presence or the absence of an object below the optical sensor, such as the floor surface <NUM>. The cliff sensors <NUM> can thus detect obstacles such as drop-offs and cliffs below portions of the robot <NUM> where the cliff sensors <NUM> are disposed and redirect the robot accordingly.

Referring to <FIG>, the sensor system includes one or more proximity sensors that can detect objects along the floor surface <NUM> that are near the robot <NUM>. For example, the sensor system can include proximity sensors 136a, 136b, 136c disposed proximate the forward surface <NUM> of the housing infrastructure <NUM>. Each of the proximity sensors 136a, 136b, 136c includes an optical sensor facing outward from the forward surface <NUM> of the housing infrastructure <NUM> and that can detect the presence or the absence of an object in front of the optical sensor. For example, the detectable objects include obstacles such as furniture, walls, persons, and other objects in the environment of the robot <NUM>.

The sensor system includes a bumper system including the bumper <NUM> and one or more bump sensors that detect contact between the bumper <NUM> and obstacles in the environment. The bumper <NUM> forms part of the housing infrastructure <NUM>. For example, the bumper <NUM> can form the side surfaces <NUM>, <NUM> as well as the forward surface <NUM>. The sensor system, for example, can include the bump sensors 139a, 139b. The bump sensors 139a, 139b can include break beam sensors, capacitive sensors, or other sensors that can detect contact between the robot <NUM>, e.g., the bumper <NUM>, and objects in the environment. In some implementations, the bump sensor 139a can be used to detect movement of the bumper <NUM> along the fore-aft axis FA (shown in <FIG>) of the robot <NUM>, and the bump sensor 139b can be used to detect movement of the bumper <NUM> along the lateral axis LA (shown in <FIG>) of the robot <NUM>. The proximity sensors 136a, 136b, 136c can detect objects before the robot <NUM> contacts the objects, and the bump sensors 139a, 139b can detect objects that contact the bumper <NUM>, e.g., in response to the robot <NUM> contacting the objects.

The sensor system includes one or more obstacle following sensors. For example, the robot <NUM> can include an obstacle following sensor <NUM> along the side surface <NUM>. The obstacle following sensor <NUM> includes an optical sensor facing outward from the side surface <NUM> of the housing infrastructure <NUM> and that can detect the presence or the absence of an object adjacent to the side surface <NUM> of the housing infrastructure <NUM>. The obstacle following sensor <NUM> can emit an optical beam horizontally in a direction perpendicular to the forward drive direction F of the robot <NUM> and perpendicular to the side surface <NUM> of the robot <NUM>. For example, the detectable objects include obstacles such as furniture, walls, persons, and other objects in the environment of the robot <NUM>. In some implementations, the sensor system can include an obstacle following sensor along the side surface <NUM>, and the obstacle following sensor can detect the presence or the absence an object adjacent to the side surface <NUM>. The obstacle following sensor <NUM> along the side surface <NUM> is a right obstacle following sensor, and the obstacle following sensor along the side surface <NUM> is a left obstacle following sensor. The one or more obstacle following sensors, including the obstacle following sensor <NUM>, can also serve as obstacle detection sensors, e.g., similar to the proximity sensors described herein. In this regard, the left obstacle following can be used to determine a distance between an object, e.g., an obstacle surface, to the left of the robot <NUM> and the robot <NUM>, and the right obstacle following sensor can be used to determine a distance between an object, e.g., an obstacle surface, to the right of the robot <NUM> and the robot <NUM>.

In some implementations, at least some of the proximity sensors 136a, 136b, 136c, and the obstacle following sensor <NUM> each includes an optical emitter and an optical detector. The optical emitter emits an optical beam outward from the robot <NUM>, e.g., outward in a horizontal direction, and the optical detector detects a reflection of the optical beam that reflects off an object near the robot <NUM>. The robot <NUM>, e.g., using the controller <NUM>, can determine a time of flight of the optical beam and thereby determine a distance between the optical detector and the object, and hence a distance between the robot <NUM> and the object.

In some implementations, the proximity sensor 136a includes an optical detector <NUM> and multiple optical emitters <NUM>, <NUM>. One of the optical emitters <NUM>, <NUM> can be positioned to direct an optical beam outwardly and downwardly, and the other of the optical emitters <NUM>, <NUM> can be positioned to direct an optical beam outwardly and upwardly. The optical detector <NUM> can detect reflections of the optical beams or scatter from the optical beams. In some implementations, the optical detector <NUM> is an imaging sensor, a camera, or some other type of detection device for sensing optical signals. In some implementations, the optical beams illuminate horizontal lines along a planar vertical surface forward of the robot <NUM>. In some implementations, the optical emitters <NUM>, <NUM> each emit a fan of beams outward toward an obstacle surface such that a one-dimensional grid of dots appear on one or more obstacle surfaces. The one-dimensional grid of dots can be positioned on a horizontally extending line. In some implementations, the grid of dots can extend across multiple obstacle surfaces, e.g., multiple obstacles surfaces adjacent to one another. The optical detector <NUM> can capture an image representative of the grid of dots formed by the optical emitter <NUM> and the grid of dots formed by the optical emitter <NUM>. Based on a size of a dot in the image, the robot <NUM> can determine a distance of an object on which the dot appears relative to the optical detector <NUM>, e.g., relative to the robot <NUM>. The robot <NUM> can make this determination for each of the dots, thus allowing the robot <NUM> to determine a shape of an object on which the dots appear. In addition, if multiple objects are ahead of the robot <NUM>, the robot <NUM> can determine a shape of each of the objects. In some implementations, the objects can include one or more objects that are laterally offset from a portion of the floor surface <NUM> directly in front of the robot <NUM>.

The sensor system further includes an image capture device <NUM>, e.g., a camera, directed toward a top portion <NUM> of the housing infrastructure <NUM>. The image capture device <NUM> generates digital imagery of the environment of the robot <NUM> as the robot <NUM> moves about the floor surface <NUM>. The image capture device <NUM> is angled in an upward direction, e.g., angled between <NUM> degrees and <NUM> degrees from the floor surface <NUM> about which the robot <NUM> navigates. The camera, when angled upward, is able to capture images of wall surfaces of the environment so that features corresponding to objects on the wall surfaces can be used for localization.

When the controller <NUM> causes the robot <NUM> to perform the mission, the controller <NUM> operates the motors <NUM> to drive the drive wheels <NUM> and propel the robot <NUM> along the floor surface <NUM>. In addition, the controller <NUM> operates the motor <NUM> to cause the rotatable members <NUM> to rotate, operates the motor <NUM> to cause the brush <NUM> to rotate, and operates the motor of the vacuum system <NUM> to generate the airflow. To cause the robot <NUM> to perform various navigational and cleaning behaviors, the controller <NUM> executes software stored on the memory storage element <NUM> to cause the robot <NUM> to perform by operating the various motors of the robot <NUM>. The controller <NUM> operates the various motors of the robot <NUM> to cause the robot <NUM> to perform the behaviors.

The sensor system can further include sensors for tracking a distance travelled by the robot <NUM>. For example, the sensor system can include encoders associated with the motors <NUM> for the drive wheels <NUM>, and these encoders can track a distance that the robot <NUM> has travelled. In some implementations, the sensor system includes an optical sensor facing downward toward a floor surface. The optical sensor can be an optical mouse sensor. For example, the optical sensor can be positioned to direct light through a bottom surface of the robot <NUM> toward the floor surface <NUM>. The optical sensor can detect reflections of the light and can detect a distance travelled by the robot <NUM> based on changes in floor features as the robot <NUM> travels along the floor surface <NUM>.

The controller <NUM> uses data collected by the sensors of the sensor system to control navigational behaviors of the robot <NUM> during the mission. For example, the controller <NUM> uses the sensor data collected by obstacle detection sensors of the robot <NUM>, e.g., the cliff sensors <NUM>, the proximity sensors 136a, 136b, 136c, and the bump sensors 139a, 139b, to enable the robot <NUM> to avoid obstacles within the environment of the robot <NUM> during the mission.

The sensor data can be used by the controller <NUM> for simultaneous localization and mapping (SLAM) techniques in which the controller <NUM> extracts features of the environment represented by the sensor data and constructs a map of the floor surface <NUM> of the environment. The sensor data collected by the image capture device <NUM> can be used for techniques such as vision-based SLAM (VSLAM) in which the controller <NUM> extracts visual features corresponding to objects in the environment and constructs the map using these visual features. As the controller <NUM> directs the robot <NUM> about the floor surface <NUM> during the mission, the controller <NUM> uses SLAM techniques to determine a location of the robot <NUM> within the map by detecting features represented in collected sensor data and comparing the features to previously stored features. The map formed from the sensor data can indicate locations of traversable and nontraversable space within the environment. For example, locations of obstacles are indicated on the map as nontraversable space, and locations of open floor space are indicated on the map as traversable space.

The sensor data collected by any of the sensors can be stored in the memory storage element <NUM>. In addition, other data generated for the SLAM techniques, including mapping data forming the map, can be stored in the memory storage element <NUM>. These data produced during the mission can include persistent data that are produced during the mission and that are usable during a further mission. For example, the mission can be a first mission, and the further mission can be a second mission occurring after the first mission. In addition to storing the software for causing the robot <NUM> to perform its behaviors, the memory storage element <NUM> stores sensor data or data resulting from processing of the sensor data for access by the controller <NUM> from one mission to another mission. For example, the map is a persistent map that is usable and updateable by the controller <NUM> of the robot <NUM> from one mission to another mission to navigate the robot <NUM> about the floor surface <NUM>.

The persistent data, including the persistent map, enables the robot <NUM> to efficiently clean the floor surface <NUM>. For example, the persistent map enables the controller <NUM> to direct the robot <NUM> toward open floor space and to avoid nontraversable space. In addition, for subsequent missions, the controller <NUM> is able to plan navigation of the robot <NUM> through the environment using the persistent map to optimize paths taken during the missions.

The robot <NUM> can, in some implementations, include a light indicator system <NUM> located on the top portion <NUM> of the robot <NUM>. The light indicator system <NUM> can include light sources positioned within a lid <NUM> covering the debris bin <NUM> (shown in <FIG>). The light sources can be positioned to direct light to a periphery of the lid <NUM>. The light sources are positioned such that any portion of a continuous loop <NUM> on the top portion <NUM> of the robot <NUM> can be illuminated. The continuous loop <NUM> is located on a recessed portion of the top portion <NUM> of the robot <NUM> such that the light sources can illuminate a surface of the robot <NUM> as they are activated.

Referring to <FIG>, an example communication network <NUM> is shown. Nodes of the communication network <NUM> include the robot <NUM>, a mobile device <NUM>, an autonomous mobile robot <NUM>, and a cloud computing system <NUM>. Using the communication network <NUM>, the robot <NUM>, the mobile device <NUM>, the robot <NUM>, and the cloud computing system <NUM> can communicate with one another to transmit data to one another and receive data from one another. In some implementations, the robot <NUM>, the robot <NUM>, or both the robot <NUM> and the robot <NUM> communicate with the mobile device <NUM> through the cloud computing system <NUM>. Alternatively or additionally, the robot <NUM>, the robot <NUM>, or both the robot <NUM> and the robot <NUM> communicate directly with the mobile device <NUM>. Various types and combinations of wireless networks (e.g., Bluetooth, radio frequency, optical based, etc.) and network architectures (e.g., mesh networks) may be employed by the communication network <NUM>.

In some implementations, the mobile device <NUM> as shown in <FIG> is a remote device that can be linked to the cloud computing system <NUM> and can enable the user <NUM> to provide inputs on the mobile device <NUM>. The mobile device <NUM> can include user input elements such as, for example, one or more of a touchscreen display, buttons, a microphone, a mouse, a keyboard, or other devices that respond to inputs provided by the user <NUM>. The mobile device <NUM> alternatively or additionally includes immersive media (e.g., virtual reality) with which the user <NUM> interacts to provide a user input. The mobile device <NUM>, in these cases, is, for example, a virtual reality headset or a head-mounted display. The user can provide inputs corresponding to commands for the mobile robot <NUM>. In such cases, the mobile device <NUM> transmits a signal to the cloud computing system <NUM> to cause the cloud computing system <NUM> to transmit a command signal to the mobile robot <NUM>. In some implementations, the mobile device <NUM> can present augmented reality images. In some implementations, the mobile device <NUM> is a smartphone, a laptop computer, a tablet computing device, or other mobile device.

In some implementations, the communication network <NUM> can include additional nodes. For example, nodes of the communication network <NUM> can include additional robots. Alternatively or additionally, nodes of the communication network <NUM> can include network-connected devices. In some implementations, a network-connected device can generate information about the environment <NUM>. The network-connected device can include one or more sensors to detect features in the environment <NUM>, such as an acoustic sensor, an image capture system, or other sensor generating signals from which features can be extracted. Network-connected devices can include home cameras, smart sensors, and the like.

In the communication network <NUM> depicted in <FIG> and in other implementations of the communication network <NUM>, the wireless links may utilize various communication schemes, protocols, etc., such as, for example, Bluetooth classes, Wi-Fi, Bluetooth-low-energy, also known as BLE, <NUM>. <NUM>, Worldwide Interoperability for Microwave Access (WiMAX), an infrared channel or satellite band. In some cases, the wireless links include any cellular network standards used to communicate among mobile devices, including, but not limited to, standards that qualify as <NUM>, <NUM>, <NUM>, or <NUM>. The network standards, if utilized, qualify as, for example, one or more generations of mobile telecommunication standards by fulfilling a specification or standards such as the specifications maintained by International Telecommunication Union. The <NUM> standards, if utilized, correspond to, for example, the International Mobile Telecommunications-<NUM> (IMT-<NUM>) specification, and the <NUM> standards may correspond to the International Mobile Telecommunications Advanced (IMT-Advanced) specification. Examples of cellular network standards include AMPS, GSM, GPRS, UMTS, LTE, LTE Advanced, Mobile WiMAX, and WiMAX-Advanced. Cellular network standards may use various channel access methods, e.g., FDMA, TDMA, CDMA, or SDMA.

The robot <NUM> can be controlled in certain manners in accordance with processes described herein. While some operations of these processes may be described as being performed by the robot <NUM>, by a user, by a computing device, or by another actor, these operations may, in some implementations, be performed by actors other than those described. For example, an operation performed by the robot <NUM> can be, in some implementations, performed by the cloud computing system <NUM> or by another computing device (or devices). In other examples, an operation performed by the user <NUM> can be performed by a computing device. In some implementations, the cloud computing system <NUM> does not perform any operations. Rather, other computing devices perform the operations described as being performed by the cloud computing system <NUM>, and these computing devices can be in direct (or indirect) communication with one another and the robot <NUM>. And in some implementations, the robot <NUM> can perform, in addition to the operations described as being performed by the robot <NUM>, the operations described as being performed by the cloud computing system <NUM> or the mobile device <NUM>. Other variations are possible. Furthermore, while the methods, processes, and operations described herein are described as including certain operations or sub-operations, in other implementations, one or more of these operation or sub-operations may be omitted, or additional operations or sub-operations may be added.

<FIG> illustrates a flowchart of a method to control an autonomous mobile robot in accordance with a behavior control zone. This method, and other examples of methods described herein, is described with respect to control of the robot <NUM>. In other implementations, other types of autonomous mobile robots may be controlled.

Referring to <FIG>, a process <NUM> includes operations <NUM>, <NUM>, and <NUM>. At the operation <NUM>, a behavior control zone is established. At the operation <NUM>, the robot <NUM> is controlled, e.g., to perform an autonomous operation in which the robot <NUM> navigates about the environment <NUM> and is responsive to the behavior control zone. For example, the drive system <NUM> (shown in <FIG>) of the robot <NUM> can be controlled to maneuver the robot <NUM> about the floor surface <NUM> (shown in <FIG>), and a behavior of the robot <NUM> can be initiated in response to determining, based on a signal indicative of a location of the robot <NUM> generated by the sensor system of the robot, that the robot is proximate the behavior control zone. At the operation <NUM>, the behavior control zone is updated, e.g., in response to a change in the environment <NUM>. Further examples of suboperations of the operations <NUM>, <NUM>, and <NUM> are described in connection with <FIG>, <FIG>, and <FIG>, respectively.

<FIG> illustrates an example process for the operation <NUM> in which the behavior control zone is established. At operations <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, mapping data is generated and transmitted to the mobile device <NUM> to allow the mobile device <NUM> to generate a representation of the environment <NUM>. At the operation <NUM>, the robot <NUM> generates mapping data of the environment <NUM>, and at an operation <NUM> the robot <NUM> transmits the mapping data to the cloud computing system <NUM>. At the operation <NUM>, the cloud computing system <NUM> receives the mapping data generated by the robot <NUM>. At the operation <NUM>, the cloud computing system <NUM> transmits the mapping data generated by the robot <NUM> to the mobile device <NUM>. And at the operation <NUM>, the mobile device <NUM> receives the mapping data generated by the robot <NUM>. This mapping data, as described with respect to an operation <NUM>, can be used by the mobile device <NUM> to generate a representation of the environment <NUM>.

In some implementations, at the operation <NUM>, the robot <NUM> can generate the mapping data during an autonomous cleaning operation. The mapping data can indicate portions of the floor surface <NUM> that the robot <NUM> can traverse and portions of the floor surface <NUM> that the robot <NUM> cannot traverse. The mapping data can be generated using the sensor system of the robot <NUM>. The sensor system can generate data indicative of locations of the robot <NUM> on the floor surface <NUM> as the robot <NUM> moves about the floor surface <NUM>, and the mapping data can be generated based on the data indicative of the location of the robot <NUM>. In some implementations, the sensor system of the robot <NUM> can be used to detect an obstacle on the floor surface <NUM> as the robot <NUM> moves about the surface. The mapping data generated by the robot can indicate a location of the obstacle on the surface. In some implementations, sensor data generated by the robot <NUM> and data produced by one or more network-connected devices in the environment <NUM> together form the mapping data. The network-connected devices can include cameras, optical sensors, ranging sensors, acoustic sensors, or other sensors that generate signals to be used to form a part of a map of the environment <NUM>.

In some implementations, the cloud computing system <NUM> can process the mapping data generated by the robot <NUM> such that the data transmitted by the cloud computing system <NUM> at the operation <NUM> and received by the mobile device <NUM> at the operation <NUM> differ from the mapping data generated by the robot <NUM> at the operation <NUM>. For example, the cloud computing system <NUM> can generate user interface data from the mapping data, and can then transmit the user interface data at the operation <NUM>. The user interface data can be generated using the mapping data generated by the robot <NUM> as well as data received from other network-connected devices. The user interface data can include categorizations of certain features identified in the environment <NUM>, e.g., furniture, floor surface types, or other features.

At the operation <NUM>, the mobile device <NUM> generates a map of the environment <NUM>. For example, the mobile device <NUM> generates the map based on the data received by the mobile device <NUM> at the operation <NUM> and presents the map on a display of the mobile device <NUM>. In some implementations, the data received at the mobile device <NUM> at the operation <NUM> can include data about features in the environment <NUM>, such as a floor surface type, obstacles, wall fixtures, appliances, and other features of the environment <NUM> detectable by the robot <NUM> and its sensor system.

<FIG> illustrates an example of a map <NUM> presented on the mobile device <NUM>. The map <NUM> includes a representation of a perimeter <NUM> of a portion of the floor surface <NUM> (shown in <FIG>) across which the robot <NUM> can traverse. An indicator <NUM> indicating a current location of the robot <NUM> is overlaid on the map <NUM>.

Labels 306a, 306b, 306c, 306d, 306e (collectively referred to as labels <NUM>) for rooms 308a, 308b, 308c, 308d, 308e (collectively referred to as rooms <NUM>), respectively, are overlaid on the map <NUM>. For example, a type of each room <NUM> can be identified based on one or more objects in each of the rooms <NUM>. Referring also to <FIG>, the rooms <NUM> includes a bedroom 308a, a bathroom 308b, an office 308c, a dining room 308d, and a kitchen 308e. The bedroom 308a can be identified based on the presence of objects typically found in bedrooms, such as a bed and end tables. The bathroom 308b can be identified based on the presence of objects typically found in bathrooms, such as a bathtub, a toilet, a sink, and a mirror. The office 308c can be identified based on the presence of objects typically found in offices, such as a desk and a computer. The dining room 308d can be identified based on the presence of objects typically found in dining rooms, such as a dining table and chairs. The kitchen 308e can be identified based on the presence of objects typically found in kitchens, such as a cabinets, a kitchen island, and a counter. In some implementations, the objects in the rooms <NUM> can be identified using the sensor system of the robot <NUM>, or using sensors from other network-connected devices in the environment <NUM>.

In some implementations, the mobile device <NUM> can present a request to the user <NUM> to provide a label to each of the rooms <NUM>. The rooms <NUM> can thus be manually provided with the labels <NUM> by the user <NUM>. In some implementations, the labels <NUM> are determined based on computer identification of objects in the rooms <NUM>.

As shown in <FIG>, the mobile device <NUM> can present indicators indicative of features of the environment <NUM>. For example, an indicator <NUM> can indicate a location of an area rug <NUM> (shown in <FIG>) located in the dining room 308d. An indicator <NUM> can indicate a location of a bed <NUM> (shown in <FIG>) located in the bedroom 308a. An indicator <NUM> can indicate a first floor type in the kitchen 308e, and an indicator <NUM> can indicate a second floor type in the kitchen 308e. For example, the portion of the floor surface <NUM> corresponding to the indicator <NUM> in the kitchen 308e can be a hardwood surface, while the portion of the floor surface <NUM> corresponding to the indicator <NUM> in the kitchen 308e can be a carpet surface. In some implementations, other indicators indicative of other objects and features in the environment <NUM> can be shown overlaid on the map <NUM>. For example, the indicators can be indicative of other furniture in the environment <NUM>, of detectable features on walls of the environment <NUM>, of other floor types in environment <NUM>, or of other features in the environment <NUM>.

Referring back to <FIG>, at an operation <NUM>, the user <NUM> provides an input to establish a behavior control zone. The user <NUM> can operate the mobile device <NUM> to provide the input, e.g., operate a user input device of the mobile device <NUM>, such as a touchscreen, one or more buttons on the mobile device <NUM>, a voice command, a gesture, or other user input device. Referring also to <FIG>, the mobile device <NUM> can present the map <NUM> and request that the user <NUM> define a behavior control zone using the map <NUM>. In some implementations, to define the behavior control zone, the user <NUM> can select one of the indicators presented on the mobile device <NUM> to define an area associated with the indicator to be a behavior control zone. The user <NUM> can select a portion of the map <NUM> proximate to an indicator to define a behavior control zone associated with the indicator. For example, referring also to <FIG>, a behavior control zone <NUM> corresponding to a location of the bed <NUM> in the bedroom 308a can be defined by selecting the indicator <NUM> presented on the mobile device <NUM>. Alternatively or additionally, the user <NUM> can manually select an area on the map <NUM> to define a behavior control zone. For example, if the mobile device <NUM> includes a touchscreen, the user <NUM> can interact with the touchscreen to define a behavior control zone by drawing shapes on the touchscreen.

At operations <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> the input provided by the user <NUM> is used to generate instructions to provide to the robot <NUM>. In particular, at the operation <NUM>, the mobile device <NUM> receives the input provided by the user <NUM> at the operation <NUM>. The mobile device <NUM> can generate data indicative of the behavior control zone <NUM>. For example, the data can be indicative of a location or a perimeter of the behavior control zone <NUM>. At the operation <NUM>, the mobile device <NUM> transmits data indicative of the behavior control zone <NUM> to the cloud computing system <NUM>. At the operation <NUM>, the cloud computing system <NUM> receives the data indicative of the behavior control zone <NUM>. At the operation <NUM>, the cloud computing system <NUM> transmits the data indicative of the behavior control zone to the robot <NUM>. At the operation <NUM>, the robot <NUM> receives the data indicative of the behavior control zone <NUM>.

At operations <NUM>, <NUM>, <NUM>, the behavior control zone <NUM> is confirmed. After receiving the data indicative of the behavior control zone <NUM>, at the operation <NUM>, the robot <NUM> confirms the behavior control zone <NUM>. The robot <NUM> can provide feedback indicating that the robot <NUM> received the data indicative of the behavior control zone <NUM>.

The robot <NUM> can also confirm a location or a perimeter of the behavior control zone <NUM>. In some implementations, the robot <NUM> confirms the location or the perimeter of the behavior control zone <NUM> by performing a confirmation movement. In the example shown in <FIG>, the robot <NUM> moves relative to the behavior control zone <NUM> in a manner indicating the location of the behavior control zone <NUM>. In response to receiving the data indicative of the behavior control zone <NUM>, the robot <NUM> moves from its location <NUM> to a location <NUM>. The location <NUM> can be proximate to the behavior control zone <NUM>, in the behavior control zone <NUM>, or along a perimeter of the behavior control zone <NUM>. In some implementations, the robot <NUM> follows a path along the floor surface <NUM> to confirm the location or the perimeter of the behavior control zone <NUM>. For example, the robot <NUM> can follow a path along a portion of the perimeter of the behavior control zone <NUM>. In some implementations, the path can extend through a portion of the behavior control zone <NUM>. The portion of the behavior control zone <NUM> can be an interior of the behavior control zone <NUM>, or a portion of the perimeter of the behavior control zone <NUM>.

In some implementations, the robot <NUM> can provide a visual or audible indication of receipt of the data indicative of the behavior control zone <NUM>. In some implementations, after completing the confirmation movement, the robot <NUM> can provide a visual or audible indication that the confirmation movement is complete. The visual or audible indication can indicate that a request for a user confirmation is pending. For example, in some implementations, the light indicator system <NUM> (shown in <FIG>) can be activated in response to the behavior control zone <NUM> being established or to indicate that the robot <NUM> has confirmed the behavior control zone <NUM>.

After the robot <NUM> confirms the behavior control zone <NUM>, the mobile device <NUM> at the operation <NUM> requests confirmation from the user <NUM> of the behavior control zone <NUM> to establish the behavior control zone <NUM>. The robot <NUM>, for example, can transmit to the mobile device <NUM> data indicating that the robot <NUM> has completed its confirmation movement. Referring to <FIG>, the mobile device <NUM> can present a request for confirmation by the user <NUM>, in which the mobile device <NUM> presents the map <NUM> and presents an indicator <NUM> that highlights an area of the floor surface <NUM> where the behavior control zone <NUM> (shown in <FIG>) is to be established. The indicator <NUM>, for example, can be identical to the indicator <NUM> (shown in <FIG>) corresponding to the bed <NUM> (shown in <FIG>) except that the indicator <NUM> has a different color, pattern, or other visual characteristic distinct from visual characteristics of the indicator <NUM>.

At the operation <NUM>, the user <NUM> can confirm the behavior control zone. For example, as shown in <FIG>, the mobile device <NUM> can present a "confirm" button <NUM>. The user <NUM> can view the robot <NUM> in the environment <NUM> to visually confirm the position of the robot <NUM> and hence a location of the behavior control zone <NUM>. The user <NUM> can select the "confirm" button <NUM> to provide the confirmation of the behavior control zone <NUM>. After the user <NUM> confirms the behavior control zone <NUM>, data indicative of the behavior control zone <NUM> can be stored on one or more of the mobile device <NUM>, the cloud computing system <NUM>, or the robot <NUM>.

Referring back to <FIG>, after the behavior control zone <NUM> is established at the operation <NUM> (e.g., after completion of the operations described in connection with <FIG>), the robot <NUM> can be controlled to initiate a behavior in response to determining that the robot <NUM> is proximate to or within the behavior control zone <NUM>. For example, the robot <NUM> can initiate an autonomous cleaning operation in which the robot <NUM> moves about the environment <NUM> to clean the floor surface <NUM>. During the autonomous cleaning operation, the robot <NUM> can initiate a behavior in response to determining that the robot <NUM> is proximate to or within the behavior control zone <NUM>. The robot <NUM> can determine that the robot is proximate or within the behavior control zone <NUM> based on signals generated by the sensor system of the robot <NUM>.

<FIG> illustrates an example of operations performed as part of the operation <NUM> to control the robot <NUM>. At an operation <NUM>, the robot <NUM> initiates maneuvering about the environment <NUM>. For example, the robot <NUM> can initiate the autonomous cleaning operation in which the robot <NUM> autonomously maneuvers about the floor surface <NUM> while cleaning the floor surface using its vacuum system <NUM> and cleaning assembly <NUM> (shown in <FIG>). To cover a traversable portion of the floor surface <NUM>, the robot <NUM> can initiate various movement behaviors during the autonomous cleaning operation. The movement behaviors can include, for example, a cornrow behavior in which the robot <NUM> moves in parallel rows across a portion of the floor surface and an obstacle-following behavior in which the robot <NUM> follows a perimeter of an obstacle <FIG> illustrates a movement path <NUM> as the robot <NUM> conducts an autonomous cleaning operation in which the robot <NUM> moves about the environment <NUM> to clean the floor surface <NUM>.

Referring back to <FIG>, during the autonomous cleaning operation, the robot <NUM> determines that it is proximate to the behavior control zone <NUM> at an operation <NUM> and then initiates the behavior at an operation <NUM> in response to determining that the robot is proximate to the behavior control zone <NUM>. The user <NUM> can set the behavior control zone <NUM> to prevent the robot <NUM> from moving under the bed <NUM> (shown in <FIG>) during the autonomous cleaning operation. The robot <NUM> can determine that it is proximate to the behavior control zone <NUM> using the sensor system of the robot <NUM>. For example, the robot <NUM> can track its location using the sensor system and determine when its current location is proximate to the behavior control zone <NUM>. In some implementations, if the behavior control zone <NUM> is associated with an object in the environment <NUM>, the robot <NUM> can detect the object to determine that the robot <NUM> is proximate to the behavior control zone <NUM>. In implementations in which the behavior control zone <NUM> is associated with the bed <NUM> (as shown in <FIG>), to determine that the robot <NUM> is proximate to the behavior control zone <NUM>, the robot <NUM> can detect the bed <NUM> using one or more sensors of the sensor system of the robot <NUM>.

<FIG> illustrates an example of the behavior control zone <NUM> in which the behavior that the robot <NUM> initiates in response to detecting the behavior control zone <NUM> corresponds to a keep-out behavior. In the keep-out behavior, the robot <NUM> avoids entering the behavior control zone <NUM>. As shown in <FIG>, the robot <NUM> can treat the behavior control zone <NUM> as an obstacle. Accordingly, the robot <NUM> can initiate an obstacle-following behavior in response to determining that the robot <NUM> is proximate to the behavior control zone <NUM>. In the obstacle-following behavior, the robot <NUM> moves along a perimeter of the behavior control zone <NUM> and hence along a perimeter of the bed <NUM>.

Referring back to <FIG>, the robot <NUM> can activate an indicator at an operation <NUM> to indicate the robot <NUM> is performing the behavior responsive to detecting the behavior control zone <NUM>. For example, the robot <NUM> can activate the light indicator system <NUM> (shown in <FIG>) to illuminate at least a portion of the continuous loop <NUM> (shown in <FIG>) in response to the robot <NUM> being proximate the behavior control zone <NUM>. The illuminated portion can indicate a direction of the behavior control zone <NUM> relative to the robot <NUM>.

At operations <NUM>, <NUM>, <NUM>, <NUM> and <NUM>, the robot <NUM> can transmit data to cause the mobile device <NUM> to provide an indication to the user <NUM> that the robot <NUM> initiated the behavior in response to detecting the behavior control zone <NUM>. The robot <NUM> can transmit data indicating that the behavior was initiated at the operation <NUM>. At the operation <NUM>, the cloud computing system <NUM> receives the data transmitted by the robot <NUM> at the operation <NUM>. At the operation <NUM>, the cloud computing system <NUM> transmits the data to the mobile device <NUM>, and at the operation <NUM>, the mobile device <NUM> receives the data. At the operation <NUM>, the mobile device <NUM> provides the indication to the user <NUM> to indicate that the behavior associated with the behavior control zone <NUM> was initiated by the robot <NUM>. For example, referring to <FIG>, the mobile device <NUM> can present the map <NUM> with the indicator <NUM>, an indicator <NUM> of the robot <NUM>, and an indicator <NUM> of a path of the robot <NUM>. The indicator <NUM> can show a path indicating that the robot <NUM> initiated the behavior to move along the path to avoid the behavior control zone <NUM>. In addition, the mobile device <NUM> can present a message <NUM> indicating that the robot <NUM> encountered the behavior control zone <NUM>.

In some implementations, the indication provided to the user <NUM> at the operation <NUM> can be part of a presentation of a mission status for the autonomous cleaning operation. In this regard, the mobile device <NUM> can provide information pertaining to a duration of the autonomous cleaning operation as well as information pertaining to whether the behavior control zone <NUM> was encountered during the autonomous cleaning operation, and how many times the behavior control zone <NUM> was encountered during the autonomous operation. In implementations in which multiple behavior control zones are established, the mobile device <NUM> can present information to the user <NUM> indicating which of the behavior control zones were encountered.

Referring back to <FIG>, the behavior control zone <NUM> can be updated at the operation <NUM>, for example, in response to a change in the environment <NUM>. For example, the behavior control zone <NUM> can be updated in response to movement of an object in the environment <NUM> associated with the behavior control zone <NUM> or removal of an object associated with the behavior control zone <NUM>.

<FIG> illustrates an example process for the operation <NUM> in which the behavior control zone <NUM> is updated. At an operation <NUM>, the robot <NUM> generates mapping data. The robot <NUM> can generate the mapping data during an autonomous cleaning operation. This autonomous cleaning operation can be the first autonomous cleaning operation performed after the behavior control zone <NUM> is established or can be a subsequent autonomous cleaning operation performed after the first autonomous cleaning operation. The mapping data can be generated using the sensor system of the robot <NUM> in a manner similar to that described with respect to the operation <NUM> of <FIG>.

At an operation <NUM>, the cloud computing system <NUM> compares the mapping data generated at the operation <NUM> with previously generated mapping data, e.g., the mapping data generated at the operation <NUM> or mapping data generated during another autonomous cleaning operation. The robot <NUM> can transmit the mapping data to the cloud computing system <NUM> after generating the mapping data at the operation <NUM>. From comparing the mapping data generated at the operation <NUM> with the previously stored mapping data, the cloud computing system <NUM> can determine whether the behavior control zone <NUM> established at the operation <NUM> has moved. In particular, if a location of an object associated with the behavior control zone <NUM> in the mapping data generated at the operation <NUM> differs from a location of the object in the previously stored mapping data, the cloud computing system <NUM> can determine that the behavior control zone <NUM> has moved.

<FIG> illustrates an example in which the behavior control zone <NUM> is updated. The behavior control zone <NUM> can be updated in response to movement of the bed <NUM> from its original location to a new updated location. Because the bed <NUM> is associated with the behavior control zone <NUM>, the location of the behavior control zone <NUM> is updated from its original location 318a, where the behavior control zone <NUM> covered a first portion of the floor surface <NUM>, to the updated location 318b, where the behavior control zone <NUM> covers a second portion of the floor surface <NUM>.

After determining from the mapping data that the behavior control zone should be updated, at an operation <NUM>, the cloud computing system <NUM> can update the behavior control zone <NUM>. In particular, the cloud computing system <NUM> can update a location of the behavior control zone <NUM>. At an operation <NUM>, the mobile device <NUM> can present an indication that the behavior control zone <NUM> was updated.

<FIG> illustrates an example of an indication presented on the mobile device <NUM> to indicate that the behavior control zone <NUM> has been updated. An indicator <NUM> overlaid on the map <NUM> indicates an old location of the behavior control zone <NUM> covering a first portion of the floor surface <NUM> (shown in <FIG>), and an indicator <NUM> overlaid on the map <NUM> indicates a new location of the behavior control zone <NUM> (shown in <FIG>) covering a second portion of the floor surface <NUM>. The mobile device <NUM> can further present a message <NUM> indicating that the behavior control zone <NUM> has been updated. In some implementations, the mobile device <NUM> can present a request for confirmation of the proposed update to the behavior control zone <NUM> before updating the behavior control zone <NUM> as stored in the cloud computing system <NUM> or the robot <NUM>.

A number of implementations, including alternative implementations, have been described. Nevertheless, it will be understood that further alternative implementations are possible, and that various modifications may be made.

The behavior that the robot <NUM> initiates in response to determining that the robot <NUM> is proximate to a behavior control zone can vary in implementations. For example, as described with respect to <FIG> and <FIG>, in some implementations, the behavior control zone <NUM> can be a keep-out zone to ensure that the robot <NUM> does not enter the behavior control zone <NUM> during the autonomous cleaning operation. In some implementations, the robot <NUM> can initiate a behavior in which the robot <NUM> enters the behavior control zone but performs a cleaning operation at settings different from its settings outside of the behavior control zone. The robot <NUM> can adjust a vacuum power delivered to the vacuum system <NUM> (shown in <FIG>) of the robot <NUM>, adjust a movement speed of the robot <NUM>, adjust a movement direction of the robot <NUM>, or adjust an orientation of the robot <NUM> relative to the behavior control zone. To set the specific behavior that the robot initiates in response to determining that the robot <NUM> is proximate to the behavior control zone, the user <NUM> can operate the mobile device <NUM>, e.g., during the operation <NUM> to establish the behavior control zone. For example, when the user <NUM> provides the input to establish the behavior control zone at the operation <NUM>, the user <NUM> can also select a behavior that the robot <NUM> is to initiate in response to detecting the behavior control zone.

In some implementations, the behavior control zone can be selected to cause the robot <NUM> to initiate a focused cleaning behavior in response to determining that the robot <NUM> is proximate to the behavior control zone. The robot <NUM> performs the focused cleaning behavior as the robot <NUM> moves through an interior of the behavior control zone. The robot <NUM> can adjust a vacuum power delivered to the vacuum system <NUM> (shown in <FIG>). In particular, a vacuum power delivered to the vacuum system <NUM> of the robot <NUM> as the robot <NUM> traverses the behavior control zone can be greater than a vacuum power delivered to the vacuum system <NUM> as the robot traverses a portion of the floor surface <NUM> outside the behavior control zone. In some implementations, in the focused clean behavior, the robot <NUM> can adjust a movement speed of the robot <NUM>. The robot <NUM> can decrease a movement speed of the robot <NUM> relative to a movement speed of the robot <NUM> as the robot <NUM> traverses a portion of the floor surface <NUM> outside of the behavior control zone. Alternatively or additionally, in the focused cleaning behavior, the robot <NUM> can adjust a movement pattern of the robot <NUM>. The robot <NUM> can move in a spiral pattern, a cornrow pattern, or other appropriate movement pattern within the behavior control zone.

<FIG> illustrates an example in which a behavior control zone is set to cause the robot <NUM> to initiate a focused cleaning behavior. In this example, a behavior control zone <NUM> associated with the area rug <NUM> is established, e.g., at the operation <NUM> (described with respect to <FIG>). The robot <NUM>, in an autonomous cleaning operation, initiates a behavior upon entering the behavior control zone <NUM>. The behavior can be a focused cleaning behavior as described herein. For example, a movement pattern of the robot <NUM> can be adjusted. The robot <NUM> can move in a cornrow pattern <NUM> in the behavior control zone <NUM> with rows that are more closely spaced together than rows of a cornrow pattern <NUM> outside of the behavior control zone <NUM>. The robot <NUM> can, in some cases, move in a movement pattern in which the robot <NUM> moves over the same portion of the floor surface <NUM> multiple times. Alternatively or additionally, the robot <NUM> can increase the vacuum power delivered to its vacuum system and/or decrease its movement speed as the robot <NUM> traverses the behavior control zone <NUM>. The behavior control zone <NUM> can allow the robot <NUM> to more effectively clean the area rug <NUM>.

<FIG> illustrates an example in which a behavior control zone is set to cause the robot <NUM> to move through a behavior control zone at an angle. In this example, a behavior control zone <NUM> can be associated with a threshold between the kitchen 308e and the dining room 308d. The robot <NUM>, in an autonomous cleaning operation, initiates a behavior in response to being proximate to the behavior control zone <NUM>. The threshold between the kitchen 308e and the dining room 308d can be more easily traversed by the robot <NUM> if the robot <NUM> moves across the threshold at an angle. In this regard, a movement angle of the robot <NUM> relative to the behavior control zone <NUM> can be adjusted before the robot <NUM> traverses the behavior control zone <NUM>. The robot <NUM> can move at an angle relative to the behavior control zone <NUM> and hence at an angle relative to the threshold between the kitchen 308e and the dining room 308d.

In some implementations, the behavior control zone is a keep-out zone, and the robot <NUM> becomes positioned within the behavior control zone. For example, the robot <NUM> can be placed manually in the behavior control zone by a user, or the robot <NUM> can autonomously move into the behavior control zone. In examples in which the robot <NUM> autonomously moves into the behavior control zone, the robot <NUM> may initiate an escape behavior in which the robot <NUM> follows a path to move out of the behavior control zone. Referring to <FIG>, the robot <NUM> is positioned within the behavior control zone <NUM>. The robot <NUM> moved into the behavior control zone during an autonomous cleaning operation. In determining its location using the sensor system, the robot <NUM> determines that it moved into the behavior control zone without triggering the behavior to be initiated in response to the robot <NUM> being proximate to the behavior control zone <NUM> (described in connection with the operations <NUM>, <NUM> of <FIG>). Such a circumstance could occur due to sensor error or other sources of error for estimating a location of the robot <NUM> within the environment <NUM>.

In response to detecting that the robot <NUM> is within the behavior control zone <NUM>, the robot <NUM> can be maneuvered along a path <NUM> out of the behavior control zone <NUM>. The path <NUM> can correspond to the path that the robot <NUM> followed to enter into the behavior control zone. The robot <NUM> moves along the path <NUM> in a first direction to enter into the behavior control zone <NUM>, and moves along the path <NUM> in a second direction out of the behavior control zone <NUM>.

In some implementations, the robot <NUM> is within the behavior control zone <NUM> and determines that the robot <NUM> did not autonomously move into the behavior control zone <NUM> but rather was manually placed in the behavior control zone <NUM>, e.g., by a user. In such a circumstance, in response to detecting the robot <NUM> is within the behavior control zone <NUM>, an initiation of an operation of the robot <NUM> can be prevented. For example, if the user <NUM> attempts to initiate an autonomous cleaning operation or other operation in which the robot <NUM> moves, the operation is prevented in response to detecting that the robot <NUM> is within the behavior control zone <NUM>.

As described herein, a behavior control zone can have a perimeter, and the behavior of the robot <NUM> can be triggered in response to being proximate to the perimeter of behavior control zone or to being within the perimeter of behavior control zone. In some implementations, the robot <NUM> initiates the behavior in response to being within a buffer zone around the behavior control zone. Referring to <FIG>, a buffer zone <NUM> is positioned around the behavior control zone <NUM>. The robot <NUM> can be responsive to being within the buffer zone <NUM> to ensure that the robot <NUM> does not, due to localization uncertainty, enter into the behavior control zone <NUM>. In some implementations, absent a buffer zone, an uncertainty associated with estimating a location of the robot <NUM> can result in the robot <NUM> entering the behavior control zone <NUM> without determining that the robot <NUM> is proximate or within the behavior control zone <NUM>. A size of the buffer zone <NUM> can be selected based on an uncertainty associated with the estimations of the location of the robot <NUM>. An uncertainty associated with data indicative of locations of the robot <NUM> can be estimated, and the size of the buffer zone <NUM> can be selected based on this estimated uncertainty. In some implementations, the size of the buffer zone <NUM> is proportional to the estimated uncertainty and can change as the estimated uncertainty changes.

In some implementations, rather than being proportional to the estimated uncertainty or being selected based on the estimated uncertainty, the buffer zone <NUM> is selected by the user <NUM> using, for example, the mobile device <NUM>. For example, the user <NUM> can select a size of the buffer zone <NUM> using the mobile device <NUM>.

The robot <NUM> is described as a vacuum cleaning robot. Other types of robots can be used in certain implementations. In some implementations, behavior control zones are used in connection with an autonomous mopping robot. For example, referring to <FIG>, the robot <NUM> and the robot <NUM> (e.g., described in connection with <FIG>) are located in the environment <NUM>. The robot <NUM> is a vacuum cleaning robot as described herein. The autonomous mobile robot <NUM> is an autonomous mopping robot. The robot <NUM> can carry a cleaning pad configured to wipe the floor surface <NUM> as the robot <NUM> moves about the floor surface <NUM>. The robot <NUM> can also apply fluid onto the floor surface <NUM>, e.g., by spraying fluid onto the floor surface <NUM>. For focused cleaning modes, the robot <NUM> can press the cleaning pad more firmly onto a portion of the floor surface <NUM>, can spray more water onto the portion of the floor surface <NUM>, or pass over the portion of the floor surface multiple times.

A behavior control zone can be set such that the robot <NUM> and the robot <NUM> respond differently to being proximate to the behavior control zone. For example, the floor surface <NUM> in the kitchen 308e can have two different floor types: a carpet portion <NUM> and a hardwood portion <NUM>. A behavior control zone <NUM> for the carpet portion <NUM> of the floor surface <NUM> can be established, e.g., in accordance with the operations described respect to <FIG>.

Because the robot <NUM> is a vacuum cleaning robot and the robot <NUM> is a mopping robot, the behavior control zone <NUM> corresponding to the hardwood portion <NUM> of the floor surface <NUM> is established such that the robot <NUM> can enter and clean the behavior control zone <NUM> while the robot <NUM> avoids entering the behavior control zone <NUM>. In this regard, the behavior control zone <NUM> is treated as a keep-out zone by the robot <NUM>. In some implementations, the behavior control zone <NUM> is ignored by the robot <NUM>. In some implementations, the behavior control zone <NUM> is treated as a focused cleaning zone by the robot <NUM>.

In some implementations, referring to <FIG>, the mobile device <NUM> presents, on the map <NUM>, an indicator <NUM> indicating the bounds of a behavior control zone. Referring briefly back to <FIG>, the behavior control zone corresponding to the indicator <NUM> can be an area under a dining table <NUM> in the dining room 308d. In some implementations, referring to <FIG>, in an augmented reality mode, an image <NUM> of the environment <NUM> can be presented on the mobile device <NUM>, and an indicator <NUM> indicative of the behavior control zone is overlaid on the image <NUM> of the environment <NUM>. In some implementations, the mobile device <NUM> can present a "confirm" button <NUM> to allow the user <NUM> to confirm the behavior control zone shown in the image <NUM>. The user <NUM> can select the "confirm" button <NUM> to provide confirmation of the behavior control zone as described herein.

In some implementations, the user <NUM> can select the behavior control zone, in the augmented reality mode, by selecting portions of the image <NUM>. For example, the user <NUM> could select an object represented in the image <NUM>, such as the dining table <NUM>. If the representation of the dining table <NUM> is selected, for example, a behavior control zone, such as the one represented by the indicator <NUM> can be established. In some implementations, as shown in <FIG>, in the augmented reality mode, the user <NUM> can draw the behavior control zone in the augmented reality mode. The user <NUM> can select one or more locations on the image <NUM> to establish the behavior control zone. The user <NUM> can, for example, select points <NUM> along a representation <NUM> of a boundary of the behavior control zone. Alternatively, the user <NUM> can select a point and then, for example, using a touch screen of the mobile device <NUM>, drag their digit to define a region defining the behavior control zone.

In some implementations, a behavior control zone manually selected by a user can be adjusted by a computing system to conform to features in the environment. For example, referring to <FIG>, the user <NUM> defines a behavior control zone <NUM> manually. The user <NUM> can define the behavior control zone <NUM> to cover a region <NUM> in a corner of a room. The manually defined behavior control zone <NUM> may not cover an entirety of the region, due to, for example, user error or imprecision. Referring to <FIG>, the behavior control zone <NUM> is updated to conform to geometry of the region <NUM> in the corner of the room. Edges of the behavior control zone <NUM> can be updated to align with edges of walls of the room and edges with an obstacle in the room. The edges of the behavior control zone <NUM> can be updated to align with edges of nontraversable portions of the environment, such as walls and obstacles. Based on the user's initial definition of the behavior control zone <NUM> and based on features in the environment proximate to the behavior control zone <NUM>, the mobile device <NUM> (or other device) can determine the user's intended scope for the behavior control zone <NUM>. The user <NUM> can confirm the updated behavior control zone <NUM> by selecting a confirm button <NUM>. In some implementations, a user defines a behavior control zone to cover an area rug or other feature in an interior portion of a room. This feature may be surrounded by traversable area. The edges of the behavior control zone can be updated to match edges of the feature in the interior portion of the room.

In further examples, referring to <FIG>, the user <NUM> can manually define a behavior control zone <NUM> that inadvertently spans multiple rooms, e.g., a first room <NUM> and a second room <NUM>. The mobile device <NUM> (or other device) can determine the user's intended scope for the behavior control zone <NUM> and determine that the user <NUM> intended to only define the behavior control zone <NUM> to span the first room <NUM>. For example, the mobile device <NUM> may determine that the portion of the behavior control zone <NUM> in the first room <NUM> is more than <NUM>%, <NUM>%, or <NUM>% of the total area covered by the behavior control zone <NUM>. Alternatively, the mobile device <NUM> may determine that the portion of the behavior control zone in the second room <NUM> is less than <NUM>%, <NUM>%, or <NUM>% of the total area covered by the behavior control zone <NUM>. In this regard, referring to <FIG>, the mobile device <NUM> can update the behavior control zone <NUM> to snap to features of the first room <NUM> such that the behavior control zone <NUM> extends through only the first room <NUM> and not the second room <NUM>. For example, the behavior control zone <NUM> can snap to walls or other obstacles in the first room <NUM>. The user <NUM> can confirm the updated behavior control zone <NUM> by selecting a confirm button <NUM>.

In further examples, referring to <FIG>, the user <NUM> can manually define a behavior control zone <NUM> that would prevent the robot <NUM> from traversing through a portion of the environment. Referring to <FIG>, the mobile device <NUM> can present an indicator <NUM> representing the portion of the environment that would be untraversable by the robot <NUM>. The mobile device <NUM> can further present a warning <NUM> indicating to the user <NUM> that the robot <NUM> would be unable to reach a room or a portion of a room with the behavior control zone <NUM> defined in the manner proposed by the user <NUM>. The user <NUM> can confirm the selection by pressing a confirm button <NUM>, or otherwise return to the step of defining the behavior control zone <NUM> again to redefine the behavior control zone <NUM>. In some implementations, the mobile device <NUM> (or other device) can recommend a behavior control zone that would not prevent the robot <NUM> from reaching certain parts of the environment.

The robots and techniques described herein, or portions thereof, can be controlled by a computer program product that includes instructions that are stored on one or more non-transitory machine-readable storage media, and that are executable on one or more processing devices to control (e.g., to coordinate) the operations described herein. The robots described herein, or portions thereof, can be implemented as all or part of an apparatus or electronic system that can include one or more processing devices and memory to store executable instructions to implement various operations.

Operations associated with implementing all or part of the robot operation and control described herein can be performed by one or more programmable processors executing one or more computer programs to perform the functions described herein. For example, the mobile device, a cloud computing system configured to communicate with the mobile device and the autonomous cleaning robot, and the robot's controller may all include processors programmed with computer programs for executing functions such as transmitting signals, computing estimates, or interpreting signals.

The controllers and mobile devices described herein can include one or more processors. Generally, a processor will receive instructions and data from a read-only storage area or a random access storage area or both. Elements of a computer include one or more processors for executing instructions and one or more storage area devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from, or transfer data to, or both, one or more machine-readable storage media, such as mass PCBs for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Machine-readable storage media suitable for embodying computer program instructions and data include all forms of non-volatile storage area, including by way of example, semiconductor storage area devices, e.g., EPROM, EEPROM, and flash storage area devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

Claim 1:
An autonomous mobile robot (<NUM>) comprising:
a drive system (<NUM>) to support the robot above a surface (<NUM>), the drive system operable to navigate the robot about the surface;
a sensor system configured to generate a signal indicative of a location of the robot on the surface;
a controller (<NUM>) operably connected to the drive system and the sensor system, the controller configured to execute instructions to perform operations comprising:
establishing a behavior control zone (<NUM>; <NUM>; <NUM>; <NUM>; <NUM>) on the surface,
controlling the drive system, in response to establishing a behavior control zone on the surface, to maneuver the robot to a location of the behavior control zone on the surface, and
maneuvering, using the drive system, the robot about the surface and initiating a behavior in response to determining, based on the signal indicative of the location of the robot, that the robot is proximate the behavior control zone,
characterized in that:
establishing the behavior control zone includes confirming the behavior control zone by moving to the behavior control zone after receiving data indicative of the behavior control zone.