Giới thiệu dự án

Ngành dịch vụ ẩm thực và đồ uống (F&B) đang đối mặt với bài toán tối ưu hóa chi phí vận hành và giải quyết sự thiếu hụt nhân sự phục vụ trực tiếp. Chi phí lao động trong ngành F&B thường chiếm từ 25% đến 35% tổng doanh thu, trong khi tỷ lệ luân chuyển nhân sự cao gây áp lực lớn lên việc duy trì chất lượng dịch vụ. Tại Việt Nam, mô hình quán cà phê có đặc thù không gian đa dạng, lối đi hẹp, mật độ bàn ghế cao và lượng khách di chuyển liên tục, tạo ra những thách thức lớn đối với việc tự động hóa.

Các giải pháp robot phục vụ thương mại hiện nay chủ yếu là sản phẩm nhập khẩu nguyên chiếc với giá thành dao động từ 150 - 300 triệu VNĐ ($6,000 - $12,000), vượt quá khả năng tiếp cận của các quán cà phê vừa và nhỏ (SMEs). Hơn nữa, những hệ sinh thái này có kiến trúc đóng, khó tùy biến bản đồ động và không tương thích với quy trình vận hành linh hoạt tại chỗ. Đề tài "Nghiên cứu và xây dựng mô hình robot phục vụ quán cà phê" được thực hiện nhằm giải quyết trực tiếp bài toán này bằng cách phát triển một nền tảng robot di động tự hành (Autonomous Mobile Robot - AMR) kết hợp ứng dụng điều khiển trung tâm qua giao diện Web thời gian thực.

+-----------------------------------------------------------------------------------+
|                              HỆ THỐNG PHỤC VỤ TỰ HÀNH                             |
|                                                                                   |
|  [Khách hàng / Web Đặt món] ---> [Hệ thống Quản lý Web / Node.js + MongoDB]       |
|                                                     |                             |
|                                            (WebSocket / Rosbridge)                |
|                                                     v                             |
|                           [Robot Phục vụ (NVIDIA Jetson Nano + ROS)]              |
|                                  ├── Thuật toán Định vị (AMCL)                    |
|                                  ├── Hoạch định Đường đi (move_base / DWA)        |
|                                  └── Điều khiển Động cơ (Arduino Mega 2560)       |
+-----------------------------------------------------------------------------------+

Mục tiêu đề tài

  1. Thiết kế phần cứng cơ khí & điện tử tối ưu: Xây dựng khung robot 3 tầng nhỏ gọn (kích thước $20 \times 25 \times 20\text{ cm}$), cấu hình truyền động vi sai 2 bánh chủ động kết hợp 1 bánh dẫn hướng tự do (caster wheel), tích hợp bộ xử lý trung tâm NVIDIA Jetson Nano B01 và vi điều khiển Arduino Mega 2560.
  2. Xây dựng hệ thống tự hành trên nền tảng ROS: Triển khai thuật toán Hector_SLAM để quét và lập bản đồ 2D không gian quán; áp dụng Adaptive Monte Carlo Localization (AMCL) để ước lượng vị trí chính xác; sử dụng Dijkstra (Global Planner) và Dynamic Window Approach - DWA (Local Planner) để điều hướng và né vật cản động thời gian thực.
  3. Phát triển nền tảng quản lý Web đa nhiệm: Thiết kế kiến trúc Web tương thích cao (ReactJS, Node.js, MongoDB), giao tiếp hai chiều với robot qua giao thức Rosbridge Suite (WebSocket), cung cấp các module: đặt món, giám sát vị trí trực quan trên bản đồ, điều phối đơn hàng và can thiệp điều khiển thủ công khi cần thiết.
  4. Tự động hóa chu trình phục vụ: Khởi động hệ thống tự động (Auto-launch daemon) khi cấp nguồn, nhận điểm mục tiêu (Goal pose), di chuyển vận chuyển thức uống đến đúng bàn và cập nhật trạng thái đơn hàng theo thời gian thực.

