Patent Description:
Autonomous mobile robots can be operated to autonomously perform a task in an environment. For example, autonomous robotic lawnmowers are types of autonomous mobile robots. An autonomous robotic lawnmower can autonomously mow a lawn and then return to a docking station to charge a battery of the autonomous robotic lawnmower.

<CIT>discloses a method of mapping an area to be mowed with an autonomous mowing robot comprises receiving mapping data from a robot lawnmower including provided suggested beacon positions for display on a map image.

<CIT>discloses various mapping techniques for robot lawnmowers.

<CIT> discloses a work are determination system for an autonomous traveling work machine.

A user device, such as a smartphone or a tablet computer, can provide a user with information pertaining to operations of an autonomous robotic lawnmower to assist the user with monitoring the operations of the robotic lawnmower and with setting up the autonomous robotic lawnmower. For example, the user device can present example lawn shapes and recommended locations of beacons suitable for these lawn shapes, can indicate the quantity of beacons detected by the autonomous robotic lawnmower, can be used to establish a region on a lawn where the autonomous robotic lawnmower performs a particular behavior, can be used to select a grass height that the autonomous robotic lawnmower cuts the lawn, and can be taught a particular path to take when returning to a docking station to charge the autonomous robotic lawnmower.

The present invention relates to a method as set out in claim <NUM>, a mobile device as set out in claim <NUM>, and a computer program product as set out in claim <NUM>.

According to the invention, a method includes presenting, on a user interface of a mobile device in communication with an autonomous robotic lawnmower, a representation of a first potential shape of a lawn, and first indicators of first recommended locations for beacons configured to communicate with the autonomous robotic lawnmower, and presenting, on the user interface, a representation of a second potential shape of the lawn, and second indicators of second recommended locations for the beacons.

In some implementations, the first indicators can be positioned along a perimeter of the representation of the first potential shape of the lawn, and the second indicators can be positioned along a perimeter of the representation of the second potential shape of the lawn.

In some implementations, the first indicators can be overlaid on the representation of the first potential shape of the lawn, and the second indicators can be overlaid on the representation of the second potential shape of the lawn.

In some implementations, the method can further include presenting a third indicator of a first recommended location of a docking station for the autonomous robotic lawnmower, the third indicator overlaid on the representation of the first potential shape of the lawn, and presenting a fourth indicator of a second recommended location of the docking station for the autonomous robotic lawnmower, the fourth indicator overlaid on the representation of the second potential shape of the lawn.

In some implementations, a quantity of the first indicators can be based on the first potential shape of the lawn, and a quantity of the second indicators can be based on the second potential shape of the lawn.

Advantages of the foregoing and of the implementations described herein may include, but are not limited to, those described below and herein elsewhere.

First, the implementations described herein can improve the performance of the robotic lawnmower. For example, the beacons detected by and used by the robotic lawnmower can be placed in positions that allow the robotic lawnmower to more easily determine its location on the lawn. This in turn can allow the robotic lawnmower to more efficiently mow the lawn. Furthermore, the beacons can be placed about the lawn in a more efficient manner. For example, the user device can provide guidance to the user to place the beacons about the lawn without using an excessive number of beacons.

In some implementations, the user can exercise more control over the mowed grass height of the lawn. The robotic lawnmower can cut the grass on the lawn to a height selected by the user, e.g., using the user device. Implementations of certain methods and systems described herein can allow the user to select the grass height to which the autonomous robotic lawnmower cuts the lawn without having to manually adjust the blade height of the autonomous robotic lawnmower.

In some implementations, the robotic lawnmower can be taught paths along which to travel to allow the autonomous robotic lawnmower to more efficiently travel around the lawn. For example, certain parts of the autonomous robotic lawnmower's travel could benefit from the autonomous robotic lawnmower moving to certain positions or moving at certain angles. The taught paths can allow the autonomous robotic lawnmower to achieve this precision.

Second, the implementations described herein can improve the user's ability to monitor and control the operations of the robotic lawnmower. The user device can provide the user with information pertaining to the beacons detectable by the robotic lawnmower. The user can monitor the number of beacons that the robotic lawnmower detects as the autonomous robotic lawnmower travels the lawn. Furthermore, the user can use the user device to control the behaviors of the robotic lawnmower, particularly when the robotic lawnmower travels to certain user-selected regions on the lawn.

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

<FIG> illustrates an autonomous robotic lawnmower system <NUM> in which a user <NUM> can operate one or more user devices to monitor and control an autonomous robotic lawnmower <NUM> and its operations, and to receive guidance from the one or more user devices for operating and controlling the robotic lawnmower <NUM>. The one or more user devices can include a user device <NUM> and a user device <NUM>. In the example shown in FIG. <NUM>, the user device <NUM> is a smartphone, and the user device <NUM> is a remote control. Referring to <FIG>, the robotic lawnmower <NUM> can move about a mowable area <NUM> to cut grass on the mowable area <NUM>, e.g., a lawn, a field, a yard, or another appropriate mowable area. Between mowing operations, the robotic lawnmower <NUM> can return to a docking station to recharge a battery of the robotic lawnmower <NUM>.

As illustrated in <FIG>, the user device <NUM> can present a visual indicator <NUM> of a quantity of beacons detectable by the robotic lawnmower <NUM>. Beacons <NUM> located in an environment are detectable by the robotic lawnmower <NUM> to allow the robotic lawnmower <NUM> to determine its location within the environment. The indicator <NUM> can thus allow a user to determine whether the robotic lawnmower <NUM> can detect a sufficient number of the beacons <NUM> for the robotic lawnmower <NUM> to accurately and precisely determine the location of the robotic lawnmower <NUM>.

As described herein, aside from providing the user <NUM> with information pertaining to the quantity of the beacons <NUM> detected by the robotic lawnmower <NUM> (e.g., as illustrated in <FIG>), the autonomous robotic lawnmower system <NUM> can facilitate other processes that give the user <NUM> the ability to control and monitor the robotic lawnmower <NUM>. For example, the autonomous robotic lawnmower system <NUM> can allow the user <NUM> to operate and monitor the robotic lawnmower <NUM>, the beacons <NUM>, a docking station <NUM> (shown in <FIG>), and other devices related to the operations of the robotic lawnmower <NUM>. The one or more user device can be used to recommend locations for beacons (e.g., as illustrated in <FIG>), to establish behavior control zones that can trigger certain behaviors for the robotic lawnmower <NUM> (e.g., as illustrated in <FIG>), to select a grass height to which the robotic lawnmower <NUM> cuts grass on the mowable area <NUM> (e.g., as illustrated in <FIG>), and to teach a path for the robotic lawnmower <NUM> to move to the docking station <NUM> and dock with the docking station <NUM>.

<FIG> and <FIG> illustrate an example of the robotic lawnmower <NUM>. The robotic lawnmower <NUM> includes a body <NUM> that can include one or more interconnected structural assemblies, e.g., one or more of a bumper, a chassis, a cutting deck, or other structural assembly.

The wheel assemblies <NUM>, <NUM> are located along a bottom portion <NUM> of the robotic lawnmower <NUM>, e.g., along a bottom portion of the body <NUM>. The wheel assemblies <NUM>, <NUM> are left and right wheel assemblies <NUM>, <NUM>. When directional terms "left" and "right" are used herein in reference to an element of the robotic lawnmower <NUM> or to an element of the docking station <NUM>, the terms "left" and "right" refer to the "left" direction from the perspective of the robotic lawnmower <NUM> and the "right" direction from the perspective of the robotic lawnmower <NUM>. When directional terms "forward," "front," "rearward," or "rear" are used herein in reference to an element of the robotic lawnmower <NUM> or to an element of the docking station <NUM>, the terms "forward," "front," "rearward," or "rear" refer to directions from the perspective of the device, e.g., the robotic lawnmower <NUM> or the docking station <NUM>, that includes the element.

In the example depicted in <FIG> and <FIG>, the wheel assemblies <NUM>, <NUM> are caster wheel assemblies positioned along a forward portion <NUM> of the robotic lawnmower <NUM>, e.g., along a forward portion of the body <NUM> of the robotic lawnmower <NUM>. The wheels <NUM>, <NUM> are not actively driven.

In addition to including the wheel assemblies <NUM>, <NUM>, the robotic lawnmower <NUM> can include one or more drive wheels. For example, as shown in <FIG>, the robotic lawnmower <NUM> can include a left drive wheel <NUM> and a right drive wheel <NUM>. The drive wheels <NUM>, <NUM> are driven by one or more actuators, e.g., motors. The drive wheels <NUM>, <NUM>, as shown in the example of <FIG>, are positioned along a rearward portion <NUM> of the robotic lawnmower <NUM>, e.g., along a rearward portion of the body <NUM>. For example, the drive wheels <NUM>, <NUM> are mounted to the rearward portion of the body <NUM>. The drive wheels <NUM>, <NUM> are positioned proximate to rearward corner portions of the robotic lawnmower <NUM>, and the wheel assemblies <NUM>, <NUM> are positioned proximate to forward corner portions of the robotic lawnmower <NUM>. The drive wheels <NUM>, <NUM> can be driven to move the robotic lawnmower <NUM> during its operations, e.g., during a docking operation, a teach operation, a test operation, a mowing operation, or another robotic lawnmower operation as described herein.

