ROS (Robot Operating System)
The Robot Operating System (ROS) is a flexible framework for writing robot software.It is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behaviour across a wide variety of robotic platforms.
ROS is open source and you can build your own robot using ROS. ROS supported hardware. ROS supports simulators like the Gabezo.
Gazebo is a 3D indoor and outdoor multi-robot simulator, complete with dynamic and kinematic physics, and a pluggable physics engine. Integration between ROS and Gazebo is provided by a set of Gazebo plugins that support many existing robots and sensors.
Why Should I Use ROS ?
There can be many reasons for this, depending on the use case of the robot you are making. But if we take a very general approach then we can state that after a certain stage integration becomes very tough and in this case ROS makes it very simple.
ROS provides functionality for hardware abstraction, device drivers, communication between processes over multiple machines, tools for testing and visualization, and much more.
ROS provides a way to connect a network of processes (nodes) with a central hub. Nodes can be run on multiple devices, and they connect to that hub in various ways, for example defining publisher/subscriber connections with other nodes we can create network.
Installation and Configuration
ROS is available on various *NIX platforms and officially supported version is Ubuntu. For Other platforms like OS X, Arch Linux, Debian, Raspbian and Android are supported by the community.
we will go through the installation process for Ubuntu 16.04 on desktop.
Latest release is ROS Kinetic Kame and we will install this distro.
Installation on Ubuntu (16.04)
1. Configure your Ubuntu repositories
Configure your Ubuntu repositories to allow “restricted,” “universe,” and “multiverse.”
2. Setup your sources.list
ROS have its own repositories. First of all let’s add them.
Now, make sure your Debian package index is up-to-date:
There are many different libraries and tools in ROS. We will install Desktop-Full version which includes ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception.
4. Initialize rosdep
Before we can use ROS, we will need to initialize rosdep. rosdep enables us to easily install system dependencies for source, we want to compile and is required to run some core components in ROS.
5. Environment setup
It’s convenient if the ROS environment variables are automatically added to your bash session every time a new shell is launched.
if you have more than one ROS distribution installed, ~/.bashrc must only source the setup.bash for the version you are currently using.
If you just want to change the environment of your current shell, instead of the above you can type:
If you use zsh instead of bash you need to run the following commands to set up your shell:
4. Dependencies for building packages
Up to now you have installed what you need to run the core ROS packages. To create and manage your own ROS workspaces, there are various tools and requirements that are distributed separately.
To install this tool and other dependencies for building ROS packages, run:
we have completed whole installation process and now we will go to configuration part.
ROS workspaces are managed via
We need to define a directory for all packages that we host. Within the directory we create a
src folder, and call
catkin_init_workspace form inside it. That will create various symbolic links to the currently sourced ROS version. The next step is to add this workspace to environment variables as well.
To perform this whole workspace configuration, choose an empty directory and execute the following commands:
We have now created a workspace within which you can create your own ROS packages.
This introduction was a very basic one, but the hope is that you became more interested in working with this versatile framework.
Here is the my another blog on Communication in ROS.
If you enjoyed this post, like and share this story. Thank you!
— Shubham Maddhashiya