Giới thiệu dự án

Ngành dịch vụ ăn uống (F&B) toàn cầu đang đối mặt với bài toán chi phí nhân công tăng từ 15% đến 22% mỗi năm và tỷ lệ biến động nhân sự phục vụ bàn vượt ngưỡng 70% (theo báo cáo của Hiệp hội Nhà hàng Quốc gia). Tại Việt Nam, các nhà hàng quy mô vừa và nhỏ (40 – 80 $m^2$) thường xuyên gặp tình trạng quá tải vào khung giờ cao điểm, dẫn đến việc giao nhầm món, thời gian chờ đợi kéo dài và suy giảm trải nghiệm khách hàng. Trong khi các giải pháp robot thương mại nhập khẩu như Keenon hay Pudu Robotics có chi phí đầu tư ban đầu quá cao (từ 150 đến 300 triệu VNĐ/robot) và thiếu khả năng tùy biến giao tiếp tiếng Việt theo ngữ cảnh bản địa, thì việc tự chủ nghiên cứu một hệ thống robot phục vụ tích hợp trí tuệ nhân tạo là nhu cầu bức thiết.

Đề tài "Nghiên cứu, thiết kế, chế tạo Robot phục vụ nhà hàng và hỗ trợ tương tác với khách hàng bằng giọng nói" do nhóm nghiên cứu Cơ điện tử - Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) thực hiện, tập trung giải quyết các điểm nghẽn then chốt: tự động hóa vận chuyển thức ăn an toàn, tối ưu chi phí phần cứng và cung cấp giao diện tương tác giọng nói tiếng Việt tự nhiên.

+-------------------------------------------------------------------------+
|                        HỆ THỐNG PHỤC VỤ TỰ HÀNH                         |
|                                                                         |
|  [Bếp/Quầy Bar] ---> (Robot tự hành Nav2/Lidar) ---> [Bàn Khách Hàng]   |
|         ^                                                   |           |
|         |-------- Quản lý đơn qua MQTT & HMI DWIN <---------+           |
+-------------------------------------------------------------------------+

Mục tiêu kỹ thuật cụ thể

  1. Thiết kế & chế tạo khung vỏ cơ khí: Tải trọng hữu ích 5 kg phân bổ trên 3 tầng khay, kích thước khay 300 x 240 mm, chiều cao tổng thể 1000 mm, khoảng cách giữa các tầng khay 250 mm, đảm bảo hệ số an toàn cơ học $n > 2.0$.
  2. Hệ thống điều khiển truyền động cấp thấp: Sử dụng vi điều khiển STM32F103C8T6 (ARM Cortex-M3 @ 72 MHz) kết hợp mạch công suất XY-160D điều khiển vòng kín 2 động cơ DC Planetary Geared Motor bằng giải thuật PID tốc độ với chu kỳ lấy mẫu $T_s = 10\text{ ms}$.
  3. Điều hướng tự hành cấp cao: Tích hợp máy tính nhúng Raspberry Pi 3B+ chạy hệ điều hành ROS 2 (Robot Operating System), cảm biến RPLIDAR A1M8 thực hiện lập bản đồ SLAM và định vị thích nghi AMCL (Adaptive Monte Carlo Localization).
  4. Tương tác thông minh: Tích hợp màn hình HMI DWIN 7 inch và microphone USB MI-305 xử lý nhận dạng giọng nói tiếng Việt, đồng bộ trạng thái đơn hàng thời gian thực qua giao thức MQTT.

Chỉ số kỳ vọng và phạm vi vận hành

  • Vận tốc định mức: $0.4\text{ m/s}$ (vận tốc cực đại $0.8\text{ m/s}$), sai số định vị điểm dừng $\le \pm 2\text{ cm}$, sai số góc quay $\le \pm 3^\circ$.
  • Phạm vi hoạt động: Mặt sàn bằng phẳng trong nhà hàng diện tích 40 – 80 $m^2$, môi trường ánh sáng tiêu chuẩn, chướng ngại vật tĩnh và động có tốc độ di chuyển $\le 0.3\text{ m/s}$.

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

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

Các giải pháp vận chuyển trong nhà hàng hiện nay phân hóa rõ rệt giữa phương thức truyền thống và robot thương mại:

Tiêu chí so sánh Nhân viên phục vụ truyền thống Robot thương mại (Keenon/Pudu) Giải pháp Robot HCMUTE
Chi phí đầu tư ban đầu 0 VNĐ (lương ~7-9 triệu/tháng) 180 - 320 triệu VNĐ ~15 - 25 triệu VNĐ
Độ ổn định vận hành Phụ thuộc tâm lý, sức khỏe Cao, liên tục 8 - 12h Cao, liên tục 4 - 6h
Tương tác tiếng Việt Tự nhiên, linh hoạt Hạn chế, phát âm máy móc Tối ưu nhận dạng ngữ cảnh gọi món
Khả năng bảo trì Đào tạo lại khi nghỉ việc Phụ thuộc hãng, linh kiện đắt Linh kiện tiêu chuẩn, dễ thay thế
Tải trọng mỗi chuyến 2 - 4 kg (bưng khay) 10 - 40 kg 5 kg (3 tầng khay chuyên dụng)

Phân loại yêu cầu theo mô hình MoSCoW

  • Must have: Tự điều hướng tránh va chạm bằng Lidar, dừng chính xác tại bàn, khay đựng tải trọng 5 kg không rung lắc, nhận lệnh qua HMI.
  • Should have: Nhận dạng giọng nói tiếng Việt đặt món, cập nhật trạng thái qua MQTT Dashboard cho quản lý.
  • Could have: Biểu cảm khuôn mặt trên màn hình hiển thị, phát nhạc chào mừng khi đến bàn.
  • Won't have (giai đoạn này): Cánh tay robot tự gắp đĩa thức ăn đặt lên bàn khách, leo dốc $> 5^\circ$.
                 +-----------------------------------+
                 |     User Requirements (MoSCoW)    |
                 +-----------------+-----------------+
                                   |
         +-------------------------+-------------------------+
         |                                                   |
   [MUST HAVE]                                         [SHOULD HAVE]
   - Lidar SLAM & Nav2                                 - Voice Ordering (VN)
   - Closed-loop PID                                   - MQTT Kitchen Sync
   - 5kg Stable Payload                                - Touch UI Menu

Thiết kế hệ thống

Kiến trúc hệ thống phân tầng (Layered Architecture) chia tách rõ ràng giữa tầng tính toán nhận thức (High-Level Computing) và tầng chấp hành thời gian thực (Low-Level Real-Time Control):

