Generalized software can be readily tailored for specific applications.
“Robust Real-Time Reconfigurable Robotics Software Architecture” (“R4SA”) is the name of both a software architecture and software that embodies the architecture. The architecture was conceived in the spirit of current practice in designing modular, hard, real-time aerospace systems. The architecture facilitates the integration of new sensory, motor, and control software modules into the software of a given robotic system. R4SA was developed for initial application aboard exploratory mobile robots on Mars, but is adaptable to terrestrial robotic systems, real-time embedded computing systems in general, and robotic toys.
The R4SA software, written in clean ANSI C, establishes an onboard, real-time computing environment. The R4SA architecture features three layers: The lowest is the device-driver layer, the highest is the application layer, and the device layer lies at the middle (see figure).
The device-driver layer handles all hardware dependencies. It completely hides the details of how a device works. Activities directed by users are performed by means of well-defined interfaces. Each type of device driver is equipped with its own well-defined interface. For example, the device-driver interface for an analog-to-digital converter differs from that for a digital-to-analog converter.
The device layer provides the means for abstracting the high-level software in the application layer from the hardware dependencies. The device layer provides all motion-control computations, including those for general proportional + integral + derivative controllers, profilers, controllers for such mechanical components as wheels and arms, coordinate-system transformations for odometry and inertial navigation, vision processing, instrument interfaces, communication among multiple robots, and kinematics for a multiple-wheel or multiple-leg robot.