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.