The robotic lawnmower <NUM> includes one or more cutting assemblies operable to mow vegetation on the mowable area <NUM> (shown in <FIG>). In the example shown in <FIG>, the robotic lawnmower includes the cutting assemblies <NUM>, <NUM>. The cutting assemblies <NUM>, <NUM> include blades and are rotatable such that the blades can cut the vegetation on the mowable area. In some implementations, a height of the cutting assemblies <NUM>, <NUM> can be adjustable. Heights of the cutting assemblies <NUM>, <NUM>, in some implementations, can be independently adjustable. The cutting assemblies <NUM>, <NUM> can be vertically movable away from the mowable area <NUM>. The cutting assemblies <NUM>, <NUM> can be mounted to a cutting deck of the body <NUM>, and the cutting deck can be movable vertically relative to a remainder of the body <NUM> such that the cutting deck with the cutting assemblies <NUM>, <NUM> can be moved away from the mowable area <NUM>. For example, the robotic lawnmower <NUM> can include a motor that, when driven, moves the cutting deck in a vertical direction. Referring also to <FIG>, the robotic lawnmower <NUM> can mow the mowable area <NUM> during the mowing operation. During the mowing operation, the robotic lawnmower <NUM> autonomously navigates about the mowable area <NUM> while cutting vegetation, e.g., grass, weeds, or other vegetation, in the mowable area <NUM>. The robotic lawnmower <NUM> cuts the vegetation with one or more cutting assemblies, e.g., cutting assemblies <NUM>, <NUM> shown in <FIG>.

The robotic lawnmower <NUM> includes electrical circuitry. For example, a controller <NUM> of the robotic lawnmower <NUM> operates the one or more actuators to control the drive wheels <NUM>, <NUM> and thereby navigate the robotic lawnmower <NUM> about the mowable area <NUM>. The robotic lawnmower <NUM> further includes a battery <NUM> to store energy usable to allow the robotic lawnmower <NUM> to navigate about the mowable area <NUM> while being untethered from an energy source, e.g., untethered from a generator, power grid, or other stationary energy source. The battery <NUM> is mounted to the bottom portion of the robotic lawnmower <NUM>. The battery <NUM> receives energy from a docking station during a charging operation, e.g., while the robotic lawnmower <NUM> is docked with the docking station <NUM>, through the electrical connector <NUM>. As described herein, the robotic lawnmower <NUM> can dock with the docking station <NUM> during a docking operation. Referring to <FIG>, the electrical connector <NUM> is positioned on the forward portion <NUM> of the robotic lawnmower <NUM>. For example, the electrical connector <NUM> can be positioned along a forward side portion of the robotic lawnmower <NUM>. The electrical connector <NUM> is positioned along the longitudinal axis YR (shown in <FIG>) and extends outwardly and forwardly from the body <NUM> of the robotic lawnmower <NUM>. The longitudinal axis YR can be, for example, a central axis of the robotic lawnmower <NUM> that is aligned with the forward drive direction F of the robotic lawnmower <NUM>. The electrical connector <NUM> can extend outwardly through an opening <NUM> along the body <NUM> of the robotic lawnmower <NUM>.

Other electrical circuitry of the robotic lawnmower <NUM> can include other components. For example, the robotic lawnmower <NUM> can include a memory storage element <NUM> and a sensor system with one or more electrical sensors. The sensor system, as described herein, can generate a signal indicative of a current location of the robotic lawnmower <NUM>, and can generate signals indicative of locations of the robotic lawnmower <NUM> as the robotic lawnmower <NUM> travels along the mowable area <NUM>. The sensor system can also generate mapping data that can be used to produce a map of the mowable area. 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 body <NUM>. The one or more electrical sensors are configured to detect features in an environment of the robotic lawnmower <NUM>. The controller <NUM> can also communicate with the sensor system to determine the location of the robotic lawnmower <NUM> relative to the mowable area <NUM> and thereby navigate the robotic lawnmower <NUM> during the mowing operation or to navigate the robotic lawnmower <NUM> during the docking operation. The controller <NUM> can store data collected during operations of the robotic lawnmower <NUM>.

To navigate relative to the mowable area <NUM>, the robotic lawnmower <NUM> can use the sensor system to detect the beacons <NUM> (shown in <FIG>). For example, the sensor system can include a detection system <NUM> capable of detecting signals emitted by the beacons <NUM>. The detection system <NUM> can be an antenna responsive to the signals emitted by the beacons <NUM>. The signals can be wireless signals such as, for example, radiofrequency signals (e.g., ultra-wideband signals, wideband signals, WiFi signals, or other radiofrequency signals), magnetic signals, or other appropriate wirelessly transmitted signals. The detection system <NUM> can include a single transceiver, or multiple transceivers. In some implementations, the detection system <NUM> includes four transceivers for detecting the signals emitted by the beacons <NUM>. The robotic lawnmower <NUM> can then determine a location of the robotic lawnmower <NUM> relative to the mowable area <NUM> based on the detected signals. For example, the robotic lawnmower <NUM> can determine a time-of-flight of each of the signals and thereby triangulate the location of the robotic lawnmower <NUM> relative to the beacons <NUM> and relative to the mowable area <NUM>.

In further implementations, prior to navigation of the robotic lawnmower <NUM> about the mowable area <NUM>, a boundary <NUM> of the mowable area <NUM> can be identified. For example, the robotic lawnmower <NUM> can be trained to identify the boundary <NUM>. In some examples, in the boundary training operation, the robotic lawnmower <NUM> is manually moved about the boundary <NUM> while the robotic lawnmower <NUM> detects the signals emitted by the beacons <NUM>, e.g., using the detection system <NUM>. A user can manually move the robotic lawnmower <NUM> by pulling, pushing, or otherwise manually interacting with the robotic lawnmower <NUM> to move the robotic lawnmower <NUM> about the boundary <NUM>. In other examples, the user can drive the robotic lawnmower <NUM> by interacting with a computing device configured to transmit movement commands to the robotic lawnmower <NUM>, e.g., a personal computer, a mobile device, a remote controller, or another computing device. In examples in which the robotic lawnmower <NUM> identifies the boundary <NUM> prior to navigating about the mowable area <NUM> during the mowing operation, the robotic lawnmower <NUM> determines its location relative to the mowable area <NUM> during the mowing operation based on data indicative of the boundary <NUM> that are collected during the training operation.

The sensor system can include one or more cliff sensors disposed along the bottom portion <NUM> of the body <NUM>. Each of the cliff sensors is an optical sensor that can detect the presence or the absence of an object below the optical sensor, such as the mowable area <NUM>. The cliff sensors can detect obstacles such as drop-offs and cliffs below portions of the robotic lawnmower <NUM> where the cliff sensors are disposed and redirect the robot accordingly. The cliff sensors can also be used to detect sloping terrain or other uneven terrain that can be difficult for the robotic lawnmower <NUM> to traverse, or can be used to detect that the robotic lawnmower <NUM> is tilted relative to the horizontal.

The sensor system can include one or more proximity sensors that can detect objects on the mowable area <NUM> that are near the robotic lawnmower <NUM>. For example, the sensor system can include proximity sensors disposed proximate the forward portion <NUM> of the body <NUM>. Each of the proximity sensors includes an optical sensor facing outward from the forward portion <NUM> of the body <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 lawn fixtures, persons, and other objects in the environment of the robotic lawnmower <NUM>.

The sensor system includes a bumper system including a bumper <NUM> and one or more bump sensors that detect contact between the bumper <NUM> and obstacles in the environment. The bumper <NUM> can form part of the body <NUM>. For example, the bumper <NUM> can wrap around the forward portion <NUM> of the robotic lawnmower <NUM> and the lateral sides of the robotic lawnmower <NUM>. The one or more bump sensors can include break beam sensors, capacitive sensors, or other sensors that can detect contact between the robotic lawnmower <NUM>, e.g., the bumper <NUM>, and objects in the environment. In some implementations, the one or more bump sensors can be used to detect movement of the bumper <NUM> along the longitudinal axis YR (shown in <FIG>) of the robotic lawnmower <NUM>, and the one or more bump sensors can be used to detect movement of the bumper <NUM> along a lateral axis XR (shown in <FIG>) of the robotic lawnmower <NUM>. The proximity sensors can detect objects before the robotic lawnmower <NUM> contacts the objects, and the bump sensors can detect objects that contact the bumper <NUM>, e.g., in response to the robotic lawnmower <NUM> contacting the objects.

The sensor system includes one or more obstacle following sensors. For example, the robotic lawnmower <NUM> can include an obstacle following sensor along a lateral side of the robotic lawnmower <NUM>. The obstacle following sensor can include an optical sensor facing outward from the lateral side of the body <NUM> that can detect the presence or the absence of an object adjacent to the lateral side of the body <NUM>. For example, the detectable objects include obstacles such as lawn fixtures, persons, and other objects in the environment of the robotic lawnmower <NUM>.

In some implementations, at least some of the proximity sensors, and the obstacle following sensor each include an optical emitter and an optical detector. The optical emitter emits an optical beam outward from the robotic lawnmower <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 robotic lawnmower <NUM>. The robotic lawnmower <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 robotic lawnmower <NUM> and the object.

When the controller <NUM> causes the robotic lawnmower <NUM> to perform an operation involving movement about the mowable area <NUM>, the controller <NUM> operates motors to drive the drive wheels <NUM>, <NUM> and propel the robotic lawnmower <NUM> along the mowable area <NUM>. In addition, the controller <NUM> operates motors to cause the cutting assemblies <NUM>, <NUM> to rotate. To cause the robotic lawnmower <NUM> to perform various navigational and mowing behaviors, the controller <NUM> executes software stored on the memory storage element <NUM> to cause the robotic lawnmower <NUM> to perform by operating the various motors of the robotic lawnmower <NUM>.

The sensor system can further include sensors for tracking a distance traveled by the robotic lawnmower <NUM>. For example, the sensor system can include encoders associated with the motors for the drive wheels <NUM>, <NUM>, and these encoders can track a distance that the robotic lawnmower <NUM> has traveled.

