Patent Description:
Embodiments described herein relate to generating a cryptography key included in a cryptography key pair used to authenticate communication between a robotic garden tool and a server.

One embodiment includes a communication system that may include an external device and a robotic garden tool. The external device may include an external device memory, and an external device network interface configured to allow the external device to communicate with other devices. The external device may further include an external device electronic processor coupled to the external device memory and to the external device network interface. The external device electronic processor may be configured to generate a first key pair including a first private key for a robotic garden tool and a first public key for a server device. The external device electronic processor may be further configured to transmit, via the external device network interface, the first private key to the robotic garden tool. The external device electronic processor may be further configured to transmit, via the external device network interface, the first public key to the server device. The robotic garden tool may include a housing, and a set of wheels coupled to the housing and configured to rotate to propel the robotic garden tool on an operating surface in an operating area. The robotic garden tool may also include at least one wheel motor coupled to one or more wheels of the set of wheels. The at least one wheel motor may be configured to drive rotation of the one or more wheels. The robotic garden tool may also include a robotic garden tool memory, and a robotic garden tool network interface configured to allow the robotic garden tool to communicate with other devices. The robotic garden tool may also include a robotic garden tool electronic processor coupled to the robotic garden tool memory and to the robotic garden tool network interface. The robotic garden tool electronic processor may be configured to receive, via the robotic garden tool network interface, the first private key from the external device. The robotic garden tool electronic processor may be further configured to store the first private key in the robotic garden tool memory. The robotic garden tool electronic processor may be configured to receive, via the robotic garden tool network interface, an encrypted first instruction from the server device. The encrypted first instruction may have been encrypted by the server device using the first public key. The robotic garden tool electronic processor may be configured to decrypt the encrypted first instruction using the first private key to generate a decrypted first instruction. The robotic garden tool electronic processor may be configured to control operation of the robotic garden tool in accordance with the decrypted first instruction.

In addition to any combination of features described above, the communication system may include the server device. The server device may include a server device memory, and a server device network interface configured to allow the server device to communicate with other devices. The server device may include a server device electronic processor coupled to the server device memory and the server device network interface. The server device electronic processor may be configured to receive, via the server device network interface and from the external device, the first public key and an identity of the robotic garden tool with which the first public key is associated. The server device electronic processor may be configured store the first public key and the identity of the robotic garden tool with which the first public key is associated in the server device memory. The server device electronic processor may be configured generate a first instruction to be transmitted to the robotic garden tool. The server device electronic processor may be configured encrypt the first instruction using the first public key to generate the encrypted first instruction. The server device electronic processor may be configured transmit, via the server device network interface, the encrypted first instruction to the robotic garden tool.

In addition to any combination of features described above, the server device electronic processor may be configured to generate the first instruction in response to receiving, via the server device network interface, a request to generate the first instruction from the external device or another external device. The request to generate the first instruction may be provided to the server device in response to a user input received on the external device or the another external device.

In addition to any combination of features described above, the first instruction may include at least one selected from the group consisting of a command to start operation of the robotic garden tool, a command to stop operation of the robotic garden tool, scheduling information regarding operation of the robotic garden tool, and combinations thereof.

In addition to any combination of features described above, the external device electronic processor may be further configured to generate a certificate associated with the first public key, and transmit the certificate to the server device for storage by the server device. The robotic garden tool electronic processor may configured to receive the certificate from the server device along with the first public key and the encrypted first instruction, and authenticate the certificate before decrypting the encrypted first instruction.

In addition to any combination of features described above, the external device electronic processor may be configured to generate the first key pair and distribute the first key pair in response to one of service of the server device being changed to another server device, an expiration of a previously generated public key, a user input indicating that a new key pair should be generated for the robotic garden tool, or receiving an over-the-air (OTA) update from the server device.

In addition to any combination of features described above, the external device electronic processor may be further configured to generate a second key pair including a second private key for the server device and a second public key for the robotic garden tool. The external device electronic processor may transmit, via the external device network interface, the second private key to the server device, and transmit, via the external device network interface, the second public key to the robotic garden tool. The server device may include a server device memory, and a server device network interface configured to allow the server device to communicate with other devices. The server device may include a server device electronic processor coupled to the server device memory and the server device network interface. The server device electronic processor may be configured to receive, via the server device network interface, the second private key from the external device. The server device electronic processor may be configured to store the second private key in the server device memory. The server device electronic processor may be configured to receive, via the server device network interface, an encrypted first message from the robotic garden tool. The encrypted first message may have been encrypted by the robotic garden tool using the second public key. The server device electronic processor may be configured to decrypt the encrypted first message using the second private key to generate a decrypted first message. The server device electronic processor may be configured to at least one selected from the group consisting of (i) store information included in the first decrypted message in the server device memory, (ii) provide a notification to the external device or another external device based on the information included in the first decrypted message, and both (i) and (ii).

In addition to any combination of features described above, the robotic garden tool electronic processor may be configured to receive, via the robotic garden tool network interface and from the external device, the second public key. The robotic garden tool electronic processor may be configured to store the second public key in the robotic garden tool memory. The robotic garden tool electronic processor may be configured to generate a first message to be transmitted to the server device. The robotic garden tool electronic processor may be configured to encrypt the first message using the second public key to generate the encrypted first message. The robotic garden tool electronic processor may be configured to transmit, via the robotic garden tool network interface, the encrypted first message to the server device.

In addition to any combination of features described above, the robotic garden tool electronic processor may be configured to generate the first message in response to at least one selected from the group consisting of detecting an error of a component of the robotic garden tool, detecting a status change of the robotic garden tool, a predetermined period of time elapsing, and combinations thereof.

In addition to any combination of features described above, the first message includes at least one selected from the group consisting of error information of the robotic garden tool, a status of the robotic garden tool, a location of the robotic garden tool, and combinations thereof.

In addition to any combination of features described above, the external device electronic processor may be further configured to generate a certificate associated with the second public key. The external device electronic processor may be configured to transmit the certificate to the robotic garden tool for storage in the robotic garden tool memory. The server device electronic processor may be configured to receive the certificate from the robotic garden tool along with the second public key and the encrypted first message, and authenticate the certificate before decrypting the encrypted first message.

In addition to any combination of features described above, the external device electronic processor may be configured to generate the second key pair and distribute the second key pair in response to one of service of the server device being changed to another server device, an expiration of a previously generated public key, a user input indicating that a new key pair should be generated for the robotic garden tool, or receiving an over-the-air (OTA) update from the server device.

Another embodiment includes a communication system that may include a server device and a robotic garden tool. The server device may include a server device memory, and a server device network interface configured to allow the server device to communicate with other devices. The server device may further include a server device electronic processor coupled to the server device memory and the server device network interface. The server device electronic processor may be configured to generate a first key pair including a first private key for a robotic garden tool and a first public key for the server device. The server device electronic processor may be further configured to store the first public key in the server device memory. The server device electronic processor may be further configured to transmit, via the server device network interface, the first private key for storage in the robotic garden tool. The robotic garden tool may include a housing, and a set of wheels coupled to the housing and configured to rotate to propel the robotic garden tool on an operating surface in an operating area. The robotic garden tool may further include at least one wheel motor coupled to one or more wheels of the set of wheels. The at least one wheel motor may be configured to drive rotation of the one or more wheels. The robotic garden tool may include a robotic garden tool memory, and a robotic garden tool network interface configured to allow the robotic garden tool to communicate with other devices. The robotic garden tool may further include a robotic garden tool electronic processor coupled to the robotic garden tool memory and to the robotic garden tool network interface. The robotic garden tool electronic processor may be configured to receive, via the robotic garden tool network interface, the first private key. The robotic garden tool electronic processor may be further configured to store the first private key in the robotic garden tool memory. The robotic garden tool electronic processor may be further configured to receive, via the robotic garden tool network interface, an encrypted first instruction from the server device. The encrypted first instruction may have been encrypted by the server device using the first public key. The robotic garden tool electronic processor may be further configured to decrypt the encrypted first instruction using the first private key to generate a decrypted first instruction. The robotic garden tool electronic processor may be further configured to control operation of the robotic garden tool in accordance with the decrypted first instruction.