Phạm vi và giới hạn

  • Phạm vi hoạt động: Môi trường trong nhà (indoor) với mặt phẳng sàn cứng, độ dốc dưới 3 độ, diện tích hoạt động tối ưu dưới $300\text{ m}^2$.
  • Giới hạn kỹ thuật: Cảm biến LiDAR quét 2D theo mặt phẳng phẳng ngang nên không phát hiện được các vật cản nằm ngoài dải quét (vật cản quá thấp $< 5\text{ cm}$ hoặc vật cản treo trên cao). Khả năng chịu tải tối đa của khoang chứa thức uống là $3.0\text{ kg}$.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Thị trường robot dịch vụ hiện nay sở hữu nhiều sản phẩm thương mại nổi bật, tuy nhiên việc ứng dụng trực tiếp vào quy mô quán cà phê nội địa còn gặp nhiều rào cản.

Tiêu chí phân tích Keenon Dinerbot T8 Pudu BellaBot Mô hình Robot Đề tài (Coffee Robot)
Hệ thống điều khiển Đóng (Proprietary OS) Đóng (Pudu OS) Mở hoàn toàn (ROS Melodic/Noetic)
Cảm biến chính Dual LiDAR + 3D Cam Dual LiDAR + 3x RGB-D RPLIDAR A1M8 (360°) + IMU MPU6050 + Optical Encoders
Kích thước ($R \times D \times C$) $38 \times 46 \times 90\text{ cm}$ $54 \times 50 \times 129\text{ cm}$ $20 \times 25 \times 20\text{ cm}$ (Tối ưu lối đi hẹp)
Giao thức mở rộng Giới hạn qua Cloud API Giới hạn qua Cloud SDK WebSocket JSON API mở (Rosbridge / roslibjs)
Chi phí chế tạo / Bán lẻ ~180.000.000 VNĐ ~250.000.000 VNĐ < 12.000.000 VNĐ (Nguyên mẫu R&D)
Khả năng tự tùy biến Không thể can thiệp Không thể can thiệp Toàn quyền lập trình lại Firmware & Planners

Phân tích yêu cầu hệ thống theo mô hình MoSCoW

  • Must-Have (Bắt buộc): Lập bản đồ quán 2D bằng LiDAR; định vị sai số $< 5\text{ cm}$; điều hướng tránh vật cản động; nhận lệnh giao bàn từ Web; tự quay về trạm sạc/vị trí ban đầu.
  • Should-Have (Cần có): Giao diện Web hiển thị tọa độ robot trực tiếp trên canvas bản đồ; giám sát tốc độ và tình trạng kết nối WebSocket; thông báo âm thanh/visual khi đến nơi.
  • Could-Have (Có thể mở rộng): Nhận diện bàn bằng camera AI; điều hướng đa tầng qua thang máy; tích hợp cổng thanh toán trực tuyến trên giao diện đặt món.
  • Won't-Have (Chưa triển khai): Tay máy bốc dỡ ly nước tự động; leo bậc thang; tương tác giọng nói hội thoại tự nhiên phức tạp.

Thiết kế hệ thống

Kiến trúc tổng thể và mô hình động học vi sai

Robot sử dụng hệ dẫn động vi sai (Differential Drive). Tâm quay tức thời (Instantaneous Center of Rotation - ICR) được xác định dựa trên vận tốc góc của hai bánh dẫn động độc lập.

                ▲ X_robot
                │
         ┌──────┴──────┐
   [Left Motor]   [Right Motor]
         │ (r)     │ (r)
         └──────┬──────┘
                │
                └──────► Y_robot
                ◄── b ──►

Mô hình toán học chuyển động của robot vi sai được biểu diễn như sau:

  • Vận tốc tuyến tính $v_L$ (bánh trái) và $v_R$ (bánh phải):

$$v_L = r \cdot \omega_L, \quad v_R = r \cdot \omega_R$$

  • Vận tốc dài $v$ và vận tốc góc $\omega$ của robot tại trọng tâm:

$$v = \frac{v_R + v_L}{2}, \quad \omega = \frac{v_R - v_L}{b}$$

  • Phương trình Odometry cập nhật vị trí $(x, y, \theta)$ trong hệ tọa độ thế giới ($O_{world}$):

$$\Delta x = v \cdot \cos\left(\theta + \frac{\omega \Delta t}{2}\right) \Delta t$$

$$\Delta y = v \cdot \sin\left(\theta + \frac{\omega \Delta t}{2}\right) \Delta t$$