+---------------------------------------------------------------------+
|                      TẦNG NHẬN THỨC VÀ GIAO TIẾP                    |
|  [RPLIDAR A1M8]   [USB Mic MI-305]   [DWIN HMI 7"]   [MQTT Broker]  |
|         \                |                 |               /        |
|          +---------------+-----------------+--------------+         |
|                          |                                          |
|            [Raspberry Pi 3B+ (Ubuntu / ROS 2)]                      |
|            - Nav2 Stack (Costmap2D, AMCL, DWA)                      |
|            - Speech Processing Engine (Python)                      |
+------------------------------+--------------------------------------+
                               | UART (Baud 115200 bps)
+------------------------------+--------------------------------------+
|                      TẦNG CHẤP HÀNH CƠ ĐIỆN TỬ                      |
|             [STM32F103C8T6 (FreeRTOS / Bare-Metal)]                 |
|             - PID Velocity Controller ($T_s = 10\text{ ms}$)        |
|             - Differential Kinematics Forward/Inverse               |
|             - Optical Encoder Feedback (TIM2, TIM3)                 |
|                              |                                      |
|            +-----------------+-----------------+                    |
|            |                                   |                    |
|    [Optocoupler Isolation]             [Optocoupler Isolation]      |
|    [XY-160D H-Bridge Driver]           [XY-160D H-Bridge Driver]    |
|            |                                   |                    |
|    [DC Planet Motor Left]              [DC Planet Motor Right]      |
+---------------------------------------------------------------------+

Ngăn xếp công nghệ (Technology Stack)

  • Cấp cao (SBC): ROS 2 Humble/Galactic trên Ubuntu Linux LTS, Python 3.10, PySerial, Paho-MQTT, RPLIDAR SDK.
  • Cấp thấp (MCU): Keil MDK-ARM v5.38, C/C++ Embedded, STM32 Standard Peripheral/HAL Library.
  • Cơ cấu truyền động: 02 Động cơ DC Planet 30W (12-24V, hộp giảm tốc tỉ số $i = 1:19.2$, tích hợp Encoder đĩa quang 2 kênh A/B), 02 bánh xe chủ động nhôm bọc cao su đường kính $D = 100\text{ mm}$, 02 bánh xe Caster bị động đường kính $50\text{ mm}$.
  • Cơ cấu khung vỏ: Hợp kim nhôm định hình kết hợp tấm mica PMMA chịu lực gia công CNC/Laser, gá động cơ bằng thép carbon C45.

Mô hình động học vi sai (Differential Drive Kinematics)

Robot sử dụng hệ dẫn động vi sai hai bánh chủ động. Vận tốc dài $v(t)$ và vận tốc góc $\omega(t)$ của trọng tâm robot được xác định từ vận tốc góc của bánh phải $\omega_R$ và bánh trái $\omega_L$:

$$v(t) = \frac{R}{2} (\omega_R + \omega_L)$$

$$\omega(t) = \frac{R}{L} (\omega_R - \omega_L)$$

Trong đó:

  • $R = 0.05\text{ m}$ là bán kính bánh xe chủ động.
  • $L = 0.38\text{ m}$ là khoảng cách giữa hai tâm bánh xe chủ động (wheelbase).

Hệ phương trình trạng thái trên mặt phẳng Oxy:

$$\begin{bmatrix} \dot{x} \ \dot{y} \ \dot{\theta} \end{bmatrix} = \begin{bmatrix} \cos\theta & 0 \ \sin\theta & 0 \ 0 & 1 \end{bmatrix} \begin{bmatrix} v \ \omega \end{bmatrix}$$


Methodology

Dự án áp dụng mô hình phát triển xoắn ốc (Spiral Model) kết hợp phương pháp Agile/Scrum qua 4 giai đoạn chính trong 16 tuần:

[Tuần 1-4: Thiết kế & Mô phỏng] --> [Tuần 5-8: Gia công & Lắp ráp]
                                             |
[Tuần 13-16: Tối ưu & Đánh giá] <-- [Tuần 9-12: Tích hợp ROS & AI]
  • Tuần 1 - 4 (Sprint 1): Tính toán động học, mô phỏng tĩnh học FEA trên Autodesk Inventor, thiết kế mạch nguyên lý Altium Designer.
  • Tuần 5 - 8 (Sprint 2): Gia công khung cơ khí, lắp ráp hệ thống nguồn pin Li-ion 12V 10Ah, lập trình firmware điều khiển PID động cơ trên STM32.
  • Tuần 9 - 12 (Sprint 3): Tích hợp máy tính nhúng, giao tiếp Lidar, dựng mô hình URDF, cấu hình ROS 2 Nav2, lập trình nhận dạng giọng nói.
  • Tuần 13 - 16 (Sprint 4): Thử nghiệm tại môi trường nhà hàng thực tế, đo đạc sai số, tối ưu bộ tham số costmap và bộ lọc nhiễu âm thanh.

Ma trận đánh giá rủi ro (Risk Mitigation)

Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu
Trượt bánh xe làm sai lệch Odometry Cao Kết hợp dữ liệu IMU với Encoder qua bộ lọc Kalman mở rộng (EKF).
Nhiễu điện áp do motor cảm ứng lên MCU Cao Sử dụng Optocoupler cách ly quang, diode dập xung ngược và nguồn riêng biệt.
Tạp âm nhà hàng gây sai lệch nhận dạng giọng nói Trung bình Lọc ngưỡng âm lượng biên độ (Energy Threshold) và lọc dải thông tần số tiếng nói.
Lidar gặp bề mặt kính phản xạ/hấp thụ Trung bình Cấu hình Inflation Layer trên Costmap2D để tạo vùng đệm an toàn tối thiểu $0.25\text{ m}$.

Implementation và kết quả

Development process

1. Tính toán lựa chọn động cơ và kiểm nghiệm bền

Tổng khối lượng toàn tải: $M = M_{\text{robot}} + M_{\text{tải}} = 15\text{ kg} + 5\text{ kg} = 20\text{ kg}$. Gia tốc cực đại mong muốn: $a = 0.3\text{ m/s}^2$, hệ số ma sát lăn $\mu = 0.3$, gia tốc trọng trường $g = 9.81\text{ m/s}^2$.

Lực kéo tổng tiếp tuyến yêu cầu:

$$F_{\text{kéo}} = M \cdot a + \mu \cdot M \cdot g = 20 \times 0.3 + 0.3 \times 20 \times 9.81 = 6.0 + 58.86 = 64.86\text{ N}$$

Mô-men xoắn tổng cần sinh ra tại trục 2 bánh chủ động:

$$T_{\text{tổng}} = F_{\text{kéo}} \times R = 64.86 \times 0.05 = 3.243\text{ Nm}$$

Mỗi động cơ chịu tối thiểu: $T_{\text{đc}} = \frac{T_{\text{tổng}}}{2} = 1.6215\text{ Nm}$. Động cơ DC Planet trang bị hộp số $i = 19.2$ cung cấp mô-men cực đại $6.96\text{ Nm}$, thỏa mãn hệ số an toàn $k = \frac{6.96}{1.62} \approx 4.3$.

Kiểm nghiệm bền FEA trên Autodesk Inventor cho thấy:

  • Khung chịu lực: Ứng suất Von-Mises lớn nhất đạt $28.91\text{ MPa} < [\sigma]_{\text{cho phép}} = 250\text{ MPa}$ (thép C45). Độ chuyển vị lớn nhất tại đỉnh thân robot: $0.2156\text{ mm}$.
  • Khay chứa mica PMMA: Ứng suất uốn cực đại đạt $8.4\text{ MPa} \ll [\sigma]_{\text{PMMA}} = 80 - 120\text{ MPa}$. Độ võng cục bộ $0.024\text{ mm}$.

2. Thuật toán điều khiển PID vận tốc trên STM32F103

Thuật toán PID số dạng vận tốc (Discrete Velocity PID) được thực thi trong ngắt Timer $10\text{ ms}$:

#include "stm32f10x.h"

typedef struct {
    float Kp;
    float Ki;
    float Kd;
    float target_speed;   // rad/s
    float current_speed;  // rad/s
    float error;
    float prev_error;
    float integral;
    float output_pwm;     // -1000 to +1000
} PID_Controller;

PID_Controller motor_left = { .Kp = 14.5f, .Ki = 2.8f, .Kd = 0.35f, .integral = 0.0f };

void TIM4_IRQHandler(void) { // Interrupt 10ms (100Hz)
    if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) {
        // 1. Đọc số xung Encoder từ TIM2
        int16_t encoder_pulses = (int16_t)TIM2->CNT;
        TIM2->CNT = 0; // Reset counter
        
        // 2. Tính vận tốc góc hiện tại (rad/s)
        // Encoder 13 PPR, Tỉ số truyền 19.2, Đếm 4x -> 13*19.2*4 = 998.4 xung/vòng
        motor_left.current_speed = ((float)encoder_pulses / 998.4f) * (2.0f * 3.14159f) / 0.01f;
        
        // 3. Tính toán sai số
        motor_left.error = motor_left.target_speed - motor_left.current_speed;
        
        // 4. Khâu tích phân chống bão hòa (Anti-windup)
        motor_left.integral += motor_left.error * 0.01f;
        if (motor_left.integral > 300.0f) motor_left.integral = 300.0f;
        else if (motor_left.integral < -300.0f) motor_left.integral = -300.0f;
        
        // 5. Khâu vi phân
        float derivative = (motor_left.error - motor_left.prev_error) / 0.01f;
        
        // 6. Tính toán ngõ ra PWM
        float output = (motor_left.Kp * motor_left.error) + 
                       (motor_left.Ki * motor_left.integral) + 
                       (motor_left.Kd * derivative);
        
        // Bão hòa tín hiệu PWM
        if (output > 1000.0f) output = 1000.0f;
        if (output < -1000.0f) output = -1000.0f;
        
        motor_left.output_pwm = output;
        motor_left.prev_error = motor_left.error;
        
        // 7. Cập nhật thanh ghi Timer điều khiển cầu H
        Update_Motor_PWM(motor_left.output_pwm);
        
        TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
    }
}

           +------------------------------------------------------+
           |                VÒNG ĐIỀU KHIỂN PID TỐC ĐỘ            |
           +------------------------------------------------------+

  Target Speed                                                    PWM Duty
  (rad/s)      +   e(t)   +-------------------+  u(t)   +-------+  (TIM1)
  ------------>(+)------->| Kp + Ki/s + Kd*s  |-------->| Motor |------->
                ^ -       +-------------------+         +-------+   |
                |                                                   |
                +----------------- [Encoder (TIM2)] <---------------+

