1. Introduction and basic advantages of ROS (Robot Operating System).
2.ROS as a build platform.
The robotics community has made impressive progress in recent years. Reliable and in-expensive robot hardware—from land-based mobile robots, to quadrotor helicopters, to humanoids—is more widely available than ever before. Perhaps even more impressively, the community has also developed algorithms that help those robots run with increasing levels of autonomy.
In spite of (or, some might argue, because of this rapid progress, robots do still present some significant challenges for software developers. some of these difficulties. The official description of ROS is:
ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message -passing between processes, and package management. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers.
This description is accurate—and it correctly emphasizes that ROS does not replace, but instead works alongside a traditional operating system—but it may leave you wondering what the real advantages are for software that uses ROS.Is it worth knowing about ROS ? But the answer is Yes Here are the advantages of learning ROS.
coming to one-by one:
-> Some robots carry multiple computers for each one of the tasks,that may be for monitoring sensors etc...
->Its a good idea if only single computer can be used to achieve this task by dividing into several small tasks which computer can handle.
-> More over in some instants a given task will be shared by different robots to reduce complexity.
To achieve these tasks there should be communication between the tasks.This can be well established by ROS which we call as (communication between nodes) in ROS.
The rapid progress of robotics research has resulted in a growing collection of good algorithms for common tasks such as navigation, motion planning, mapping,
and many others. Of course, the existence of these algorithms is only truly useful if there is a way to apply them in new contexts, without the need to reimplement each algorithm for each new system. ROS can help to prevent this kind of pain in at least two important ways.
->ROS’s standard packages provide stable, debugged implementations of many important robotics algorithms.
->ROS’s message passing interface is becoming a de facto standard for robot software
interoperability, which means that ROS interfaces to both the latest hardware and to
implementations of cutting edge algorithms are quite often available. For example,
the ROS website lists dozens of repositories of publicly-available ROS packages.
This sort of uniform interface greatly reduces the need to write “glue” code to connect existing parts. (refer: http://wiki.ros.org)
Hence you can focus to focus more time on experimenting with new ideas, and less time re-inventing wheels.
One of the reasons that software development for robots is often more
challenging than other kinds of development is that testing can be time consuming anderror-prone. Physical robots may not always be available to work with, and when they are, the process is sometimes slow and finicky. Working with ROS provides two effective workarounds to this problem.
->Well-designed ROS systems separate the low-level direct control of the hardware and high-level processing and decision making into separate programs. Because of this separation, we can temporarily replace those low-level programs (and their corresponding hardware) with a simulator, to test the behavior of the high-level part of the system
->ROS also provides a simple way to record and play back sensor data and other kinds of messages. This facility means that we can obtain more leverage from the time we do spend operating a physical robot. By recording the robot’s sensor data, we can replay it many times to test different ways of processing that same data. In ROS parlance, these recordings are called “bags” and a tool called rosbag is used to record and replay them.
It is to remember that :
-> ROS in not a programming language,infact many programming languages such as C++,Python,Java can be used.
->ROS is not (only) a library. Although ROS does include client libraries, it also includes (among other things), a central server, a set of command-line tools, a set of graphical tools, and a build system.
2.ROS as a build platform :(Now let us see how the ROS file system is organized):
In this session we see the distribution and package management session of ROS.
ROS code is grouped at two different levels:
A named collection of software that is built and treated as an atomic dependency in the ROS build system.
A named collection of packages for distribution.
Generally these are the some of the required things for a package to be built.
These files are collectively kept under one thing call as "package"
This is analogues to a folder containing some files in your system.
These group of packages are piled up to form "Stack"
Some group of stacks are known as "Distribution"
In ROS the first distribution
ROS "Box Turtle"
March 2, 2010
August 2, 2010
.. and recently in 2013 ROS Hydro Medusa has been released.
( refer: http://ros.wiki.org for set of releases)
The minimal representation of a ROS package is a directory in the
$ROS_PACKAGE_PATH which contains a single file::manifest.xml
---- More about ROS packages and introduction about nodes and their architecture and steps to install ROS can be found in next article:
Just have a look at the Power of ROS:
Some of the content is taken from Introduction to ROS by Jason M. O’Kane for better understanding purpose.