$$\Delta \theta = \omega \cdot \Delta t$$

Trong đó: $r = 0.0325\text{ m}$ (bán kính bánh xe), $b = 0.185\text{ m}$ (khoảng cách trục giữa 2 bánh).

graph TD
    subgraph Physical_Layer ["Physical Layer (Phần cứng)"]
        LiDAR[RPLIDAR A1M8]
        IMU[MPU6050 IMU]
        EncL[Encoder Trái]
        EncR[Encoder Phải]
        Driver[Driver L298N + DC JGB37]
        Arduino[Arduino Mega 2560]
    end

    subgraph Computation_Layer ["Computation Layer (NVIDIA Jetson Nano)"]
        Rosserial[Node rosserial_python]
        OdomNode[Odometry Calculator]
        Hector[hector_mapping / SLAM]
        AMCLNode[amcl Node]
        MoveBase[move_base Node: Dijkstra + DWA]
        Costmaps[Global & Local Costmaps]
        Rosbridge[rosbridge_websocket Server]
    end

    subgraph App_Layer ["Application Layer (Web Platform)"]
        NodeServer[Node.js + Express Backend]
        MongoDB[(MongoDB Database)]
        ReactApp[ReactJS Management Dashboard]
    end

    LiDAR -->|UART / USB| Hector
    LiDAR -->|LaserScan topic| AMCLNode
    LiDAR -->|LaserScan topic| Costmaps
    EncL & EncR -->|Pulse Interrupts| Arduino
    IMU -->|I2C| Arduino
    Arduino <-->|rosserial / Serial| Rosserial
    Rosserial -->|/odom_raw| OdomNode
    OdomNode -->|/odom & TF| MoveBase
    OdomNode -->|/odom & TF| AMCLNode
    AMCLNode -->|/amcl_pose| MoveBase
    MoveBase -->|/cmd_vel| Rosserial
    Rosserial -->|PWM Signals| Driver --> Arduino
    
    MoveBase <-->|Actionlib / Status| Rosbridge
    Rosbridge <-->|WebSocket JSON / Port 9090| ReactApp
    ReactApp <-->|REST API| NodeServer
    NodeServer <-->|Mongoose| MongoDB

Technology Stack và phiên bản chi tiết

Tầng hệ thống Thành phần / Công nghệ Phiên bản Chức năng kỹ thuật
High-level Processing NVIDIA Jetson Nano B01 4GB LPDDR4, JetPack 4.6.1 Chạy Ubuntu 18.04 LTS, ROS Core, SLAM và Planners
Middleware ROS (Robot Operating System) Melodic Morenia Điều phối message passing giữa các Node (/cmd_vel, /scan, /odom, /tf)
Bridge Protocol rosbridge_suite / WebSocket v0.11.16 Giao tiếp JSON hai chiều giữa ROS Nodes và External Web Clients
Low-level Controller Arduino Mega 2560 ATmega2560 (16MHz) Đọc Encoder ngắt ngoài, tính PID vận tốc, xuất xung PWM điều khiển L298N
Cảm biến quang học RPLIDAR A1M8 (Slamtec) v1.28 (8000 samples/s) Quét 2D $360^\circ$, tầm xa $0.15 - 12\text{ m}$, tần số quét $5.5\text{ Hz}$
Cảm biến quán tính GY-521 (MPU6050) 6-DOF (Gyro + Accel) Lấy góc yaw bù trôi odometry qua bộ lọc I2C
Frontend Web ReactJS + roslibjs React 18.2.0, roslibjs 1.1.0 Dashboard theo dõi bản đồ, điều phối robot, UI đặt món
Backend & Database Node.js + Express + MongoDB Node v18.16.0, MongoDB v6.0 Lưu trữ orders, drinks, orderdetails, staffs

Thiết kế cơ sở dữ liệu MongoDB

Hệ thống sử dụng cơ sở dữ liệu phi quan hệ MongoDB để xử lý tốc độ cao và cấu trúc linh hoạt:

