“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.
The application layer provides application programs that a robot can execute. Examples of application programs include those needed to perform such prescribed maneuvers as avoiding obstacles while moving from a specified starting point to a specified goal point or turning a robot in place through a specified azimuthal angle. Each robot is provided with application software representing its own unique set of commands. The software establishes a graphical user interface (GUI) for exchanging command information with external computing systems. Via the GUI and its supporting interface software, a user can select and assemble, from the aforementioned set, commands appropriate to the task at hand and send the commands to the robot for execution. System software that interacts with the R4SA software at all three levels establishes a synchronized control environment.
The R4SA software features two modes of execution: before real time (BRT) and real time (RT). In the BRT mode, a text configuration file is read in (each robot has its own unique file) and then device-driver-layer, device-layer, and application-layer initialization functions are executed. If execution is successful, then the system jumps into the RT mode, in which the system is ready to receive and execute commands.
One goal in developing the R4SA architecture was to provide one computer code for many robots. The unique executable code for each robot is built by use of a configuration feature file. The set of features for a given robot is selected from a feature database on the basis of the hardware and mechanical capabilities of that robot. Recompilation of code is straightforward: modifications can readily be performed in the field by use of simple laptop-computer development and debugging software tools.
This work was done by Hrand Aghazarian, Eric Baumgartner, and Michael Garrett of Caltech for NASA’s Jet Propulsion Laboratory.
The software used in this innovation is available for commercial licensing. Please contact Karina Edmonds of the California Institute of Technology at (626) 395-2322. Refer to NPO-41796.
This Brief includes a Technical Support Package (TSP).
Robust Software Architecture for Robots
(reference NPO-41796) is currently available for download from the TSP library.
Don't have an account? Sign up here.