In addition to any combination of features described above, the server device may be configured to transmit the first private key to an external device, and the robotic garden tool may be configured to receive the first private key from the external device.

In addition to any combination of features described above, the server device electronic processor may be further configured to generate a certificate associated with the first public key. The server device electronic processor may be configured to store the certificate in the server device memory. The robotic garden tool electronic processor may be configured to receive the certificate from the server device along with the first public key and the encrypted first instruction, and authenticate the certificate before decrypting the encrypted first instruction.

In addition to any combination of features described above, the server device electronic processor may be configured to generate the first key pair and transmit the first private key for storage by the robotic garden tool in response to one of service of a previous server device being changed to the server device, an expiration of a previously generated public key, or a user input indicating that a new key pair should be generated for the robotic garden tool.

Another embodiment includes a communication system that may include a robotic garden tool and a server device. The robotic garden tool may include a housing, and a set of wheels coupled to the housing and configured to rotate to propel the robotic garden tool on an operating surface in an operating area. The robotic garden tool may further include at least one wheel motor coupled to one or more wheels of the set of wheels. The at least one wheel motor may be configured to drive rotation of the one or more wheels. The robotic garden tool may further include a robotic garden tool memory, and a robotic garden tool network interface configured to allow the robotic garden tool to communicate with other devices. The robotic garden tool may further include a robotic garden tool electronic processor coupled to the robotic garden tool memory and to the robotic garden tool network interface. The robotic garden tool electronic processor may be configured to generate a first key pair including a first private key for the robotic garden tool and a first public key for a server device. The robotic garden tool electronic processor may be further configured to store the first private key in the robotic garden tool device memory. The robotic garden tool electronic processor may be further configured to transmit, via the robotic garden tool network interface, the first public key for storage in the server device. The server device may include a server device memory, and a server device network interface configured to allow the server device to communicate with other devices. The server device may further include a server device electronic processor coupled to the server device memory and the server device network interface. The server device electronic processor may be configured to receive, via the server device network interface, the first public key. The server device electronic processor may be further configured to store the first public key in the server device memory. The robotic garden tool electronic processor may be further configured to receive, via the robotic garden tool network interface, an encrypted first instruction from the server device. The encrypted first instruction may have been encrypted by the server device using the first public key. The robotic garden tool electronic processor may be further configured to decrypt the encrypted first instruction using the first private key to generate a decrypted first instruction. The robotic garden tool electronic processor may be further configured to control operation of the robotic garden tool in accordance with the decrypted first instruction.

In addition to any combination of features described above, the robotic garden tool may be configured to transmit the first public key to an external device, and the server device may be configured to receive the first public key from the external device.

In addition to any combination of features described above, the robotic garden tool electronic processor may be configured to generate a certificate associated with the first public key, and transmit the certificate for storage by the server device. The robotic garden tool electronic processor may be configured to receive the certificate from the server device along with the first public key and the encrypted first instruction, and authenticate the certificate before decrypting the encrypted first instruction.

In addition to any combination of features described above, the robotic garden tool electronic processor may be configured to generate the first key pair and transmit the first public key for storage by the server device in response to one of service of a previous server device being changed to the server device, an expiration of a previously generated public key, a user input indicating that a new key pair should be generated for the robotic garden tool, or receiving an over-the-air (OTA) update from the server device.

Another embodiment includes a communication system that may include an external device. The external device may include an external device memory, an external device network interface configured to allow the external device to communicate with other devices, and an external device electronic processor coupled to the external device memory and to the external device network interface. The external device electronic processor may be configured to generate a first key pair including a first private key and a first public key. The external device electronic processor may be configured to transmit, via the external device network interface, the first private key to a first device that includes a robotic garden tool or a server device. The external device electronic processor may be configured to transmit, via the external device network interface, the first public key to a second device that includes the other of the robotic garden tool and the server device. The communication system may include the robotic garden tool. The robotic garden tool may include a housing, and a set of wheels coupled to the housing and configured to rotate to propel the robotic garden tool on an operating surface in an operating area. The robotic garden tool may include at least one wheel motor coupled to one or more wheels of the set of wheels. The at least one wheel motor may be configured to drive rotation of the one or more wheels. The robotic garden tool may include a robotic garden tool memory, a robotic garden tool network interface configured to allow the robotic garden tool to communicate with other devices, and a robotic garden tool electronic processor coupled to the robotic garden tool memory and to the robotic garden tool network interface. The robotic garden tool electronic processor may be configured to receive, via the robotic garden tool network interface, one of the first private key or the first public key from the external device. The robotic garden tool electronic processor may be configured to store one of the first private key or the first public key in the robotic garden tool memory. The robotic garden tool electronic processor may be configured to receive, via the robotic garden tool network interface, an encrypted first instruction from the server device. The encrypted first instruction may have been encrypted by the server device using the other of the one of the first private key or the first public key. The robotic garden tool electronic processor may be configured to decrypt the encrypted first instruction using the one of the first private key or the first public key to generate a decrypted first instruction. The robotic garden tool electronic processor may be configured to control operation of the robotic garden tool in accordance with the decrypted first instruction.

In addition to any combination of features described above, the first device may include the robotic garden tool, and the one of the first private key or the first public key may include the first private key.

In addition to any combination of features described above, the communication system may further comprise the server device. The server device may include a server device memory, a server device network interface configured to allow the server device to communicate with other devices, and a server device electronic processor coupled to the server device memory and the server device network interface. The server device electronic processor may be configured to receive, via the server device network interface and from the external device, the other of the one of the first private key or the first public key and an identity of the robotic garden tool with which the one of the first private key or the first public key is associated. The server device electronic processor may be configured to store the other of the one of the first private key or the first public key and the identity of the robotic garden tool with which the one of the first private key or the first public key is associated in the server device memory. The server device electronic processor may be configured to generate a first instruction to be transmitted to the robotic garden tool. The server device electronic processor may be configured to encrypt the first instruction using the other of the one of the first private key or the first public key to generate the encrypted first instruction. The server device electronic processor may be configured to transmit, via the server device network interface, the encrypted first instruction to the robotic garden tool.

In addition to any combination of features described above, the first device may include the robotic garden tool, and the one of the first private key or the first public key includes the first private key.

Another embodiment includes a communication system that may include a server device. The server device may include a server device memory, a server device network interface configured to allow the server device to communicate with other devices, and a server device electronic processor coupled to the server device memory and the server device network interface. The server device electronic processor may be configured to generate a first key pair including a first private key and a first public key. The server device electronic processor may be configured to store one of the first private key or the first public key in the server device memory. The server device electronic processor may be configured to transmit, via the server device network interface, the other of the first private key or the first public key for storage in a robotic garden tool. The communication system may also include the robotic garden tool. The robotic garden tool may include a housing, and a set of wheels coupled to the housing and configured to rotate to propel the robotic garden tool on an operating surface in an operating area. The robotic garden tool also may include at least one wheel motor coupled to one or more wheels of the set of wheels. The at least one wheel motor may be configured to drive rotation of the one or more wheels. The robotic garden tool may also include a robotic garden tool memory, a robotic garden tool network interface configured to allow the robotic garden tool to communicate with other devices, and a robotic garden tool electronic processor coupled to the robotic garden tool memory and to the robotic garden tool network interface. The robotic garden tool electronic processor may be configured to receive, via the robotic garden tool network interface, the other of the first private key or the first public key. The robotic garden tool electronic processor may be configured to store the other of the first private key or the first public key in the robotic garden tool memory. The robotic garden tool electronic processor may be configured to receive, via the robotic garden tool network interface, an encrypted first instruction from the server device. The encrypted first instruction may have been encrypted by the server device using the one of the first private key or the first public key. The robotic garden tool electronic processor may be configured to decrypt the encrypted first instruction using the other of the first private key or the first public key to generate a decrypted first instruction. The robotic garden tool electronic processor may be configured to control operation of the robotic garden tool in accordance with the decrypted first instruction.

