ROBOT OPERATING SYSTEM
It is a robotic platform for running simulations. ROS can be defined as a open source meta operating system that provides features similar to an operating system. These features include physical layer abstraction, low level device control, communication between processes and package management. There is also provision to obtain, build, write and run code across multiple computers through different tools and libraries. ROS works together with the operating system currently installed and doesn’t replace it.
Advantages of ROS
Using ROS has some significant advantages that are summarized below .
a) Distributed Computation
Several robotic systems have multiple processes that are executed on different computers. These processes could control one or more sub-systems of the robot such as sensors or actuators. Even a single robot could have its features written as a set of independent modules or processes that is easy to control and configure. This is called complexity via composition. The modules coordinate together in-order to achieve the goal. Also, ROS helps multiple computers to co-ordinate and work on a shared task and helps in the communication between these computers. Most importantly, ROS provides mechanism to include human users to control and send commands to the robot from any electronic device such as laptop, mobile device etc. All of these are dependent on the communication between the processes and ROS helps to achieve them through message passing and through services .
b) Software Reusability
One of the key elements in software engineering is the ability to develop software that is adaptable to changing business or project requirements. Robotic applications require the use of path planning algorithms, navigation, motion planning and several others. ROS helps is modifying and applying these algorithms through its libraries depending upon the context and the application that is sought for. This eliminates the need to re-implement the algorithms for every new context or application that is being developed . Also, since ROS uses message passing as its means of communication. It integrates easily with the latest hardware and implementations of several frequently used applications such as navigation stacks, motion control etc, are readily available.
c) Rapid Testing
While software development can be time consuming it is often more important to test the software modules being developed. In robotics software development testing is often time consuming because of the non-availability of physical robots. The testing can be still time consuming in the presence of physical robots because of their slowness and other physical level difficulties. With ROS it is possible to record and playback the sensor data and other similar messages through the use of rosbag . This helps to test the different ways by which the sensor data is processed by the system. ROS also separates the physical level abstraction and the decision making (high level processing) components of the robotic system. By doing this the low level processing or hardware can be substituted with a simulator and testing can be performed on the higher levels of the system . Although ROS offers such significant advantages it is not the only robotics platform. However, in our research work ROS was preferred because of the vast amounts of information available through the robotics community which helps is faster development and debugging of the project. ROS is not a programming language but has its programs written using C++.
There is also support for other libraries that are written using the languages such as python, lisp etc. ROS includes server, command-line tools, graphical interface and a build system alongside several client libraries . ROS is not an integrated
development environment like eclipse etc .
ROS Distributions and Installation
ROS versions are named as distributions. Some of the distributions are hydro, groovy, electric, fuerte, jade etc. In this research work we have used ROS indigo and its corresponding libraries. The various steps to install and configure ROS indigo .