The controller <NUM> uses data collected by the sensors of the sensor system to control navigational behaviors of the robotic lawnmower <NUM> during a mowing operation. For example, the controller <NUM> uses the sensor data collected by obstacle detection sensors of the robotic lawnmower <NUM>, e.g., the cliff sensors, the proximity sensors, and the bump sensors, to enable the robotic lawnmower <NUM> to avoid obstacles within the environment of the robotic lawnmower <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 mowable area <NUM> of the environment. As the controller <NUM> directs the robotic lawnmower <NUM> about the mowable area <NUM> during the mission, the controller <NUM> uses SLAM techniques to determine a location of the robotic lawnmower <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 portions of the mowable area <NUM> 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 an operation can include persistent data that are produced during the operation and that are usable during a further operation. The persistent data, including the persistent map, enable the robotic lawnmower <NUM> to efficiently mow grass on the mowable area <NUM>. For example, the persistent map enables the controller <NUM> to direct the robotic lawnmower <NUM> toward open portions of the mowable area <NUM> and to avoid nontraversable space. In addition, for subsequent missions, the controller <NUM> is able to plan navigation of the robotic lawnmower <NUM> through the environment using the persistent map to optimize paths taken during the missions.

The robotic lawnmower <NUM> can further include a communication system enabling wireless communication with a remote computing system. For example, the communication system can include a wireless transceiver. The wireless transceiver allows the robotic lawnmower <NUM> to wirelessly communicate data with a communication network (e.g., the communication network <NUM> described herein with respect to <FIG>). The robotic lawnmower <NUM> can receive or transmit data using the wireless transceiver, and can, for example, receive data representative of a map and transmit data representative of mapping data collected by the robotic lawnmower <NUM>.

<FIG> illustrates an example of the docking station <NUM>. The docking station <NUM> includes an electrical connector <NUM> (shown in FIG. 4A) configured to interface with the electrical connector <NUM> (shown in <FIG>) of the robotic lawnmower <NUM> so that the docking station <NUM> can charge a battery of the robotic lawnmower <NUM>. The electrical connector <NUM> can be positioned above a base <NUM>.

The docking station <NUM> can include support members 124a-124d (collectively referred to as support members <NUM>) extending downwardly from the base <NUM>. The support members <NUM> are elongate members insertable into a ground of the mowable area <NUM>. The support members <NUM> can be, for example, stakes that can be driven into the ground of the mowable area <NUM>, thereby supporting the docking station <NUM> on the mowable area <NUM> and preventing the docking station <NUM> from moving relative to the mowable area <NUM>.

The guide mechanism <NUM> of the docking station <NUM> guides movement of the right and left wheel assemblies <NUM>, <NUM> (shown in <FIG>) of the robotic lawnmower <NUM> and thereby also guides movement of the robotic lawnmower <NUM>. This guidance can align the electrical connector of the robotic lawnmower <NUM> with the electrical connector <NUM> of the docking station <NUM>.

The docking station <NUM> can include one or more beacons. In the example depicted in <FIG>, the docking station <NUM> includes beacons <NUM> configured to emit signals detectable by the robotic lawnmower <NUM>, e.g., using the sensor system. The signals emitted by the beacons <NUM> can be wireless signals similar to those described with respect to the beacons <NUM>. The robotic lawnmower <NUM> detects the signals emitted by the beacons <NUM> to navigate the robotic lawnmower <NUM> toward the docking station <NUM> during a docking operation. In some implementations, the signals emitted by the beacons <NUM> are usable by the robotic lawnmower <NUM> to determine its location relative to the mowable area <NUM> during the mowable operation and to identify the boundary <NUM> of the mowable area <NUM> during the training operation. In other implementations, the robotic lawnmower <NUM> only uses the signals emitted by the beacons <NUM> for determining its location relative to the mowable area <NUM> during the mowable operation and to identify the boundary <NUM> of the mowable area <NUM> during the training operation.

Referring to the example shown in <FIG>, the robotic lawnmower system <NUM> is illustrated during a docking operation. The robotic lawnmower <NUM> navigates toward the docking station <NUM> to dock with the docking station <NUM>. When the robotic lawnmower <NUM> is docked with the docking station <NUM>, the robotic lawnmower <NUM> is electrically connected to the docking station <NUM> such that the docking station <NUM> can recharge the battery of the robotic lawnmower <NUM>. The robotic lawnmower <NUM> moves in a forward drive direction F (shown in <FIG>) toward the docking station <NUM>. To dock with the docking station <NUM>, the wheel assemblies <NUM>, <NUM> of the robotic lawnmower <NUM> are guided along paths along a base <NUM> of the docking station <NUM>. In certain examples, the electrical connector of a robotic lawnmower can be misaligned with an electrical connector of a docking station as the robotic lawnmower approaches the docking station. The guide mechanism <NUM> guides movement of the robotic lawnmower <NUM> along the base <NUM> of the docking station <NUM> such that the electrical connector <NUM> of the docking station <NUM> is aligned with the electrical connector of the robotic lawnmower <NUM> while the docking station <NUM> receives the robotic lawnmower <NUM>. The robotic lawnmower <NUM> docks at the docking station <NUM> to receive electrical energy that can be used to perform an autonomous mowing operation on a mowable area. As described herein with respect to the process <NUM>, the path along which the robotic lawnmower <NUM> moves during the docking operation can be taught so that the robotic lawnmower <NUM> approaches the docking station <NUM> at an angle that allows the guide mechanism <NUM> to guide the robotic lawnmower <NUM> into a proper docking position.

Referring to <FIG>, an example communication network <NUM> is shown. Nodes of the communication network <NUM> include the robotic lawnmower <NUM>, the user device <NUM>, the user device <NUM>, a remote computing system <NUM>, the beacons <NUM>, and the docking station <NUM>. Using the communication network <NUM>, the robotic lawnmower <NUM>, the user device <NUM>, the user device <NUM>, the remote computing system <NUM>, the beacons <NUM>, and the docking station <NUM> can communicate with one another to transmit data to one another and receive data from one another. As depicted in <FIG>, the robotic lawnmower <NUM> can communicate directly with the remote computing system <NUM>, the docking station <NUM>, the user device <NUM>, and the beacons <NUM>, and the user device <NUM> can communicate directly with the remote computing system <NUM>. The robotic lawnmower <NUM> can communicate with other devices through various wireless communication techniques, using radiofrequency, Bluetooth, infrared, optical, or other wireless communication techniques. The robotic lawnmower can communicate indirectly with the user device <NUM> through the remote computing system <NUM>. Alternatively or additionally, the robotic lawnmower <NUM> can communicate directly with the user 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 user devices <NUM>, <NUM> as shown in <FIG> are remote devices. The user devices <NUM>, <NUM> can be operated by the user <NUM> (shown in <FIG>) to provide inputs to control the robotic lawnmower <NUM>. The user device <NUM>, <NUM> can also receive information pertaining to the robotic lawnmower <NUM> and present information to the user (shown in <FIG>) so that the user (shown in <FIG>) can monitor the robotic lawnmower <NUM>. In the example shown in <FIG>, the user device <NUM> is a smartphone, with a touchscreen display that presents information for the user <NUM> and that enables the user <NUM> to provide inputs for controlling the robotic lawnmower <NUM>. The user device <NUM> is a remote control, with a joystick enabling the user <NUM> to provide inputs for controlling the robotic lawnmower <NUM>.

In other implementations, the user devices <NUM>, <NUM> can include other 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 user devices <NUM>, <NUM> alternatively or additionally can include immersive media (e.g., virtual reality) with which the user <NUM> interacts to provide a user input. The user devices <NUM>, <NUM> can be, for example, a virtual reality headset or a head-mounted display. The user <NUM> can provide inputs corresponding to commands for the robotic lawnmower <NUM>. In such cases, the user devices <NUM>, <NUM> transmit signals to the remote computing system <NUM> to cause the remote computing system <NUM> to transmit command signals to the robotic lawnmower <NUM>. In some implementations, the user devices <NUM>, <NUM> can present augmented reality images. In some implementations, the user devices <NUM>, <NUM> can be a smartphone, a laptop computer, a tablet computing device, or other mobile device.

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 wireless links may use radiofrequency signals (e.g., ultra-wideband signals, wideband signals, WiFi signals, or other radiofrequency signals), magnetic signals, or other appropriate wirelessly transmitted signals. The wireless links may alternatively use optical signals, e.g., infrared signals.

Example processes are described below. These processes are described with respect to an application loaded on the user device <NUM>. The application can be an application for operating autonomous mobile robots, e.g., robotic lawnmowers, autonomous cleaning robots, autonomous vacuum robots, patrol robots, and the like, in the household or environment of the user <NUM>.

The example methods described with respect to <FIG> are described with respect to the robotic lawnmower <NUM>, the docking station <NUM>, a computing system <NUM>, the user device <NUM>, and/or the user <NUM> can be controlled in certain manners in accordance with processes described herein. The computing system <NUM> can be a controller located on the robotic lawnmower <NUM>, the user device <NUM>, or the remote computing system <NUM>. Furthermore, while the processes are described with respect to the robotic lawnmower <NUM>, the docking station <NUM>, the computing system <NUM>, and the user device <NUM>, these processes can be implemented by other types of robotic lawnmowers, docking stations, computing systems, and user devices. These processes are also described with respect to the beacons <NUM> and the mowable area <NUM> (shown in <FIG>). But the number and type of beacons and mowable area can vary in other implementations.

While some operations of these processes may be described as being performed by the robotic lawnmower <NUM>, the docking station <NUM>, the computing system <NUM>, the user <NUM>, 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 robotic lawnmower <NUM> can be, in some implementations, performed by the remote 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 operations of the computing system <NUM> are performed entirely by the user device <NUM> and the robotic lawnmower <NUM>. In some implementations, the robotic lawnmower <NUM> can perform, in addition to the operations described as being performed by the robotic lawnmower <NUM>, the operations described as being performed by the computing system <NUM> or the user 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 process <NUM> for providing recommended beacon locations. The process <NUM> includes operations <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>. In this process <NUM>, the user <NUM> can operate the user device <NUM> to receive information on recommended locations to place the beacons <NUM>.

