This might be a very basic question, but I haven’t found a very clear answer posted here (or online in general).
How do people deal with multiple robots connected to one controller? I don’t mean two ROS masters, but more like one linear axis system with two robot arms on it, both controlled by the same controller (in our case, two ABBs connected to one IRC5 controller).
Afaik, the ROS-I interface doesn’t allow to dispatch a joint trajectory to a specific motion task inside the controller, so I’m not sure how others are solving the same. Without digging into the whole multi-master or orchestration approaches (which IMO -correct me if wrong- seem to be aiming at moving the capabilities of multi-robot out of the controller itself and into ROS), I see a couple of -perhaps overly simplistic- approaches (again exemplified with ABB because that’s what I have):
One driver per robot: install the driver multiple times on the controller, changing the TCP ports or using different IP address/network cards of the robot, so that we end up with pairs of motion/status servers running per robot, and consequently, one node per robot running on
ROS. I don’t know if that works very well that can be configured on the ros node side of things to avoid collision, but I assume is doable.
Add new message types and extend existing drivers: another simple option would be to add a few additional messages that would pre-assign dispatching to a specific motion task (i.e. call
set_robot(x)before sending trajectories, so that the driver knows where to dispatch this to.
I’d love to hear there are much better ideas out there, and hopefully be pointed in the right direction