The present invention relates generally to an autonomic mobile robotic device, and in particular, is directed to a method and system for enhancing the operating performance of such robotic device using captured performance data of such robotic device.
Service robotic devices, such as robotic mowers, are typically price constrained and have limited computational/reasoning capability and associated memory. The ability for such service robotic devices to adapt its mode of operation in different environments having numerous and widely varying parameters can thus be challenging due to such resource constraints that limit the internal processing capabilities of such service robotic devices.
Referring first to
In some exemplary cases, avoidance includes preventing contact with an object or area. In other exemplary cases, contact may be permitted, but only briefly until robotic device 112 can move away from the object.
Due to the particular illustrative application for this robotic device being a consumer mower that is a mass produced consumer product, this particular robotic device has relatively limited computational/reasoning capability and associated memory when compared to other types of industrial-strength robotic devices. As such, there are limitations as to how ‘smart’ or ‘adaptable’ this robotic device 112 is when performing a task in the work area 100. For example, instead of being programmed to follow a detailed path when mowing the yard using a back and forth linear path, this particular robotic device 112 is programmed to linearly travel in a random direction until it encounters an obstacle, at which point it randomly selects another direction for linear travel until it encounters another obstacle, at which point it again randomly selects another direction for linear travel. Over time, after repeatedly changing its direction of travel, the yard will be mowed as the random selection of travel direction will eventually cover the entire, or a substantial portion, of the yard after enough time has passed.
A portion of such travel with random direction selection is shown in
Because robotic device 112 is a consumer-oriented device that is mass produced, such robotic device cannot be programmed to account for particular characteristics of a given work area that it will be used in. For example, most yards have their own unique characteristics, and it is rare to encounter two yards that are laid out in an exact fashion with the identical obstacles. Furthermore, the location of objects and boundaries in another exemplary work area may cause robotic device 112 to become trapped and spend an excessive amount of time and effort in one area of the work area relative to other areas of the work area. If the robotic device 112 is trapped, it may be unable to return to the charging station before running out of energy, which is an inconvenience to an owner/operator of the work area.
What is needed is an ability to augment such local resource constraints of an autonomous mobile robotic device.
An embodiment of the present invention provides a feedback mechanism from a physical or simulated robotic device to a remote data analysis system, where a current robotic behavior or set of robotic behaviors that is programmed within the service robotic device is updated based on actual performance of the service robotic device relative to predicted performance of the service robotic device.
One embodiment provides a method for optimizing behavior of an autonomous mobile robotic device using a set of work area parameters. A first set of robotic behaviors is created based on the set of work area parameters and a behavior selection. The autonomous mobile robotic device is controlled using the first set of robotic behaviors. Performance data indicative of a performance of the autonomous mobile robotic device when controlled by the first set of robotic behaviors is collected. The performance data is analyzed to create a second set of robotic behaviors having enhanced performance relative to the first set of robotic behaviors. The first set of robotic behaviors is replaced with the second set of robotic behaviors to control the autonomous mobile robotic device using the second set of robotic behaviors.
In an alternative embodiment, instead of using actual performance data generated at a jobsite, the performance data is generated using a simulation(s) of an autonomous mobile robotic device operating at a jobsite.
Thus, there is provided an ability to augment local resource constraints of an autonomous mobile robotic device to improve such robotic device against various metrics including, for example and without limitation, the time required to substantially cover an area, the probability of becoming trapped in a portion of a work area, and a new area covered on a single battery charge.
The features, functions, and advantages can be achieved independently in various embodiments of the present invention or may be combined in yet other embodiments in which further details can be seen with reference to the following description and drawings.
The novel features believed characteristic of the illustrative embodiments are set forth in the appended claims. The illustrative embodiments, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment of the present invention when read in conjunction with the accompanying drawings, wherein:
An embodiment of the present invention provides a feedback mechanism from a physical or simulated robotic device to a remote data analysis system, where current robotic behavior that is programmed within the service robotic device is updated based on actual performance of the service robotic device relative to predicted performance of the service robotic device. For example, performance data may indicate a particular troublesome location that the robotic device has trouble maneuvering around, such as a picnic table, storage shed, flower bed, swing-set, patio furniture or outdoor barbeque grill. This data could indicate that the robotic device spends an excessive amount of time at such obstacle, indicating that the robotic device has been stuck or otherwise prevented from travelling along a given (random) path.
With reference now to
Propulsion system 308 may be an electrically controlled propulsion system. Propulsion system 308 may be, for example, an internal combustion engine, an internal combustion engine/electric hybrid system, an electric engine, or some other suitable propulsion system. Sensor system 310 may be a set of sensors used to collect information about the environment around robotic device 300. This information collected by sensor system 310 may be used for localization in identifying a location of robotic device 300, a location of another robotic device, an obstacle, or a barrier in the environment. In these examples, the information is sent to machine controller 302 to provide data in identifying how the robotic device should move in different modes of operation. For example, braking system 306 may slow robotic device 300 in response to a limited detection range of sensor system 310 on robotic device 300. In these examples, a set refers to one or more items. A set of sensors is one or more sensors in these examples. Communication unit 312 may provide communications links to machine controller 302 to receive information. This information includes, for example, data, commands, and/or instructions. Communication unit 312 may take various forms. For example, communication unit 312 may include a wireless communications system, such as a cellular phone system, a Wi-Fi wireless system, a Bluetooth wireless system, or some other suitable wireless communications system. Further, communication unit 312 also may include a communications port, such as, for example, a universal serial bus port, a serial interface, a parallel port interface, a network interface, or some other suitable port to provide a physical communications link. Communication unit 312 may be used to communicate with a remote location or an operator. Communications unit 312 may include a battery back-up on a plurality of electronic modules that each operates at a different frequency in order to minimize the likelihood of common mode failure.
With reference now to
The media used by persistent storage 408 also may be removable. For example, a removable hard drive may be used for persistent storage 408. Communications unit 410, in these examples, provides for communications with other data processing systems or devices. In these examples, communications unit 410 is a network interface card. Communications unit 410 may provide communications through the use of either or both physical and wireless communications links. Input/output unit 412 allows for input and output of data with other devices that may be connected to data processing system 400. For example, input/output unit 412 may provide a connection for user input through a keyboard and mouse. Instructions for the operating system and applications or programs are located on persistent storage 408. These instructions may be loaded into memory 406 for execution by processor unit 404. The processes of the different embodiments may be performed by processor unit 404 using computer implemented instructions, which may be located in a memory, such as memory 406.
These instructions are referred to as program code, computer usable program code, or computer readable program code that may be read and executed by a processor in processor unit 404. The program code in the different embodiments may be embodied on different physical or tangible computer readable media, such as memory 406 or persistent storage 408. Program code 416 is located in a functional form on computer readable media 418 that is selectively removable and may be loaded onto or transferred to data processing system 400 for execution by processor unit 404. Program code 416 and computer readable media 418 form computer program product 420 in these examples. In one example, computer readable media 418 may be in a tangible form, such as, for example, an optical or magnetic disc that is inserted or placed into a drive or other device that is part of persistent storage 408 for transfer onto a storage device, such as a hard drive that is part of persistent storage 408. In a tangible form, computer readable media 418 also may take the form of a persistent storage, such as a hard drive, a thumb drive, or a flash memory that is connected to data processing system 400.
The tangible form of computer readable media 418 is also referred to as computer recordable storage media. In some instances, computer readable media 418 may not be removable. Alternatively, program code 416 may be transferred to data processing system 400 from computer readable media 418 through a communications link to communications unit 410 and/or through a connection to input/output unit 412. The communications link and/or the connection may be physical or wireless in the illustrative examples. The computer readable media also may take the form of non-tangible media, such as communications links or wireless transmissions containing the program code.
The different components illustrated for data processing system 400 are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. The different illustrative embodiments may be implemented in a data processing system 15 including components in addition to or in place of those illustrated for data processing system 400. Other components shown in
In another example, a bus system may be used to implement communications fabric 402 and may be comprised of one or more buses, such as a system bus or an input/output bus. Of course, the bus system may be implemented using any suitable type of architecture that provides for a transfer of data between different components or devices attached to the bus system. Additionally, a communications unit may include one or more devices used to transmit and receive data, such as a modem or a network adapter. Further, a memory may be, for example, memory 406 or a cache, such as found in an interface and memory controller hub that may be present in communications fabric 402.
With reference now to
Machine controller 500 may be implemented in a robotic device, such as robotic device 112 using a data processing system, such as data processing system 400 in
Sensor processing algorithms 504 interact with knowledge base 508 to locate the classified thematic features on a thematic map stored in knowledge base 508, and calculate the robotic device position based on the sensor data in conjunction with the landmark localization. Machine control process 502 receives the environmental data from sensor processing algorithms 504, and interacts with knowledge base 508 and behaviors 510 in order to determine which commands to send to the robotic device's steering, braking, and propulsion components.
Knowledge base 508 contains information about the operating environment, such as, for example, a fixed map showing streets, structures, tree locations, and other static object locations. Knowledge base 508 may also contain information, such as, without limitation, local flora and fauna of the operating environment, current weather for the operating environment, weather history for the operating environment, specific environmental features of the work area that affect the robotic device, and the like. Knowledge base 508 may also contain a set of work area parameters, such as a work area perimeter, work area topology, a keep-out region within the work area, and an identified object within the work area. The information in knowledge base 508 may be used to perform classification and plan actions. Knowledge base 508 is located within machine controller 500.
Behaviors 510 contains behavioral processes specific to machine coordination that can be called and executed by machine control process 502. The behaviors 510 are accessed by machine control process 502. Per the inventive features provided herein, the behaviors 510 are updated with a new set of behaviors based on information collected and stored in the knowledge base 508, as further described below.
Knowledge base process 512 interacts with sensor processing algorithms 504 to receive processed sensor data about the environment, and in turn interacts with knowledge base 508 to classify objects detected in the processed sensor data. Knowledge base process 512 also informs machine control process 502 of the classified objects in the environment in order to facilitate accurate instructions for machine control process 502 to send to steering, braking, and propulsion systems. For example, in an illustrative embodiment, sensor processing algorithms 504 detect narrow, cylindrical objects along the side of the planned path. Knowledge base process 512 receives the processed data from sensor processing algorithms 504 and interacts with knowledge base 508 to classify the narrow, cylindrical objects as tree trunks. Knowledge base process 512 can then inform machine control process 502 of the location of the tree trunks in relation to the robotic device, as well as any further rules that may apply to tree trunks in association with the planned path.
Per the inventive features provided herein, information pertaining to performance history of the robotic device, including travel paths and encountered obstacles, are maintained in knowledge base 508 of
Webots also contains a number of interfaces to real mobile robots, so that once a simulated robot behaves as expected, one can transfer its control program to a real robot like e-puck, Khepera, Hemisson, LEGO Mindstorms, Aibo, etc. This capability is also described in a paper written by Michel, Olivier of Cyberbotics Ltd, entitled ‘Webots™: Professional Mobile Robot Simulation’, pp. 40-43, International Journal of Advanced Robotic Systems, Volume 1 Number 1 (2004), ISSN 1729-8806, and the ‘Webots Reference Manual’, release 6.3.0, Copyright© 2010 Cyberbotics Ltd., dated Sep. 10, 2010, both of which are hereby incorporated by reference as background material. With regards to the present technique for enhancing the operating performance of a robotic device, such simulator is operable to model a work area, model robot sensors, model robot actuators, provide control algorithms to move a robot through a work area, and collect algorithm/robot performance data.
In another exemplary embodiment, genetic algorithms can be used to optimize the behaviors in the library for a given robotic device. These genetic algorithms may take many iterations to converge on an optimal solution, resulting in long execution times. A preferred embodiment uses rules based on previous experience—real or simulated—to develop statistical (fuzzy) rules to seed the initial library. Genetic algorithms or other optimization algorithms are then used to refine the set of behaviors to be used by the robotic device and to optimize parameters associated with such behaviors.
Turning now to
Alternatively, the performance data is generated using a simulated performance for a specified work area, using a tool such as Webots 6, available from Cyberbotics, Ltd of Lausanne, Switzerland, as previously described.
For the case where the performance data is actual field data, such performance data is transmitted or transferred to a knowledge center for processing at 604. For the case where the performance data is simulated performance data for a specified work area, this transmission step would not occur. At the knowledge center, the performance data (actual or simulated) is analyzed at 606, as will be further described below with respect to
The new set of second behaviors that were identified/created/generated at 608 as a part of the above described analysis are then used to replace the original, or first, set of behaviors with this newly identified/created/generated second set of behaviors at 610. The robotic device with an updated set of operating behaviors is now ready to operate with enhanced performance in performing tasks. While the particular task has been described as mowing grass, the present invention is not so limited, and may be applied to other types of autonomous mobile robotic devices that perform tasks such as area coverage, vacuuming, cleaning, material application and material collection.
Turning now to
In a preferred embodiment, the diagram of the work area—which can be a human generated sketch of the work area, a human annotated aerial image of the work area, or a three-dimensional synthetic image of the work area—is analyzed in an automated fashion, as previously described with respect to element 702 of
Therefore, an embodiment of the present invention provides a feedback mechanism from a robotic device to a remote data analysis system, where a current robotic behavior that is programming within the service robotic device is updated based on actual performance of the service robotic device relative to predicted performance of the service robotic device. In an alternative embodiment, instead of using actual performance data generated at a jobsite, the performance data is generated using a simulation(s) of a robotic device operating at a jobsite.
The description of the different advantageous embodiments has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the embodiments in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. Further, different embodiments may provide different advantages as compared to other embodiments. The embodiment or embodiments selected are chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
The application is related to U.S. patent application Ser. No. 12/640,898 entitled “Automated Tagging for Landmark Identification”, which is assigned to the same assignee as the present application (Deere & Company of Moline, Ill.) and filed Dec. 17, 2009, which is hereby incorporated by reference.