At the operation <NUM>, the robotic lawnmower <NUM> establishes wireless communication with the computing system <NUM>. At the operation <NUM>, the user device <NUM> establishes wireless communication with the computing system <NUM>. In implementations where operations of the computing system <NUM> are performed by the robotic lawnmower <NUM>, the robotic lawnmower <NUM> can establish wireless communication directly with the user device <NUM>.

At the operation <NUM>, the computing system <NUM> transmits data to the user device <NUM> to cause the user device <NUM> to present information specifying recommended beacon locations. As depicted in <FIG>, the operation <NUM> can occur after the robotic lawnmower <NUM> and the user device <NUM> establish wireless communication with the computing system <NUM>. In other implementations, the robotic lawnmower <NUM> does not need to establish wireless communication before the computing system <NUM> transmits data to the user device <NUM>.

At the operation <NUM>, the user device <NUM> presents instructions indicating considerations for placement of beacons on a mowable area. The user device <NUM> can present the instructions on the user interface of the user device <NUM>. <FIG> illustrate examples in which the user device <NUM> presents instructions on its user interface <NUM> indicating certain considerations for the user <NUM> in placing the beacons <NUM> relative to the mowable area <NUM>. For example, as shown in <FIG>, the user device <NUM> device present messages <NUM>, <NUM>, with the message <NUM> recommending the user <NUM> consider locations of obstacles in placing the beacons <NUM> relative to the mowable area <NUM>, and with the message <NUM> recommending to the user <NUM> a minimum number of beacons that the robotic lawnmower <NUM> should detect to be able to navigate about the mowable area <NUM>. As shown in <FIG>, the message <NUM> indicates that the minimum number of beacons that the robotic lawnmower <NUM> should detect is three. In other implementations, one, two, four, or more beacons corresponds to the minimum number of beacons that the robotic lawnmower <NUM> should detect to be able to navigate about the mowable area <NUM>.

Other messages can be presented to guide the user <NUM> in placing the beacons <NUM> relative to the mowable area <NUM>. As shown in <FIG>, the user device <NUM> can present messages <NUM>, <NUM>. The message <NUM> can indicate a recommended range of each of the beacons <NUM>. The message <NUM> indicates that the recommended range for the beacons <NUM> is <NUM> meters. In other implementations, the recommended range is, for example, between <NUM> and <NUM> meters, e.g., between <NUM> and <NUM> meters, <NUM> and <NUM> meters, <NUM> and <NUM> meters, or <NUM> and <NUM> meters. In implementations in which the docking station <NUM> can receive one or more of the beacons <NUM>, the message <NUM> in <FIG> can indicate a number of beacons that should be placed in the docking station <NUM>. In the example depicted in <FIG>, the message <NUM> recommends to the user <NUM> to place two beacons within the docking station <NUM>. In other implementations, the number of beacons to be placed in the docking station <NUM> can be one, three, four, or more beacons.

Referring back to <FIG>, at the operations <NUM>, <NUM>, the user device <NUM> can present one or more representations of potential shapes of mowable areas, and indicators of recommended locations for the beacons <NUM>. These representations of the potential shapes and the corresponding indicators of the recommended locations for the beacons can guide the user <NUM> to place the beacons <NUM> about the mowable area <NUM> in ways that allow the robotic lawnmower <NUM> to efficiently move about mowable area <NUM> while determining its location relative to the mowable area <NUM>. In some implementations, the user device <NUM> can present a list of potential shapes of mowable area, and the user <NUM> can select one of the potential shapes. The user device <NUM> can then present the recommendation beacon locations for the selected potential shape.

At the operation <NUM>, referring to <FIG>, the user device <NUM> presents a representation of a first potential shape <NUM> of a mowable area, and first indicators <NUM> of first recommended locations for the beacons <NUM>. The first potential shape <NUM> can correspond to a substantially amoeba or rectangular shape. The first indicators <NUM> can be positioned along a perimeter of the representation of the first potential shape <NUM> of the mowable area, and/or can be overlaid on the representation of the first potential shape <NUM> of the mowable area. The user device <NUM> can further present an indicator of a recommended location and a recommended orientation of the docking station <NUM>. For example, the user device <NUM> can present an indicator <NUM> indicative of a location of the docking station <NUM>. In some implementations, the indicator <NUM> can appear as a representation of the robotic lawnmower <NUM>. The user device <NUM> can also present indicator <NUM>, <NUM> indicating locations of the beacons <NUM> on the docking station <NUM>. The indicator <NUM>, <NUM>, <NUM> together can indicate the recommended location and recommended orientation of the docking station <NUM>. The quantity of indicators representing the recommended locations of the beacons <NUM>, e.g., the quantity of the first indicators <NUM> and the indicators <NUM>, <NUM>, can be based on the first potential shape, size, or other geometric feature of the potential geometry of the lawn being represented on the user interface <NUM> of the user device <NUM>.

At the operation <NUM>, referring to <FIG>, the user device <NUM> presents a representation of a second potential shape <NUM> of a mowable area, and second indicators <NUM> of second recommended locations for the beacons <NUM>. The second potential shape <NUM> can correspond to an L-shaped mowable area. For example, the second potential shape <NUM> can include a first substantially rectangular portion 440a and a second substantially rectangular portion 440b. The second indicators <NUM> can be positioned along a perimeter of the representation of the second potential shape <NUM> of the mowable area, and/or can be overlaid on the representation of the second potential shape <NUM> of the mowable area. The user device <NUM> can present indicators <NUM> of potential locations of obstacles located relative to the mowable area and the indicators <NUM> of the second recommended locations for the beacons <NUM>. The user device <NUM> can further present an indicator of a recommended location and a recommended orientation of the docking station <NUM>. For example, the user device <NUM> can present an indicator <NUM> indicative of a location of the docking station <NUM>. In some implementations, the indicator <NUM> can appear as a representation of the robotic lawnmower <NUM>. The user device <NUM> can also present indicator <NUM>, <NUM> indicating locations of the beacons <NUM> on the docking station <NUM>. The indicator <NUM>, <NUM>, <NUM> together can indicate the recommended location and recommended orientation of the docking station <NUM>. The quantity of indicators representing the recommended locations of the beacons <NUM>, e.g., the quantity of the second indicators <NUM> and the indicators <NUM>, <NUM>, can be based on the second potential shape, size, or other geometric feature of the potential geometry of the lawn being represented on the user interface <NUM> of the user device <NUM>.

<FIG> illustrates an example in which representations of two potential shapes of the mowable area <NUM> can be shown. Further representations, e.g., more than two representations, can be shown to guide the user <NUM> in some implementations. For example, as shown in <FIG>, the user device <NUM> can present a representation of a third potential shape <NUM> of a mowable area, and indicators <NUM>, <NUM>, <NUM>, <NUM>. The indicators <NUM>, <NUM>, <NUM>, <NUM> are similar to the indicators <NUM>, <NUM>, <NUM>, <NUM>, respectively, described with respect to <FIG>. The representation of the third potential shape <NUM> of the mowable area differs from the representation of the second potential shape <NUM> of the mowable area in that the third potential shape is a substantially U-shaped area with a first, second, and third substantially rectangular portions 440a, 440b, 440c.

As illustrated in the examples shown in <FIG>, the recommended quantity of beacons can vary depending on the geometry of the potential shape of the mowable area. For example, as the size and complexity of the geometry of the potential shape of the mowable area increases, the recommended quantity of beacons can increase as well. In the examples shown in <FIG>, the quantity of beacons recommended for the first, second, and third potential shapes <NUM>, <NUM>, <NUM> are five, seven, and eight, respectively. In some implementations, the user device <NUM> can present the different potential shapes in increasing order of quantity of beacons recommended, or in increasing order of complexity and size. Other potential shapes for which representations are presented on the user device <NUM> can include shapes with four or more substantially rectangular portions, circular shapes, amorphous shapes, or other potential shapes for mowable areas.

After the user device <NUM> presents instructions and recommendations at the operations <NUM>, <NUM>, <NUM>, as shown in <FIG>, at the operation <NUM>, the user <NUM> places the beacons <NUM> on the mowable area <NUM>. The user <NUM> can place the beacons <NUM> based on the instructions and recommendations provided by the user device <NUM>. At the operation <NUM>, the user <NUM> can confirm that the user <NUM> has placed the beacons <NUM> on the mowable area <NUM>. With the beacons <NUM> placed on the mowable area <NUM>, if applicable, the user <NUM> can perform other operations for setting up the robotic lawnmower <NUM> for performing a mowing operation, such as a teach operation, a training operation, or a test operation. Alternatively, the user <NUM> can initiate the mowing operation of the robotic lawnmower <NUM>.

<FIG> illustrates a process <NUM> of providing an indicator of a quantity of beacons detected by an autonomous robotic lawnmower. The process <NUM> includes operations <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>. In this process <NUM>, the user device <NUM> can present an indicator of the beacons <NUM> that the robotic lawnmower <NUM> detects at a location. The location can correspond to a current or previous location of the robotic lawnmower <NUM>. This process <NUM> can be facilitated using the application described with respect to the process <NUM>. In some implementations, the process <NUM> can be part of a test operation in which the autonomous robotic lawnmower system <NUM> is tested to determine whether the robotic lawnmower <NUM>, the beacons <NUM>, and the docking station <NUM> are properly set up for a mowing operation of the robotic lawnmower <NUM>. The test operation can occur before the mowing operation to ensure that the robotic lawnmower <NUM> can move along the mowable area <NUM> while still being able to determine its location relative to the mowable area <NUM>.