In addition to any combination of features described above, the one of the first private key or the first public key includes the first public key.

Another embodiment includes a communication system that may include a robotic garden tool. The robotic garden tool may include a housing, and a set of wheels coupled to the housing and configured to rotate to propel the robotic garden tool on an operating surface in an operating area. The robotic garden tool may include at least one wheel motor coupled to one or more wheels of the set of wheels. The at least one wheel motor may be configured to drive rotation of the one or more wheels. The robotic garden tool may also include a robotic garden tool memory, a robotic garden tool network interface configured to allow the robotic garden tool to communicate with other devices, and a robotic garden tool electronic processor coupled to the robotic garden tool memory and to the robotic garden tool network interface. The robotic garden tool electronic processor may be configured to generate a first key pair including a first private key and a first public key. The robotic garden tool electronic processor may be configured to store one of the first private key or the first public key in the robotic garden tool device memory. The robotic garden tool electronic processor may be configured to transmit, via the robotic garden tool network interface, the other of the first private key or the first public key for storage in a server device. The communication system may also include the server device. The server device may include a server device memory, a server device network interface configured to allow the server device to communicate with other devices, and a server device electronic processor coupled to the server device memory and the server device network interface. The server device electronic processor may be configured to receive, via the server device network interface, the other of the first private key or the first public key. The server device electronic processor may be configured to store the other of the first private key or the first public key in the server device memory. The robotic garden tool electronic processor may be further configured to receive, via the robotic garden tool network interface, an encrypted first instruction from the server device. The encrypted first instruction may have been encrypted by the server device using the other of the first private key or the first public key. The robotic garden tool electronic processor may be further configured to decrypt the encrypted first instruction using the one of the first private key or the first public key to generate a decrypted first instruction. The robotic garden tool electronic processor may be further configured to control operation of the robotic garden tool in accordance with the decrypted first instruction.

In addition to any combination of features described above, the one of the first private key or the first public key includes the first private key.

Other aspects, features, and embodiments will become apparent by consideration of the detailed description and accompanying drawings.

The use of "including," "comprising" or "having" and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. The terms "mounted," "connected" and "coupled" are used broadly and encompass both direct and indirect mounting, connecting, and coupling. Further, "connected" and "coupled" are not restricted to physical or mechanical connections or couplings, and can include electrical connections or couplings, whether direct or indirect.

It should be noted that a plurality of hardware and software based devices, as well as a plurality of different structural components may be utilized to implement the invention. Furthermore, and as described in subsequent paragraphs, the specific configurations illustrated in the drawings are intended to exemplify embodiments of the invention and that other alternative configurations are possible. The terms "processor," "central processing unit," and "CPU" are interchangeable unless otherwise stated. Where the terms "processor" or "central processing unit" or "CPU" are used as identifying a unit performing specific functions, it should be understood that, unless otherwise stated, those functions can be carried out by a single processor, or multiple processors arranged in any form, including parallel processors, serial processors, tandem processors or cloud processing/cloud computing configurations.

Throughout this application, the term "approximately" may be used to describe the dimensions of various components. In some situations, the term "approximately" means that the described dimension is within <NUM>% of the stated value, within <NUM>% of the stated value, within <NUM>% of the stated value, or the like. When the term "and/or" is used in this application, it is intended to include any combination of the listed components. For example, if a component includes A and/or B, the component may include solely A, solely B, or A and B.

<FIG> illustrates a communication system <NUM> that may include a robotic garden tool <NUM> (e.g., a robotic lawn mower <NUM> that may also be referred to as a robotic mower <NUM>), a docking station <NUM> for the robotic mower <NUM>, an external device <NUM>, and a server device <NUM> according to some example embodiments. The robotic garden tool <NUM> is primarily described as being a robotic lawn mower <NUM>. However, in other embodiments, the robotic garden tool <NUM> may include a tool for sweeping debris, vacuuming debris, clearing debris, collecting debris, moving debris, etc. Debris may include plants (such as grass, leaves, flowers, stems, weeds, twigs, branches, etc., and clippings thereof), dust, dirt, jobsite debris, snow, and/or the like. For example, other implementations of the robotic garden tool <NUM> may include a vacuum cleaner, a trimmer, a string trimmer, a hedge trimmer, a sweeper, a cutter, a plow, a blower, a snow blower, etc. In yet other embodiments, the robotic garden tool <NUM> may include a device for distributing a substance. For example, the robotic garden tool <NUM> may distribute fertilizer, paint (e.g., spray paint), chalk, or another substance on a lawn or other surface.

In some embodiments, a lawn may include any type of property that includes grass, a crop, some other material to be trimmed, cleared, gathered, etc., and/or that includes some material to receive treatment from the robotic garden tool <NUM> (e.g., fertilizer to treat grass in the lawn). In some embodiments, a lawn may include paved portions of a property (e.g., a driveway), for example, when the robotic garden tool <NUM> is used for snow plowing/removal or when the robotic garden tool <NUM> is used to paint a paved surface.

In some embodiments, the docking station <NUM> may be installed in a worksite using stakes <NUM>. The robotic garden tool <NUM> may be configured to mow a yard and dock at the docking station <NUM> in order to charge a battery pack <NUM> of the robotic garden tool <NUM> (see <FIG>). In some embodiments, the docking station <NUM> is configured to make an electrical connection with a power supply (e.g., via a cord and plug connected to a wall outlet that is connected to a power grid) in order to provide charging current to the robotic garden tool <NUM> when the robotic garden tool <NUM> is electrically coupled with the docking station <NUM>. In some embodiments, the battery pack <NUM> is a removable, rechargeable battery pack configured to be charged at a charging device/charger while a second removable, rechargeable battery pack is used with the robotic garden tool <NUM>.

As indicated in <FIG>, in some embodiments, the robotic garden tool <NUM> is configured to bidirectionally wirelessly communicate with the external device <NUM>, the docking station <NUM>, and/or the server device <NUM>. In some embodiments, the robotic garden tool <NUM> is configured to directly communicate with the external device <NUM> when the robotic garden tool <NUM> is within communication range of the external device <NUM> (e.g., via Bluetooth™, Bluetooth™ low energy (BLE), WiFi™, or the like). In some embodiments, the robotic garden tool <NUM> is additionally or alternatively configured to communicate with the external device <NUM> via an intermediary device such as a cellular communication tower/base station, another device in a cellular network, or the like (e.g., when the robotic garden tool <NUM> is outside of direct communication range with the external device <NUM>). In some embodiments, the robotic garden tool <NUM> is configured to communicate similarly with the server device <NUM> (e.g., via message queuing telemetry transport (MQTT) protocol). The external device <NUM> may be, for example, a smart phone (as illustrated), a laptop computer, a desktop computer, a tablet computer, a personal digital assistant (PDA), a wireless communication router that allows another external device <NUM> that is located remotely from the robotic garden tool <NUM> to communicate with the robotic garden tool <NUM>, or another electronic device capable of communicating with the robotic garden tool <NUM>. The server device <NUM> may be, for example, a cloud computing repository, a database, a blockchain network, or any other type of network capable of receiving, transmitting, and storing data. For example, the server device <NUM> may be configured to bidirectionally communicate with the external device <NUM> that may be running an application (i.e., an APP) using for example, a representational state transfer application programming interface (REST API).

The external device <NUM> may also be configured to communicate with the robotic garden tool <NUM> to enable or disable certain features/operations of the robotic garden tool <NUM> in accordance with instructions received via a user input on a user interface of the external device <NUM> (e.g., a command to start operation of the robotic garden tool, a command to stop operation of the robotic garden tool, scheduling information regarding operation of the robotic garden tool, and/or the like). The external device <NUM> may also be configured to transmit the information to the server device <NUM> and/or receive information from the server device <NUM>. For example, the external device <NUM> may receive (and display on a user interface) status information of the robotic garden tool <NUM> from the robotic garden tool <NUM> and/or the server device <NUM> In some embodiments, the communication between the external device <NUM> and the robotic garden tool <NUM> may be wireless or may be wired (e.g., via a Universal Serial Bus (USB) cord configured to connect to respective USB ports of the external device <NUM> and the robotic garden tool <NUM>). The external device <NUM> is further configured to communicate with the server device <NUM>, in a wired and/or wireless manner.