3. Xử lý giọng nói đặt món (Voice Recognition Node)

Đoạn mã Python xử lý âm thanh tiếng Việt từ microphone MI-305, nhận diện lệnh gọi món và đẩy dữ liệu lên MQTT Broker:

import speech_recognition as sr
import paho.mqtt.client as mqtt
import json

MQTT_BROKER = "192.168.1.50"
MQTT_TOPIC_ORDER = "restaurant/robot/order"

client = mqtt.Client(client_id="Robot_Voice_Node")
client.connect(MQTT_BROKER, 1883, 60)

recognizer = sr.Recognizer()
recognizer.energy_threshold = 3500  # Lọc tạp âm môi trường quán
recognizer.dynamic_energy_threshold = True

MENU_KEYWORDS = {
    "cà phê sữa": {"id": 101, "price": 25000},
    "trà đào": {"id": 102, "price": 30000},
    "bánh mì": {"id": 201, "price": 20000},
    "nước suối": {"id": 301, "price": 10000}
}

def process_voice_order(table_id):
    with sr.Microphone() as source:
        recognizer.adjust_for_ambient_noise(source, duration=0.8)
        print(f"[*] Đang lắng nghe khách tại Bàn {table_id}...")
        audio = recognizer.listen(source, phrase_time_limit=5)
        
    try:
        text = recognizer.recognize_google(audio, language="vi-VN").lower()
        print(f"[+] Khách nói: '{text}'")
        
        ordered_items = []
        for item_name, details in MENU_KEYWORDS.items():
            if item_name in text:
                ordered_items.append({"item": item_name, **details})
                
        if ordered_items:
            payload = json.dumps({"table": table_id, "orders": ordered_items})
            client.publish(MQTT_TOPIC_ORDER, payload, qos=1)
            return True, ordered_items
        return False, "Không nhận diện được món trong thực đơn."
    except sr.UnknownValueError:
        return False, "Không thể nhận diện âm thanh."

