A system for motion control in which an application is developed that is independent from the actual motion control hardware used to implement the system. The system comprises a software system that employs an application programming interface comprising component functions and a service provider interface comprising driver functions. A system programmer writes an application that calls the component functions. Code associated with the component functions relates these functions to the driver functions. A hardware designer writes driver code that implements the driver functions on a given motion control hardware product. The driver functions are separated into core and extended driver functions. All software drivers implement the core driver functions, while the software drivers need not contain code for implementing the extended driver functions. If the software driver does not contain code to implement an extended driver function, the functionality of the extended driver function is obtained through a combination of core driver functions. The system programmer may also select one or more streams that allow the control commands to be communicated to, and response data to be communicated from, motion control hardware.
RELATED APPLICATIONS
This is a continuation of U.S. patent application Ser. No. 09/191,981 filed Nov. 13, 1998, which is a continuation of U.S. patent application Ser. No. 08/656,421 filed May 30, 1996 now U.S. Pat. No. 5,867,385, which is a continuation-in-part of U.S. patent application Ser. No. 08/454,736 filed May 30, 1995 now U.S. Pat. No. 5,691,897.
Methods and apparatus that provide a hardware abstraction layer (HAL) for a robot are disclosed. A HAL can reside as a software layer or as a firmware layer residing between robot control software and underlying robot hardware and/or an operating system for the hardware. The HAL provides a relatively uniform abstract for aggregates of underlying hardware such that the underlying robotic hardware is transparent to perception and control software, i.e., robot control software. This advantageously permits robot control software to be written in a robot-independent manner. Developers of robot control software are then freed from tedious lower level tasks. Portability is another advantage. For example, the HAL efficiently permits robot control software developed for one robot to be ported to another. In one example, the HAL permits the same navigation algorithm to be ported from a wheeled robot and used on a humanoid legged robot.
Methods and apparatus that provide a hardware abstraction layer (HAL) for a robot are disclosed. A HAL can reside as a software layer or as a firmware layer residing between robot control software and underlying robot hardware and/or an operating system for the hardware. The HAL provides a relatively uniform abstract for aggregates of underlying hardware such that the underlying robotic hardware is transparent to perception and control software, i.e., robot control software. This advantageously permits robot control software to be written in a robot-independent manner. Developers of robot control software are then freed from tedious lower level tasks. Portability is another advantage. For example, the HAL efficiently permits robot control software developed for one robot to be ported to another. In one example, the HAL permits the same navigation algorithm to be ported from a wheeled robot and used on a humanoid legged robot.
Methods and apparatus that provide a hardware abstraction layer (HAL) for a robot are disclosed. A HAL can reside as a software layer or as a firmware layer residing between robot control software and underlying robot hardware and/or an operating system for the hardware. The HAL provides a relatively uniform abstract for aggregates of underlying hardware such that the underlying robotic hardware is transparent to perception and control software, i.e., robot control software. This advantageously permits robot control software to be written in a robot-independent manner. Developers of robot control software are then freed from tedious lower level tasks. Portability is another advantage. For example, the HAL efficiently permits robot control software developed for one robot to be ported to another. In one example, the HAL permits the same navigation algorithm to be ported from a wheeled robot and used on a humanoid legged robot.
Robot platforms, methods, and computer media are disclosed. The robot platform includes perceptors, locomotors, and a system controller, which executes instructions for a robot to follow a target in its environment. The method includes receiving a target bearing and sensing whether the robot is blocked front. If the robot is blocked in front, then the robot's motion is adjusted to avoid the nearest obstacle in front. If the robot is not blocked in front, then the method senses whether the robot is blocked toward the target bearing and if so, sets the rotational direction opposite from the target bearing, and adjusts the rotational velocity and translational velocity. If the robot is not blocked toward the target bearing, then the rotational velocity is adjusted proportional to an angle of the target bearing and the translational velocity is adjusted proportional to a distance to the nearest obstacle in front.
A motion based communications system having an animated device, which is controlled locally or over a network connection, and which uses motion to convey information to a user. The information can relate to a predefined system events, such as printer status changes, e-mail status, system errors or communications. Further, it can represent remote individuals in a chat room, or when playing games. Computer games can use it to represent a remote or local human or software opponent. Voice recognition software allows commands or data to be input to the system via the device. Multiple devices can be used for multiple remotely located users. A universal base unit allows characters to be replaceably attached to, and controlled by, the base unit. Different characters can be substituted for different games, etc. The device may be software controlled by any application program via a standard application program interface.