// Collection: orders
{
  "_id": { "$oid": "64f1a2b3c4d5e6f7a8b9c0d1" },
  "date": "2023-11-20T08:30:00.000Z",
  "table": 4,
  "status": "pending", // "pending" | "serving" | "completed" | "cancelled"
  "orderList": [
    {
      "drinkId": { "$oid": "64f1a2b3c4d5e6f7a8b9c0aa" },
      "drinkName": "Cà phê sữa đá",
      "price": 35000,
      "qty": 2
    }
  ],
  "note": "Ít ngọt, nhiều đá",
  "total": 70000
}

Methodology (Phương pháp phát triển)

Dự án áp dụng mô hình phát triển Agile/Scrum kết hợp V-Model trong phát triển phần cứng nhúng:

  • Sprint 1 (Khung vỏ & Low-level): Thiết kế CAD 3D, cắt khung mica, gia công in 3D giá đỡ cảm biến; cấu hình timer và ngắt ngoài trên Arduino Mega để tính số xung encoder động cơ JGB37 (tỉ số truyền $1:30$, 11 xung/vòng $\rightarrow 330$ xung/vòng bánh xe); điều khiển PID vận tốc động cơ.
  • Sprint 2 (Tích hợp ROS & Mapping): Cấu hình Jetson Nano; biên dịch rplidar_rosrosserial_python; kết nối TF Frames (map $\rightarrow$ odom $\rightarrow$ base_footprint $\rightarrow$ base_link $\rightarrow$ laser); dựng bản đồ 2D không gian thực bằng thuật toán hector_slam.
  • Sprint 3 (Navigation Stack & Optimization): Thiết lập costmap_common_params, global_costmap_params, local_costmap_params; tích hợp bộ định vị amcl và cấu hình bộ hoạch định cục bộ dwa_local_planner.
  • Sprint 4 (Full-stack Web Integration & Deployment): Dựng Backend Node.js, Frontend ReactJS; tích hợp thư viện roslibjs để gửi MoveBaseGoal trực tiếp từ Web; thiết lập kịch bản kiểm thử tải, sai số định vị và khả năng vượt chướng ngại vật tự động.
+-----------------------------------------------------------------------------------------+
|                                    QUẢN TRỊ RỦI RO                                     |
+------------------------------+---------------------------+------------------------------+
| Rủi ro kỹ thuật              | Mức độ | Giải pháp phòng ngừa / Khắc phục                |
+------------------------------+---------------------------+------------------------------+
| Trượt bánh gây sai số Odom   | Cao    | Hợp nhất dữ liệu Encoder + IMU MPU6050;      |
|                              |        | Điều chỉnh ma trận hiệp phương sai trong AMCL|
| Mất kết nối WebSocket Web    | Trung  | Thiết lập cơ chế tự động reconnect sau 2s;   |
|                              | bình   | Lưu trữ trạng thái đơn hàng cục bộ vào Redux |
| Kẹt robot trong góc cụt      | Cao    | Cấu hình chu trình Recovery Behaviors:       |
|                              |        | Xoay $360^\circ$ xóa costmap (Clear Costmap) |
+------------------------------+---------------------------+------------------------------+

Implementation và kết quả

Development process

1. Xử lý tầng Low-level (Firmware Arduino Mega 2560)

Firmware trên Arduino sử dụng các chân ngắt INT0INT1 để đọc tín hiệu từ hai kênh encoder A và B của động cơ trái/phải, tính toán vận tốc tức thời và giao tiếp với ROS qua rosserial.

#include <ros.h>
#include <geometry_msgs/Twist.h>
#include <std_msgs/Int32.h>

ros::NodeHandle nh;

// Chân điều khiển L298N & Encoder
const int ENA = 5, ENB = 6, IN1 = 7, IN2 = 8, IN3 = 9, IN4 = 10;
volatile long enc_left_count = 0;
volatile long enc_right_count = 0;

void leftEncoderISR() {
  if (digitalRead(2) == digitalRead(4)) enc_left_count++;
  else enc_left_count--;
}

void rightEncoderISR() {
  if (digitalRead(3) == digitalRead(11)) enc_right_count++;
  else enc_right_count--;
}

void cmdVelCallback(const geometry_msgs::Twist& cmd_msg) {
  float linear_x = cmd_msg.linear.x;
  float angular_z = cmd_msg.angular.z;
  
  // Tính toán vận tốc vi sai
  float v_r = linear_x + (angular_z * 0.185 / 2.0);
  float v_l = linear_x - (angular_z * 0.185 / 2.0);
  
  // Chuyển đổi vận tốc (m/s) sang giá trị PWM (0-255)
  motorControl(v_l, v_r);
}