Testing và validation

Quá trình thực nghiệm được triển khai tại phòng LAB Cơ điện tử và mô phỏng thực tế tại quán cà phê/nhà hàng $60\text{ m}^2$:

+-------------------------------------------------------------------------+
|                  SƠ ĐỒ MẶT BẰNG THỬ NGHIỆM ĐIỀU HƯỚNG                   |
|                                                                         |
|  [Bếp/Trạm sạc] =====================> [Bàn 01]                         |
|        ||                                  ||                           |
|        ||  (Vật cản động: Người đi qua)    ||                           |
|        ||            |                     ||                           |
|        \/            v                     \/                           |
|      [Bàn 03] <------------------------ [Bàn 02]                        |
+-------------------------------------------------------------------------+

Bảng kết quả kiểm tra định lượng

Hạng mục kiểm thử Số lần thử nghiệm Tỷ lệ thành công (%) Độ lệch / Sai số trung bình Tiêu chuẩn đánh giá
Lập bản đồ SLAM (Gmapping/Cartographer) 10 phòng 100% Sai lệch hình học $\le 1.8\text{ cm}$ Đạt
Định vị AMCL và đến bàn mục tiêu 50 lượt 96% (48/50) Sai số tọa độ $\Delta d = 1.45\text{ cm}$ Đạt
Tránh vật cản động bất ngờ ($v_{obs} = 0.3\text{m/s}$) 30 tình huống 93.3% (28/30) Khoảng cách dừng an toàn $28\text{ cm}$ Đạt
Nhận diện giọng nói đặt món ($\text{Noise} < 65\text{dB}$) 100 câu lệnh 91.0% Thời gian phản hồi $1.2\text{ s}$ Đạt
Thời lượng pin liên tục (Tải 5 kg) 5 chu kỳ xả 100% $4.5\text{ giờ}$ hoạt động liên tục Đạt
                       HIỆU SUẤT ĐIỀU HƯỚNG VÀ NHẬN DIỆN
  SLAM Mapping       : [========================================] 100.0%
  AMCL Localization  : [======================================..]  96.0%
  Dynamic Obstacle   : [=====================================...]  93.3%
  Voice Recognition  : [====================================....]  91.0%

