Don't look now, but robots are more than an academic curiosity. They're mowing the lawn, vacuuming the room, acting as hall monitors, and standing in harm's way. They've helped build cars for decades. Their senses and cognitive skills continue to improve.
Yet engineers, programmers, and designers are still the folks who turn a jumble of circuits, servos, and source code into a functioning robot. Many of the tools and techniques will be familiar to embedded designers, while other methodologies may be new.
A roboticist is often a jack of all trades. It typically takes electrical and mechanical engineering skills to construct a robot and an advanced programmer to tie the entire system together. Experience with artificial intelligence, computer planning, and real-time embedded systems is invaluable. Yet the need for all of this expertise can lead to runaway complexity. Luckily, changes in the robotic landscape are working to cap the complexity level.
In the past, robotics often operated in isolation. A single robot is simpler to manage. Multiple robots, on the other hand, often have a framework like the setup shown in Figure 1. Group management becomes part of the equation. In some instances, all robots within a group maintain a level of group reasoning so that any single robot can coordinate the group. Other approaches concentrate group management in one or more specialized robots.
The need for more sophisticated software frameworks comes from advances on the hardware side. Commercial-off-the-shelf (COTS) hardware is getting smaller, more powerful, less expensive, and more power-efficient. Most of these advances are due to factors other than robotic requirements, but robot designers can easily exploit these new options.
Camera chips for cell phones come in large volumes and feature a low-power design. These are suitable for robot vision systems. Low-cost, powerful microcontrollers, DSPs, system modules, and small motherboards provide high-power compute platforms for a host of solutions needed to process sensor inputs and analyze images and environmental conditions.
SOFT FRAMEWORKS Robotic programming frameworks typically run atop conventional real-time or regular operating systems. Developers tend to be more concerned with the higher-level framework than the operating system, unless they're creating device drivers. Rule- or behavior-based systems seem to be the way robotics research has developed, which has begun to translate into more standard platforms (see "Procedures, Rules, And Behaviors," below).
Open Procedural Reasoning System (OpenPRS or OPRS) from the Laboratory for Analysis and Architecture of Systems (LAAS) is one completely open-source approach (Fig. 2). OPRS has piqued designer interest due to its level of complexity. It includes a knowledge editor, graphical (X-Windows-based) development interfaces, and real-time support found in the OPRS kernel. The kernel can run on a range of operating systems. Actual work is done on the OPRS server. A central message-passing module provides communication among the server, data, and rules. OpenPRS procedure rules can take advantage of the underlying multitasking system. For example, it's possible to split and join multiple tasks, which can in turn be used to build even more complex systems.
Various robotic research projects have OPRS applications. It's also found in a number of commercial products like those from FrontLine Robotics. As with many open-source solutions, these commercial endeavors often add a "secret sauce" (read: proprietary) to the mix. This typically comes in the form of features like a vision recognition system.
Also, OPRS addresses goal seeking and planning. This meta-level reasoning is necessary when a robot doesn't simply react to its environment, but rather tries to develop a plan to reach one or more goals. This might be a destination or completing a process such as collecting a set of objects.
ERSP from Evolution is one commercial solution that's not based on OpenPRS (Fig. 3). The behavior-based ERSP system can be found on about half of the current crop of research and commercial robotic projects that employ vision. Evolution Robotics RCC software can even recognize faces.