ros::Subscriber<geometry_msgs::Twist> subCmdVel("/cmd_vel", cmdVelCallback);

2. Cấu hình ROS Navigation Stack

Tham số cho bộ quy hoạch cục bộ (dwa_local_planner_params.yaml) được tinh chỉnh tối ưu cho khả năng di chuyển linh hoạt trong phạm vi hẹp:

DWAPlannerROS:
  # Cấu hình vận tốc
  max_vel_x: 0.35
  min_vel_x: -0.10
  max_vel_theta: 1.2
  min_vel_theta: -1.2
  acc_lim_x: 1.0
  acc_lim_theta: 2.0

  # Mục tiêu dung sai
  xy_goal_tolerance: 0.05       # Sai số tọa độ vị trí đích: 5 cm
  yaw_goal_tolerance: 0.10      # Sai số góc quay: ~5.7 độ
  latch_xy_goal_tolerance: true

  # Trọng số hàm tối ưu quỹ đạo
  path_distance_bias: 32.0      # Ưu tiên bám sát đường đi toàn cục
  goal_distance_bias: 24.0      # Ưu tiên hướng về điểm đích
  occdist_scale: 0.02           # Trọng số tránh chướng ngại vật
  sim_time: 1.7                 # Thời gian mô phỏng quỹ đạo (giây)
  vx_samples: 10
  vth_samples: 20

3. Tích hợp Web Client qua roslibjs

Đoạn mã JavaScript trên ReactJS thiết lập kết nối WebSocket và phát lệnh điều hướng đến bàn được chỉ định:

import ROSLIB from 'roslib';

// Khởi tạo kết nối ROS Master qua WebSocket
const ros = new ROSLIB.Ros({
  url: 'ws://192.168.1.105:9090'
});

export const sendGoalToTable = (tableId, coordinates) => {
  const actionClient = new ROSLIB.ActionClient({
    ros: ros,
    serverName: '/move_base',
    actionName: 'move_base_msgs/MoveBaseAction'
  });

  const goal = new ROSLIB.Goal({
    actionClient: actionClient,
    goalMessage: {
      target_pose: {
        header: {
          frame_id: 'map',
          stamp: Date.now()
        },
        pose: {
          position: { x: coordinates.x, y: coordinates.y, z: 0.0 },
          orientation: { x: 0, y: 0, z: coordinates.z_orient, w: coordinates.w_orient }
        }
      }
    }
  });

  goal.send();
  goal.on('result', (status) => {
    console.log(`Đã hoàn tất hành trình đến Bàn ${tableId} với trạng thái:`, status);
  });
};

Testing và validation

Quá trình thực nghiệm được tiến hành trong môi trường phòng lab giả lập quán cà phê diện tích $60\text{ m}^2$, bao gồm 6 bàn, chướng ngại vật tĩnh (bàn ghế, cột nhà) và chướng ngại vật động (người đi bộ qua lại).