In some embodiments, the docking station <NUM> may also be configured to bidirectionally communicate with any one or a combination of the robotic garden tool <NUM>, the external device <NUM>, and the server device <NUM>.

While <FIG> illustrates one robotic garden tool <NUM>, one charging/docking station <NUM>, one external device <NUM>, and one server device <NUM>, in some embodiments, the communication system <NUM> includes additional robotic garden tools <NUM>, docking stations <NUM>, external devices <NUM>, and/or server devices <NUM>. In some embodiments, a single external device <NUM> and/or a single server device <NUM> may be configured to communicate with multiple robotic garden tools <NUM>. In some embodiments, a single robotic garden tool <NUM> may be configured to communicate with multiple external devices <NUM> (e.g., of the same user or of different users) and/or multiple server devices <NUM>.

<FIG> illustrates a bottom perspective view of the robotic garden tool <NUM> according to some example embodiments. The robotic garden tool <NUM> may include a housing <NUM> that includes an outer housing 125A (i.e., outer housing shell) and an inner housing 125B. The outer housing 125A may be coupled to the inner housing 125B. The robotic garden tool <NUM> also may include wheels <NUM> (i.e., a set of wheels <NUM>) coupled to the inner housing 125B and configured to rotate with respect to the housing <NUM> to propel the robotic garden tool <NUM> on an operating surface (e.g., a yard to be mowed). The wheels <NUM> may include motor-driven wheels 130A and non-motor-driven wheels 130B. In the embodiment shown in <FIG>, two rear wheels 130A are motor-driven wheels 130A while two front wheels 130B are non-motor-driven wheels 130B. In other embodiments, the robotic garden tool <NUM> may include a different wheel arrangement (e.g., a different number of total wheels, a different number of each type of wheel, different wheels being motor-driven or non-motor-driven, and/or the like). In some embodiments, the housing <NUM> may not include the outer housing 125A and the inner housing 125B. Rather, the housing <NUM> may include a single integrated body/housing to which the wheels <NUM> are attached.

In some embodiments, the robotic garden tool <NUM> includes a wheel motor <NUM> (see <FIG>) coupled to one or more wheels <NUM> and configured to drive rotation of the one or more wheels <NUM>. In some embodiments, the robotic garden tool <NUM> includes multiple wheel motors <NUM> where each wheel motor <NUM> is configured to drive rotation of a respective motor-driven wheel 130A (see <FIG>).

In some embodiments, the robotic garden tool <NUM> includes a cutting blade assembly <NUM> coupled to the inner housing 125B and configured to rotate with respect to the housing <NUM> to cut grass on the operating surface. The cutting blade assembly <NUM> may include a rotating disc to which a plurality of cutting blades <NUM> configured to cut the grass are attached. In some embodiments, the robotic garden tool <NUM> includes a cutting blade assembly motor <NUM> (see <FIG>) coupled to the inner housing 125B and to the cutting blade assembly <NUM>. The cutting blade assembly motor <NUM> may be configured to drive rotation of the cutting blade assembly <NUM> to cut the grass on the operating surface.

In some embodiments, the robotic garden tool <NUM> and/or the docking station <NUM> include additional components and functionality than is shown and described herein.

<FIG> is a block diagram of the robotic garden tool <NUM> according to some example embodiments. In the embodiment illustrated, the robotic garden tool <NUM> includes a first electronic processor <NUM> (i.e., a robotic garden tool electronic processor <NUM>) (for example, a microprocessor or other electronic device). The first electronic processor <NUM> includes input and output interfaces (not shown) and is electrically coupled to a first memory <NUM> (i.e., a robotic garden tool memory <NUM>), a first network interface <NUM> (i.e., a robotic garden tool network interface <NUM>), an optional first user input device <NUM>, an optional display <NUM>, one or more sensors <NUM>, a left rear wheel motor 235A, a right rear wheel motor 235B, a cutting blade assembly motor <NUM>, and a battery <NUM> (e.g., a battery pack <NUM>). In some embodiments, the robotic garden tool <NUM> includes fewer or additional components in configurations different from that illustrated in <FIG>. For example, the robotic garden tool <NUM> may not include the first user input device <NUM> and/or the first display <NUM>. As another example, the robotic garden tool <NUM> may include a global positioning system (GPS) device, a height adjustment motor configured to adjust a height of the cutting blade assembly <NUM>, and/or the like. As yet another example, the robotic garden tool <NUM> may include additional sensors or fewer sensors than the sensors <NUM> described herein. In some embodiments, the robotic garden tool <NUM> performs functionality other than the functionality described below.

The first memory <NUM> may include read only memory (ROM), random access memory (RAM), other non-transitory computer-readable media, or a combination thereof. The first electronic processor <NUM> is configured to receive instructions and data from the first memory <NUM> and execute, among other things, the instructions. In particular, the first electronic processor <NUM> executes instructions stored in the first memory <NUM> to perform the methods described herein.

The first network interface <NUM> is configured to send data to and receive data from other devices in the communication system <NUM> (e.g., the docking station <NUM>, the external device <NUM>, the server device <NUM>, etc.). In some embodiments, the first network interface <NUM> includes one or more transceivers for wirelessly communicating with the external device <NUM> and/or the docking station <NUM> (e.g., a first radio frequency (RF) transceiver configured to communicate via Bluetooth™, Bluetooth™ low energy (BLE), WiFi™, or the like). The first network interface <NUM> may include an additional transceiver for wirelessly communicating with the server device <NUM> (and/or the external device <NUM> and/or the docking station <NUM>) via, for example, cellular communication. In some embodiments, at least some of the transceivers and/or receivers of the robotic garden tool <NUM> may be combined or share some elements (e.g., an antenna and/or other hardware). Alternatively or additionally, the first network interface <NUM> may include a connector or port for receiving a wired connection to the external device <NUM>, such as USB cable. In some embodiments, the robotic garden tool <NUM> may additionally or alternatively communicate with the docking station <NUM> when the robotic garden tool <NUM> is docked/coupled to the docking station <NUM> (e.g., via first terminals of the robotic garden tool <NUM> that are connected to second terminals of the docking station <NUM>).

The first user input device <NUM> is configured to allow the first electronic processor <NUM> to receive a user input from a user to, for example, set/adjust an operational parameter of the robotic garden tool <NUM>. The first display <NUM> is configured to display a user interface to the user. Similar to the user interface of the external device <NUM> described previously herein, the user interface displayed on the first display <NUM> may allow the user to access and interact with robotic garden tool information. In some embodiments, the first display <NUM> may also act as the first user input device <NUM>. For example, a touch sensitive input interface may be incorporated into the first display <NUM> to allow the user to interact with content provided on the first display <NUM>. The first display <NUM> may be a liquid crystal display (LCD) screen, an organic light emitting display (OLED) display screen, or an E-ink display. In some embodiments, the first display <NUM> may be configured to display a status of the robotic garden tool <NUM>, an error condition of the robotic garden tool <NUM>, an indication that a new cryptography key pair is recommended to be generated as explained in greater detail below, and/or the like). In some embodiments, the first display <NUM> includes future-developed display technologies.

In some embodiments, the first electronic processor <NUM> is in communication with a plurality of sensors <NUM> that may include electromagnetic field sensors, radio frequency sensors (e.g., radio frequency identification (RFID) interrogators/sensors), Hall sensors, current sensors, other magnetic sensors, and/or the like. In some embodiments, data from one or more Hall sensors may be used by the first electronic processor <NUM> to determine how fast one or more motors 235A, 235B, <NUM> of the robotic garden tool <NUM> is rotating.

