Robotics StackExchange | Archived questions

ROS(2) in a non robot environment

Hi,

For a new project we are doing some research on middleware. Via the eProsima website I came across ROS and ROS ticks a lot of the boxes, the only thing is that this project is not a robot, we are only interested in the communication bits.

What I like about ROS:

  1. The discovery of nodes
  2. The interface of a node is well defined in a set of files (msg, srv)
  3. The (debugging) tools rosnode, rosservice, rostopic, etc...
  4. How easy it is to build a new node, at least with ROS

Now for my questions:

  1. Do you think it is a good idea to use ROS for this or is there a better alternative? maybe simply use eProsima RTPS.
  2. Is there a minimum configuration that allows me to build a non-robot system without sensor, lasers, motors, etc...?
  3. Do I use ROS1 or ROS2 for this?

Thank you! Peter


Edit: A couple of key points of this project:

  1. Running on a dual core ARM processor (cortex A9) as part of a FPGA SOC;
  2. 15+ nodes; some will just produce just status or provide a service, others will produce or subscribe to a binary blob (1-2 KB) at a TBD rate;
  3. Nodes must be able to find each other without (too much) configuration;
  4. System configuration (type of nodes there are and number of instances) must be easily configurable; Option to change this dynamically;
  5. Option to have some nodes running on a Window or Linux PC and communicate with the nodes on the ARM.

Asked by petervd on 2019-02-06 11:52:15 UTC

Comments

I think using ROS with "non-robots" is fine, but you give very little information (ie: none) about what it is that you actually do need to communicate which makes it hard to offer any meaningful advice.

There are some publicly available/accessible/known examples of non-robot ROS ..

Asked by gvdhoorn on 2019-02-06 12:10:34 UTC

.. applications. LiquidGalaxy is one of them. See EndPointCorp/lg_ros_nodes for the code.

Asked by gvdhoorn on 2019-02-06 12:13:36 UTC

Thanks for your response, I've added some details

Asked by petervd on 2019-02-06 15:35:40 UTC

Answers

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.

Asked by Geoff on 2019-02-06 19:24:55 UTC

Comments

I agree with the rest of your answer, but just for completeness:

whereas ROS 1 was only recently ported to Windows.

this is not entirely true. Up till about Fuerte/Groovy winros was actively maintained and you could run (the base of) ROS on Windows. IIUC, MS has taken some of that and ..

Asked by gvdhoorn on 2019-02-07 03:25:47 UTC

.. brought it back to life again with a bunch of additional patches and extended it greatly with things like RViz, MoveIt and Gazebo.

Asked by gvdhoorn on 2019-02-07 03:26:18 UTC

Thank you all for the input. In the mean time I've been playing with ROS1 and ROS2. The tutorial (http://wiki.ros.org/ROS/Tutorials) on ROS1 is really good but I have not been able to find a similar tutorial for ROS2. Can someone point me in the right direction?

Asked by petervd on 2019-02-08 08:38:34 UTC

ROS 2 Tutorials are at: https://index.ros.org/doc/ros2/Tutorials/

Asked by tfoote on 2019-02-08 16:33:20 UTC