Kết quả đạt được

  1. Hoàn thiện nguyên mẫu phần cứng: Khung nhôm 2 trụ vững chắc, chịu tải ổn định 5 kg với độ rung lắc khay $< 0.5\text{ mm}$ khi di chuyển ở dải tốc độ $0.4\text{ m/s}$.
  2. Hệ thống điều khiển thời gian thực: Bộ điều khiển PID trên vi điều khiển STM32 triệt tiêu hoàn toàn sai số xác lập, thời gian quá độ $t_s = 0.28\text{ s}$, độ vọt lố $\sigma% < 4.2%$.
  3. Điều hướng chính xác: Ứng dụng thành công Nav2 trên ROS 2, thiết lập thuật toán Dijkstra tìm đường toàn cục (Global Path) kết hợp DWA (Dynamic Window Approach) tránh va chạm cục bộ (Local Planner).
  4. Hệ thống phần mềm quản lý: Hoàn thiện giao diện HMI DWIN cho khách hàng chạm chọn món hoặc đặt bằng giọng nói, kết nối không dây đồng bộ về máy chủ quản lý qua MQTT Broker.

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

Đổi mới kỹ thuật

  • Kiến trúc điều khiển phân tầng lai (Hybrid Hierarchical Architecture): Tách biệt xử lý logic cấp cao trên nền tảng ROS 2 (Linux OS) và vòng quét điều khiển động cơ tần số cao $100\text{ Hz}$ trên STM32 (Bare-metal MCU). Cấu trúc này ngăn chặn hiện tượng trễ chu kỳ điều khiển động cơ khi hệ điều hành Linux quá tải CPU do xử lý dữ liệu đám mây điểm (Point Cloud) từ Lidar.
  • Tối ưu chi phí phần cứng (Cost-Effective Engineering): Sử dụng các linh kiện phổ biến (STM32F103, RPLIDAR A1, Raspberry Pi 3B+) thay vì các bộ công nghiệp đắt đỏ, giúp giảm hơn 85% giá thành sản xuất so với các sản phẩm thương mại trên thị trường mà vẫn đảm bảo độ chính xác vận hành cần thiết trong nhà hàng.
  • Tương tác đa phương thức tích hợp tiếng Việt: Kết hợp HMI cảm ứng điện trở và nhận dạng giọng nói xử lý ngôn ngữ tự nhiên tiếng Việt, tối ưu hóa giao tiếp phục vụ thực khách.
+--------------------------------------------------------------------+
|                SO SÁNH CÁC GIẢI PHÁP ROBOT PHỤC VỤ                 |
+--------------------------------------------------------------------+
| Tiêu chí                | Pudu BellaBot  | Keenon Peanut | Robot HCMUTE    |
| Giá thành (VNĐ)         | ~250.000.000   | ~180.000.000  | ~22.000.000     |
| Tùy biến mã nguồn       | Đóng hoàn toàn | Đóng          | Mã nguồn mở ROS2|
| Ngôn ngữ giọng nói      | Đa ngữ chuẩn hóa| Tiếng Anh/Trung| Tiếng Việt tối ưu|
| Bảo trì linh kiện       | Phụ thuộc hãng | Phụ thuộc hãng| Sẵn có thị trường|
+--------------------------------------------------------------------+

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

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

  1. Khách hàng gọi món: Khách chạm màn hình HMI hoặc ấn nút micro nói "Cho một cà phê sữa và một nước suối". Robot xác nhận đơn hàng hiển thị trên HMI và gửi gói tin JSON qua MQTT về quầy bar/bếp.
  2. Khu vực bếp xuất món: Nhân viên bếp đặt đĩa thức ăn lên khay tương ứng (Khay 1 hoặc Khay 2) và nhấn xác nhận trên Dashboard quản lý.
  3. Robot tự hành giao hàng: Robot tự động kích hoạt chế độ điều hướng Nav2, di chuyển theo quỹ đạo tối ưu, tự động né tránh khách hàng đi lại trong quán, dừng cách bàn mục tiêu $20\text{ cm}$.
  4. Khách nhận món & Robot quay về: Khách lấy món, bấm hoàn thành trên HMI. Robot phát âm thanh "Cảm ơn quý khách, chúc quý khách ngon miệng" và tự động quay về trạm chờ hoặc tiếp tục hành trình phục vụ bàn kế tiếp.