The process <NUM> can begin with one or more operations to initiate the test operation of the robot lawnmower <NUM>. Referring also to <FIG>, at the operation <NUM>, the user device <NUM> presents instructions <NUM> (shown in <FIG>) for operating the robotic lawnmower <NUM> during a test operation. The user device <NUM> can present the instructions <NUM> on the user interface <NUM> in response to a confirmation from the user <NUM> that the user <NUM> has placed the beacons <NUM> relative to the mowable area <NUM>. In some implementations, the user <NUM> can provide a user input to the user device <NUM> to initiate the test operation. After initiating the test operation, the user device <NUM> can provide the instructions <NUM>.

The instructions <NUM> can include instructions for a sequence of movements of the robotic lawnmower <NUM> to be performed during the test operation. For example, the instructions <NUM> can, in some implementations, include a user instruction to move the robotic lawnmower <NUM> along a perimeter of the mowable area <NUM>. The instructions <NUM> can further include a user instruction to move the robotic lawnmower <NUM> through a central region of the mowable area <NUM>. The order in which the robotic lawnmower <NUM> is moved along the perimeter and is moved through the central region of the mowable area <NUM> can vary implementations. In some implementations, the test operation can include or be part of a boundary training operation in which the robotic lawnmower <NUM> is moved along the boundary <NUM> of the mowable area <NUM> to teach the boundary <NUM> to the robotic lawnmower <NUM>.

At the operations <NUM>, <NUM>, <NUM>, the robotic lawnmower <NUM> is controlled to navigate about the mowable area <NUM> during the test operation. In the process <NUM> illustrated <FIG>, at the operation <NUM>, the user <NUM> can provide a command to cause the robotic lawnmower <NUM> to move. At the operation <NUM>, the user device <NUM> transmits the command to cause the robotic lawnmower <NUM> to move, e.g., in response to the command provided at the operation <NUM>. And, at the operation <NUM>, the robotic lawnmower <NUM> moves about the mowable area <NUM>, e.g., in response to the command transmitted by the user device <NUM> at the operation <NUM>.

In some implementations, the command provided by the user <NUM> corresponds to a command that causes the robotic lawnmower <NUM> to move in a certain direction. For example, the user input device of the user device <NUM> can be operated to cause the robotic lawnmower <NUM> to move left, right, forward, or backward. In some implementations, the operation <NUM> can involve the user <NUM> providing the command to the user device <NUM> while in other implementations, the operation <NUM> can involve the user <NUM> providing the command to another user device distinct from the user device <NUM>, such as a remote control. In some implementations, rather than providing the command to the user device <NUM>, the user <NUM> can manually move the robotic lawnmower <NUM> in accordance with the instructions <NUM> provided by the user device <NUM>. For example, the robotic lawnmower <NUM> can include a push bar manually operable by the user <NUM> to allow the user <NUM> to push the robotic lawnmower <NUM> about the mowable area <NUM>.

At the operations <NUM>, <NUM>, data indicative of a quantity of the beacons <NUM> detected by the robotic lawnmower <NUM> are transmitted to the user device <NUM> to allow the user device <NUM> to present an indicator of the quantity of the beacons <NUM> detected by the robotic lawnmower <NUM>. At the operation <NUM>, the robotic lawnmower <NUM> transmits the data indicative of the quantity of beacons <NUM> detected by the robotic lawnmower <NUM>, e.g., transmits the data to the computing system <NUM>. At the operation <NUM>, after receiving the data transmitted by the robotic lawnmower <NUM>, the computer system <NUM> transmits data to the user device <NUM>. The data transmitted to the user device <NUM> at the operation <NUM> can correspond to the data transmitted by the robotic lawnmower <NUM> at the operation <NUM>. The robotic lawnmower <NUM>, as part of the operation <NUM>, can detect the beacons <NUM> using the systems and methods described herein. For example, the detection system <NUM> (shown in <FIG>) can be used to determine the quantity of the beacons <NUM> detected by the robotic lawnmower <NUM>.

At the operations <NUM>, <NUM>, <NUM>, <NUM>, the user device <NUM> provides one or more indicators of the quantity of the beacons <NUM> detected by the robotic lawnmower. The user device <NUM> can also indicate a status of the robotic lawnmower <NUM>, and a progress of the test operation. As the quantity of beacons detected by the robotic lawnmower <NUM> changes, e.g., during movement of the robotic lawnmower <NUM> or because of a change in the quantity of beacons placed relative to the mowable area <NUM> or because of a change in a location of one of the beacons <NUM>, the one or more indicators of the quantity of beacons detected by the robotic lawnmower <NUM> can be updated. In the process presented in <FIG>, at the operation <NUM>, the user device <NUM> presents an indicator of the quantity of the beacons <NUM> detected by the robotic lawnmower <NUM>. The indicator can vary depending on the quantity of beacons detected by the robotic lawnmower <NUM>. For example, the user device <NUM> can present an indicator <NUM> (shown in <FIG>) if the quantity of the beacons detected by the robotic lawnmower <NUM> is at or above a threshold quantity, and can present an indicator <NUM> (shown in <FIG>) if the quantity of beacons detected by the robotic lawnmower <NUM> is below the threshold quantity. The threshold quantity represents a quantity of beacons that the robotic lawnmower <NUM> should detect during its mowing operations so that the robotic lawnmower <NUM> can accurately and precisely determine its location relative to the mowable area <NUM>. The threshold quantity can be two, three, four, or more beacons.

At the operation <NUM>, the user <NUM> adjusts the robotic lawnmower system <NUM> to change the number of beacons detected by the robotic lawnmower <NUM>. For example, the user <NUM> can perform one or more of the operations 516a, 516b, 516c. If the user <NUM> performs the operation 516a, the user <NUM> can move the robotic lawnmower <NUM>. If the user <NUM> performs the operations 516b, the user <NUM> can move one of the beacons <NUM> relative to the mowable area <NUM>. If the user performs the operation 516c, the user <NUM> can place a new beacon at a location relative to the mowable area <NUM>. At the operation <NUM>, the user device <NUM> can update the indicator of the quantity of beacons detected by the robotic lawnmower <NUM>. The indicated quantity of detected beacons can change in response to the operation <NUM> performed by the user <NUM>. At the operation <NUM>, the user device <NUM> presents a test completion indicator to indicate that the test operation is complete. This test completion indicator can be presented after the robotic lawnmower <NUM> has substantially traversed an entirety of the mowable area <NUM>, e.g., <NUM>% to <NUM>% of the mowable area <NUM>, at least <NUM>%, <NUM>%, <NUM>%, or <NUM>% of the total area of the mowable area <NUM>. In some implementations, the test completion indicator is presented only if the robotic lawnmower <NUM> makes this traversal without the quantity of beacons detected by the robotic lawnmower <NUM> being less than the threshold quantity. In some implementations, the operations <NUM>, <NUM>, <NUM> can be repeated as the robotic lawnmower <NUM> is moved about the mowable area <NUM>, e.g., until the conditions for presenting the test completion indicator are satisfied.

<FIG> illustrate example indicators <NUM>, <NUM> of the quantity of the beacons detected by the robotic lawnmower <NUM> when the robotic lawnmower <NUM> is at the locations illustrated in <FIG> and <FIG>. The indicators <NUM>, <NUM> can be presented as part of the operations <NUM> and <NUM>, as described herein. Referring to <FIG>, the indicator <NUM> provides a visual indication of the quantity of beacons detected by the robotic lawnmower <NUM> at a location <NUM> shown in <FIG>. The user interface <NUM> of the user device <NUM> can further present a message <NUM> indicating whether the robotic lawnmower <NUM> detects a sufficient number of the beacons <NUM>. In the example depicted in <FIG>, the indicator <NUM> indicates that the robotic lawnmower <NUM> detects five beacons, and the message <NUM> indicates that the robotic lawnmower <NUM> detects a sufficient number of beacons, i.e., detects at least the threshold quantity of beacons. As shown in <FIG>, at the location <NUM>, the robotic lawnmower <NUM> can detect at least five of the beacons <NUM>.

Referring to <FIG>, the indicator <NUM> provides a visual indication of the quantity of beacons detected by the robotic lawnmower <NUM> at a location <NUM> shown in <FIG>. The indicator <NUM> indicates that only two beacons are detected by the robotic lawnmower, and a message <NUM> indicates that the robotic lawnmower <NUM> does not detect a sufficient number of beacons. The message <NUM> indicates that the robotic lawnmower <NUM> should detect a threshold quantity of beacons, i.e., should detect at least three beacons. As shown in <FIG>, at the location <NUM>, the robotic lawnmower <NUM> can only detect two of the beacons <NUM>.

In some implementations, as shown in <FIG>, visual characteristics of the indicators <NUM>, <NUM> can vary depending on whether a sufficient number of beacons are detected by the robotic lawnmower <NUM>. For example, the indicator <NUM> is a first color indicating that a sufficient number of beacons are detected by the robotic lawnmower <NUM>. In particular, the first color (e.g., a green color) indicates that the quantity of beacons detected by the robotic lawnmower <NUM> is no fewer than the threshold quantity. The indicator <NUM> is a second color (e.g., a red color) indicating that an insufficient number of beacons are detected by the robotic lawnmower <NUM>. The second color indicates that the quantity of beacons detected by the robotic lawnmower <NUM> is fewer than the threshold quantity.

