Claims
- 1. A hardware abstraction layer (HAL) in a robot software architecture, the HAL comprising:
software interfaces to higher-level software, wherein the software interfaces are configured to communicate with the higher-level robotic software with real-world measurements relating to robot interaction with an environment; a resource configuration that provides an indication of available resources the higher-level software; a plurality of resource drivers, wherein at least a portion of the resource drivers correspond to the available resources in the resource configuration, wherein at least two of the resource drivers overlap in functionality, where only one of the at least two resource drivers has a corresponding resource available, where a resource driver for an available resource is configured to translate between real-world measurements for the robot and device-level measurements for a device; and an interface to lower-level device drivers, wherein the lower-level device drivers communicate with corresponding hardware at a device level, and where the interface to lower-level device drivers communicates to the higher-level software via a resource driver.
- 2. The HAL as defined in claim 1, wherein the resource configuration further comprises an indication of where a device is structurally coupled to the robot.
- 3. The HAL as defined in claim 1, wherein the higher-level software includes at least one selected from the group consisting of a planner, an application, a behavior, and a task.
- 4. The HAL as defined in claim 1, wherein a device driver corresponds to a motor driver and wherein a corresponding resource driver uses a wheel diameter and a gear ratio to compute speed given a motor angular velocity such that the resource driver translates between motor angular velocity for the motor driver and linear velocity for the high-level software.
- 5. The HAL as defined in claim 1, where the resource drivers reside in an application program interface (API) layer between the higher level software and the lower-level device drivers.
- 6. A method in a robot of providing hardware abstraction for robot control software, the method comprising:
providing a plurality of resource drivers for the robot, where the plurality of resource drivers includes resource drivers for which no corresponding hardware is present on the robot; detecting a hardware configuration for the robot; automatically detecting resources that are available on the robot based on the detected hardware configuration; receiving a request from the robot control software to use a type of resource; automatically selecting a resource from the available resources that corresponds to the type of resource requested by the robot control software; exchanging a first information with the robot control software, where the first information is related to use of the selected resource and is provided in a unit of measure that is related to a robot; exchanging a second information with a low-level device driver corresponding to the resource, where the second information is related to the use requested by the robot control software, where the second information is provided in a unit of measure that is related to a corresponding device, and where the second information is different than the first information; and converting between the first information and the second information based on the detected configuration of the robot.
- 7. The method as defined in claim 6, where the first information is linear velocity and the second information is angular velocity.
- 8. The method as defined in claim 6, wherein the method is embodied in an application program interface (API).
- 9. The method as defined in claim 6, wherein the type of resource comprises a distance sense, and wherein the resource that is selected corresponds to a device selected from the group consisting of a bump sensor, a laser range finder, an ultrasonic sensor, and an infrared sensor.
- 10. The method as defined in claim 6, wherein the robot initially includes a bump sensor, and wherein the hardware configuration for the robot specifies the bump sensor, further comprising:
changing the bump sensor to an infrared sensor; changing the hardware configuration for the robot; and automatically converting between the first information and the second information based on the new detected configuration of the robot such that the robot control software can be used without modification.
- 11. The method as defined in claim 6, further comprising:
including a security parameter with a method call; verifying a security ticket when access is requested to a resource; and controlling access to the resource based on the security ticket.
- 12. The method as defined in claim 6, further comprising:
maintaining a reservation count parameter that is updated based on access to a resource; and controlling access to the resource based on the count.
- 13. A hardware abstraction layer (HAL) in a robot for robot control software, the HAL comprising:
means for providing a plurality of resource drivers for the robot, where the plurality of resource drivers includes resource drivers for which no corresponding hardware is present on the robot; means for detecting a hardware configuration for the robot; means for automatically detecting resources that are available on the robot based on the detected hardware configuration; means for receiving a request from the robot control software to use a type of resource; means for automatically selecting a resource from the available resources that corresponds to the type of resource requested by the robot control software; means for exchanging a first information with the robot control software, where the first information is related to use of the selected resource and is provided in a unit of measure that is related to a robot; means for exchanging a second information with a low-level device driver corresponding to the resource, where the second information is related to the use requested by the robot control software, where the second information is provided in a unit of measure that is related to a corresponding device, and where the second information is different than the first information; and means for converting between the first information and the second information based on the detected configuration of the robot.
- 14. A computer-readable medium having computer-executable instructions for performing a method comprising:
providing a plurality of resource drivers for the robot, where the plurality of resource drivers includes resource drivers for which no corresponding hardware is present on the robot; detecting a hardware configuration for the robot; automatically detecting resources that are available on the robot based on the detected hardware configuration; receiving a request from the robot control software to use a type of resource; automatically selecting a resource from the available resources that corresponds to the type of resource requested by the robot control software; exchanging a first information with the robot control software, where the first information is related to use of the selected resource and is provided in a unit of measure that is related to a robot; exchanging a second information with a low-level device driver corresponding to the resource, where the second information is related to the use requested by the robot control software, where the second information is provided in a unit of measure that is related to a corresponding device, and where the second information is different than the first information; and converting between the first information and the second information based on the detected configuration of the robot.
RELATED APPLICATION
[0001] This application claims the benefit under 35 U.S.C. § 119(e) of U.S. Provisional Application No. 60/334,142, filed Nov. 28, 2001, Provisional Application No. 60/355,624, filed Feb. 08, 2002, and Provisional Application No. 60/374,309, filed Apr. 19, 2002, the entireties of which are hereby incorporated by reference.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60334142 |
Nov 2001 |
US |
|
60355624 |
Feb 2002 |
US |
|
60374309 |
Apr 2002 |
US |