← Quay lại Blog
navigationfleetamrros2

Open-RMF: Hệ thống mã nguồn mở quản lý đội robot

Tìm hiểu Open-RMF — framework quản lý fleet robot đa hãng, mã nguồn mở, tích hợp ROS 2 cho nhà máy thông minh.

Nguyễn Anh Tuấn30 tháng 1, 20268 phút đọc
Open-RMF: Hệ thống mã nguồn mở quản lý đội robot

Open-RMF là gì?

Open-RMF (Open Robotics Middleware Framework) là framework mã nguồn mở để quản lý fleet robot đa hãng trong cùng một cơ sở. Được phát triển bởi Open Source Robotics Alliance (OSRA), Open-RMF giải quyết bài toán khó nhất trong robot fleet management: làm sao để robot từ nhiều nhà sản xuất khác nhau — mỗi hãng có giao thức riêng, navigation stack riêng — hoạt động phối hợp trong cùng một nhà máy mà không va chạm, không tranh giành tài nguyên.

Trong thực tế, một nhà máy sản xuất điện tử điển hình có thể sử dụng AMR của MiR cho vận chuyển linh kiện, robot Locus cho picking trong kho, và AGV tùy chỉnh cho dây chuyền lắp ráp. Không có Open-RMF, mỗi fleet chạy hệ thống quản lý riêng biệt — dẫn đến xung đột đường đi, deadlock tại cửa thang máy, và lãng phí tài nguyên.

Robot AMR tự hành di chuyển trong nhà kho hiện đại

Kiến trúc Open-RMF

Open-RMF được thiết kế theo kiến trúc module, mỗi thành phần đảm nhiệm một chức năng cụ thể:

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

Fleet Adapter — Cầu nối giữa robot và hệ thống

Fleet Adapter là thành phần quan trọng nhất, đóng vai trò "phiên dịch" giữa giao thức riêng của từng hãng robot và API chuẩn của Open-RMF. Mỗi loại robot cần một fleet adapter riêng. Open-RMF cung cấp sẵn fleet_adapter_template bằng Python để bạn nhanh chóng viết adapter cho robot của mình.

Adapter chịu trách nhiệm:

Traffic Manager — Quản lý giao thông

Traffic Manager giải quyết xung đột đường đi giữa các robot (kể cả khác hãng). Nó sử dụng thuật toán schedule-based conflict resolution: mỗi robot phải "đặt lịch" sử dụng các đoạn đường, và Traffic Manager đảm bảo không có hai robot nào chiếm cùng một lane tại cùng một thời điểm.

Task Dispatcher — Phân công nhiệm vụ

Task Dispatcher nhận yêu cầu task từ operator (qua dashboard hoặc API) và phân công cho robot phù hợp nhất dựa trên:

Tại sao multi-vendor fleet khó?

Mỗi hãng robot sử dụng giao thức giao tiếp khác nhau. MiR dùng REST API, Fetch Robotics dùng MQTT, nhiều AGV Trung Quốc dùng giao thức Modbus TCP tùy chỉnh. Ngay cả khi tất cả đều chạy ROS 2, mỗi hãng cũng đặt tên topic, action khác nhau.

Vấn đề cốt lõi:

Open-RMF giải quyết tất cả bằng cách tạo một lớp trừu tượng phía trên mỗi fleet.

Dashboard giám sát robot fleet với bản đồ real-time

Cài đặt Open-RMF với ROS 2

Yêu cầu hệ thống

Cài đặt từ binary packages

# Cài ROS 2 Humble (nếu chưa có)
sudo apt update && sudo apt install -y ros-humble-desktop

# Cài 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 từ source (cho 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

Chạy demo simulation

Open-RMF cung cấp sẵn các demo scenario với Gazebo:

# Demo nhà máy với 2 fleet robot khác nhau
ros2 launch rmf_demos_gz office.launch.xml

# Mở dashboard web (mặc định port 3000)
# Truy cập http://localhost:3000 để xem bản đồ real-time

Demo office bao gồm:

Viết Fleet Adapter cho robot tùy chỉnh

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')

        # Định nghĩa đặc tính robot
        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
        )

        # Đăng ký fleet với 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):
        """Gửi lệnh di chuyển đến robot thực tế"""
        # Thay thế bằng API call đến 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()

So sánh với giải pháp proprietary

Tiêu chí Open-RMF VDA5050 MiR Fleet
License Apache 2.0 (miễn phí) Tiêu chuẩn mở (miễn phí spec) Proprietary (trả phí)
Multi-vendor Native support Chuẩn giao tiếp, cần thêm orchestrator Chỉ MiR robot
ROS 2 integration Native Cần bridge Không hỗ trợ
Traffic management Schedule-based, built-in Không có (chỉ là giao thức) Zone-based, basic
Task dispatch Built-in, configurable Không có Built-in cho MiR
Community GitHub active, OSRA backing VDA consortium MiR support team
Customization Hoàn toàn tùy chỉnh Theo spec Hạn chế

VDA5050 — Tiêu chuẩn giao tiếp châu Âu

VDA5050 là chuẩn giao tiếp giữa AGV/AMR và master controller, phát triển bởi Hiệp hội Công nghiệp Ô tô Đức (VDA) và VDMA. Nó định nghĩa giao thức MQTT chuẩn để robot từ nhiều hãng giao tiếp với một master controller duy nhất. Tuy nhiên, VDA5050 chỉ là giao thức — bạn vẫn cần tự xây dựng traffic manager và task dispatcher, trong khi Open-RMF cung cấp toàn bộ.

MiR Fleet — Chỉ cho hệ sinh thái MiR

MiR Fleet Manager là giải pháp thương mại của Mobile Industrial Robots (thuộc Teradyne). Mạnh mẽ và dễ cài đặt, nhưng chỉ quản lý được robot MiR. Nếu nhà máy bạn có thêm AGV từ hãng khác, MiR Fleet không giúp được.

Nhà máy sản xuất hiện đại với robot và dây chuyền tự động

Tài nguyên học tập

Open-RMF có tài liệu phong phú và cộng đồng active:

Khi nào nên dùng Open-RMF?

Nên dùng khi:

Cân nhắc thêm khi:

VnRobo đang tích hợp Open-RMF vào giải pháp fleet management, kết hợp với dashboard giám sát real-time để tạo ra sản phẩm phù hợp cho nhà máy Việt Nam — nơi multi-vendor fleet đang trở thành tiêu chuẩn.


Bài viết liên quan

Bài viết liên quan

Deep DiveDigital Twins và ROS 2: Simulation trong sản xuất
simulationros2digital-twinPhần 6

Digital Twins và ROS 2: Simulation trong sản xuất

Ứng dụng simulation trong công nghiệp — digital twins, ROS 2 + Gazebo/Isaac integration cho nhà máy thông minh.

3/4/202611 phút đọc
ROS 2 từ A đến Z (Phần 4): ros2_control và Hardware
ros2tutorialrobot-armPhần 4

ROS 2 từ A đến Z (Phần 4): ros2_control và Hardware

Kết nối ROS 2 với phần cứng thực — viết hardware interface cho motor driver và đọc encoder với ros2_control framework.

26/3/202611 phút đọc
Multi-robot Coordination: Thuật toán phân công task
fleetamrprogramming

Multi-robot Coordination: Thuật toán phân công task

Các thuật toán phân công nhiệm vụ cho đội robot — từ Hungarian algorithm, auction-based đến RL-based task allocation.

20/3/202612 phút đọc