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.