[Bếp đặt món lên khay] -> [Bấm xác nhận trên App] -> [Robot di chuyển theo Nav2]
                                                               |
[Robot về trạm chờ] <-- [Khách lấy món & bấm Xong] <-- [Robot dừng tại bàn]

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

  • Chi phí chế tạo phần cứng nguyên mẫu: ~22.000.000 VNĐ.
  • Chi phí thuê nhân viên phục vụ bàn: ~7.000.000 VNĐ/tháng (chưa tính chi phí phụ cấp, quản lý).
  • Thời gian thu hồi vốn (Payback Period):

$$\text{Thời gian hoàn vốn} = \frac{\text{Chi phí đầu tư}}{\text{Tiết kiệm hàng tháng}} = \frac{22.000.000}{7.000.000} \approx 3.14\text{ tháng}$$

Một nhà hàng quy mô 20 bàn chỉ cần đầu tư 2 robot phục vụ kết hợp 1 nhân viên hỗ trợ để thay thế cho đội ngũ 3-4 nhân viên chạy bàn, tiết kiệm hơn 150 triệu VNĐ chi phí vận hành mỗi năm.


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

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

  • Khả năng xử lý âm thanh trong môi trường ồn: Khi cường độ âm thanh môi trường quán vượt quá $70\text{ dB}$, tỷ lệ nhận diện đúng giọng nói giảm xuống dưới $78%$.
  • Giới hạn nhận biết chướng ngại vật 3D: Cảm biến Lidar 2D (RPLIDAR A1M8) chỉ quét mặt phẳng cắt ở độ cao $20\text{ cm}$, chưa phát hiện được các vật cản treo lơ lửng bên trên như mép bàn nhô ra hoặc dây điện thả từ trần nhà.
  • Nguồn pin chưa tích hợp tự động sạc: Robot cần người vận hành cắm sạc thủ công bằng giắc cắm khi điện áp pin giảm xuống dưới ngưỡng $11.1\text{ V}$.

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

  1. Nâng cấp cảm biến thị giác: Tích hợp thêm Camera RGB-D (Intel RealSense D435i) kết hợp mô hình YOLOv8 để nhận diện người, phân loại vật cản 3D và ước lượng tư thế tay người nhận món.
  2. Trạm sạc tự động (Auto-docking Station): Thiết kế mạch nhận diện trạm sạc bằng mã quang học ArUco Marker kết hợp thuật toán điều khiển tiếp xúc sạc tự động.
  3. Mô hình ngôn ngữ lớn (LLM): Nhúng mô hình xử lý ngôn ngữ tự nhiên cục bộ (Offline Small Language Model) giúp robot có khả năng trò chuyện, tư vấn chi tiết món ăn theo sở thích của khách hàng mà không phụ thuộc vào kết nối Internet.

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

+-------------------------------------------------------------------------+
|                           ĐỐI TƯỢNG HƯỞNG LỢI                           |
+-------------------------------------------------------------------------+
| [SINH VIÊN & HỌC VIÊN]    -> Tài liệu tham khảo toàn diện cơ điện tử    |
| [KỸ SƯ & LẬP TRÌNH VIÊN]  -> Mã nguồn mẫu ROS 2, PID nhúng, MQTT, Nav2  |
| [CHỦ DOANH NGHIỆP F&B]    -> Giải pháp tự động hóa chi phí thấp, ROI nhanh|
| [CỘNG ĐỒNG NGHIÊN CỨU]    -> Nền tảng mở phát triển Mobile Robot đa năng|
+-------------------------------------------------------------------------+
  • Sinh viên Cơ điện tử / Tự động hóa / CNTT: Cung cấp tài liệu tham khảo thực chiến từ tính toán cơ khí, thiết kế mạch động lực đến lập trình hệ thống ROS 2 và AI nhận diện giọng nói.
  • Kỹ sư phát triển Robot: Tham khảo mô hình phân tách tầng điều khiển giữa STM32 và máy tính nhúng, giải thuật PID số chống bão hòa và cấu hình Nav2.
  • Doanh nghiệp F&B & Quản lý nhà hàng: Sở hữu giải pháp tự động hóa dịch vụ với chi phí cạnh tranh, giải quyết bài toán thiếu hụt nhân sự trong giờ cao điểm.
  • Nhà nghiên cứu khoa học: Cung cấp nền tảng phần cứng và dữ liệu thực nghiệm phục vụ các nghiên cứu chuyên sâu về lập kế hoạch quỹ đạo di động và giao tiếp Người - Máy (HRI).

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

