U.S. patent application number 11/166518 was filed with the patent office on 2006-01-12 for programming and diagnostic tool for a mobile robot.
Invention is credited to David Andrew Cohen, Matthew Edward Cross, William Francis Drislane, James Kenneth Lynch, Daniel N. Ozick, Clara Vu.
Application Number | 20060009879 11/166518 |
Document ID | / |
Family ID | 35033307 |
Filed Date | 2006-01-12 |
United States Patent
Application |
20060009879 |
Kind Code |
A1 |
Lynch; James Kenneth ; et
al. |
January 12, 2006 |
Programming and diagnostic tool for a mobile robot
Abstract
A method of communicating with a robotic device and associated
system enables configuration information and diagnostic information
to be communicated between the robotic device and a configuration
tool. The method consists of using a configuration tool, such as a
hand-held device, that can communicate information to the robotic
device to program the device to carry out a specific task or
function. The configuration tool can also be configured to retrieve
diagnostic information from a robotic device, and communicate this
information to an analysis tool.
Inventors: |
Lynch; James Kenneth;
(Georgetown, MA) ; Cohen; David Andrew;
(Brookline, MA) ; Cross; Matthew Edward; (Mason,
NH) ; Drislane; William Francis; (Pepperell, MA)
; Ozick; Daniel N.; (Newton, MA) ; Vu; Clara;
(Cambridge, MA) |
Correspondence
Address: |
GOODWIN PROCTER LLP;PATENT ADMINISTRATOR
EXCHANGE PLACE
BOSTON
MA
02109-2881
US
|
Family ID: |
35033307 |
Appl. No.: |
11/166518 |
Filed: |
June 24, 2005 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
60582531 |
Jun 24, 2004 |
|
|
|
Current U.S.
Class: |
700/245 ;
700/250 |
Current CPC
Class: |
G05B 2219/45098
20130101; B25J 13/00 20130101; A47L 11/4011 20130101; G05D 1/0016
20130101; G05D 1/0225 20130101; B25J 9/1674 20130101; G05B
2219/34456 20130101; G05B 2219/36159 20130101; G05B 19/409
20130101; G05D 1/0274 20130101; G05D 1/0033 20130101; G05D 1/0242
20130101; B25J 13/006 20130101; G05D 1/0088 20130101; G05D 1/0022
20130101; G05D 2201/0203 20130101; G05D 2201/0215 20130101; Y10S
901/02 20130101 |
Class at
Publication: |
700/245 ;
700/250 |
International
Class: |
G06F 19/00 20060101
G06F019/00 |
Claims
1. A method for communicating with a robotic device, the method
comprising the steps of: linking a configuration tool to the
robotic device; authenticating the configuration tool; and at least
one of: loading, via the configuration tool, information into the
robotic device; and loading into the configuration tool information
from the robotic device, wherein the executed loading step is
carried out after successful authentication of the configuration
tool.
2. The method of claim 1, wherein the robotic device supplies power
to the configuration tool.
3. The method of claim 1, wherein the link comprises at least one
of a communication port, a wireless connection, and a physical
connection.
4. The method of claim 3, wherein the physical connection comprises
a verification attribute.
5. The method of claim 1, wherein the step of authenticating the
configuration tool comprises at least one of identifying an
authorization code included in the information, exchanging at least
one predetermined message between the robotic device and the
configuration tool, receiving configuration information from the
robotic device, issuing an unlock command, and interconnecting a
verification attribute and the robotic device.
6. The method of claim 5, wherein the at least one predetermined
message comprises a message sent by the robotic device and a
message sent by the configuration tool.
7. The method of claim 5 wherein the configuration information
comprises processor type.
8. The method of claim 5, wherein the unlock command permits use of
the communication port.
9. The method of claim 1, wherein the executed loading step occurs
only during a limited validity lifetime.
10. The method of claim 9, wherein the limited validity lifetime is
based at least in part on at least one of an elapsed time from
authentication, a number of authentications, and a frequency of
authentications.
11. The method of claim 1, wherein the configuration tool comprises
a user interface.
12. The method of claim 1, wherein the information comprises at
least one of operational data, and at least part of a computer
program.
13. The method of claim 12, wherein the operational data comprises
at least one of motor current and a sensor threshold value.
14. The method of claim 1, wherein at least part of the information
is encrypted.
15. The method of claim 1, further comprising the step of
decrypting, by the robotic device, the information.
16. An apparatus for communicating with a robotic device, the
apparatus comprising: a memory for storing information; at least
one port for communicating with the robotic device; at least one
authenticator for authenticating the apparatus; and at least one
loader for communicating, via the at least one port, at least part
of the information, wherein the at least part of the information
consists of at least one of information loaded from the apparatus
into the robotic device and information loaded from the robotic
device into the apparatus.
17. The apparatus of claim 16, wherein the robotic device supplies
power to the apparatus.
18. The apparatus of claim 16, wherein the at least one port
comprises at least one of a wireless connection and a physical
connection.
19. The apparatus of claim 18, wherein the physical connection
comprises a verification attribute.
20. The apparatus of claim 16, wherein the information comprises at
least one of an authorization code, at least one predetermined
message, an unlock command, at least part of a computer program,
and operational data.
21. The apparatus of claim 20, wherein the at least one
predetermined message comprises a message sent by the robotic
device and a message sent by the apparatus.
22. The apparatus of claim 20, wherein the unlock command enables
the at least one port.
23. The apparatus of claim 20, wherein the operational data
comprises at least one of motor current and a sensor threshold
value.
24. The apparatus of claim 16, wherein the authenticator comprises
at least one of a receiver for receiving configuration information
from the robotic device, and an interconnection between the
verification attribute and the robotic device.
25. The apparatus of claim 24, wherein the configuration
information comprises processor type.
26. The apparatus of claim 16, wherein the at least one loader
comprises a limited validity lifetime.
27. The apparatus of claim 26, wherein the limited validity
lifetime is based at least in part on at least one of an elapsed
time from authentication, a number of authentications, and a
frequency of authentications.
28. The apparatus of claim 16, wherein the apparatus comprises a
user interface.
29. The apparatus of claim 16, wherein the information is
encrypted.
30. The apparatus of claim 29, further comprising a decrypter for
decrypting the information within the robotic device.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to and the benefit of U.S.
provisional patent application Ser. No. 60/582,531, filed Jun. 24,
2004, the disclosure of which is being incorporated herein by
reference in its entirety. This application is related to U.S.
patent application Docket No. IRO-018, entitled "Remote Control
Scheduler and Method for Autonomous Robotic Device," and filed of
even date herewith, the disclosure of which is being incorporated
herein by reference in its entirety.
FIELD OF THE INVENTION
[0002] The present invention relates generally to the field of
robotics including the control of an autonomous robotic device and,
more particularly, to a configuration tool and associated method
for communicating configuration and diagnostic information with an
autonomous robotic device, such as a cleaning robot.
BACKGROUND OF THE INVENTION
[0003] Robotic cleaning devices can be used to clean a defined area
based on a program stored in the robot's processor. The purpose of
these devices is to clean efficiently a room without the need for a
user to physically control the cleaning device, or even be in the
room when the floor is being cleaned. This can effectively reduce
the time necessary for household chores, reduce noise pollution by
enabling a room to be cleaned without the need for a user to be
present, or enable an elderly or disabled person to clean a room
which would otherwise be difficult or impossible to achieve without
aid.
[0004] In general, these devices are programmed in the factory and
their operation and functionality are based on a program hardwired
into a chip installed in the robotic device. In order to change
operation or the functionality of such a device, the robotic device
would need to be taken apart and the masked chip program replaced
by installing a new chip with an updated program. This can increase
development time, as the software may need to be completed well
before the mechanical design and construction is completed. This
can also limit the utility of a robotic device, as the operation
and functionality of the device can not easily be changed once the
construction of the device is complete.
[0005] From the foregoing, there is a need for a method and
apparatus to allow the operation and functionality of an autonomous
robotic device, such as a robotic cleaning device, to be changed or
upgraded at any time, without the need to return the device to the
factory or install new hardware. It is also desirable to provide a
portable apparatus that can load new configuration applications
into the robotic device and also upload diagnostic information from
the robotic device, to improve the utility, efficiency and
usability of the robotic device.
SUMMARY OF THE INVENTION
[0006] The invention provides a method and apparatus for
configuring a robotic device to operate according to a program
pre-installed in the apparatus. The method and apparatus allows the
functionality of a robotic device to be updated or changed
according to the requirements of a user. The apparatus can also be
used to obtain diagnostic information from the robotic device. One
or more implementations of the invention may provide one or more of
the following features.
[0007] One embodiment of the invention includes a method for
communicating with a robotic device. The method includes the steps
of linking a configuration tool to the robotic device,
authenticating the configuration tool, and at least one of loading,
via the configuration tool, information into the robotic device and
loading into the configuration tool information from the robotic
device. The executed loading step is typically carried out after
successful authentication of the configuration tool.
[0008] In one embodiment of the invention, the robotic device
supplies power to the configuration tool. In an alternative
embodiment, the configuration tool can be powered by an internal
power source located within, or attached to, the configuration
tool, or by a remote power source linked to the configuration tool.
The link between the configuration tool and the robotic device can
include at least one of a communication port, a wireless
connection, and a physical connection. In certain embodiments, the
physical connection can include a verification attribute.
[0009] In various embodiments of the invention, the step of
authenticating the configuration tool can include at least one of
identifying an authorization code included in the information,
exchanging at least one predetermined message between the robotic
device and the configuration tool, receiving configuration
information from the robotic device, issuing an unlock command, or
interconnecting a verification attribute and the robotic device.
The predetermined message can include a message sent by the robotic
device and a message sent by the configuration tool. The
configuration information can include processor type. The unlock
command can permit use of the communication port.
[0010] In one embodiment of the invention, the executed loading
step occurs only during a limited validity lifetime. The limited
validity lifetime can be based at least in part on at least one of
an elapsed time from authentication, a number of authentications,
or a frequency of authentications. In certain embodiments of the
invention, the configuration tool can include a user interface.
[0011] In various embodiments of the invention, the information
being loaded into or from the robotic device can include at least
one of operational data or at least part of a computer program. The
operational data can include at least one of motor current or a
sensor threshold value. In one embodiment of the invention, at
least part of the information can be encrypted. In this embodiment,
the method can further include the step of decrypting, by the
robotic device, the information. In one embodiment of the
invention, the information to be loaded into the robotic device is
dependent upon information received from the robotic device.
[0012] One embodiment of the invention can include an apparatus for
communicating with a robotic device. The apparatus can include a
memory for storing information, at least one port for communicating
with the robotic device, at least one authenticator for
authenticating the apparatus, and at least one loader for
communicating, via the at least one port, at least part of the
information. At least part of the information can consist of at
least one of information loaded from the apparatus into the robotic
device and information loaded from the robotic device into the
apparatus.
[0013] In one embodiment of the invention, the robotic device can
supply power to the apparatus. In an alternative embodiment, the
configuration tool can be powered by an internal power source
located within, or attached to, the configuration tool, or by a
remote power source linked to the configuration tool. In certain
embodiments of the invention, the apparatus can include a user
interface.
[0014] In one embodiment of the invention, the at least one port
can include at least one of a wireless connection and a physical
connection, wherein the physical connection can allow the
configuration tool to either link directly to another device or
connect through a cable to another device. In certain embodiments,
the physical connection can include a verification attribute.
[0015] In certain embodiments of the invention, the information can
include at least one of an authorization code, at least one
predetermined message, an unlock command, at least part of a
computer program, or operational data. In one embodiment, the
predetermined message can include a message sent by the robotic
device and a message sent by the apparatus. In one embodiment, the
unlock command can enable the at least one port. In one embodiment,
the operational data can include at least one of motor current and
a sensor threshold value.
[0016] In certain embodiments of the invention, the authenticator
can include at least one of a receiver for receiving configuration
information from the robotic device, and an interconnection between
the verification attribute and the robotic device. In one
embodiment, the configuration information can include processor
type. In one embodiment, the at least one loader can include a
limited validity lifetime. This limited validity lifetime can be
based at least in part on at least one of an elapsed time from
authentication, a number of authentications, and a frequency of
authentications.
[0017] In certain embodiments of the invention, the information can
be encrypted. The apparatus can further include a decrypter for
decrypting the information within the robotic device. In one
embodiment of the invention, the information to be loaded into the
robotic device is dependent upon information received from the
robotic device.
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] The objects and features of the invention can be better
understood with reference to the drawings described below, and the
claims. The drawings are not necessarily to scale, emphasis instead
generally being placed upon illustrating the principles of the
invention. In the drawings, like numerals are used to indicate like
parts throughout the various views.
[0019] FIG. 1 is a block diagram showing one configuration of the
configuration tool and robotic device system, in accordance with
one embodiment of the invention.
[0020] FIG. 2 is a schematic top view of a configuration tool, in
accordance with one embodiment of the invention.
[0021] FIG. 3 is a block diagram of a power regulator for the
configuration tool of FIG. 2.
[0022] FIG. 4 is a block diagram of a microprocessor for the
configuration tool of FIG. 2.
[0023] FIG. 5A is a schematic diagram illustrating a configuration
tool in direct physical communication with a robotic device, in
accordance with one embodiment of the invention.
[0024] FIG. 5B is a schematic diagram illustrating a configuration
tool in communication, through a communication port and cable, with
a robotic device, in accordance with one embodiment of the
invention.
[0025] FIG. 5C is a schematic diagram illustrating a configuration
tool in wireless communication with a robotic device, in accordance
with one embodiment of the invention.
[0026] FIG. 6 is a block diagram depicting one method for
implementing and using a system including a robotic device and a
configuration tool, in accordance with one embodiment of the
invention.
DETAILED DESCRIPTION
[0027] The invention provides a method and apparatus for
communicating information to, or receiving information from, a
robotic device. The apparatus can be used to load configuration
information into a robotic device, allowing the functionality of
the robotic device to be easily updated or changed by a user. The
robotic device can therefore be reprogrammed to carry out a new
task required by a user, or be updated to improve the functionality
of an existing task. The apparatus can further be used to obtain
diagnostic information from a robotic device, allowing an engineer
or user to carry out system diagnostics on the device.
[0028] FIG. 1 is a block diagram showing one embodiment 10 of a
configuration tool 12 for use with a robotic device. In this
embodiment, the configuration tool 12 is adapted and configured to
communicate information to, and receive information from, a robotic
device or other communication or analysis device. This information
can include, but is not limited to, configuration information 14
and diagnostic information 16.
[0029] The configuration tool 12 is adapted such that it can
communicate with a number of devices, including, but not limited
to, a mobile robotic device 18, a stationary robotic device 20, a
communication device 22, and an analysis device 24. The mobile
robotic device 18 can, for example, be a cleaning robot such as the
Roomba.RTM. brand robotic floor vacuum and sweeper available from
iRobot Corporation, Burlington, Mass. The stationary robotic device
20 can, for example, be a portable barrier signal transmitter
designed to send an IR beam along a designated path to confine
travel of the mobile robotic device 18. The stationary robotic
device 20 could also be a docking station, home-base, or charging
device for use with the mobile robotic device 18.
[0030] A communication device 22, such as, but not limited to, a
mobile phone, remote control device, or personal digital assistant
(PDA), can be connected to the configuration tool 12. The
communication device can be used to install configuration
information 14, or other programming information to be loaded into
a robotic device into a configuration tool 12. The communication
device 22 can also be used to retrieve diagnostic information 16,
or other appropriate information, which has been communicated from
a robotic device to the configuration tool 12. This diagnostic
information 16 can then be stored within the communication device
22 and transferred to an analysis device 24 for further analysis,
or be used to analyze diagnostic information 16 directly. The
communication device 22 can also be a scheduling device and/or
remote controller for use with a mobile 18 and/or stationary 20
robotic device. The configuration tool 12 can then also be used to
install or upgrade an application program in the scheduling device
and/or remote controller.
[0031] The analysis device 24 can be, but is not limited to, a PC,
laptop, or other appropriate device for storing and analyzing
information. Connecting the configuration tool 12 to an analysis
device 24 allows configuration information 14 to be installed in
the configuration tool 12 by the analysis device 24, or allows the
configuration tool 12 to install information, such as, but not
limited to, an analysis, scheduling or control program, to enable
the analysis device 24 to be used in conjunction with mobile 18
and/or stationary 20 robotic devices. The configuration tool 12 can
also be used to download diagnostic information 16 from a robotic
device, or other device, for analysis by the analysis device
24.
[0032] The configuration information 14 can include information for
initially programming a robotic device in the factory, or upgrading
the existing capabilities of a robotic device or reprogramming the
device to carry out new tasks in the factory or in the field. This
upgrading information can include, but is not limited to, new
versions of the software installed in the robotic device, special
programs to adapt the functionality of the robotic device for a
specific task, scheduling programs to allow the robotic device to
run automatically without further user input, and programs to allow
the robotic device to send information to a communication device
such as a remote control or scheduling tool (either prompted by the
user or automatically upon the occurrence of a certain event).
Further upgrading or reprogramming information can include programs
and applications allowing a mobile robotic device 18 to carry out
completely new tasks (such as, but not limited to, functioning as a
toy, a security device, or a searching device for lost objects) or
"learning" programs and applications allowing the robotic device to
adapt its own programming based on information gained through
carrying out specified tasks. These learning programs can, for
example, allow the mobile robotic device 18 to map out a room and
remember where the objects and obstacles in the room are placed, or
adapt a scheduling program based on prior patterns of user behavior
or environmental conditions.
[0033] In one embodiment 10, the configuration tool 12 can
communicate with a device through a direct physical connection. For
this direct communication, a male connector (e.g. DIN connector,
USB, serial port or other appropriate connection element) on one
mates directly with a female connector on the other. In an
alternative embodiment, the direct communication can include a
docking station on the robotic device or attached to the
communication or analysis device, such that the configuration tool
12 can be removeably attached directly to the device. In certain
embodiments, the physical connection between the configuration tool
12 and a device can include a verification attribute based on
software, hardware, or physical geometry of the connections.
[0034] In an alternative embodiment, the communicated information
could be sent through communication ports linked by a cable (for
example a USB or serial port link). In a further alternative
embodiment of the device, the configuration information 14 and
diagnostic information 16 can be sent through a wireless connection
with a device, with the information sent by infrared (IR), radio
frequency (RF), or other appropriate signal. In another alternative
embodiment, configuration information 14 can be embedded in a
charging device or docking station, used for charging and
recharging the batteries of a mobile robotic device 18 (see U.S.
patent application Ser. No. 10/762,219, filed Jan. 21, 2004, the
disclosure of which is incorporated herein by reference in its
entirety). This configuration information 14 can then be
communicated to a mobile robotic device 18 when it "docks" with the
charging device. The link between the mobile robotic device 18 and
the charging device can be either a wireless link, such as an IR
communication link, or direct link, such as between a male port on
the charger and a female port on the mobile robotic device 18.
Communication between the mobile robotic device 18 and a charger
could also be achieved though the physical contact used to link the
devices for recharging the batteries of the mobile robotic device
18, or though a separate physical contact. In an example
embodiment, information could be carried through a power charge
line for the docking station or charger, or other appropriate
network connection, allowing the robot to link to an information
network whenever it docks with a charging device. Thus
configuration information 14 and diagnostic information 16 could
easily be transferred whenever a mobile robotic device 18 is
docked.
[0035] In certain embodiments of the invention, the link between
the device and the configuration tool 12 can also be used to supply
power to the configuration tool 12. For example, battery power used
to power a mobile robotic device 18 or a stationary robotic device
20 can also be used to power a configuration tool 12, once a link
between the device and the configuration tool 12 has been
established. Allowing the configuration tool 12 to be powered by a
device linked to the configuration tool 12 can minimize the size
and weight of the configuration tool 12, as the configuration tool
12 in this embodiment does not require a battery or other source of
power to be installed within the configuration tool 12 itself.
[0036] In alternative embodiments of the invention, the
configuration tool 12 can be adapted to be powered by an internal
battery, either removable or non-removable, or by a separate power
source connected externally to the configuration tool 12, such as a
power adaptor connecting the configuration tool to a mains power
source. In some embodiments of the invention, the device for use
with the configuration tool 12 can require a DIN connector, or
other appropriate physical connection, and a flash memory that
allows information to be communicated, and/or programs to be
stored, even in the absence of power.
[0037] Prior to communicating information between a configuration
tool 12 and a device, the configuration tool 12 can be required to
be authenticated by the device. Requiring an authentication between
the configuration tool 12 and the device can, for example, improve
the security of the device, stop non-approved or potentially
damaging information being communicated to the device, or provide
appropriate instructions to the device prior to information being
transferred.
[0038] Authentication of the configuration tool 12 can be carried
out in a number of different ways. For example, upon a link being
formed between a configuration tool 12 and a device, the
configuration tool 12 can send an authorization code to the device,
and only if a recognized authorization code is received will the
device enable the loading of information between the device and
configuration tool 12. Alternatively, at least one predetermined
message can be exchanged between the device and configuration tool
12, and only upon receipt of the predetermined message from both,
or either, the device and the configuration tool 12 will further
communication be permitted.
[0039] In further embodiments of the invention, authentication
information sent between a configuration tool 12 and a device can
include configuration information, such as, but not limited to, the
type of processor for that device or configuration tool 12 or the
form of the information to be communicated. Alternatively or
additionally, the authentication information can include at least
part of a computer program. The computer program can be used, for
example, to enable further communication between the device, or
configure the device to receive or send information. Authentication
information may also include an unlock command, which can permit
use of a communication port on the device and enable the port to
allow further communication between the configuration tool 12 and
the device.
[0040] In certain configurations, a verification attribute can be
interconnected through the link between the configuration tool 12
and a device. This verification attribute can include for example,
an authorization code, at least one predetermined message, an
unlock command, at least part of a computer program, and/or
operational data. The operational data can include, but is not
limited to, power information (such as the motor current) and a
threshold value for a sensor or other component of the device or
configuration tool 12. The unlock command can be used, for example,
to enable a communication port on the device to communicate
information.
[0041] In certain embodiments, the configuration tool 12 can
include an authenticator. This authenticator can include at least
one receiver to receive authentication and/or configuration
information and can, in some embodiments, further include a
transmitter to communicate authentication and/or configuration
information to a device linked to the configuration tool 12. The
authenticator can further include an interconnection between the
device and a verification attribute of the configuration tool
12.
[0042] The configuration tool 12 can, in certain embodiments of the
invention, be constructed or programmed such that the configuration
tool 12 only works within a limited validity lifetime. This limited
validity lifetime can be based on the elapsed time from
authentication, the number of authentications, or the frequency of
authentications. The introduction of a limited validity lifetime
can be useful, for example, in controlling the dissemination of
configuration information and limiting the unauthorized use of the
configuration tool 12.
[0043] In certain embodiments of the invention, the information
communicated between the configuration tool 12 and a device can be
encrypted. In such embodiments, a means of decrypting the
communicated information, such as, but not limited to, a decrypter
or a decrypting algorithm, may be required to be installed in the
device. Encrypting the information can prevent an unauthorized
third party from copying the information to be communicated,
preventing the unauthorized party from making duplicate copies of
the full software and electronics of a robotic system. In certain
embodiments, the configuration information 14 is encrypted prior to
being installed in the configuration tool 12, and is downloaded
into a device in encrypted form. The configuration information 14
can then only be decrypted by a device with the appropriate
decryption algorithm and code installed, preventing an unauthorized
user from viewing the un-encrypted information 14. This encryption
can be important in preventing a third party from making
unauthorized use of, and unauthorized copies of, a commercially
developed robotic product.
[0044] In an example embodiment, the decryption algorithm and code
installed in a device can be protected from being read by features
of the device's microcontroller, without limiting the functionality
of the device. As such, control or other information within a
robotic device can be updated and/or overwritten without a user
being able to read the information itself. This allows updated or
new configuration information 14 to be distributed without allowing
access to the information by an unauthorized user. The encryption
algorithm could include, but is not limited to, shared secret key
encryption such as in a Tiny Encryption Algorithm (TEA), or other
appropriate means of encrypting and decrypting information.
[0045] In one embodiment of the invention, a first configuration
tool can be used in the factory to load a program into the flash
memory of a robotic device. The microprocessor chip in the robotic
device can contain at least a bootloader program. Programming
information related to the operation of the robot, such as, but not
limited to, complex behavior language and control parameters can be
loaded from this configuration tool. In certain embodiments, by
installing a bootloader program in a robotic device, encrypted
information can be stored directly into a configuration tool 12 and
uploaded into the robotic device, where it is decrypted by the
appropriate encryption key imbedded in the bootloader. This can,
for example, reduce the chance of encrypted information being
accessed and decrypted by an unauthorized user, as the decryption
key is not installed in the configuration tool 12 but only in the
bootloader of an authorized robotic device, or other authorized
device.
[0046] In certain embodiments, this same configuration tool used to
load the complex programming behavior can also contain a diagnostic
program used for a factory test of the robotic device prior to
shipping to a user. This diagnostic program may involve a simple
algorithm to provide basic diagnostic information, although in
alternative embodiments a more extensive program could be installed
for increased diagnostic capabilities.
[0047] A diagnostic program can also be communicated to the device
through a separate, second configuration tool that may be used in
the factory to initiate a quality control check of the robotic
device's systems. The I/O port on the robotic device can send
signals related to such aspects as, but not limited to, some or all
of the robotic device's systems and various values that can detect
whether all systems of the robotic device are in full working
order. In one particular embodiment, the diagnostic program can be
configured to run while a diagnostic device initiates various
sensors on the robotic device simultaneously or sequentially.
[0048] In certain embodiments, the configuration tool 12 could
download or upload different information based on what signal or
information is received from the robot. In an example embodiment,
customized configuration information 14, such as, but not limited
to, a customized control algorithm, could be computed in the
configuration tool 12 based on usage information collected from a
robotic device. The configuration tool 12 then only downloads
information specific to the connected device.
[0049] FIG. 2 shows a schematic top view of a configuration tool
30, in accordance with one embodiment of the invention. The
configuration tool includes a connector 32, such as a DIN
connector, serial port connector, parallel port connector, USB port
connector, IEEE 1394 "Firewire" port connector, PS/2 port
connector, modem port connector, Ethernet network port connector,
or other appropriate communication port connector. The connector 32
can be a male connector, allowing the configuration tool 30 to make
a direct physical connection with an I/O port on a device, or a
female connector port, allowing the configuration tool 30 to
connect to a device through a cable connection linking the female
ports on both the configuration tool 30 and a device to be
communicated with. In an alternative embodiment of the invention,
the connector 32 can be a wireless connector, allowing the
configuration tool 30 to communicate with a device through an
infrared (IR) signal or other appropriate wireless signal.
[0050] The connector 32 can enable information to be communicated
between the configuration tool 30 and a linked device. In certain
embodiments, the connector 32 may also allow power to be
transferred from the linked device to the configuration tool 30 to
power at least one function of the configuration tool 30. A power
regulator 34 within the configuration tool 30 can be utilized to
convert the power from the linked device to the correct voltage for
powering the configuration tool 30. In alternative embodiments of
the invention, an internal power source, such as a battery, may be
used instead of, or in conjunction with, power drawn from the
linked device. In a further alternative embodiment, the
configuration tool 30 could be linked to an external power source,
such as, but not limited to, a mains power source, to power the
configuration tool 30. In yet another embodiment, power from the
configuration tool 30 could be used to power at least one function
of the linked device.
[0051] Power from the linked device, once it has been converted by
the power regulator 34, can be used to drive certain installed
hardware, functions, user inputs, and other components installed in
the configuration tool 30. In the embodiment of FIG. 2, these
include a microprocessor 36, a user input 38, and a number of LEDs
40. The components are installed within a housing 42, that can be
of any appropriate shape and can, for example, be shaped to be held
easily with a user's hand. The size and shape of the device can be
varied depending upon the requirements of the system, and can for
example be minimized to lower costs and improve portability and
functionality.
[0052] The microprocessor 36 can be used to store configuration
information to be installed in an appropriate device, store
diagnostic information received from a device, store information
required for authenticating a link between the configuration tool
30 and a linked device, and control the functions and user inputs
and outputs of the configuration tool 30. The microprocessor 36
can, in some embodiments, trigger authentication and transfer of
information automatically upon detection of an appropriate device,
while in other embodiments the microprocessor 36 can be configured
to require a user input or other signal from either the
configuration tool 30 or the linked device before information is
transferred between the configuration tool 30 and the linked
device.
[0053] In certain embodiments of the invention, programming and/or
configuration information, and data, can be stored in a flash-based
microcontroller, or in flash memory attached to the microcontroller
36, within the configuration tool 30. In alternative embodiments of
the invention, the a configuration tool 30 could be replaced by an
audio CD, MP3, cassette, or other appropriate audio player. In this
embodiment, a dongle may serve as an interface between the audio
output of a CD player (headphone jack) and the robot, allowing the
CD player to download and distribute information that is stored on
a disc inserted in the player. Information can be stored on the CD,
or other media storage device, in the form of encrypted audio tones
using for example, but not limited to, frequency-shift or
phase-shift modulation as used in standard telephone modems.
Different information could be stored as separate tracks on the CD,
or other appropriate media storage device, allowing a user to
choose the data to be transferred based on a choice of track on the
audio player.
[0054] The user input device 38 can be, but is not limited to, at
least one button, switch, joystick, touch sensitive pad, and/or
roller-ball. The user input 38 can allow the configuration tool to
load or receive information only upon initiation by a user, rather
than the information being communicated automatically upon
detection of a linked device. In certain embodiments, a number of
user inputs 38 may be installed in the configuration tool 30. In
the case of multiple user inputs 38, each separate input 38 could
be configured to control a different function of the configuration
tool 30. For example, a separate button may be installed to control
an uploading or downloading of a configuration program, an
uploading or downloading of diagnostic information, and an
authentication function. In an alternative embodiment, a single
user input 38 could be configured to control more than one function
of the configuration tool 30, based on the manner of the user's
interaction with the user input 38. For example, a single button
can control a number of separate functions based on the number of
times, and/or the length of time, the button is depressed. However,
as previously mentioned, in certain embodiments no user input is
required, and information can be transferred automatically upon the
establishment of a link between the configuration tool and a
device.
[0055] Feedback to the user could be provided by a visual or audio
signal upon a certain event or function being carried out. This
could involve at least one light, audio speaker, LCD screen, or any
other known device. In the example embodiment of FIG. 2, a set of
three colored LEDs 40 are installed in the configuration tool 30 to
alert the user to certain events being performed or completed. In
this example embodiment, the configuration tool 30 includes three
LEDs 40 of different color: one green, one yellow, and one red. A
steady green light could indicate that the configuration tool 30 is
powered and in communication with the linked device; a flashing
green light could represent a successful and complete download of a
program or instructions; a flashing yellow light could indicate
that the system is busy working; and a red light could indicate an
unsuccessful loading. In alternative embodiments, the separate LEDs
can indicate different events, or be used in conjunction with, or
even replaced by, a speaker or number of speakers to provide audio
signals to a user.
[0056] In one embodiment of the invention, the configuration tool
30 can be configured to provide a visual or audio signal upon the
completion of a transfer of configuration or scheduling
information. In an alternative embodiment, the configuration
information can be designed to allow the linked device to provide a
visual or audio signal upon the successful completion of an
information transfer. For example, a robotic device can be
configured to illuminate a status light if and when a scheduling
program is stored in the memory.
[0057] Alternatively or additionally, the configuration tool 30 can
be used to download additional or different sounds into a robotic
device. These sounds could include, but are not limited to,
melodies, ring-tones, speech, warning and alert tones, or other
appropriate sounds. These additional or different sounds could
allow a user to personalize a mobile robot, or provide appropriate
audio responses to a new or updated function of the robotic
device.
[0058] In an alternative embodiment of the invention, the
configuration tool 30 may include a display, such as, but not
limited to, an LCD display, to allow the configuration tool 30 to
display more complex information regarding the configuration tool
30 and its use. This information can for example include the type
and number of configuration programs installed in the configuration
tool 30, the type of diagnostic information stored in the
configuration tool 30, and status information while the
configuration tool 30 is linked to another device. In alternative
embodiments of the invention, the display could also be configured
to display information received from a device, such as options for
the type of configuration information that can be communicated, the
type of diagnostic information to be communicated, or the form of
authentication required before communicating with a device.
[0059] FIG. 3 is a block diagram of a power regulator configuration
50 for the configuration tool 30. The power regulator configuration
50 includes the regulator 34 that can take power from the device,
for example a mobile robotic device, at one voltage, for example a
16 volt signal 52, and convert it to a different voltage, for
example a 5 volt signal 56, for powering the operation of the
configuration tool 30. In one embodiment of the invention, the
configuration tool 30 itself does not contain an internal power
element and is powered by the device to which it is attached. In an
alternative embodiment, the configuration tool 30 may also include
an internal power source that works instead of, or in conjunction
with, power from the device to which the configuration tool 30 is
connected. For example, the configuration tool 30 could include a
rechargeable battery that is recharged every time it is connected
to an appropriate device.
[0060] FIG. 4 is a block diagram of a microprocessor configuration
60 for the configuration tool 30. The microprocessor configuration
60 includes the microprocessor 36 with a connection for allowing
information to be communicated from the microprocessor 36 to a
linked device (i.e., the "Comm Out" signal 66), and a separate
connection to allow information to be communicated to the
microprocessor 36 from a linked device (i.e., the "Comm In" signal
64). The microprocessor 36 can also include a separate connection
for detecting and authenticating a device that is linked to the
configuration tool (i.e., the "Device Detect" signal 62). In an
alternative embodiment, these three signals could be carried
through a single connection.
[0061] FIGS. 5A-5C show various means of linking a configuration
tool with a device, such as, but not limited to, a stationary or
mobile robotic device, a communication device, or an analysis
device. In the system configuration 80 shown in FIG. 5A, a device
84 is linked to a configuration tool 82 through a direct connection
86. This direct connection can consist of a male connection port on
the configuration tool 82, that mates directly to a female
connection port on the device 84. The port can be a DIN connector,
serial port, parallel port, USB port, IEEE 1394 "Firewire" port,
PS/2 port, modem port, Ethernet network port, or other appropriate
communication port. In one embodiment of the invention, the male
connection port on the configuration tool 82 can retract or fold
into the configuration tool 82 when not in use.
[0062] In this system, configuration information can be
communicated from the configuration tool 82 to the device 84, or
from the device 84 to the configuration tool 82, while diagnostic
information such as, but not limited to, system information, stored
program information, status reports and error reports can also be
communicated between the configuration tool 82 and the device
84.
[0063] In the system configuration 100 shown in FIG. 5B, the device
84 is linked to the configuration tool 82 through a cable 104. The
cable 104 connects both devices through communication ports located
on each device. In one embodiment of this system configuration 100,
the cable connection 104 can be used to quickly communicate
configuration and/or diagnostic information between the
configuration tool 82 through a cable 104. Again, the communication
ports can be a DIN connectors, serial ports, parallel ports, USB
ports, IEEE 1394 "Firewire" ports, PS/2 ports, modem ports,
Ethernet network ports, or other appropriate communication
ports.
[0064] In the system configuration 120 shown in FIG. 5C, the
configuration tool 82 is configured to communicate through a
wireless connection with the device 84. In one embodiment, the
wireless link consists of an IR signal 122, which can be sent from
the configuration tool 82 to the device 84, as indicated by the
arrows 124. In this configuration, further IR signals 122 can be
sent from the device 84 to the configuration tool 82, again as
indicated by the arrows 124. Again, this system configuration 120
can be used to load configuration information from a configuration
tool 82 into a device 84, or from a device 84 to the configuration
tool 82, while diagnostic information can also travel in both
directions between the configuration tool 82 and the device 84.
[0065] In alternative embodiments, the configuration tool 82 can
communicate information to a single device 84, that can then send
the communicated information to further devices directly, without
the need for additional linking to the configuration tool 82. In
this configuration, multiple devices 84, such as, but not limited
to, a single or a series of mobile robotic device(s) and stationary
device(s), can be configured sequentially through a link with only
a single device.
[0066] In further alternative embodiments, a configuration tool 82
could be used to extract information from one device 84 and then
download this information into a new or additional device. This
could allow a new or replacement robotic device to upload
information gathered by a previous device, without the need for
this information to be "learned" or programmed into the new device
independently. In an example embodiment, a new robotic cleaning
device could upload, from the configuration tool 82, geometrical
and other information regarding the space to be cleaned that had
been gathered by the robotic device it is replacing. In an
alternative embodiment, an additional device could upload, from the
configuration tool 82, information from the other device allowing
the two devices to function in parallel. A second robotic device
with the uploaded information could also be used as a spare or
back-up device.
[0067] FIG. 6 shows a block diagram featuring one method 140 for
implementing and using a system including a device and a
configuration tool. According to this method 140, a single
configuration tool can be used to communicate configuration
information with the device, and load into and receive diagnostic
information from the device.
[0068] The method 140 includes first linking 142 the configuration
tool to the device, either through a wireless connection,
communication port, or direct connection. Upon authentication of
the link using an authenticator (e.g., by geometric configuration,
hardware, or software based systems), the configuration tool is
then ready to communicate 146 with the device. In certain
embodiments of the invention, the authentication step 144 may be
optional.
[0069] Once the device and configuration tool are ready, they begin
to communicate 148. The configuration tool can be used to load
information 150, such as, but not limited to, configuration
information, diagnostic information, or control information, into
the device, or receive such information 158 from the device.
Depending on the requirements of the configuration tool and device,
the configuration tool can be configured to either first load 150
or receive 158 information. In an alternative embodiment, it may be
possible for the loading 150 and receiving 158 steps to be carried
out concurrently.
[0070] When the loading step 150 is carried out first, upon
completion of this step the configuration tool may have the option
of then receiving information back from the device 152. At this
point, the configuration tool can either receive information from
the device 154, or end communication and allow the configuration
tool to be disconnected 156.
[0071] When the receiving step 158 is carried out first, upon
completion of this step the configuration tool may have the option
of then loading information back into the device 160. At this
point, the configuration tool can either load information into the
device 162, or end communication and allow the configuration tool
to be disconnected 156.
[0072] In certain embodiments of the invention, the configuration
tool can be designed such that the steps of authenticating, loading
and receiving information to and from the device is carried out
automatically upon a link being established between the
configuration tool and the device. In alternative embodiments, at
least one of the authenticating, loading and receiving steps may
require an input from a user before the step is carried out. This
user input may be controlled through a user input device installed
in the configuration tool or on the linked device. The user input
may include, but not be limited to, at least one button, switch,
joystick, touch sensitive pad, and a roller-ball.
[0073] In certain embodiments of the invention, an indicator may be
used to inform a user of the start of, completion of, or failure to
complete an authenticating, loading and/or receiving step. This
indicator can include, but is not limited to, a visual indicator or
an audio indicator on either the configuration tool or the device.
The visual indicator may include, but is not limited to, a single
or a number of status lights (such as LED lights), or an indication
on a liquid crystal display (LCD) or other graphic interface. The
audio indicator may include a predetermined signal sent from a
speaker on either the configuration tool or device.
[0074] The use of a configuration tool to communicate configuration
information to, and diagnostic information from, a robotic device
can be useful in the development and manufacture of robotic
devices. The application of a configuration tool can also provide a
major improvement over the use of a masked chip program installed
in a robotic device upon construction.
[0075] Firstly, by using a configuration tool to communicate
information to the robotic device, the robotic device software can
be updated at any time, allowing running changes to be made in the
factory. Secondly, the system reduces the inventory risk and time
to market, as a manufacturer would no longer have to produce a
final software program months before the final mechanical designs
are required to be completed. The application of this invention
also means that a manufacturer would not take the risk that the
developed software could contain a bug, resulting in the need for
chip sets to be returned. Instead, the configuration tool allows an
updated program to be installed in the robotic device whenever
necessary. Thirdly, the configuration tool allows the possibility
of having "customized" robotic devices, where the program
controlling the robot can be changed to suit a particular market or
user requirement. For example, all robots sent to Europe might have
a different set of audio cues than the robots sent to the U.S. The
changes could be aesthetic (e.g. audio) or performance based.
[0076] An example embodiment of the invention could include the
feature of downloading via a configuration tool, a new program for
data gathering in a user's home. For a robotic cleaning device,
this may include data on mechanical systems such as, but not
limited to, the current in the main sweeping brush motor, number of
obstacle bumper hits, greatest straight line run distance, and the
amount of collected debris detected. This data may be stored in
system RAM and retrieved at a later date, by the same, or another,
configuration tool. Analysis of this information could then be used
in a future design and development of robotic cleaners.
[0077] The use of a configuration tool can also have a number of
other uses in conjunction with the use of mobile robotic devices.
For example, a configuration tool can be used to install
configuration information and programs to enable a robotic device
to interact with or attach to an external device or peripheral.
Upon installation of updated configuration information, the robotic
device can use its I/O port to allow peripherals to be connected to
the robotic device. For example, a simple 802.11 communication
system, or other appropriate communication device, could be added
to allow a personal computer (PC) to communicate with a robotic
device that does not include an installed wireless communication
system. This system might initiate a function of the robotic
device, such as a cleaning function, at a set time or even allow a
user to initiate cleaning from a remote location using the Internet
or other means of communicating remotely with the PC.
[0078] Alternatively, new sensors or other peripherals could be
added to the robotic device to improve or change the functionality
of the device. In one example embodiment, external devices, such as
additional sensors, could be connected to a robotic device to allow
it to act, for example, as an educational research robot, allowing
information to be gathered by the robotic device and additional
programs to be added to the device.
[0079] In certain embodiments of the invention, a configuration
tool can be installed with different configuration programs to
allow the configuration tool to change or enhance a performance
characteristic of the robotic device. As a result, it may be
possible to produce configuration tools as accessories that adjust
the performance of a robotic device based on a particular
requirement of a user or group of users. These change in
performance characteristics might include, for example, advanced
coverage algorithms to allow a robotic cleaner to better clean a
specific area. Alternatively, it might be possible to change
certain parameters in the existing program to tune performance for
specific situations. For example, a user might purchase a
configuration tool specifically directed towards programming a
cleaning robot to clean hardwood floors. In another example
embodiment, a user might purchase a configuration tool that changes
the dirt detection parameters of a cleaning robot to make the dirt
detection even more sensitive. Other possible configuration tools
can be directed towards configuration programs for different rooms
in a house or office, such as rooms without rugs, rooms with rugs,
high traffic areas, etc. These various programs may, for example,
adjust values including the way a robotic cleaner switches between
various modes such as, but not limited to, spiraling, bouncing, and
wall following, or adjusting the manner in which a robotic device
reacts to certain sensor inputs such as, but not limited to, how
long a robotic device should wait before reacting to a stasis
sensor event, or how far from a wall should a robotic device be for
wall following, etc. See, for example, U.S. Pat. No. 6,809,490 for
typical operational modes, the disclosure of which is incorporated
herein by reference in its entirety.
[0080] In certain embodiments of the invention, a configuration
tool can be designed to be distributed with an updated, different,
or replacement assembly that can be installed in a robotic device.
For example, a cleaning head or brush assembly can be replaced in a
cleaning robot with an assembly having different or enhanced
capabilities, depending upon a users requirements. These assemblies
could be provided with a configuration tool to allow the device
with new assemblies to function in the preferred manner. In one
example embodiment, a steel brush system, that can be used to scrub
and sand hardwood decks, could be installed in a cleaning robot.
For this system, the motor drivers and current monitoring system
may possibly need to be changed if, for example, the assembly was
gear rather than belt driven, and this would require a different
set of motor current parameters.
[0081] Another example assembly that may be enabled using a
configuration tool can include is a cleaning head designed for
owners of long-haired animals. Yet another example embodiment may
involve an improved battery system, such as a battery system
enabling an faster charging system. This again could require a
configuration tool to optimize the charging parameters.
[0082] A configuration program could also be installed in a robotic
device, using the configuration tool, to enable a robotic device to
perform a system demonstration, wherein the demonstration could
cycle through the robotic device's various functions in rapid
succession. In some embodiments the robotic device could be
distributed with two configuration tools, one for configuring the
robotic device to perform an out-of-box demonstration of its
functions, and a separate configuration tool for installing
diagnostic capabilities and configuring the robotic device for
normal use. The user could learn about the system by using the
demonstration configuration tool, and then install the program for
normal use once the functions of the device have been learned. The
demonstration configuration tool could also include an audio
enabling function, that could use a digital voice to introduce and
teach the various functions of the robotic device.
[0083] Some embodiments of the invention may have a designated
maximum number of loads from a configuration tool, so that the
program cannot be loaded on more than a certain number of devices.
In one embodiment, a "watermark" can be introduced into the code to
easily identify a robot that has stolen or corrupted software
loaded in it. This may be achieved in a number of ways. In one
embodiment, a certain combination of user inputs, such as a
specific sequence of button hits, could unlock a hidden behavior,
such as a special sequence of movements of a mobile robotic device,
or possibly spelling out a symbol or word on the floor if a marker
were to be attached to the bumper. In another example embodiment, a
configuration tool or any other communication device connected to
the serial port may be required to first issue a specific phrase
and/or algorithm to unlock the serial port. Thus, unsupported
software could not be installed in a robotic device without the use
of this algorithm to open the communication link between the
robotic device and a configuration tool.
[0084] The invention may be embodied in other specific forms
without departing form the spirit or essential characteristics
thereof. The foregoing embodiments, therefore, are to be considered
in all respects illustrative rather than limiting the invention
described herein. Scope of the invention is thus indicated by the
appended claims, rather than by the foregoing description, and all
changes that come within the meaning and range of equivalency of
the claims are intended to be embraced therein.
* * * * *