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

Revision history [back]

If the two components are tightly coupled, and need to do a lot of back and forth between them, then a single node is probably the way to go. If the two components really are separate, then separate nodes may be advantageous. No matter how "thread safe" something starts off, it's only a few commits away from breaking that contract.

Splitting things into multiple nodes will certainly incur an overhead - this mainly comes in the form of extra computation to serialized data back and forth between the nodes, and depends mainly on how big the data is that has to be shared. If you're dealing with high-resolution images, avoiding serialization is good. If you're dealing with a few small bytes, it may not matter. T

One of the big strengths of multiple nodes is that multiple people could work on a project at once (each on separate nodes). One other strength might be if it takes a long time to setup one component (for instance, your state estimator), you can leave that portion of the system running while restarting the other component you are still developing/debugging.

If the two components are tightly coupled, and need to do a lot of back and forth between them, them (which needs some scheduling/handshaking), then a single node is probably the way to go. If the two components really are separate, then separate nodes may be advantageous. No matter how "thread safe" something starts off, it's only a few commits away from breaking that contract.

Splitting things into multiple nodes will certainly incur an overhead - this mainly comes in the form of extra computation to serialized data back and forth between the nodes, and depends mainly on how big the data is that has to be shared. If you're dealing with high-resolution images, avoiding serialization is good. If you're dealing with a few small bytes, it may not matter. Tmatter.

One of the big strengths of multiple nodes is that multiple people could work on a project at once (each on separate nodes). One other strength might be if it takes a long time to setup one component (for instance, your state estimator), you can leave that portion of the system running while restarting the other component you are still developing/debugging.