1. Yêu cầu kỹ thuật tối thiểu của nhà hàng để triển khai robot là gì?

Nhà hàng cần có mặt sàn bằng phẳng, độ dốc không quá $3^\circ$, không có bậc tam cấp cao hơn $1\text{ cm}$. Khoảng cách tối thiểu giữa các dãy bàn ăn phải đạt từ $0.7\text{ m}$ trở lên để robot có thể di chuyển và xoay sở an toàn với bán kính quét an toàn của Lidar.

2. Khả năng mở rộng (Scalability) khi triển khai cùng lúc nhiều robot như thế nào?

Hệ thống sử dụng giao thức MQTT có khả năng quản lý hàng trăm thiết bị (Multi-robot Fleet Management). Khi mở rộng cụm robot, hệ thống cần bổ sung một node trung tâm (Fleet Coordinator) để phân chia làn đường và tránh tắc nghẽn cục bộ (Deadlock) giữa các robot trong cùng không gian bản đồ.

3. Robot có tích hợp được với các phần mềm quản lý bán hàng (POS) hiện có không?

Có. Kiến trúc backend thông qua MQTT Broker và API JSON cho phép dễ dàng viết module cầu nối (Middleware) để đồng bộ dữ liệu đơn hàng trực tiếp từ các hệ thống POS phổ biến như iPOS, CukCuk, KiotViet vào cơ sở dữ liệu phân phối nhiệm vụ của robot.

4. Chi phí và quy trình bảo trì hệ thống định kỳ ra sao?

Robot sử dụng các module linh kiện tiêu chuẩn. Quy trình bảo trì định kỳ 3 tháng/lần bao gồm: vệ sinh ống kính bảo vệ Lidar, kiểm tra độ mòn cao su bánh xe chủ động, tra dầu bôi trơn bánh xe Caster và cân chỉnh lại điện áp cell pin Li-ion. Chi phí linh kiện thay thế ước tính dưới 500.000 VNĐ/năm.

5. Dự toán chi phí và lộ trình hoàn vốn (ROI) chi tiết như thế nào?

Tổng chi phí chế tạo vật tư nguyên mẫu là 22 triệu VNĐ. Với một quán cà phê/nhà hàng vận hành 12 giờ/ngày, robot đảm nhận khối lượng vận chuyển tương đương 1 nhân viên toàn thời gian. Sau khoảng 3 đến 4 tháng vận hành, doanh nghiệp hoàn toàn thu hồi chi phí đầu tư ban đầu và tiết kiệm chi phí nhân công từ tháng thứ 5 trở đi.


Kết luận

Đề tài "Nghiên cứu, thiết kế, chế tạo Robot phục vụ nhà hàng và hỗ trợ tương tác với khách hàng bằng giọng nói" của nhóm tác giả Diệp Khải Hoàn, Nguyễn Lê Phong, Hồ Đăng Tú (Khoa Cơ khí Chế tạo máy - ĐH Sư phạm Kỹ thuật TP.HCM) dưới sự hướng dẫn của TS. Huỳnh Quang Duy đã hoàn thành xuất sắc toàn bộ các mục tiêu lý thuyết và chế tạo thực nghiệm đề ra.

Dự án đã chứng minh tính khả thi vượt trội trong việc làm chủ công nghệ chế tạo Mobile Robot dịch vụ: từ việc tính toán động lực học, kiểm nghiệm bền kết cấu, thiết kế mạch điện tử cách ly công suất cao đến việc xây dựng hệ thống tự hành trên nền tảng ROS 2 hiện đại và giao tiếp giọng nói tiếng Việt. Đây là tiền đề kỹ thuật vững chắc để tiếp tục phát triển thương mại hóa các dòng robot dịch vụ "Make in Vietnam", mang lại giá trị kinh tế và trải nghiệm số hóa thiết thực cho ngành F&B trong kỷ nguyên công nghiệp 4.0.