Robots integration (#464)

Posted by @nour-bencharrada:

Hi!

I’m using Open RMF with ROS humble

I’m aiming to deploy open RMF to my real robots, but I’m unclear on how the fleet adapters can communicate to the different APIs of my robots

I use Fast-API for each robot.
I want to make the fleet adapter send goal pose to the APIs and receive robot position and battery state

Additionally, I’m curious if it would be feasible to have open RMF and the robot APIs in separate Docker containers and ensure mutual communication?

Posted by @Yadunund:

@Nour-BenCharrada, thanks for the question.

The RMF Fleet Adapter API was designed to communicate with any kind of robot - whether it exposes ROS endpoints or has it’s own API.

I use Fast-API for each robot.

Given this, I highly recommend looking at how the rmf_demos_fleet_adapter. This is the fleet adapter we use in all our simulations you can try out in rmf_demos. The adapter communicates with a mockup API server which commands each robot. So very similar to your setup. We rely on our EasyFullControl API in rmf_fleet_adapter package to make the integration trivial. Some points to highlight:

  • The RobotClientAPI.py is a python wrapper around the robot’s RESTful API.
  • The adapter is configured here.
  • Callbacks to tell the robot to move/stop, etc are registered here
  • Robot states are retrieved here

Additionally, I’m curious if it would be feasible to have open RMF and the robot APIs in separate Docker containers and ensure mutual communication?

I don’t see why not as long as your take care of bridging the networks between the two containers as needed.