+------------------------------------------------------------------------------------------------+
|                              KẾT QUẢ THỰC NGHIỆM ĐIỀU HƯỚNG ROBOT                              |
+-------------------------------+-------------------+----------------------+---------------------+
| Kịch bản thực nghiệm          | Số lần thực hiện  | Tỷ lệ thành công (%) | Thời gian TB (giây) |
+-------------------------------+-------------------+----------------------+---------------------+
| 1. Không vật cản (Đường thẳng)|        20         |        100.0%        |        14.2s        |
| 2. Không vật cản (Có góc rẽ)  |        20         |        100.0%        |        22.8s        |
| 3. Vật cản tĩnh bất ngờ       |        25         |         96.0%        |        28.4s        |
| 4. Vật cản động (Người đi cắt)|        25         |         92.0%        |        31.1s        |
| 5. Đặt món liên tục qua Web   |        30         |        100.0%        |         N/A         |
+-------------------------------+-------------------+----------------------+---------------------+
+------------------------------------------------------------------------------------------------+
|                         ĐÁNH GIÁ ĐỘ CHÍNH XÁC ĐỊNH VỊ VÀ ĐIỀU HƯỚNG                            |
+-------------------------------+-------------------+----------------------+---------------------+
| Thông số kiểm chuẩn           | Giá trị kỳ vọng   | Kết quả thực tế      | Đánh giá chất lượng |
+-------------------------------+-------------------+----------------------+---------------------+
| Sai số điểm dừng vị trí (X,Y) | $\le 5.0\text{ cm}$| $2.8\text{ cm}$      | Xuất sắc            |
| Sai số góc quay dừng (Yaw)    | $\le 8.0^\circ$   | $4.2^\circ$          | Đạt chuẩn phục vụ   |
| Tần số cập nhật Local Planner | $\ge 10\text{ Hz}$| $12.5\text{ Hz}$     | Đảm bảo phản hồi    |
| Tải CPU trên Jetson Nano      | $< 85\%$          | $68\% - 74\%$        | Hoạt động ổn định   |
| Độ trễ phản hồi lệnh từ Web   | $< 200\text{ ms}$ | $65\text{ ms}$       | Real-time mượt mà   |
+-------------------------------+-------------------+----------------------+---------------------+

Đổi mới và đóng góp

  1. Tối ưu hóa chi phí phần cứng (Cost-to-Performance Ratio): Dự án chứng minh khả năng xây dựng một AMR hoàn chỉnh với đầy đủ tính năng tự hành, né vật cản động bằng cách kết hợp NVIDIA Jetson Nano và vi điều khiển 8-bit Arduino Mega 2560 thay vì các máy tính công nghiệp (IPC) đắt tiền, giảm chi phí nghiên cứu phát triển xuống dưới 12 triệu VNĐ (tiết kiệm hơn 90% so với sản phẩm nhập ngoại).
  2. Kiến trúc Full-Stack Web-to-ROS không phụ thuộc Platform: Thay vì sử dụng phần mềm điều khiển native (C++/Qt) phức tạp, hệ thống chuyển đổi toàn bộ hạ tầng giao tiếp sang giao thức WebSocket JSON thông qua rosbridge_suite. Nhân viên có thể sử dụng bất kỳ thiết bị nào (Smartphone, Tablet, PC) có trình duyệt để giám sát bản đồ thời gian thực và điều phối robot.
  3. Quy trình tích hợp Auto-start Daemon chuyên sâu: Xây dựng hệ thống tự khởi động (Systemd Services) phân tầng, quản lý lifecycle của ROS Master, Rosserial Node, Hector Mapping và Move Base. Robot có thể tự khôi phục sau khi mất nguồn điện đột ngột mà không cần thao tác dòng lệnh thủ công từ kỹ sư.
  4. Cơ chế phục vụ khép kín (End-to-End Autonomous Workflow): Đồng bộ hóa quy trình 4 bước: Khách đặt món qua Web $\rightarrow$ Bếp nhận thông tin & xuất món $\rightarrow$ Robot tự hành đến bàn $\rightarrow$ Tự động cập nhật Database.

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

   [ Khách hàng ]
          │ (Quét mã QR tại Bàn 3)
          ▼
   [ Giao diện Web Đặt món ] ────(Tạo Order)────► [ Database MongoDB ]
                                                        │
                                                        ▼
                                             [ Màn hình Quầy Bar ]
                                                        │ (Pha chế xong, đặt lên Robot)
                                                        │ (Bấm "Chuyển Bàn 3")
                                                        ▼
                                             [ ROS Action Server ]
                                                        │
                 ┌──────────────────────────────────────┴──────────────────────────────────────┐
                 ▼                                                                             ▼
       (Lập lộ trình Dijkstra)                                                       (Theo dõi qua Canvas Web)
                 │                                                                             │
                 ▼                                                                             ▼
   [ Robot di chuyển đến Bàn 3 ] ──(Gặp người đi ngang)──► [ DWA tính quỹ đạo né ] ──► [ Đến Bàn 3 ]
                 │                                                                             │
                 └───────────────────────────────┬─────────────────────────────────────────────┘
                                                 ▼
                                     [ Khách lấy nước uống ]
                                                 │ (Bấm "Hoàn tất")
                                                 ▼
                                     [ Robot quay về Quầy Bar ]

