-
Repost from the old org I'm wondering why the RMF fleet adapters are so tightly integrated with RMF core as opposed to communicating with it through ROS2 messages. It seems like because of the direct import (either python or c++), the adapters are required to live on the same compute device as RMF core. Is that statement correct? If this is the case, all fleet adapters would be living on the same machine and if for some reason that machine goes down, fleets are unable to communicate with each other directly. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
The concept of an "RMF Core" is not well defined, so it tends to mean different things to different people. All of RMF is modular and node-based, designed to be distributed over multiple process or across a network. In our out-of-the-box implementation, each fleet adapter talks with each other and with the traffic scheduling system using ROS2 messages, so it can (and often will) be deployed across multiple machines on a network. I wonder if you might be confused by the fact that the recommended Fleet Adapter API is a C++ API (with the option of Python bindings for those that prefer Python). The C++/Python API is designed to achieve several design goals:
The C++/Python API covers up all the details of using ROS2 and dealing with the traffic scheduling and negotiation system. It's entirely possible for users to interact directly with the ROS2 traffic protocol messages, but it's not recommended as that protocol is still in the process of being improved, and it is currently very difficult to maintain API/ABI stability for ROS2 messages if any changes are needed.
As mentioned above, this is not the case, and in fact we have often run different fleet adapters on separate computers when performing demos and test cases in the past.
The fleet adapters do not currently have a robust fail-over mechanism. Specifically if a fleet adapter needs to be restarted then when it starts back up, it will have lost track of all the tasks the its robots were assigned and performing. We're currently working on adding a robust fail-over mechanism to the fleet adapters, but I can't offer a specific timeline for that yet. |
Beta Was this translation helpful? Give feedback.
The concept of an "RMF Core" is not well defined, so it tends to mean different things to different people. All of RMF is modular and node-based, designed to be distributed over multiple process or across a network. In our out-of-the-box implementation, each fleet adapter talks with each other and with the traffic scheduling system using ROS2 messages, so it can (and often will) be deployed across multiple machines on a network.
I wonder if you might be confused by the fact that the recommended Fleet Adapter API is a C++ API (with the option of Pyth…