navigationfleetamrros2

Open-RMF: Open-Source Robot Fleet Management System

Discover Open-RMF — multi-vendor open-source framework for managing robot fleets, integrating ROS 2 for smart factories.

Nguyen Anh Tuan30 tháng 1, 20266 phút đọc
Open-RMF: Open-Source Robot Fleet Management System

What is Open-RMF?

Open-RMF (Open Robotics Middleware Framework) is open-source framework for managing multi-vendor robot fleets in single facility. Developed by Open Source Robotics Alliance (OSRA), Open-RMF solves hardest problem in robot fleet management: how can robots from different manufacturers -- each with proprietary protocol and navigation stack -- coordinate and operate together without collision or resource conflict?

In practice, typical electronics factory might use MiR AMR for part transport, Locus robot for warehouse picking, and custom AGV for assembly line. Without Open-RMF, each fleet runs separate management system -- leading to path conflicts, deadlock at elevators, and wasted resources.

Open-RMF creates abstraction layer above each fleet.

Robot AMR moving in modern warehouse

Open-RMF Architecture

Open-RMF uses modular design where each component handles specific function:

┌─────────────────────────────────────────────────┐
│              Open-RMF Core                       │
│  ┌─────────────┐  ┌──────────────┐              │
│  │ Task        │  │ Traffic      │              │
│  │ Dispatcher  │  │ Manager      │              │
│  └──────┬──────┘  └──────┬───────┘              │
│         │                │                       │
│  ┌──────┴────────────────┴───────┐              │
│  │        Schedule Database       │              │
│  └──────┬────────────────┬───────┘              │
│         │                │                       │
│  ┌──────┴──────┐  ┌─────┴───────┐              │
│  │Fleet Adapter│  │Fleet Adapter│  ...          │
│  │  (MiR)      │  │  (Custom)   │              │
│  └──────┬──────┘  └──────┬──────┘              │
└─────────┼────────────────┼──────────────────────┘
          │                │
     ┌────┴────┐     ┌────┴────┐
     │ MiR AMR │     │ Custom  │
     │ Fleet   │     │ AGV     │
     └─────────┘     └─────────┘

Fleet Adapter — Bridge Between Robot and System

Fleet Adapter is most critical component, acting as "translator" between each manufacturer's proprietary protocol and Open-RMF standard API. Each robot type needs dedicated adapter. Open-RMF provides fleet_adapter_template in Python for quick adapter development.

Adapter responsibilities:

  • Receive commands from Open-RMF (move to waypoint X, dock at station Y)
  • Convert to robot language (REST API, MQTT, DDS, or ROS 2 Action)
  • Report status back: current position, battery level, task progress

Traffic Manager — Resolve Path Conflicts

Traffic Manager handles path conflicts between robots (even different manufacturers). Uses schedule-based conflict resolution: each robot "books" road segments, and Traffic Manager ensures no 2 robots occupy same lane simultaneously.

Task Dispatcher — Assign Tasks to Robots

Task Dispatcher receives task requests from operator (dashboard or API) and assigns to best robot based on:

  • Distance to pickup point
  • Remaining battery
  • Robot type (not all robots can do all tasks)
  • Current schedule

Why Multi-Vendor Fleet is Difficult

Each manufacturer uses different protocol. MiR uses REST API, Fetch uses MQTT, many Chinese AGVs use custom Modbus TCP. Even ROS 2-based robots often use different topic/action names per manufacturer.

Core problems:

  • Path conflicts: Robot A unaware of robot B's location
  • Shared resources: Elevator, automatic doors, narrow corridors -- who goes first?
  • Task allocation: Which fleet manager assigns task when multiple fleet managers exist?
  • Monitoring: Each manufacturer's dashboard -- operator must watch 3-4 screens

Open-RMF solves by creating abstraction layer above each fleet.

Dashboard monitoring robot fleet with real-time map

Installing Open-RMF with ROS 2

System Requirements

  • Ubuntu 22.04 or 24.04
  • ROS 2 Humble or Jazzy
  • Python 3.10+

Install from Binary Packages

# Install ROS 2 Humble (if not present)
sudo apt update && sudo apt install -y ros-humble-desktop

# Install Open-RMF packages
sudo apt install -y \
  ros-humble-rmf-fleet-adapter \
  ros-humble-rmf-task-ros2 \
  ros-humble-rmf-traffic-ros2 \
  ros-humble-rmf-visualization

# Source environment
source /opt/ros/humble/setup.bash

Build from Source (for Development)

mkdir -p ~/rmf_ws/src
cd ~/rmf_ws/src

# Clone core repos
git clone https://github.com/open-rmf/rmf.git
git clone https://github.com/open-rmf/rmf_demos.git
git clone https://github.com/open-rmf/free_fleet.git

# Install dependencies
cd ~/rmf_ws
rosdep install --from-paths src --ignore-src -r -y

# Build
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash

Run Demo Simulation

Open-RMF includes Gazebo simulation scenarios:

# Demo factory with 2 different robot fleets
ros2 launch rmf_demos_gz office.launch.xml

# Open web dashboard (default port 3000)
# Visit http://localhost:3000 for real-time map