Phân tích hiệu quả kinh tế (ROI Analysis)

Xét mô hình quán cà phê diện tích $150\text{ m}^2$ với 25 bàn, hoạt động 14 giờ/ngày:

  • Chi phí nhân sự truyền thống: 2 nhân viên phục vụ ca $\times$ 5.000.000 VNĐ/tháng $\times$ 12 tháng = 120.000.000 VNĐ/năm.
  • Chi phí triển khai 01 Robot phục vụ:
    • Chi phí chế tạo & linh kiện: 12.000.000 VNĐ.
    • Chi phí bảo trì & điện năng dự kiến: 3.000.000 VNĐ/năm.
    • Robot đảm nhận 50% khối lượng vận chuyển, giảm 01 nhân sự trực tiếp.
  • Thời gian hoàn vốn (Payback Period):

$$\text{Thời gian hoàn vốn} = \frac{12.000.000\text{ VNĐ}}{(60.000.000 - 3.000.000)\text{ VNĐ/năm}} \approx 0.21\text{ năm } (\approx 2.5\text{ tháng})$$


Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Hệ thống cảm biến 2D: Cảm biến RPLIDAR A1M8 chỉ quét mặt phẳng đơn tầng ở độ cao $18\text{ cm}$. Các vật cản như chân bàn chéo, mặt bàn nhô ra hoặc dây điện trên sàn không được nhận diện đầy đủ.
  • Cơ cấu giảm xóc cơ khí: Hệ thống khung gắn trực tiếp bánh xe, chưa có hệ thống treo độc lập (suspension system) nên khi di chuyển qua các gờ giảm tốc độ có thể gây rung lắc làm sánh nước uống.
  • Mạng truyền thông: Khi di chuyển vào các góc khuất sóng Wi-Fi, độ trễ truyền gói tin WebSocket có thể tăng từ $50\text{ ms}$ lên $> 1000\text{ ms}$.

Hướng phát triển tiếp theo

  • Tích hợp cảm biến RGB-D (Intel RealSense D435i): Kết hợp Point Cloud 3D vào Costmap để nhận diện toàn diện chướng ngại vật đa tầng và phát hiện người rơi vào điểm mù của LiDAR.
  • Nâng cấp nền tảng ROS 2 (Humble / Iron): Chuyển dịch toàn bộ kiến trúc sang ROS 2 để tận dụng giao thức truyền thông DDS (Data Distribution Service) thời gian thực, bảo mật cao và hỗ trợ mô hình Multi-Robot (Hạm đội robot) phục vụ đồng thời trong cùng một quán.
  • Công nghệ sạc tự động (Auto-docking Station): Tích hợp camera hồng ngoại hoặc bộ phản xạ laser để robot tự động lùi vào trạm sạc khi mức pin xuống dưới 20%.

Đối tượng hưởng lợi

+-------------------------------------------------------------------------------------------------+
|                                 GIÁ TRỊ MANG LẠI CHO CÁC ĐỐI TƯỢNG                              |
+-------------------+-----------------------------------------------------------------------------+
| Nhóm đối tượng    | Giá trị và Lợi ích cụ thể                                                   |
+-------------------+-----------------------------------------------------------------------------+
| **Sinh viên &**   | Cung cấp mã nguồn tham khảo hoàn chỉnh từ Firmware nhúng, Cấu hình ROS      |
| **Nghiên cứu**    | Navigation Stack đến Lập trình Web Fullstack điều khiển Robot qua WebSocket. |
+-------------------+-----------------------------------------------------------------------------+
| **Kỹ sư Phần mềm**| Nắm vững phương pháp tích hợp `roslibjs`, kỹ thuật giải quyết bài toán      |
| **& Robotics**    | Odometry Drift và phương pháp tinh chỉnh tham số DWA Local Planner thực tế.  |
+-------------------+-----------------------------------------------------------------------------+
| **Chủ doanh nghiệp| Mô hình giải pháp cắt giảm chi phí nhân sự, nâng cao tính chuyên nghiệp,    |
| **F&B (SMEs)**    | tạo điểm nhấn công nghệ thu hút khách hàng với mức đầu tư khả thi.          |
+-------------------+-----------------------------------------------------------------------------+

