A complex robot is backed up by busy intersections with commands and information that require processing. Simultaneous control of several actions require several processes that work in parallel and are sustained by high computing power. The difference between a robot that is moving in an environment with obstacles and a robot which makes a sound out when the light is on is enormous in terms of computation and processes that take place simultaneously, if the robot that detects the light uses a light sensor to send information, an autonomous robot that is moving and avoids obstacles uses a range of sensors to collect information about the environment.
The program used to control actions of a robot has an essential role. There is a sequential program type that performs a particular action at a time, and concurrent programs that receive informations in the same time from multiple sensors and sustain continuous activity of the system even in the case when sensor delay in sending information becomes significant or it simply does not work. In this article we try to describe in simple and comprehensive terms concurrent programming to build complex robots.
What is concurrent programming
Concurrent programming rises up to the most difficult level in the programming process and generally addresses programmers with an above average level in programming and with some experience in the field. The emergence of these programming techniques was imposed due to the need to run several streams of operations in a concurrent way.
A program is a set of instructions which are built by a sequence of instructions which are known in terms of developing threads. Each thread has at least one communication relationship with the other threads.
Advantages of concurrent programming
- It better supports the abstract model of the system;
- Concurrent programming is used to increase computer efficiency;
- Concurrent programming is used when there is a need to run a number of simultaneous processes and dynamically share information;
- For a high transparency of tasks execution these can be put on hold until the preconditions are fulfilled.
Disadvantages of concurrent programming
- Is very difficult to write concurrent programs due to the multiplicity of possible operations among threads;
- Program bugs may be difficult to be reproduced;
- Due to this high complexity, the programs are more difficult to be analyzed.
Using concurrent programming in Robotics
Concurrent programming is not a new technique used in robotic programming and surely will persist for a long period of time until new technologies will reveal new programming techniques. Just as the people who make more tasks at the same time, a humanoid robot can walk, talk and see in the same time. These multifunctional robots require several independent processing units which can be used in parallel. Another important factor is the operating system which must support concurrent processes. Each operation is independent and has a well defined moment to be executed which implies multiprocessor systems.
Concurrent programming mechanism includes: semaphores, monitors, and Communicating Sequential Processes (CSP).
Semaphore: It is used when a shared resource can be accessed by a limited number of threads.
Monitor: Can be an object or a module intended to be used at a time by more than a thread.
Communicating Sequential Processes (CSP): Is a formal language for describing patterns of interaction in concurrent systems.
The future world is closely related to robots who are intelligent and are used widely. The technologies that underlie intelligent robots are complex and require an increased computing power. As concurrent programming which can be met by experienced programmers, there is a split appearing between technical programming used so far and new technologies.Resources