Demo office includes:

  • 2 robot fleets: tinyRobot (delivery) and deliveryRobot (heavy payload)
  • Pre-defined traffic lanes
  • Interactive doors and lifts
  • API endpoint for task dispatch

Write Fleet Adapter for Custom Robot

import rclpy
from rclpy.node import Node
from rmf_fleet_adapter import adpt
import rmf_adapter.vehicletraits as traits
import rmf_adapter.geometry as geometry

class MyFleetAdapter(Node):
    def __init__(self):
        super().__init__('my_fleet_adapter')

        # Define robot characteristics
        profile = traits.Profile(
            footprint=geometry.make_final_convex_circle(0.3),
            vicinity=geometry.make_final_convex_circle(0.5)
        )
        vehicle_traits = traits.VehicleTraits(
            linear=traits.Limits(0.7, 0.5),   # max vel, max accel
            angular=traits.Limits(0.6, 0.8),
            profile=profile
        )

        # Register fleet with Open-RMF
        self.adapter = adpt.Adapter.make('my_fleet_adapter')
        self.fleet_handle = self.adapter.add_fleet(
            'my_custom_fleet',
            vehicle_traits,
            self.navigation_graph
        )

        self.get_logger().info('Fleet adapter initialized!')

    def navigate(self, robot_name, destination):
        """Send movement command to actual robot"""
        # Replace with API call to robot controller
        self.get_logger().info(
            f'Navigating {robot_name} to {destination}'
        )

def main():
    rclpy.init()
    adapter = MyFleetAdapter()
    rclpy.spin(adapter)

if __name__ == '__main__':
    main()

Comparison with Proprietary Solutions

Criterion Open-RMF VDA5050 MiR Fleet
License Apache 2.0 (free) Open standard (free spec) Proprietary (paid)
Multi-vendor Native support Communication standard, needs orchestrator MiR robots only
ROS 2 integration Native Requires bridge No support
Traffic management Schedule-based, built-in Not included (protocol only) Zone-based, basic
Task dispatch Built-in, configurable Not included Built-in for MiR
Community GitHub active, OSRA backing VDA consortium MiR support team
Customization Fully customizable Per spec Limited

VDA5050 -- European Communication Standard

VDA5050 is communication standard between AGV/AMR and master controller, developed by German Auto Association (VDA) and German Machine Builders (VDMA). Defines MQTT protocol standard for robots from different manufacturers to communicate with single master controller. However, VDA5050 is just protocol -- you still build traffic manager and task dispatcher yourself, while Open-RMF provides complete system.

MiR Fleet -- Only for MiR Ecosystem

MiR Fleet Manager is commercial solution from Mobile Industrial Robots (owned by Teradyne). Powerful and easy to install, but manages only MiR robots. If warehouse adds AGV from another manufacturer, MiR Fleet cannot help.

Modern manufacturing facility with robots and automation

Learning Resources

Open-RMF has extensive documentation and active community:

When to Use Open-RMF?

Should use when:

  • Factory has robots from 2+ different manufacturers
  • Need automatic traffic management at intersections
  • Team has ROS 2 experience and wants full control

Consider alternatives when:

  • Only robots from single manufacturer -- use their fleet manager
  • No ROS 2 expertise -- learning curve is steep
  • Need 24/7 support -- commercial solutions have SLA

VnRobo is integrating Open-RMF into fleet management solution, combined with real-time monitoring dashboard, creating product suitable for Vietnamese factories -- where multi-vendor fleet is becoming standard.


NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Bài viết liên quan

NEWTutorial
Cách giám sát robot ROS 2 từ xa: Hướng dẫn đầy đủ 2026
ros2monitoringrobot-fleettutorialpythoniot

Cách giám sát robot ROS 2 từ xa: Hướng dẫn đầy đủ 2026

Hướng dẫn từng bước giám sát robot ROS 2 từ bất kỳ đâu — pin, CPU, trạng thái, heartbeat, alerts. Code chạy được, setup 10 phút. Miễn phí 3 robots.

14/4/20267 phút đọc
NEWSo sánh
Lựa chọn thay thế Formant: So sánh 5 nền tảng quản lý fleet robot 2026
formantrobot-fleetfleet-managementros2comparisonsaas

Lựa chọn thay thế Formant: So sánh 5 nền tảng quản lý fleet robot 2026

Tìm alternative cho Formant năm 2026? So sánh thẳng thắn 5 nền tảng quản lý fleet robot — giá, hỗ trợ ROS 2, tính năng, và cái nào hợp với team bạn.

13/4/202611 phút đọc
NEWSo sánh
Lựa chọn thay thế AWS RoboMaker 2026: 5 nền tảng cho đội ROS 2 sau khi shutdown
aws-robomakerrobot-fleetros2fleet-managementcomparisondevops

Lựa chọn thay thế AWS RoboMaker 2026: 5 nền tảng cho đội ROS 2 sau khi shutdown

AWS RoboMaker đã đóng cửa tháng 9/2025. Đây là 5 lựa chọn thay thế tốt nhất cho quản lý fleet robot ROS 2 năm 2026 — so sánh thẳng thắn, giá cả và hướng dẫn migration.

12/4/202611 phút đọc