Robotics is one of the fastest-growing fields in the tech world. Probably you have already heard of or seen awesome robots like humanoid robots, animal robots, or even self-driving cars from Tesla, Boston Dynamics, etc., and started thinking about learning or even developing a career in Robotics. In this series, I will help you familiarize yourself with the Robot Operating System (ROS), one of the most popular robot development platforms today.
What is ROS?
Robot Operating System - ROS is an open-source platform that provides libraries and tools for building robot-related applications. After more than 10 years of release, ROS has been widely used worldwide both in research and in industry. Below is a short video that summarizes typical applications of ROS on the occasion of its 10th anniversary.
Who is using ROS?
To give you an idea of its popularity, here is a list of companies that are using ROS in their product research and development: Link to ROS companies list. As you can see, this platform is used by big companies like NVIDIA, Microsoft, Apple, Bosch, etc. to startups like ANYbotics and I'm pretty sure there are many other companies that are not listed here. Apart from that, ROS is essential in robotic research in any technical university and institute all over the world.
So what exactly are people using ROS for? Basically, ROS can be used for any applications that need to communicate with or control sensors or actuators. The video above shows some applications of ROS-Industrial (an industry-specific version) and you can also see the variety of these projects. In addition, ROS is also used a lot in research such as autonomous driving, legged robots, humanoid robots, and drones. ), etc.
What is not ROS?
In the book A Gentle Introduction to ROS, the author mentioned 3 things that are not true about ROS which I also agree with: ROS is not a programming language, ROS is not (only) a library and ROS is not an integrated development environment (IDE). You will understand more when start working with it but for now, just keep in mind that ROS is basically a platform that provides you tools to create robotic software just like Windows or Android OS which gives you apps to do different tasks.
Why ROS?
So why do people choose ROS over other platforms? On the homepage, it says "Don't reinvent the wheel. Create something new and do it faster and better by building on ROS!" That means you don't have to redo what's already there, ROS helps you build new things faster and more efficiently.
Pros of ROS
ROS provides standard tools to facilitate communication between processes. For example, your system has a camera and a robot arm. You want to take an image from the camera, process that image, and ask the robot to pick up the object if it appears in the image. There are many ways to build this system, but with ROS it becomes much easier to transfer information among the steps.
ROS has a huge community of users and developers. Many companies and research institutes around the world have been using ROS and it is gradually becoming a standard platform for robot development. This means that if you are having trouble working on a project with ROS, chances are you just need to google to get the answer, or you can ask on the forums and there are many people willing to help you.
There are numerous libraries available for different tasks. From new technologies in AI, computer vision, natural language processing or control, etc., all have the latest software (state-of-the-art) that you can directly download and apply right away. These advanced software packages mostly come from organizations, companies, universities, or even individuals that are using ROS in their work or research and they open source code the projects. his judgment.
ROS is completely free and allowed to be used in commercial products. That's why, people love using ROS because it is easy to test, develop and even commercialize their products economically.
Cons of ROS
Of course, ROS is not a perfect platform for all applications. There are still some limitations as follows:
ROS is not suitable for applications that require hard real-time. Hard real-time means that your system must complete the task exactly within the specified deadlines. Missing just one of these deadlines, the system will fail and can have serious consequences. More information on comparing real-time types.
ROS must be run on a powerful enough configuration for the best performance. To be able to use ROS, you need a computer, and depending on the complexity of the application, there are different configuration requirements. For complex applications, you may need to have a PC with one or more graphics cards, but for simple ones, a Raspberry Pi (2 - 8 GB of RAM) may suffice.
The management and maintenance of software packages in ROS are still inadequate, especially for industrial and commercial products.
To overcome these problems, ROS 2 was born and is under active development (I will do a series about ROS 2 later).
How-to ROS?
There are actually a lot of available ROS tutorials that you can easily find on Google, GitHub, etc. This series may cover similar topics but I try my best to explain and help you practice with real examples and applications. As I already mentioned in the first chapter, this series contains 5 main steps from getting a rough idea about what ROS is and installing it on your own computer to understanding all the basic concepts and applying them. Through learning by doing, I hope it would be both fun and challenging for you to learn about ROS in specific and robotics in general.
After answering the three questions what, why, and how, now you probably have a good overview of ROS and hopefully still want to continue this journey. In the next part, I will walk you through the first important step: Installation.
Summary
ROS is a platform for robot development, which is widely used around the world.
ROS can be used for any application (from simple to complex) that needs to communicate with or control sensors and actuators.
The reason why ROS is so popular is that it provides users with useful tools for software development and it has a big, strong community.
ROS still has many shortcomings such as real-time system, hardware requirements, and management & maintenance. To address these limitations, ROS 2 is being developed.
Reference
- Cover photo: http://wiki.ros.org/noetic