ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

ROS is not really used in industry due to poor design. It's mostly used by professors and students, who typically don't know better.

Did it prevail? In what sense? As far as I can see it is just popular with people just starting out that don't know better.

ROS is not really used in industry due to poor design. It's mostly used by professors and students, who typically don't know better.

Did it prevail? In what sense? As far as I can see it is just popular with people just starting out that don't know better.

EDIT: I was asked to give some technical explanation/insight.

First - one has to ask: What is ROS? The definition I would give is that ROS is a collection of software providing features such as pub-sub messaging, visualization, data serialization, data recording, build management and package management.

The first thing I would like to point out is that these features are often independent and don't need to be used together. From this perspective, ROS seems to be a bunch of distantly-related software modules that are all lumped under the same umbrella. For example, the build management and package management do not need to be used at all. Same with data serialization (in the form of rosparam). Its use is totally optional.

I think this is something that is not explained or understood by a lot of people. A lot of people will be afraid to step outside of the "ROS ecosystem" because they feel that doing so would be doing something wrong. However, this is a mistake because the "ROS ecosystem" is arbitrary. Is rosconfig the best software that does that type of serialization? Is catkin_make the best build manager? Is rospack the best package manager? There are many good alternatives out there, but people will not explore this because they are discouraged from doing so.

For me, I started using ROS and then slowly removed the components one-by-one. I removed catkin_make because it was very slow and generally hard to use when compared to a conventional CMake (or make) build. CMake is a widely used standard that has been around for decades. If you have any sort of problem you can find solutions online. catkin_make is built on top of CMake for reasons that I find unclear, and has only existed for less than a decade. It is also used by far less people. For that reason, it is much harder to find any sort of information to debug any problems you might have while using catkin_make. And let's say after a few years you become an expert in catkin_make. Well, that was time you could have spent learning CMake in which case you'd be familiar with an industry-standard software and not one that is much less used.

I won't go through every software component, but it was similar. Why use rosparam when there are so many better alternatives? rosbag is OK for recording data, but it's very hard to setup playback so that the result is consistent.

The one thing I find a lot of companies use is the visualization. That's because rviz works pretty well. Typically they will wrap the visualization in their own library so it is self-contained and isolated from the rest of their system. I have met many, many companies who have told me in the interview: "we are using ROS, but just for visualization, not for anything else."

I will quickly go over why a company might want to remove ROS from their software.

ROS is not well suited for embedded systems because it wastes a lot of memory. In most cases it can't even be installed, because ROS software runs on linux and is thus often unsupported on embedded devices. So, if you are developing for an embedded system you are already ruling out ROS. Even if you are developing for an embedded system, most developers will still have a non-embedded "test platform," which they can use as a stand-in for the embedded system. You can use ROS on that platform, but there is often no reason to do so.

Another instance where ROS can't be used is anywhere that is safety-critical. It is just not robust enough for that.