<FIG> illustrates a process <NUM> of establishing a behavior control zone for an autonomous robotic lawnmower. The process <NUM> includes operations <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>. In the process <NUM>, the user device <NUM> can be operated by the user <NUM> to select a behavior control zone and then establish the behavior control zone to control a behavior of the robotic lawnmower <NUM>. The user-selected behavior control zone, when encountered by the robotic lawnmower <NUM>, can cause the robotic lawnmower <NUM> to initiate a behavior in response to encountering the user-selected behavior control zone as the robotic lawnmower <NUM> navigates about the mowable area <NUM> during a mowing operation.

The process <NUM> can begin with one or more operations to provide a representation of the mowable area <NUM> to the user <NUM>. For example, at the operation <NUM>, the robotic lawnmower <NUM> generates mapping data of the mowable area <NUM>. The robotic lawnmower <NUM> can generate these mapping data as the robotic lawnmower <NUM> moves about the mowable area <NUM> during a teach operation, a mowing operation, or other operation of the robotic lawnmower <NUM>. The mapping data can correspond to data collected by one or more sensors of the sensor system of the robotic lawnmower <NUM>. Then, the mapping data, or data indicative of the mapping data, are provided to the user device <NUM> so that the user device <NUM> can provide the representation of the mowable area <NUM>. For example, at the operation <NUM>, the robotic lawnmower <NUM> transmits the mapping data to the computing system <NUM>, and at the operation <NUM>, the computing system <NUM> transmits the mapping data to the user device <NUM>. Then, the user device <NUM>, at the operation <NUM>, presents on the user interface <NUM> a representation of a map of the mowable area <NUM>.

The process <NUM> proceeds with a behavior control zone being selected. In the example shown in <FIG>, the behavior control zone is a user-selected behavior control zone in which the user <NUM> selects, at the operation <NUM>, the behavior control zone. In some implementations, the user <NUM> selects the behavior control zone by providing an input to the user device <NUM>. The user <NUM> can operate a user input device of the user device <NUM>, such as a touchscreen of the user device <NUM>. In some implementations in which the user device <NUM> is a smartphone, the user <NUM> can operate a touchscreen of the smartphone to select a perimeter of the behavior control zone. The map of the mowable <NUM> presented on the user interface <NUM> can provide context for the user <NUM> in selecting a location on the mowable area <NUM> to establish the behavior control zone. In particular, the user-selected behavior control zone can correspond to a user selection of a portion of the representation of the map of the mowable area <NUM>, and the user selection of the portion of the representation of the map of the mowable area <NUM> can be a user selection of a desired perimeter for the user-selected behavior control zone.

In some implementations, the user <NUM> selects the behavior control zone by teaching a path defining a desired perimeter for the behavior control zone. In particular, the robotic lawnmower <NUM> can be maneuvered along the desired perimeter for the behavior control zone. The user <NUM> can push the robotic lawnmower <NUM> along the desired perimeter, or can operate the user device <NUM> or some other user device to remotely control movement of the robotic lawnmower <NUM> along the desired perimeter.

In some implementations, the user <NUM> selects the behavior control zone by accepting a recommended behavior control zone. This recommended behavior control zone can be determined by the robotic lawnmower <NUM>, the computing system <NUM>, the user device <NUM>, or some combination of these devices. Examples of processes for providing recommended behavior control zones are described herein.

<FIG> are illustrations of the user interface <NUM> of the user device <NUM> during an example process of establishing a behavior control zone in which the user <NUM> guides the robotic lawnmower <NUM> along the desired perimeter of the behavior control zone. In the example of <FIG>, the behavior control zone is a keep out zone. In <FIG>, the user device <NUM> presents a button <NUM> that the user <NUM> can invoke in order to initiate the process for selecting the behavior control zone. In response to the button <NUM> being invoked, as shown in <FIG>, the user device <NUM> provides an instruction <NUM> indicating that the robotic lawnmower <NUM> should be driven around the desired perimeter for the keep out zone. The instruction <NUM> further indicates that the robotic lawnmower <NUM> is recording data indicative of the keep out zone. The user device <NUM> also provides an indicator <NUM> of a current battery level of the robotic lawnmower <NUM> and an indicator <NUM> of a quantity of beacons detected by the robotic lawnmower <NUM> at its current location. Referring also to <FIG>, to teach the desired perimeter for the keep out zone, the robotic lawnmower <NUM> is driven along a path <NUM> about an obstacle, e.g., a garden <NUM>. The user <NUM> can drive the robotic lawnmower <NUM> with a user device such as a remote control or can manually push the robotic lawnmower <NUM> along the path <NUM>.

Referring back to <FIG>, the user device presents a button <NUM> that the user <NUM> can invoke in order to stop the recording of the data for the keep out zone. After the user <NUM> invokes the button <NUM>, as shown in <FIG>, the user device <NUM> can present a visual representation <NUM> of the keep out zone overlaid on a visual representation <NUM> of the map of the mowable area <NUM>. The user <NUM> can invoke a button <NUM> to re-teach the keep out zone, in which the user <NUM> maneuvers the robotic lawnmower <NUM> along a path around the obstacle again. The user <NUM> can also invoke button <NUM> to cause the robotic lawnmower <NUM> to move along the path <NUM> (shown in <FIG>) again.

Referring back to <FIG>, after a behavior control zone is selected, the user device <NUM> requests confirmation of the user-selected behavior control zone at the operation <NUM>, and the user <NUM> confirms the selected behavior control zone at the operation <NUM>. In some implementations, the user device <NUM> provides a representation of the user-selected behavior control zone so that the user <NUM> can visually verify the location and the geometry of the user-selected behavior control zone. In implementations in which the user <NUM> selects the behavior control zone by moving the robotic lawnmower <NUM> along the desired perimeter of the behavior control zone, sensor data collected by the robotic lawnmower <NUM> as the robotic lawnmower <NUM> is moved along the desired perimeter can be transmitted to the user device <NUM>. These sensor data can be used by the user device <NUM> to present a visual representation of the user-selected behavior control zone. This visual representation of the user-selected behavior control zone can be overlaid on the visual representation of the map of the mowable area <NUM>. The user device <NUM> can provide a message to the user <NUM> to request that the user <NUM> confirm the visual representation of the user-selected behavior control zone. The user <NUM> confirms the user-selected behavior control zone by providing a user input to the user device <NUM>. In response to the user confirmation provided at the operation <NUM>, at the operation <NUM>, the user device transmits an instruction to establish the behavior control zone to the robotic lawnmower <NUM>. This transmission can involve transmitting data indicative of the behavior control zone. In some implementations, if the robotic lawnmower <NUM> collected the sensor data as part of the user <NUM> selecting the behavior control zone at the operation <NUM>, the transmission can involve a confirmation signal to indicate to the robotic lawnmower <NUM> that the previously collected sensor data is to be used as the basis for establishing the behavior control zone.

At the operation <NUM>, the robotic lawnmower <NUM> establishes the behavior control zone in response to the instruction transmitted by the user device <NUM> at the operation <NUM>. Data indicative of the behavior control zone can be generated and stored on the robotic lawnmower <NUM>, the computing system <NUM>, or both. The data indicative of the behavior control zone can be indicative of a location, a geometry, and/or a behavior associated with the behavior control zone.

The behavior controlled by the behavior control zone can vary in implementations. In some implementations, the behavior controlled by the behavior control zone can be a movement of the robotic lawnmower <NUM>. For example, the behavior control zone, when entered by or encountered by the robotic lawnmower <NUM>, can cause robotic lawnmower <NUM> to perform a movement behavior, such as an escape behavior, an avoidance behavior, or a follow behavior. For example, in the movement behavior, the robotic lawnmower <NUM> can move in a certain movement pattern within the behavior control zone, to move at a certain movement speed within the behavior control zone, to move away from the behavior control zone, or to move along a perimeter of the behavior control zone.

If the movement behavior is an escape behavior, entering or encountering the behavior control zone can indicate that the robotic lawnmower <NUM> is near obstacles that could cause the robotic lawnmower <NUM> to become stuck. The robotic lawnmower <NUM> can initiate movement in a manner to avoid becoming stuck by certain obstacles in the vicinity of the behavior control zone.

If the movement behavior is an avoidance behavior, the behavior control zone is a keep out zone. The robotic lawnmower <NUM> can move in a manner to avoid entering into an interior of the behavior control zone. Such movement can include reversing relative to the behavior control zone and then moving away from the behavior control zone. If the movement behavior is a follow behavior, the robotic lawnmower <NUM> can follow along the perimeter of the behavior control zone without entering into the interior of the behavior control zone.

In some implementations, the behavior controlled by the behavior control zone can be a parameter of a mowing operation of the robotic lawnmower <NUM>. The parameter can be, for example, an amount of power delivered to the cutting assemblies <NUM>, <NUM>, an amount of power delivered to the wheel assemblies <NUM>, <NUM>, or a height of the cutting deck for the cutting assemblies. The behavior control zone can be, for example, a zone to disable the cutting assemblies <NUM>, <NUM> of the robotic lawnmower <NUM>. As the robotic lawnmower <NUM> moves through the behavior control zone, the cutting assemblies <NUM>, <NUM> can be disabled. For example, the parameter can be a power delivered to the cutting assemblies <NUM>, <NUM> of the robotic lawnmower <NUM>, with the power being reduced to zero as the robotic lawnmower <NUM> moves through the behavior control zone. Alternatively or additionally, the parameter can be a cutting height of the cutting assemblies <NUM>, <NUM>, with the cutting height being raised such that the cutting assemblies <NUM>, <NUM> do not contact the ground within the behavior control zone.

<FIG> illustrates a process <NUM> of setting a grass height to which the robotic lawnmower <NUM> cuts grass on the mowable area <NUM>. The process <NUM> includes operations <NUM>, <NUM>, <NUM>, <NUM>, <NUM>. In the process <NUM>, the user device <NUM> can be operated by the user <NUM> to set a desired grass height, and then the user device <NUM> can provide data to the robotic lawnmower <NUM> to cause the robotic lawnmower <NUM> to move its cutting assemblies <NUM>, <NUM> to a height that achieves the desired grass height.