In some embodiments, the battery pack <NUM> provides power to the first electronic processor <NUM> and to other components of the robotic garden tool <NUM> such as the motors 235A, 235B, <NUM> and the first display <NUM>. In some embodiments, power may be supplied to other components besides the first electronic processor <NUM> through the first electronic processor <NUM> or directly to the other components. In some embodiments, when power is provided directly from the battery pack <NUM> to the other components, the first electronic processor <NUM> may control whether power is provided to one or more of the other components using, for example, a respective switch (e.g., a field-effect transistor) or a respective switching network including multiple switches. For example, the first electronic processor <NUM> may control whether current from the battery pack <NUM> is provided to a motor of the robotic garden tool <NUM>. In some embodiments, the robotic garden tool <NUM> includes active and/or passive conditioning circuitry (e.g., voltage step-down controllers, voltage converters, rectifiers, filters, etc.) to regulate or control the power received by the components of the robotic garden tool <NUM> (e.g., the first electronic processor <NUM>, the motors, 235A, 235B, <NUM>, etc.) from the battery pack <NUM>. In some embodiments, the battery pack <NUM> is a removable battery pack. In some embodiments, the battery pack <NUM> is configured to receive charging current from the docking station <NUM> when the robotic garden tool <NUM> is docked at the docking station <NUM> and electrically connected thereto.

<FIG> is a block diagram of the external device <NUM> according to some example embodiments. In the example shown, the external device <NUM> includes a second electronic processor <NUM> (i.e., an external device electronic processor <NUM>) electrically connected to a second memory <NUM> (i.e., an external device memory <NUM>), a second network interface <NUM> (i.e., an external device network interface <NUM>), a second user input device <NUM>, and a second display <NUM>. These components are similar to the like-named components of the robotic garden tool <NUM> explained above with respect to <FIG> and function in a similar manner as described above. For example, the second display <NUM> may also function as an input device (e.g., when the second display <NUM> is a touchscreen). In some embodiments, the second electronic processor <NUM> sends data to and receives data from the robotic garden tool <NUM> and/or the server device <NUM> via the second network interface <NUM>. In some embodiments, the second network interface <NUM> includes one or more transceivers for wirelessly communicating with the robotic garden tool <NUM> (e.g., a second RF transceiver configured to communicate via Bluetooth™, Bluetooth™ low energy (BLE), WiFi™, or the like). The second network interface <NUM> may include an additional transceiver for wirelessly communicating with the server device <NUM> via, for example, cellular communication. In some embodiments, at least some of the transceivers and/or receivers of the external device <NUM> may be combined or share some elements (e.g., an antenna and/or other hardware). In some embodiments, the external device <NUM> includes fewer or additional components in configurations different from that illustrated in <FIG>. For example, the external device <NUM> may include a battery, a global positioning system (GPS) device, or the like. In some embodiments, the external device <NUM> performs functionality other than the functionality described below.

<FIG> is a block diagram of the server device <NUM> according to some example embodiments. In the example shown, the server device <NUM> includes a third electronic processor <NUM> (i.e., a server device electronic processor <NUM>) electrically connected to a third memory <NUM> (i.e., a server device memory <NUM>), a third network interface <NUM> (i.e., a server device network interface <NUM>), and a third user input device <NUM>. These components are similar to the like-named components of the robotic garden tool <NUM> explained above with respect to <FIG> and function in a similar manner as described above. The server device <NUM> may be one of multiple server devices <NUM> in a network, connected to each other and/or to other devices (e.g., external devices <NUM> and robotic garden tools <NUM>) via their respective third network interface <NUM>.

In some embodiments, the robotic garden tool <NUM> travels within a virtual boundary of the operating area to execute a task (e.g., mowing a lawn). The virtual boundary may be defined by a boundary wire or may be programmed into the robotic garden tool <NUM>, for example, by storing map data with location coordinates. The robotic garden tool <NUM> may travel randomly within the operating area defined by the virtual boundary. In some embodiments, the robotic garden tool <NUM> may travel in a predetermined pattern within the operating area defined by the virtual boundary (e.g., in adjacent rows or columns between sides of the virtual boundary) to more efficiently and evenly mow the lawn within the operating area. In such embodiments, the robotic garden tool <NUM> may determine and keep track of its current location within the operating area, for example using odometry, location tracking of itself, and/or the like. For example, the robotic garden tool <NUM> may use a speedometer to measure a mower speed such that the robotic garden tool <NUM> maintains a set speed. In another example, the robotic garden tool <NUM> may use an odometer to measure the travel distance in order to follow a predetermined travel path from a known starting location such as the docking station <NUM>. In another example, the robotic garden tool <NUM> may use a position sensor, such as a GPS device, to follow the predetermined travel path by matching location coordinates of the robotic garden tool <NUM> with location coordinates along the predetermined travel path. The robotic garden tool <NUM> may include a compass device to determine cardinal direction. The robotic garden tool <NUM> may also be pre-programmed with a map of the lawn or may execute a "map mode" in order to generate a map of the lawn.

To allow for the communication between at least some of the devices in the communication system <NUM> of <FIG> that is described previously herein (e.g., the communication between the robotic garden tool <NUM> and the server device <NUM>), cryptography may be used for data security purposes. For example, asymmetric/public key cryptography may be used to ensure that communications being received by various devices of the system <NUM> are from authentic/verified devices that are intended to communicate with each other.

Cryptography methods may include using key pairs that are stored on devices that are configured to communicate with each other. For example, a first key pair may include a private key for a certain device (e.g., the robotic garden tool <NUM>) that is known only by the robotic garden tool <NUM> and is unknown to other devices in the communication system <NUM>. The first key pair may also include a public key that may be known by other devices in the communication system <NUM> (e.g., one or more server devices <NUM>). When the server device <NUM> desires to transmit information to the robotic garden tool <NUM>, the server device <NUM> may encrypt the information using the public key associated with the robotic garden tool <NUM>, and the robotic garden tool <NUM> may decrypt the encrypted information using its private key. Because only the robotic garden tool <NUM> knows its private key, the robotic garden tool <NUM> is the only device that can decrypt the encrypted information that was encrypted using its public key.

A similar situation may also exist with respect to communication from the robotic garden tool <NUM> to the server device <NUM>. For example, a second key pair may include a private key for the server device <NUM> that is known only by the server device <NUM> and is unknown to other devices in the communication system <NUM>. The second key pair may also include a public key that may be known by other devices in the communication system <NUM> (e.g., one or more robotic garden tools <NUM>). When a robotic garden tool <NUM> desires to transmit information to the server device <NUM>, the robotic garden tool <NUM> may encrypt the information using the public key associated with the server device <NUM>, and the server device <NUM> may decrypt the encrypted information using its private key. Because only the server device <NUM> knows its private key, the server device <NUM> is the only device that can decrypt the encrypted information that was encrypted using its public key.

In some instances, a single key pair may be used for bidirectional communication between devices (e.g., the robotic garden tool <NUM> and the server device <NUM>). For example, a private key of one device may be used for encrypting information transmitted by the device and decrypting information received from the other device while a public key of the other device may be similarly used for encrypting information transmitted by the other device and decrypting information received from the device. In some of such instances, a receiving device (e.g., the server device <NUM>) may decrypt received information using its key (e.g., a private or public key) and based on the received information indicating that the received information was received from a particular transmitting device (e.g., the robotic garden tool <NUM>). In other words, a private key may be used to encrypt and/or decrypt information, and a public key may be used to encrypt and/or decrypt information. In some instances, if a device (e.g., the server device <NUM>) is configured to engage in encrypted communication with more than one other devices (e.g., robotic garden tools <NUM>), the device may store a respective public/private key associated with each robotic garden tool <NUM>.

