Introduction to ROS
ROS stands for Robot Operating System. However, it is not a general purpose operating system. Basically, it is a set of software libraries and tools that help the developer to build robot applications. It provides the services that we may expect from an ‘operating system’ such as hardware abstraction, low-level device control, and implementation of commonly used functionality etc. Similarly, In ROS, you make or install something that gives the command to a physical ROBOT, and it is able to perform certain actions.
I just made it too simple, but in the practical sense, there are a lot of things under the hood.
But don’t worry, we will be covering everything in greater detail turn by turn, as we get to the deeper end of the topics.
What you will learn in this blog?
Before we start the blog, here are the objective or final learning outcomes of the blog:
This blog will tell you about what is ROS.
What are the types of different ROS?
What the primary architecture of the ROS is?
How ROS nodes communicate with each other.
What actually you can do with ROS, and What not, comes under the ability of ROS?
How does Robot perform the action at the top level?
As we can see in the above graphics, how robot process information and act upon it.
There are basically three main elements of a robot. Robots need to see the environment around them to get information and process the information. So there is no magic involved. Any kind of robot gets the environment’s information via a Camera, depth camera, ultrasonic sensor, GPS, or laser range finder. Based on information got from the environment, robots perform actions.
Too abstract information, right? So let’s take an example. By environment in the robotic world, we mean the place where the robot performs certain actions. For example, the room or warehouse, garden, etc. installed lasers on the robot send a laser beam 360 degrees and, the robot tries to measure the distance from its origin to the object where the laser hit the objects. Similarly, with all other types of sensors and cameras, the basic task of the robot is to see the surrounding environment. The information from these tools mostly comes in binary form, a language that the computer understands. Then somebody has to write code to process this information with smart algorithms and math magic. You might be surprised, it’s too difficult for a beginner to get the hands dirty in such a tedious task, but it’s not the case, thankfully, a genius ROS community writes such code and make it open source so that people like me, and you don’t have to reinvent the wheel, and they can focus more on the problem set in hand.
Now, let’s come to the think part of the ROS.
The thinking part of the robot is continuously evolving. Once it was based on manually designed processes and mechanisms but nowadays, it’s continuously taken over by artificial intelligence.
The process of integrating the AI code and making it able to communicate with the ROS stack, as well as hardware, is a difficult task itself, but again there are libraries available with the ROS ecosystem which helps you to connect the AI piece of the puzzle with ROS. More detail about the ROS ecosystem comes beneath.
The last part of the robot is action. Based on the information sensed by the robot with help of sensors and later on the processing of the information, the robot performs a certain action. These actions can range from simply moving from palace A to B up to completely replacing humans in the 10 Square KM warehouse of Amazon.
Before you understand the ROS, it is very important to understand the overall architecture of the ROS. ROS consisted of many layers and the top layer of the ROS system is called the client layer, which means programming interface language. ROS primarily designed in C++ but now due to advancement and ease of use and the multidisciplinary nature of python programming, the python client library is used widely.
One step down comes the Robotic application layer, this layer is a legacy application software package, which simply could be called built-in scripts of the ROS used to do the basic operations of any kind of robot (remember we have talked about genius community above). For example, move from place A to B, avoid the obstacle and different other operations.
If we come one step down called “Application framework” the package is based on one level above layer (Robotic application) for different nature of the tasks, for example, a famous example could be that any task related to image processing is done with the Application Framework named OpenCV.
Down the hill, next comes, the communication and hardware layers, which essentially means how actual information coming from the software layer communicates with the hardware level.
At the end of the stack comes SKT also known as the software development tool. These tools are used to make the development process easy. For example, pycharm, IntelliJ barin tool, or VS Code studio is just making the coding job much easier, but in theory, is not actually mandatory and absolutely necessary for software development.
So they include some tools to create workspaces, the famous one is catkin. Rodeo, Rvis for visualization, and the list go on.
In the end, there are some simulation tools, these tools are used to simulate things before testing them on real hardware. So, let’s conclude this blog here we will task in the next box about types of ROS, how they are different and ROS ecosystems, and why ecosystems are crucial for robotics.