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:

  • Nhận lệnh từ Open-RMF (di chuyển đến waypoint X, dock tại trạm Y)
  • Chuyển đổi sang lệnh mà robot hiểu (REST API, MQTT, DDS, hoặc ROS 2 Action)
  • Báo cáo trạng thái ngược lại: vị trí hiện tại, mức pin, trạng thái task

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:

  • Khoảng cách đến điểm pickup
  • Mức pin còn lại
  • Loại robot (không phải robot nào cũng làm được mọi task)
  • Lịch trình hiện tại

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:

  • Xung đột đường đi: Robot hãng A không biết robot hãng B đang đi đâu
  • Tài nguyên chia sẻ: Thang máy, cửa tự động, hành lang hẹp — ai đi trước?
  • Task allocation: Dispatch hệ thống nào gán task khi có nhiều fleet manager?
  • Monitoring: Mỗi hãng có dashboard riêng, operator phải nhìn 3-4 màn hình

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

  • Ubuntu 22.04 hoặc 24.04
  • ROS 2 Humble hoặc Jazzy
  • Python 3.10+

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:

  • 2 fleet robot: tinyRobot (delivery) và deliveryRobot (heavy payload)
  • Traffic lanes được định nghĩa sẵn
  • Doors và lifts tương tác được
  • API endpoint để dispatch task

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:

  • Nhà máy có robot từ 2+ nhà sản xuất khác nhau
  • Bạn cần traffic management tự động tại các nút giao
  • Team có kinh nghiệm ROS 2 và muốn toàn quyền kiểm soát

Cân nhắc thêm khi:

  • Chỉ có robot từ một hãng — dùng fleet manager của hãng đó có thể đủ
  • Không có kỹ sư ROS 2 — đường cong học tập khá dốc
  • Cần support 24/7 — giải pháp thương mại có SLA rõ ràng hơn

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

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
Integration: ROS 2 MoveIt2, URScript và Real Robot Deploy
ros2moveit2urscriptrobot-armdeploymentPhần 8

Integration: ROS 2 MoveIt2, URScript và Real Robot Deploy

Tổng hợp toàn bộ series: tích hợp trajectory planning với MoveIt2, URScript và deploy lên robot thật qua ros2_control.

5/4/202611 phút đọc
Deep Dive
Digital 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
Deep Dive
Mobile Manipulation: Base di chuyển + Arms trên Mobile Robot
lerobotmobile-manipulationnavigationamrPhần 8

Mobile Manipulation: Base di chuyển + Arms trên Mobile Robot

Kết hợp navigation và manipulation trên mobile robot — action space mở rộng, whole-body coordination, và sim environments.

2/4/20269 phút đọc