My team and I are developing a mobile platform for industrial tasks (such as rivet fastening or drilling), fully based in ROS2 Stack (Humble).
The stack comprises a bunch of nodes for different tasks (slam, motion planning, fiducial registration…) and are coordinated through a state machine node (based on smach).
The issue we are facing is that the state machine node (which is connected to most of the nodes in the stack) gets slower and slower until it stops receiving events from other nodes.
We’ve been debbuging this issue and our feeling is that the number of objects (nodes/clients/subscribers…) is too high and whole stack suffers a lot of overhead, being this most noticeable in the “biggest” node (the state machine).
Our stack has 80 nodes, and a total of 1505 objects
- Stack clients: 198
- Stack services: 636
- Stack publishers: 236
- Stack subscribers: 173
My questions are:
- Is this number of nodes too high for an industrial robotics project? How large are usually projects using ROS2?
- Which is the maximum number of objects in the stack? Is this a rmw limitation or ROS2 itself?