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 1 and ROS 2 are perfectly usable in a non-robot environment. The frameworks themselves are application-agnostic. It is only the libraries and packages of functionality that are robot-specific, and even then most could be applied to a range of applications not traditionally considered "robotics".

To help you decide and to answer your more specific questions:

  • The first two things you like about ROS, you could get just as easily by using a DDS implementation directly, such as eProsima's, as you suggest.
  • The third thing you like is one of the features of ROS that makes it so popular. Having said that, many DDS implementations also provide good debugging tools. ROS just covers a wider set of framework features, because it builds additional framework features on top of the middleware.
  • It is quite easy to build a new node with both ROS 1 and ROS 2. More detailed considerations, such as efficient execution, will take some experience, but that is the same for any new framework or middleware you start to use.
  • I think ROS 2 would work well for the use case you describe, but you haven't really given enough information on the actual application to give a definitive answer as to whether it is better than just using DDS. I do think that the additional tools and framework features available in ROS (1 or 2) would be useful, but they do come at a cost of additional run time overhead; how much depends on how you use them and your application, I think.
  • ROS 1 and ROS 2 provide a base distribution that is useful for someone who doesn't want "all that other stuff" such as the navigation stack or GUI tools. You will still get the all the message types, though. It's also relatively straightforward to build your own distribution of ROS 1 or ROS 2 that only has the parts you need.
  • Given the technical aspects of your project, I think that ROS 2 is the better choice. It is more efficient (so better for ARM), discovery is more advanced, dynamic configuration changes are easier, and it has been designed to be cross-platform from the start, whereas ROS 1 was only recently ported to Windows.