Getting know to the RMF files structure and Integration with NAV2. (#644)

Posted by @rajgavhale52:

Hello RMF enthusiasts,

I have successfully spawned my custom robot in Ignition Gazebo with localization running in RViz, and it is navigating correctly. However, I remain unclear about how RMF operates internally to adjust to changes based on our specific needs. My objective is to integrate RMF with Nav2.

Since EasyFullControl is not compatible with Humble, it appears that we need a long-term solution that includes creating an additional file (robot_command_handler.py). I have reviewed several core files (e.g., /age/Adapter.cpp and rmf_fleet_adapter_python/adapter.cpp with Python bindings) but am still struggling to understand the overall file flow and internal workings.

Could anyone provide guidance or point me toward documentation that explains the internal processes of RMF and offers insight into integrating it with Nav2 to follow predefined paths?

Thank you in advance for your help.

Best regards,
RMF Enthusiast

Posted by @xiyuoh:

Hi @rajgavhale52 ! Awesome that you’re looking to integrate RMF with your custom robot in simulation.

To clarify, EasyFullControl is compatible with ROS/RMF Humble; it is just not available in the RMF Humble binaries. We have had deployments running EFC with ROS 2 Humble. My best recommendation is for you to update to RMF Jazzy if you’re using binaries, as there are quite a few new features in the past couple years. If that’s not possible, you can install RMF Humble by building from source, and pull changes up to this commit in rmf_ros2. This contains the work from this PR where EFC is implemented.

In case you’re not aware, we also have a free_fleet repo that offers Nav2-compatible RMF fleet adapters. Let me know if you have further questions!