In some situations, at least one or both of the private key of the robotic garden tool <NUM> and the public key of the server device <NUM> (and possibly an associated certificate) may be stored in the robotic garden tool memory <NUM> at a time of manufacturing of the robotic garden tool <NUM>. In some instances, one or both of these keys is stored in firmware of the robotic garden tool <NUM> that may not be able to be updated or overwritten after manufacturing. During the lifetime of the robotic garden tool <NUM>, a cloud service bound to the server device <NUM> associated with an original public key that was stored in the robotic garden tool <NUM> may be changed to a different cloud service that uses a different server device <NUM>. However, the public key stored by the robotic garden tool <NUM> may not be able to be updated/overwritten to allow the robotic garden tool <NUM> to continue to communicate with the server device <NUM> and/or with a different server device <NUM>. Additionally, in some instances, one or more of the keys (or certificates) stored in the robotic garden tool <NUM> have an expiration date. While this expiration date is designed to be longer than the lifetime of the robotic garden tool, it is nevertheless possible that one or more of the keys stored in the robotic garden tool <NUM> at the time of manufacturing expire during the lifetime of the robotic garden tool <NUM>. Again however, these keys stored by the robotic garden tool <NUM> may not be able to updated/overwritten to allow the robotic garden tool <NUM> to continue to communicate with the server device <NUM> and/or with a different server device <NUM>. Accordingly, there is a technological problem with the manner in which cryptography keys used for communication with other devices are stored in a robotic garden tool at a time of manufacturing.

To address this technological problem, the systems, methods, and devices described herein allow one or more cryptography keys stored on the robotic garden tool <NUM> to be generated and updated/overwritten by one or more devices of the communication system <NUM>. For example, the external device <NUM> and/or the server device <NUM> may generate cryptographic keys and distribute such keys as appropriate to devices within the system <NUM> to allow for communication between the devices as described in greater detail below. As another example, the robotic garden tool <NUM> itself may generate and distribute cryptographic keys in some instances. The systems, methods, and devices described herein address the technological problem by allowing cryptographic keys used by the robotic garden tool <NUM> to be updated/overwritten to overcome the problematic situations described above (e.g., changing of cloud service provider, key expiration, etc.).

<FIG> illustrates a block diagram of some components of the communication system <NUM> of <FIG> where one or more cryptography key pairs is generated by the external device <NUM> according to some example embodiments. As indicated in the example of <FIG>, the external device electronic processor <NUM> may be configured to generate a first key pair including a first private key for the robotic garden tool <NUM> and a first public key for the server device <NUM>. In some instances, the external device electronic processor <NUM> generates the first private key and the first public key using an algorithm such that the first private key and the first public key are mathematically related to each other. For example, the algorithm used to generate the first key pair may include a Rivest, Shamir, Adleman (RSA) encryption algorithm, an elliptical curve cryptography (ECC) encryption algorithm, or the like.

Once the first key pair is generated, the external device electronic processor <NUM> may transmit, via the external device network interface <NUM>, the first private key to the robotic garden tool <NUM> as indicated in <FIG>. The external device electronic processor <NUM> also may transmit, via the external device network interface <NUM>, the first public key to the server device <NUM>. In some instances, the external device <NUM> may receive a respective acknowledgement from each of the robotic garden tool <NUM> and the server device <NUM> in response to the respective key being received by each device <NUM>, <NUM>. In some instances, in response to receiving the acknowledgements of receipt of the keys from the robotic garden tool <NUM> and the server device <NUM>, the external device electronic processor <NUM> may delete the generated key pair (or at least the first private key of the robotic garden tool <NUM>) such that the keys are no longer known by the external device <NUM>.

In some instances, the external device electronic processor <NUM> is configured to generate the first key pair and distribute the first key pair in response to one of service of a previous server device <NUM> being changed to the server device <NUM>, an expiration of a previously generated public key that was stored on the robotic garden tool <NUM>, a user input indicating that a new key pair should be generated for the robotic garden tool <NUM>, or receiving an over-the-air (OTA) update from the server device <NUM>. In some instances, one or both of the first display <NUM> of the robotic garden tool <NUM> and the second display <NUM> of the external device <NUM> may provide a notification that a new cryptography key pair has been generated in order to authenticate communication between the server device <NUM> and the robotic garden tool <NUM>. In some instances, one of the displays <NUM>, <NUM> may prompt the user for a user input to approve the generation of the new key pair before the new key pair is generated or before a new key(s) is stored on the robotic garden tool <NUM> (and/or before a previously stored key(s) is overwritten/deleted).

As indicated in <FIG>, the server device electronic processor <NUM> may be configured to receive, via the server device network interface <NUM> and from the external device <NUM>, the first public key and an identity (e.g., a serial/identification number) of the robotic garden tool <NUM> with which the first public key is associated. The server device electronic processor <NUM> may be configured to store/register the first public key and the identity of the robotic garden tool <NUM> with which the first public key is associated in the server device memory <NUM>.

When the server device <NUM> desires to and/or is instructed to communicate to the robotic garden tool <NUM>, the server device electronic processor <NUM> may generate a first instruction to be transmitted to the robotic garden tool <NUM>. In some instances, the server device electronic processor <NUM> is configured to generate the first instruction in response to receiving, via the server device network interface <NUM>, a request to generate the first instruction from the external device <NUM> or another external device <NUM>. The request to generate the first instruction may be provided to the server device <NUM> in response to a user input received on the external device <NUM> or the another external device <NUM>. For example, the external device <NUM> may receive a user input to start operation of the robotic garden tool <NUM>, to stop operation of the robotic garden tool <NUM>, to provide scheduling information regarding operation of the robotic garden tool <NUM>, to change other operating features of the robotic garden tool <NUM> (e.g.,. blade height, blade speed, travel speed, etc.), and combinations thereof. In response to the user input, the external device <NUM> may communicate with the server device <NUM> to request that the server device <NUM> send the first instruction in accordance with the user input. Such communication from the external device <NUM> to the server device <NUM> may occur when the external device <NUM> is not within short-distance communication range of the robotic garden tool <NUM> (e.g., not within Bluetooth™ communication range). The first instruction may include at least one selected from the group consisting of a command to start operation of the robotic garden tool <NUM>, a command to stop operation of the robotic garden tool <NUM>, scheduling information regarding operation of the robotic garden tool <NUM>, and the like, and combinations thereof.

In some instances, the first instruction is generated by the server device <NUM> in response to determining that the robotic garden tool <NUM> should receive a software or firmware update. In such instances, the first instruction may include the software or firmware update. In some instances, the first instruction may include new/updated cryptography key information as explained in greater detail below.

In some instances, after generating the first instruction to be transmitted to the robotic garden tool <NUM>, the server device electronic processor <NUM> may encrypt the first instruction using the first public key to generate an encrypted first instruction. The server device electronic processor <NUM> may also transmit, via the server device network interface <NUM>, the encrypted first instruction to the robotic garden tool <NUM>.

As indicated in <FIG>, the robotic garden tool electronic processor <NUM> may be configured to receive, via the robotic garden tool network interface <NUM>, the first private key from the external device <NUM>. The robotic garden tool electronic processor <NUM> may be configured to store the first private key in the robotic garden tool memory <NUM> to be used in the future when incoming communications are received from other devices (e.g., the server device <NUM>) over certain communication protocols (e.g., cellular, and/or other long-range communication protocols). In some instances, short-range communication (e.g., Bluetooth™, etc.) between the robotic garden tool <NUM> and the external device <NUM> may not utilize asymmetric cryptography keys, for example, because other handshaking/authentication between the robotic garden tool <NUM> and the external device <NUM> may be performed according to the short-range communication range protocol.

In some instances, the robotic garden tool electronic processor <NUM> may later receive, via the robotic garden tool network interface <NUM>, a communication such as the encrypted first instruction from the server device <NUM>. As explained previously herein, the encrypted first instruction may have been encrypted by the server device <NUM> using the first public key. The robotic garden tool electronic processor <NUM> may be configured to decrypt the encrypted first instruction using the first private key to generate a decrypted first instruction (i.e., the first instruction previously generated by the server device <NUM>). In some instances, because only the robotic garden tool <NUM> knows the first private key, the robotic garden tool <NUM> is the only device that can decrypt the encrypted information that was encrypted using the first public key.