Câu hỏi thường gặp

1. Cần những yêu cầu kỹ thuật phần cứng tối thiểu nào để triển khai hệ thống này?

Hệ thống yêu cầu: Bộ vi xử lý trung tâm tối thiểu 4 nhân ARM (NVIDIA Jetson Nano 4GB hoặc Raspberry Pi 4B chạy Ubuntu 18.04/20.04), 01 cảm biến LiDAR 2D 360 độ (RPLIDAR A1/A2), 01 vi điều khiển (Arduino Mega 2560 / STM32), động cơ DC giảm tốc có gắn Encoder (tối thiểu 330 xung/vòng) và mạch cầu H (L298N hoặc IBT-2). Nguồn cấp sử dụng pin LiPo 3S ($11.1\text{V} - 12.6\text{V}$) dung lượng tối thiểu $3000\text{ mAh}$.

2. Làm thế nào để giải quyết hiện tượng trôi sai số (Odometry Drift) sau thời gian dài di chuyển?

Hệ thống sử dụng bộ lọc hạt thích ứng AMCL (Adaptive Monte Carlo Localization). AMCL liên tục đối chiếu dữ liệu đám mây điểm từ LiDAR (/scan) với bản đồ tĩnh (/map) đã dựng sẵn để tái định vị vị trí robot, triệt tiêu sai số trôi tích lũy từ bánh xe mà không phụ thuộc hoàn toàn vào Encoder.

3. Hệ thống có thể tích hợp vào các phần mềm POS (Point of Sale) có sẵn không?

Hoàn toàn có thể. Do Backend được xây dựng bằng Node.js và MongoDB với chuẩn kiến trúc RESTful API và WebSocket, hệ thống có thể kết nối trực tiếp với các phần mềm quản lý bán hàng phổ biến (như KiotViet, iPOS, CukCuk) thông qua Webhook hoặc API endpoints để tự động nhận đơn hàng.

4. Chi phí bảo trì định kỳ của mô hình robot này là bao nhiêu?

Chi phí bảo trì ước tính dưới 1.500.000 VNĐ/năm, chủ yếu tập trung vào việc thay thế lốp cao su ma sát, vệ sinh gương phản xạ LiDAR và kiểm tra dung lượng chai của cell pin LiPo sau khoảng 500 chu kỳ sạc-xả.

5. Robot xử lý như thế nào khi bị khách hàng chặn kín đường đi (Deadlock)?

Khi không thể tìm được quỹ đạo di chuyển qua bộ hoạch định DWA, gói move_base sẽ kích hoạt cơ chế Recovery Behaviors:

  1. Xóa sạch các chướng ngại vật tạm thời trên Local Costmap ngoài bán kính an toàn.
  2. Tự động xoay tại chỗ $360^\circ$ với vận tốc góc thấp để quét lại toàn cảnh môi trường.
  3. Nếu vẫn bế tắc sau 30 giây, robot sẽ phát tín hiệu âm thanh cảnh báo và gửi trạng thái "Blocked" lên giao diện Web để nhân viên can thiệp điều khiển thủ công.

Kết luận

Đề tài "Nghiên cứu và xây dựng mô hình robot phục vụ quán cà phê" đã hiện thực hóa thành công một giải pháp tự động hóa toàn diện, khép kín và có tính ứng dụng thực tiễn cao cho ngành dịch vụ F&B. Dự án không chỉ giải quyết trọn vẹn các thách thức cơ bản của robot di động tự hành—từ lập bản đồ SLAM, định vị AMCL, hoạch định đường đi tối ưu Dijkstra & DWA—mà còn mở ra hướng tiếp cận mới trong việc điều khiển và giám sát robot thông qua công nghệ Web thời gian thực.

Với độ chính xác dừng điểm đạt $2.8\text{ cm}$, khả năng phản hồi lệnh dưới $65\text{ ms}$ và chi phí phần cứng tối ưu, mô hình là minh chứng cho thấy tiềm năng to lớn của việc làm chủ công nghệ mã nguồn mở (ROS, Linux, ReactJS, Node.js) trong việc tạo ra các sản phẩm công nghệ Make-in-Vietnam phục vụ trực tiếp cho đời sống kinh tế - xã hội.