The process <NUM> can begin with one or more operations that allows the user <NUM> to select a desired grass height using the user device <NUM>. At the operation <NUM>, the user device <NUM> presents a request to the user <NUM> to select a desired grass height. At the operation <NUM>, the user <NUM> provides an instruction indicative of a user-selected grass height. Referring also to <FIG>, the user device <NUM> can present on its user interface <NUM> a slide bar indicator <NUM> including an indicator <NUM> of a current selection for the user-selected grass height and a bar indictor <NUM> indicating a range of selectable grass heights. The user device <NUM> can further present a numerical indicator <NUM> of the user-selected height. The user <NUM> can operate the user interface <NUM> to move the indicator <NUM> relative to the bar indicator <NUM> to select a grass height within the range of selectable grass heights indicated by the bar indicator <NUM>.

Referring back to <FIG>, the process <NUM> can proceed with one or more operations to transmit instructions to the robotic lawnmower <NUM> to cause the robotic lawnmower <NUM> to move its cutting assemblies <NUM>, <NUM> to a height corresponding to the user-selected grass height. For example, at the operation <NUM>, the user device <NUM> transmits data indicative of the user-selected grass height to the computing system <NUM>, and at the operation <NUM>, the computing system <NUM> transmits data indicative of the user-selected grass height to the robotic lawnmower <NUM>. The robotic lawnmower <NUM>, at the operation <NUM>, moves a cutting element to a height corresponding to the user-selected grass height selected by the user <NUM> at the operation <NUM>. For example, the robotic lawnmower <NUM> can adjust heights of its cutting assemblies <NUM>, <NUM> by operating a motor to move the cutting deck supporting the cutting assemblies <NUM>, <NUM>. Then, the robotic lawnmower <NUM> can initiate a mowing operating and cut grass on the mowable area <NUM> while the cutting assemblies <NUM>, <NUM> are at the heights corresponding to the user-selected grass height.

<FIG> illustrates a process <NUM> for teaching a path along which the robotic lawnmower <NUM> moves to dock with the docking station <NUM>. The process <NUM> includes operations <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>. In the process <NUM>, the robotic lawnmower <NUM> is taught a path for docking with the docking station <NUM>. The robotic lawnmower <NUM> docks with the docking station <NUM> during docking operations in order to charge the robotic lawnmower <NUM>. The taught path by the robotic lawnmower <NUM> can be used during its docking operations so that the robotic lawnmower <NUM> can approach the docking station <NUM> in a way that facilitates successful docking with the docking station <NUM>. For example, the guide mechanism <NUM> can more easily guide the robotic lawnmower <NUM> to a docking position when the robotic lawnmower <NUM> approaches the docking station <NUM> from a particular angle with respect to the docking station <NUM>, e.g., an angle between a longitudinal axis of the robotic lawnmower <NUM> and a longitudinal axis of the docking station <NUM> being between <NUM> and <NUM> degrees. The process <NUM> can provide a path for the robotic lawnmower <NUM> that allows the robotic lawnmower <NUM> to approach the docking station <NUM> at such an angle.

The process <NUM> can begin with one or more operations to initiate the teach operation for the robotic lawnmower <NUM>. At the operation <NUM>, the user <NUM> provides a user input to initiate a teach operation. The user <NUM> can provide the user input to the user device <NUM>. At the operation <NUM>, the user device can transmit an instruction, to the robotic lawnmower <NUM>, to initiate the teach operation. And at the operation <NUM>, the robotic lawnmower <NUM> initiates the teach operation. In initiating the teach operation, the robotic lawnmower <NUM> can initiate collection of sensor data indicative of the path along which the robotic lawnmower <NUM> is moved during the teach operation. The robotic lawnmower <NUM> can initiate the teach operation after it is positioned at a start point for the desired path to the docking station <NUM>. For example, referring also to <FIG>, the user device <NUM> can present a button <NUM> that the user <NUM> can invoke in order to initiate the teach operation. The user device <NUM> also provides an indicator <NUM> of a current battery level of the robotic lawnmower <NUM> and an indicator <NUM> of a quantity of beacons detected by the robotic lawnmower <NUM> at its current location.

Before invoking the button <NUM>, referring also to <FIG>, the user <NUM> can place the robotic lawnmower <NUM> at a desired start point 840a for a path <NUM> to the docking station <NUM>. The robotic lawnmower <NUM> can then initiate the teach operation while positioned at the desired start point 840a. In some implementations, the start point 840a is positioned at least a threshold distance from a perimeter of the mowable area <NUM>. In some implementations, the start point 840a is positioned at least, for example, <NUM> meter, <NUM> meters, or <NUM> meters away from the perimeter of the mowable area <NUM> and/or the perimeter of any behavior control zones.

The process <NUM> can proceed with one or more operations to move the robotic lawnmower <NUM> along a path for docking with the docking station <NUM>. At the operation <NUM>, the user <NUM> provides a user input to move the robotic lawnmower <NUM>. In the example depicted in <FIG>, the user <NUM> provides the user input to the user device <NUM>, which in turn, at the operation <NUM>, transmits an instruction to move the robotic lawnmower <NUM>. For example, as described herein, the user device <NUM> can be used to remotely control movement of the robotic lawnmower <NUM>. In further implementations, rather than being controlled by the user device <NUM>, the robotic lawnmower <NUM> can be physically steered by the user <NUM> along the path <NUM>.

At the operation <NUM>, the robotic lawnmower <NUM> generates path data as the robotic lawnmower <NUM> moves along the path to the docking station <NUM>. Referring also to <FIG>, the user device <NUM> can present a message <NUM> indicating that the robotic lawnmower <NUM> is collecting data indicative of the docking path for the robotic lawnmower <NUM>. The path data can be indicative of the path <NUM>, including the start point 840a. The user <NUM> can invoke a button <NUM> to stop the teaching operation when the robotic lawnmower <NUM> is positioned on or proximate to the docking station <NUM>. Referring also to <FIG>, during the teach operation, the robotic lawnmower <NUM> is moved along the desired path <NUM> until the robotic lawnmower <NUM> is positioned on or proximate to the docking station <NUM>. The path <NUM> followed by the robotic lawnmower <NUM> can be represented by the sensor data collected by the robotic lawnmower <NUM> as the robotic lawnmower <NUM> moves along the path <NUM>. In some implementations, the cutting assemblies <NUM>, <NUM> of the robotic lawnmower <NUM> are disabled during the teach operation. In some implementations, at least a portion of the path <NUM> is straight, e.g., at least <NUM> meter, <NUM> meters, or <NUM> meters of the path <NUM> is straight.

After the user <NUM> invokes the button <NUM> shown in <FIG> to terminate the teach operation, the user device <NUM> at the operation <NUM> generates a representation of the path <NUM> to the docking station <NUM>. For example, referring also to <FIG>, the path data generated by the robotic lawnmower <NUM> at the operation <NUM> can be transmitted to the user device <NUM>, and the user device <NUM> can generate a representation <NUM> of the path <NUM> to the docking station <NUM> based on these data. The representation <NUM> of the path <NUM> to the docking station <NUM> can be overlaid on the representation <NUM> of the map of the mowable area <NUM>, e.g., generated according to processes described herein.

The process <NUM> can proceed with one or more operations for user confirmation of the path <NUM>. For example, referring to <FIG>, at the operation <NUM>, the user <NUM> can provide confirmation of the path <NUM> of the robotic lawnmower <NUM>. The user <NUM> can provide the confirmation to the user device <NUM>. In some implementations, the robotic lawnmower <NUM> can autonomously move along the path <NUM> again, e.g., in response to the user <NUM> invoking a button <NUM> as shown in <FIG>. The user <NUM> can view the representation <NUM> of the path <NUM> and can also view the movement pattern of the robotic lawnmower <NUM> to confirm that the user <NUM> would like to use the user-selected path <NUM> for the robotic lawnmower <NUM>. In some implementations, the user <NUM> may choose to re-teach a new docking path for the robotic lawnmower <NUM>, and can thus repeat the operations described herein for teaching the docking path. The user <NUM> can invoke a button <NUM> as shown in <FIG> to initiate a further teach operation for teaching another docking path. After the user <NUM> provides the confirmation, at the operation <NUM>, the computing system <NUM> stores the path data in response to receiving the user confirmation. In some implementations, these path data can be stored on the robotic lawnmower <NUM> itself.

The stored path can be used during docking operations of the robotic lawnmower <NUM>. For example, at the operation <NUM>, the robotic lawnmower <NUM> initiates a mowing operation to autonomous cut grass on the mowable area <NUM>. At the operation <NUM>, the robotic lawnmower <NUM> initiates a docking operation. The robotic lawnmower <NUM> can initiate the docking operation in response to a power level of the robotic lawnmower <NUM> falling below a threshold power level. The threshold power level can be between, for example, <NUM>% to <NUM>%, <NUM>% to <NUM>%, or <NUM>% to <NUM>%. In some implementations, the threshold power level can be selected by the user <NUM>, e.g., using the user device <NUM>. During the docking operation, the robotic lawnmower <NUM> can use the path data to follow the path <NUM> that was taught during the teach operation. The robotic lawnmower <NUM> can navigate to the start point 840a and then follow the path <NUM> to dock with the docking station <NUM>.

A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made.

