Choosing between the ROS 1 and ROS 2 - For Dummies Guide for choosing Robot OS

Once you decide to learn ROS (Robot Operating System), next step is to choose between the ROS 1 or ROS 2. There are many resources on the internet that highlights the difference between the ROS1 and ROS2. Following is an excellent article that compares the difference between the two using infographics. As you can see in the article, both ROS1 and ROS2 serves as an excellent platform which contains re-usable tools that will help you develop your robotics projects. They are both backed by a very active and passionate community of roboticists all over the world.

ROS 2 vs. ROS 1 Which One Is Better For Me?” - https://www.theconstructsim.com/infographic-ros-1-vs-ros-2-one-better-2/

Before we continue, let me make it clear that the ROS2 is not simply a next version of ROS1 - ROS2 is very different than ROS1. Even thought I would agree that the ROS2 includes very important improvements over ROS1, the difference between the two often feels like they are two different OS like Windows OS vs Mac OS. At times, your experiences in ROS1 will hinder your learning of the ROS2. So, the important question is should you start with the ROS1 or ROS2 as a newcomer to the RobotOS. The natural tendency is to start with the later version which is the ROS2 simply because you want to avoid having to learn an older platform which will be deprecated soon. The decision is not that simple.

Consideration for starting with the ROS2 - Engineering is hard and the robotics is harder. While pursuing a robotics project, there will be many times that you will run into problems that you need to research on the internet for and even seek help from the ROS community. As of this writing, mid 2020, the resources and code examples in ROS2 is still rare compared to the more established ROS1. Also, receiving help from the ROS community maybe limited to certain popular topics due to the people in the ROS community still new to the ROS2. The viable reason to start with the ROS2 first is, if it offers the key functionality that you must have in your project such as security requirement, language or platform support, and number of communication nodes required etc. Keep in mind, the road to the ROS2 will give you more capabilities at the end, but the road will certainly be slower and tougher at least for now.

Consideration for starting with the ROS1 - Many people who have some experience in the ROS1 and have dabbled on the ROS2 will likely recommend starting with the ROS1. This is due to the vast amount of resources that you can easily find and reference for your project. You will also be able to find learning materials like books, on-line courses, tutorial much easily and cheaper with the ROS1 (please reference my other post on the ROS for a free ebook by Mr. Jason M. O’Kane - https://www.chibots.org/content-how-to-advanced/getting-started-with-the-ros-robotos ). Although starting out with the ROS1 will provide less painful start, you will soon find yourself envious of the capabilities of the ROS2 and regret not starting with the ROS2.

The key to your success is Getting Started - The more you wait and the more you search, you will just end up with more contradicting recommendations. To add to your confusion and frustration, my recommendation is to start with the ROS1 if your objective is to learn ROS. You will enjoy vast amount of free resources on the internet and the support from the ROS community. If you are pursuing a robotics project that must have the capabilities offered by the ROS2, start with the plan in mind that you will have a lot of learning and R&D along the way. Just like the old saying, there is really no secret and the key is to get started and find out the answer yourself. After all, the reality is that you will end up having to learn both, realizing that there was no shortcut.

I will end my post by sharing my previous journey of learning Python back in 2012ish. Coming from the old C/C++ language, everyone said picking up Python was going to be really easy. When I got started, the Python 2 was the old and more established version and the Python 3 was the new and radically improved version very similar to the ROS1 vs. ROS2 today. Thinking that I can skip the Python2, by going straight to the Python3, I got started by buying an only book at the bookstore on Python3 that costed more than my computer (well at least it felt like it). Unlike what I have expected, learning Python for me took much longer than I have initially thought. Also, whenever I try to push my project beyond the basics of the book’s tutorial, I found myself constantly getting stuck with not being able to find much on the internet (also, online communities like StackOverflow was still very new at the time). Also, because of many open source projects were predominantly written in Python2, I found myself spending more time on Python2 rather than Python3 unless it was for my own project written in 3. Needless to say, I eventually got pretty good on Python, but perhaps the time and pain would have been less if I focused on Python2 first rather than having to learn both Python2 and 3 unintentionally in parallel. As in life, I think there is no shortcut in technology. The key is to get started - You will eventually become a master as long as you don’t give up! I promise.

Previous
Previous

RESEARCH: Optical Flow Sensor

Next
Next

Getting Started with the ROS (Robot OS)