The robotic garden tool electronic processor <NUM> may then control operation of the robotic garden tool <NUM> in accordance with the decrypted first instruction (i.e., the first instruction). For example, the robotic garden tool electronic processor <NUM> may start operation of the robotic garden tool <NUM> (e.g., control the robotic garden tool <NUM> to leave the docking station <NUM> to begin mowing a lawn), stop operation of the robotic garden tool <NUM> (e.g., control the robotic garden tool <NUM> to return to the docking station <NUM>, disable a main cutting blade and/or a trim/edge cutting blade, and/or the like), update scheduling information regarding operation of the robotic garden tool <NUM>, and combinations thereof. In some instances, the robotic garden tool electronic processor <NUM> may update its software and/or firmware in accordance with the first instruction.

While the above explanation of <FIG> refers to the first public key being transmitted to the server device <NUM>, in some instances, the external device electronic processor <NUM> is further configured to generate a certificate associated with the first public key, and transmit the certificate to the server device <NUM> for storage by the server device <NUM>. In some instances, the certificate includes the public key (i.e., the public key is stored within the certificate). In some instances, the external device <NUM> requests and receives the certificate from a certificate authority (CA).

In situations where a certificate is provided in conjunction with the public key, the certificate may be transmitted along with the first instruction to a destination device (e.g., the robotic garden tool <NUM>). In some instances, the robotic garden tool electronic processor <NUM> is configured to receive the certificate from the server device <NUM> along with the first public key and the encrypted first instruction. In some instances, the robotic garden tool electronic processor <NUM> is configured to authenticate the certificate before decrypting the encrypted first instruction. For example, in response to authenticating the certificate, the robotic garden tool electronic processor <NUM> may decrypt the encrypted first instruction. On the other hand, in response to being unable to authenticate the certificate, the robotic garden tool electronic processor <NUM> may refrain from decrypting the encrypted first instruction. For example, the robotic garden tool electronic processor <NUM> being unable to authenticate the certificate may indicate that the received communication (i.e., the encrypted first instruction) may have been received from an unknown and/or untrusted device.

While <FIG> illustrates the generation of the first private key to be stored by the robotic garden tool <NUM> and the first public key to be stored/registered by the server device <NUM>, in some instances, the external device electronic processor <NUM> may additionally or alternatively generate one or more additional key pairs (e.g., a second key pair including a second private key to be stored by the server device <NUM> and a second public key to be stored by the robotic garden tool <NUM>). The external device electronic processor <NUM> may be configured to transmit, via the external device network interface <NUM>, the second private key to the server device <NUM>, and transmit, via the external device network interface <NUM>, the second public key to the robotic garden tool <NUM>. The second key pair operates similarly to the first key pair except in the opposite direction of communication (e.g., to allow the robotic garden tool <NUM> to communicate with the server device <NUM>). Accordingly, the same explanation above with respect to the first key pair may apply to the second key pair. For example, the explanation regarding communication between devices <NUM>, <NUM>, regarding encryption/decryption, regarding possible generation of a certificate, regarding what causes the key pair to be generated, and/or regarding other features may also apply to the second key pair. Also as explained previously herein, a single key pair may be generated to allow for encrypted communication between the server device <NUM> and one robotic garden tool <NUM>. In such instances, the private key may be stored on either device, and the public key may be stored on the other device where the private key is not stored.

Continuing the example involving the second key pair, in some instances, the robotic garden tool electronic processor <NUM> is configured to the receive, via the robotic garden tool network interface <NUM> and from the external device <NUM>, the second public key associated with the server device <NUM>. The robotic garden tool electronic processor <NUM> may be configured to store the second public key in the robotic garden tool memory <NUM>, for example, to be used for future communications to the server device <NUM>.

The robotic garden tool electronic processor <NUM> may be configured to generate a first message to be transmitted to the server device <NUM>. In some instances, the robotic garden tool electronic processor <NUM> is configured to generate the first message in response to at least one selected from the group consisting of detecting an error of a component of the robotic garden tool <NUM> (e.g., one of the motors <NUM>, <NUM>; one of the sensors <NUM>; and/or the like), detecting a status change of the robotic garden tool <NUM> (e.g., returning to the docking station <NUM> after a mowing operation, leaving the docking station <NUM> to engage in a mower operation, and/or the like), a predetermined period of time elapsing (i.e., periodically sending status updates of the robotic garden tool <NUM> including, for example, a battery charge level, a mowing progress, and/or the like), and combinations thereof. In some instances, the first message includes at least one selected from the group consisting of error information of the robotic garden tool <NUM>, a status of the robotic garden tool <NUM> (e.g., an operating state in which the robotic garden tool <NUM> is currently operating, a battery charge level, a mowing progress, and/or the like), a location of the robotic garden tool <NUM>, and combinations thereof.

In some instances, the robotic garden tool electronic processor <NUM> is configured to encrypt the first message using the second public key associated with the server device <NUM> to generate an encrypted first message. The robotic garden tool electronic processor <NUM> may then transmit, via the robotic garden tool network interface <NUM>, the encrypted first message to the server device <NUM>.

In some instances, the server device electronic processor <NUM> is configured to receive, via the server device network interface <NUM>, the second private key from the external device <NUM>. The server device electronic processor <NUM> also may be configured to store the second private key in the server device memory <NUM> to be used in the future when incoming communications are received from certain other devices (e.g., the robotic garden tool <NUM>) over certain communication protocols.

The server device electronic processor <NUM> may later receive, via the server device network interface <NUM>, the encrypted first message from the robotic garden tool <NUM>. As previously indicated, the encrypted first message may have been encrypted by the robotic garden tool <NUM> using the second public key associated with the server device <NUM>. The server device electronic processor <NUM> may be configured to decrypt the encrypted first message using the second private key to generate a decrypted first message (i.e., the first message). In some instances, because only the server device <NUM> knows the second private key, the server device <NUM> is the only device that can decrypt the encrypted first message that was encrypted using the second public key.

In some instances, the server device electronic processor <NUM> is configured to at least one selected from the group consisting of (i) store information included in the first decrypted message in the server device memory <NUM>, (ii) provide a notification to the external device <NUM> or another external device <NUM> based on the information included in the first decrypted message, and both (i) and (ii). For example, the server device <NUM> may store status information of the robotic garden tool <NUM> in a usage history memory/database for future reference by a user or maintenance personnel. As another example, the server device <NUM> may transmit a notification to the external device <NUM> to attempt to make the user aware of the current status (e.g., a detected error) of the robotic garden tool <NUM>.

While <FIG> and its corresponding explanation above relate to the external device <NUM> generating one or more key pairs to be used by the robotic garden tool <NUM> and the server device <NUM> to engage in communication with each other, in other instances, other devices in the communication system <NUM> may generate and distribute one or more key pairs in addition to or as an alternative to the external device <NUM> doing so. <FIG> and <FIG> illustrate such example implementations as explained in greater detail below.

<FIG> illustrates another block diagram of the components of the communication system <NUM> shown in <FIG> where one or more cryptography key pairs is/are generated by the server device <NUM> according to some example embodiments. The generation, distribution, and use of the key pairs in <FIG> may be generally similar to the generation, distribution, and use of the key pairs described previously herein with respect to <FIG>. For example, the explanation regarding communication between devices <NUM>, <NUM>, regarding encryption/decryption, regarding possible generation of a certificate, regarding what causes the key pair to be generated, regarding the generation of multiple pairs of keys or a single pair of keys for each pair of devices configured to engage in encrypted communication, regarding controlling devices of the communication system <NUM> based on received instructions/messages, and/or regarding other features with respect to <FIG> may also apply to the example shown in <FIG> where the server device <NUM> generates one or more key pairs. Accordingly, for the sake of brevity, the example of <FIG> will be explained only briefly below.