The communication network <NUM> can vary in implementations. In some implementations, can include additional autonomous mobile robots. For example, the communication network can include additional robotic lawnmowers that can perform processes and operations as described herein. Data collected by the robotic lawnmower <NUM> can be used by other robotic lawnmowers. For instance, the behavior control zones generated as part of the process <NUM> for the robotic lawnmower <NUM> can also be used to control behaviors of other robotic lawnmowers that are part of the communication network. The docking path taught for the robotic lawnmower <NUM> as part of the process <NUM> can also be used by other robotic lawnmowers that are part of the communication network <NUM>. In addition, the representations of the maps presented on the user device <NUM> can be generated based on data collected by the robotic lawnmower <NUM> as well as other robotic lawnmowers that are part of the communication network <NUM>.

In some implementations, the communication between the devices in the communication network <NUM> can vary. Devices can communicate with other devices through direct communication links, through indirect links with intermediary devices, or through a combination of direct and indirect links. For example, while the user device <NUM> is depicted as being in direct communication with the robotic lawnmower <NUM>, in some implementations, the user device <NUM> can communicate with the robotic lawnmower <NUM> through the remote computing system <NUM>, or through some other intermediary device. The user device <NUM> is depicted as being in communication with the robotic lawnmower <NUM> through the remote computing system <NUM>, but in other implementations, the user device <NUM> can communicate with the robotic lawnmower <NUM> both indirectly and directly.

While the processes <NUM>, <NUM>, <NUM>, <NUM>, <NUM> are described with respect to the user device <NUM>, in other implementations, other types of user devices and additional user devices can perform operations that are part of these processes. For example, operations described as being performed by the user device <NUM> can be performed by another user device, e.g., the user device <NUM>, a remote control, a desktop computer, a laptop computer, an augmented reality user device, a virtual reality user device, or another user computing device. Some operations can be performed by two or more user devices. For example, certain households or environments may have multiple user devices (e.g., multiple user devices used by a single user or multiple user devices used by multiple users) that can control and monitor the operations of the robotic lawnmower <NUM>.

Certain indicators presented by the user device <NUM> are described as being visual indicators. In some implementations, the indicators can be tactile, audible, or a combination of tactile, audible, and visual indicators.

As described herein, the operations of the processes <NUM>, <NUM>, <NUM>, <NUM>, <NUM> are described as being performed by certain actors but can, in other implementations, be performed by other actors. For example, data remotely stored on the computing system <NUM> can, instead, be stored on the robotic lawnmower <NUM>, on the user device <NUM>, or on a combination of both the robotic lawnmower <NUM> and the user device <NUM>.

The process <NUM> is described as providing representations of potential shapes of a mowable area. In some implementations, the user device <NUM> presents a representation of an actual shape of the mowable area <NUM>, and then provides a recommendation for beacon locations for the shape of the mowable area <NUM>. For example, the robotic lawnmower <NUM> can be controlled to move about the mowable area <NUM> to generate mapping data indicative of the shape of the mowable area <NUM>. The mapping data then can be used by the user device <NUM> to present a representation of a map of the mowable area <NUM>. The recommended beacon locations can be represented as indicators that are overlaid on the representation of the map of mowable area <NUM>.

In some implementations, the potential shape of a mowable area can be selected by the user <NUM>. For example, the user <NUM> can draw the representation of the potential shape of the mowable area, e.g., using a touchscreen or other user input device, and then the user device <NUM> can present the indicators the recommended locations of the beacons based on the user-selected representation of the potential shape of the mowable area. In some implementations, the user device <NUM> can provide an example representation of the potential shape, and the user <NUM> can provide the input to change a geometry or size of the potential shape.

While the process <NUM> is described with respect to the operations <NUM>, <NUM> in which the user <NUM> provides a command to cause the robotic lawnmower <NUM> to move, the robotic lawnmower <NUM> can be navigated about the mowable area <NUM> in other ways. In some implementations, the command corresponds to a command that causes the robotic lawnmower <NUM> to autonomously move about the mowable area <NUM>. For example, the autonomous robotic lawnmower <NUM> can move about the mowable area <NUM> until the robotic lawnmower <NUM> moves to a location in which the robotic lawnmower <NUM> does not detect the threshold quantity of beacons.

In some implementations, the user <NUM> can select a location on a representation of a map of the mowable area <NUM>, and the user device <NUM> reports a quantity of beacons detected by the robotic lawnmower <NUM> at a corresponding location on the mowable area <NUM>. In some implementations, the user device <NUM> can present a representation of a color-coded map of the mowable area <NUM>. Colors on this representation of the color-coded map can indicate a quantity of beacons detected by the robotic lawnmower <NUM> at various locations on the mowable area <NUM>.

While the process <NUM> is described with respect to a test operation for the robotic lawnmower <NUM>, in some implementations, the indicators provided as part of the process <NUM> can be provided during a mowing operation or other operation of the robotic lawnmower <NUM>. For example, as the robotic lawnmower <NUM> moves about the mowable area <NUM> during a mowing operation, the user <NUM> can operate the user device <NUM> to determine the quantity of beacons that the robotic lawnmower <NUM> at its current position during the mowing operation.

The process <NUM> for establishing behavior control zones can vary in implementations. Behavior control zones can be established before or after mowing operations are performed by the robotic lawnmower <NUM>. In some implementations, the behavior control zones can be recommended and established after a test operation and a boundary training operation are performed, and before the mowing operation. In some implementations, sensor data collected during the mowing operation can serve as the basis for a recommendation for establishing a behavior control zone.

The process <NUM> is described as being used to establish a user-selected behavior control zone. In some implementations, the user-selected behavior control zone can be selected based on a recommended behavior control zone that is recommended by the computing system <NUM>. Sensor data collected by the robotic lawnmower <NUM> can be used to provide a recommended behavior control zone, and the user <NUM> can accept or modify the recommended behavior control zone to define a behavior control zone for controlling the behavior of the robotic lawnmower <NUM>. For example, the user device <NUM> can present on the user interface <NUM> a representation of a recommended behavior control zone overlaid on a representation of a map of the mowable area <NUM> (e.g., similar to the representation <NUM> of the behavior control zone and the representation of the mowable area <NUM> of <FIG>).

The recommended behavior control zone can be selected in a number of ways. In a process of providing a recommended behavior control zone, the robotic lawnmower <NUM> can generate mapping data as part of a test operation or a mowing operation. The mapping data can be indicative of sensor events that occurred during the test operation or the mowing operation. A subset of the sensor events can be identified based on locations of the sensor events. A sensor event can occur when one or more sensors of the sensor system of the robotic lawnmower <NUM> are triggered. A feature in the environment can be associated with the sensor event. A location of a sensor event can correspond to a location of the robotic lawnmower <NUM> when the sensor event occurs, or can correspond to a location of the feature detected by the sensor of the robotic lawnmower <NUM> for which the sensor event has occurred.

The feature detected by the sensor of the robotic lawnmower <NUM> can vary in implementations. In some implementations, the feature detected by the sensor of the robotic lawnmower <NUM> can correspond to an object on the mowable area <NUM>. The object can be an obstacle. In such examples, the sensor events are obstacle detection events in which one or more sensors of the robotic lawnmower <NUM> is triggered. The obstacle can define nontraversable space on the mowable area <NUM>, i.e., a portion of the mowable area <NUM> that the robotic lawnmower <NUM> cannot move across due to the presence of the object. The obstacle could be, for example, a lawn fixture, a garden, a fountain, or other obstacle in the environment that could impede movement of the robotic lawnmower <NUM>.

The sensors that generate the sensor events for providing the recommended behavior control zone can vary in implementations. For example, if the robotic lawnmower <NUM> includes a bump sensor, a sensor event can occur when the bump sensor is triggered. A location of the sensor event can correspond to a location of the robotic lawnmower <NUM> when the bump sensor is triggered, or can correspond to a location of contact between the robotic lawnmower <NUM> and an object in the environment that triggers the bump sensor. In further examples, the sensor events can occur based on sensing performed by the proximity sensors, obstacle following sensors, encoders, drive assembly motors, or an odometer, or other sensors of the sensor system. In some implementations, multiple sensors can be involved in a sensor event.

The criteria for selecting the sensor events considered to be part of a subset used for recommending a behavior control zone can vary in implementations. In some implementations, only one criterion is used to identify the subset of sensor events. The criterion can be a threshold distance criterion, a threshold amount criterion, or other appropriate criteria. In some implementations, multiple criteria are used to identify the subset of sensor events, e.g., two or more criteria.

In some implementations, as part of the process <NUM> of selecting a desired grass height, the robotic lawnmower <NUM> can provide data indicative of a current grass height on the mowable area <NUM>. The robotic lawnmower <NUM> can include a grass height sensor, e.g., an optical sensor, that can detect the height of the grass. The user device <NUM> can present an indicator of the current grass height based on data from the grass height sensor.

Examples described herein are described in connection with the mowable area <NUM>. The shape, geometry, and size of the mowable area can vary in implementations. In some implementations, an environment can include multiple mowable areas on which the robotic lawnmower performs a mowing operation. The robotic lawnmower can move from one mowable area to another mowable area through an intermediate non-mowable area. The processes <NUM>, <NUM>, <NUM>, <NUM>, <NUM> can vary in examples in which the environment includes multiple mowable areas. For example, with respect to the process <NUM>, recommended beacon locations can be separately provided for each mowable area, or can be provided for the combination of the mowable areas.

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 user device, a cloud computing system configured to communicate with the user device and the autonomous robotic lawnmower, 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.

Claim 1:
A method comprising:
presenting, on a user interface of a mobile device (<NUM>) in communication with an autonomous robotic lawnmower (<NUM>), a representation of a first potential shape (<NUM>) of a lawn, and first indicators (<NUM>) of first recommended locations for beacons (<NUM>) configured to communicate with the autonomous robotic lawnmower; and
presenting, on the user interface, a representation of a second potential shape (<NUM>) of the lawn, and second indicators (<NUM>) of second recommended locations for the beacons.