Robotics: From a Software Perspective
Posted On June 7, 2007 by Raja Kishore Reddy filed under Miscellaneous
A robot, in its simplest manifestation, can be considered as a computer controlled electromechanical device; bringing it in the category of systems similar to that of embedded systems. This understanding treats robotics as a special branch of embedded systems. As robotics involves computerized systems interacting with the external environment, generally more emphasis is given to its hardware aspect (which interacts with the external environment), subsidizing the equal (or sometimes more) importance of the corresponding software side.
Use of robots in medical applications, Medical Robotics, is increasing in scale as well as in complexity (e.g. ZEUS Robot).
Medical Robotics
Medical robots can be classified under the following two categories:
· Surgical robots;
· Environment-based robots.
Surgical robots are of being-controlled type, whereas environment-based robots are of self-controlled type. We are going to concentrate upon the environment-based robots, which can be made to face the external environment on their own, through their programming (robot programming).
Robot programming itself has evolved into a specialized branch, introducing new programming paradigms suitable for robotics. These paradigms can be realized through their corresponding programming environments.
Programming Environment
A programming environment is a whole system, which enables programming activity. This provides the required flexibility for the controlled system. Programming environments can be broadly categorized into:
· Programming environment for the system programmer; and
· Programming environment for application programmer/power-user.
The first category involves realizing a system while the second demands utilizing that system (e.g. the development environment used to realize a personal computer (PC) is a programming environment for system programmer, while the environment used to write applications for it is a programming environment for the application programmer/power-user).
We are going to concentrate upon the programming environment for application programmer/power-user. This environment enables a programmer to exploit a controlled system to perform required variable tasks.
Though robot systems can be perceived as embedded systems, they are very close to PC systems in their working characteristics. One programs a robot (an embedded system) to exploit its intrinsic flexibility to perform a desired task (similar to a PC system). Thus, a programming environment to develop robot systems borrows heavily from those involved in PC systems and embedded systems.
Programming Environment for PC Systems and Embedded Systems



In the PC system environment (figure 1), a compiler and/or assembler are used to build one or more object files that are linked together with run-time library to form an executable image that is stored as a file on the disk. When one wants to run an application program, its executable image is loaded from disk into memory by a part of the operating system known as the loader. The operating system itself is already in memory, put there during the boot process. The PC system is intended to run a number of different application programs. Thus, a read/write main memory is used so that an entirely different application program can be quickly and easily loaded into memory, replacing the previous application whenever necessary.
Unlike PC systems, embedded systems are designed to serve a single purpose. Refer figure 2. Once the embedded software is in memory, there is usually no reason to change it. This allows read-only memory to be used for permanent storage of the program. Both the embedded system’s software and real-time kernel are stored in the same read-only memory as a single program image.
Programming Environment for Robot Systems
The programming environment for robot systems includes the characteristics of the above mentioned development environments. In addition, it introduces its own paradigms corresponding to its uniqueness.

(Fig. 3: Interaction between App-Programmer, Robot-System & External Environment)
A system programmer develops a robot system using a programming environment for system programmer. Such a robot system can be considered as a programmable-embedded system. An application programmer interacts with a robot system utilizing programming environment for application programmer/power-user. Using it he/she exploits its flexibility to program it do a specific task. Once programmed, the robot system will act as a dedicated embedded system. It can be reprogrammed to perform another dedicated task (similar to a PC system).
Human-Robot-Interaction (HRI) plays an important role in this process. This scenario is controlled through the following aspects of robot system environment:
· The architecture through which an application programmer interacts with a robot system; and
· The medium of interaction.

(Fig. 4: Programming Environment for robot systems)
An application programmer works in this robot programming environment using various robot programming components as tools.
Robot Programming Components:

An application programmer/power-user leverages robot programming systems to glue together these various robot programming components.
Robot Programming Systems:

The following robot programming systems are common in practice: LEGO Mind-Storm, SCORTH, Jackll, Scheme, Forth, ItLR, Adept V, Adept V+, Adept SILTOOLS, ABB-IRB 200 S3, ABB S4 Rapid Programming Language, AUTOMELEC Lucie, Siemens SIROTEC AC20, Demaurex, Delta95, etc.
Conclusion:
Robot systems can be considered as a specialized branch of embedded systems, which itself is a specialized branch of PC systems (systems designed for dedicated applications). Programming robot systems also involves new programming paradigms to provide the required flexibility in its operations. These paradigms can be realized by gluing together various programming components through corresponding programming systems. Thus the programming environments to develop robot systems can be characterized by:
· The intersection between programming environments for PC systems and embedded systems; and
· The hierarchical order involving programming systems, programming components and programming environment.
References:
1. MacDonald B., Yuen D. etc., Robot Programming Environments.
2. Biggs G. and MacDonald B., A Survey of Robot Programming Systems.
3. Ogbuji U. and Ouellet R., DARPA Reference.
4. Jadud M. C., Chenoweth B. N. and Schleter, Little languages for Little Robots.
5. Harbpur G. M., Somarriba G. R., Strohmeier A., and Jacot, J., PINROB: A Portable API for Industrial Robots.
6. Makatchev M., Robotic markup language (RoboML).
7. Fox J., Forth: The LEGO of Programming languages.
8. Hewitt C., PLANNER: A Language for Proving theorems in Robots, IJCAI, 1969.
9. Baier J. and Pinto J., Integrating True Concurrency into the robot programming Language GOLOG.
10. Thielscher M., Action Programming Languages and Cognitive Robotics.
11. Ingham M., Rango R. and Williams B., A Reactive Model-based Programming Language for Robotic Space Explorers.
12. Nilsson N. J., Triangle Tables: A Proposal for a Robot programming Language.
13. Lewis D. W., Fundamentals of Embedded Software: where C and assembly meet, Pearson Education, Inc., 2002.