In some instances, the server device electronic processor <NUM> is configured to generate a first key pair including a first private key for the robotic garden tool <NUM> and a first public key for the server device <NUM>. The server device electronic processor <NUM> may be configured to store/register the first public key in the server device memory <NUM>, and transmit, via the server device network interface <NUM>, the first private key for storage in the robotic garden tool <NUM>. In some instances, in response to receiving acknowledgement of receipt of the first private key from the robotic garden tool <NUM>, the server device electronic processor <NUM> may delete the first private key of the robotic garden tool <NUM> such that the first private key of the robotic garden tool <NUM> is no longer known by the server device <NUM>.

As indicated in <FIG>, the server device <NUM> may be configured to transmit the first private key to the robotic garden tool <NUM> via the external device <NUM>. For example, the server device <NUM> is configured to transmit the first private key to the external device <NUM> that is configured to forward the first private key to the robotic garden tool <NUM>. Accordingly, the robotic garden tool <NUM> may be configured to receive the first private key from the external device <NUM> even though the first private key was generated by the server device <NUM>. Also as indicated in <FIG>, the server device <NUM> may additionally or alternatively be configured to transmit the first private key to the robotic garden tool <NUM> directly without the first private key being first transmitted to the external device <NUM>.

In some instances, the robotic garden tool electronic processor <NUM> is configured to receive, via the robotic garden tool network interface <NUM>, the first private key, and store the first private key in the robotic garden tool memory <NUM>. The robotic garden tool electronic processor <NUM> may later receive, via the robotic garden tool network interface <NUM>, an encrypted first instruction from the server device. The encrypted first instruction may have been encrypted by the server device <NUM> using the first public key associated with the robotic garden tool <NUM>. The robotic garden tool electronic processor <NUM> may be configured to decrypt the encrypted first instruction using the first private key to generate a decrypted first instruction. The robotic garden tool electronic processor <NUM> may be configured to control operation of the robotic garden tool <NUM> in accordance with the decrypted first instruction.

While <FIG> illustrates the generation of the first private key to be stored by the robotic garden tool <NUM> and the first public key to be stored/registered by the server device <NUM>, in some instances, one or more additional or alternative key pairs (e.g., a second key pair including a second private key to be stored by the server device <NUM> and a second public key to be stored by the robotic garden tool <NUM> as explained previously herein) may be generated. In some instances, as explained previously herein, a single key pair may be generated to allow for encrypted communication between the server device <NUM> and one robotic garden tool <NUM>. In such instances, the private key may be stored on either device, and the public key may be stored on the other device where the private key is not stored.

<FIG> illustrates another block diagram of the components of the communication system <NUM> shown in <FIG> where one or more cryptography key pairs is/are generated by the robotic garden tool <NUM> according to some example embodiments. The generation, distribution, and use of the key pairs in <FIG> may be generally similar to the generation, distribution, and use of the key pairs described previously herein with respect to <FIG>. For example, the explanation regarding communication between devices <NUM>, <NUM>, regarding encryption/decryption, regarding possible generation of a certificate, regarding what causes the key pair to be generated, regarding the generation of multiple pairs of keys or a single pair of keys for each pair of devices configured to engage in encrypted communication, regarding controlling devices of the communication system <NUM> based on received instructions/messages, and/or regarding other features with respect to <FIG> may also apply to the example shown in <FIG> where the server device <NUM> generates one or more key pairs. Accordingly, for the sake of brevity, the example of <FIG> will be explained only briefly below.

In some instances, the robotic garden tool electronic processor <NUM> is configured to generate a first key pair including a first private key for the robotic garden tool <NUM> and a first public key for the server device <NUM>. The robotic garden tool electronic processor <NUM> may store the first private key in the robotic garden tool device memory <NUM>, and transmit, via the robotic garden tool network interface <NUM>, the first public key for storage in the server device <NUM>.

As indicated in <FIG>, the robotic garden tool <NUM> may be configured to transmit the first public key to the server device <NUM> via the external device <NUM>. For example, the robotic garden tool <NUM> is configured to transmit the first public key to the external device <NUM> that is configured to forward the first public key to the server device <NUM>. Accordingly, the server device <NUM> may be configured to receive the first public key from the external device <NUM> even though the first public key was generated by the robotic garden tool <NUM>. Also as indicated in <FIG>, the robotic garden tool <NUM> may additionally or alternatively be configured to transmit the first public key to the server device <NUM> directly without the first public key being first transmitted to the external device <NUM>.

In some instances, the server device electronic processor <NUM> is configured to receive, via the server device network interface <NUM>, the first public key, and store/register the first public key in the server device memory <NUM>. In some instances, the robotic garden tool electronic processor <NUM> is further configured to receive, via the robotic garden tool network interface <NUM>, an encrypted first instruction from the server device <NUM>. The encrypted first instruction may have been encrypted by the server device <NUM> using the first public key. The robotic garden tool electronic processor <NUM> may be configured to decrypt the encrypted first instruction using the first private key to generate a decrypted first instruction, and control operation of the robotic garden tool <NUM> in accordance with the decrypted first instruction.

Some aspects of <FIG> may be interchangeable in a given communication system <NUM>. For example, one device (e.g., the external device <NUM>) may generate key pairs at a first time and another device (e.g., a different external device <NUM> and/or the server device <NUM>) may generate new/updated key pairs at a later time. <FIG> are merely examples. In other instances, one or more cryptography key pairs may be generated by another device such as the docking station <NUM>. For example, the docking station <NUM> may generate one or more key pairs and distribute a key(s) to the robotic garden tool <NUM> via wired or wireless communication. The docking station <NUM> may also distribute a key(s) to the server device <NUM> via direct communication with the server device <NUM> and/or via indirect communication with the server device <NUM> through the robotic garden tool <NUM> and/or the external device <NUM>. In some instances, the docking station <NUM> is configured to store its own key information in a similar manner as described previously herein with respect to the robotic garden tool <NUM> to allow for encrypted unidirectional or bidirectional communication between the docking station <NUM> and the server device <NUM>.

Accordingly, various implementations of the systems and methods described herein provide, among other things, techniques for cryptography key generation and distribution for communication between a robotic garden tool and a server device. Other features and advantages of the invention are set forth in the following claims.

In the foregoing specification, specific examples have been described. However, one of ordinary skill in the art appreciates that various modifications and changes may be made without departing from the scope of the invention as set forth in the claims below.

Moreover, in this document relational terms such as first and second, top and bottom, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms "comprises," "comprising," "has," "having," "includes," "including," "contains," "containing," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises, has, includes, contains a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus.

Claim 1:
A communication system comprising:
an external device including
an external device memory,
an external device network interface configured to allow the external device to communicate with other devices, and
an external device electronic processor coupled to the external device memory and to the external device network interface, the external device electronic processor configured to
generate a first key pair including a first private key for a robotic garden tool and a first public key for a server device,
transmit, via the external device network interface, the first private key to the robotic garden tool, and
transmit, via the external device network interface, the first public key to the server device;
the robotic garden tool including
a housing,
a set of wheels coupled to the housing and configured to rotate to propel the robotic garden tool on an operating surface in an operating area,
at least one wheel motor coupled to one or more wheels of the set of wheels, the at least one wheel motor configured to drive rotation of the one or more wheels, and
a robotic garden tool memory,
a robotic garden tool network interface configured to allow the robotic garden tool to communicate with other devices,
a robotic garden tool electronic processor coupled to the robotic garden tool memory and to the robotic garden tool network interface, the robotic garden tool electronic processor configured to
receive, via the robotic garden tool network interface, the first private key from the external device,
store the first private key in the robotic garden tool memory,
receive, via the robotic garden tool network interface, an encrypted first instruction from the server device, wherein the encrypted first instruction was encrypted by the server device using the first public key,
decrypt the encrypted first instruction using the first private key to generate a decrypted first instruction, and
control operation of the robotic garden tool in accordance with the decrypted first instruction.