Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh tự động hóa và công nghệ thông tin phát triển mạnh mẽ, bài toán điều hướng cho robot (Robot Navigation) đang trở thành một lĩnh vực nghiên cứu trọng điểm với khả năng ứng dụng đa dạng từ công nghiệp, y tế đến dịch vụ thương mại. Tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM, các hướng nghiên cứu về robot tự hành tránh vật cản và quét bản đồ đã từng bước được triển khai (như đề tài của Lê Chí Bảo, Phan Anh Kiệt năm 2020; Trần Hoàng Phương, Võ Anh Tuấn năm 2021). Trên bình diện quốc tế, các công trình như hệ thống robot bồi bàn của A. Cheong và cộng sự (2016) hay nghiên cứu WaiterBot của Jonathan Cerbaro và cộng sự (2020) đã tiếp cận bài toán điều hướng tránh chướng ngại vật trong môi trường động. Tuy nhiên, phần lớn các nghiên cứu học thuật trước đó chủ yếu tập trung vào việc tối ưu thuật toán tránh vật cản thuần túy mà chưa gắn liền với một kịch bản ứng dụng cụ thể và hoàn chỉnh trong đời sống.

Xuất phát từ thực tiễn trên, khóa luận tốt nghiệp ngành Kỹ thuật Máy tính với đề tài "Nghiên cứu và xây dựng mô hình robot phục vụ nhà hàng" do sinh viên Nguyễn Ngọc Thảo và Danh Quốc Hào thực hiện (dưới sự hướng dẫn của ThS. Phan Đình Duy) tập trung vào việc phát triển một mô hình robot tự hành tích hợp đầy đủ từ phần cứng cơ khí, mạch điện tử nhúng đến hệ thống điều hướng thông minh và giao diện điều khiển từ xa.

Mục tiêu nghiên cứu

Đề tài xác định các mục tiêu và nhiệm vụ cụ thể sau:

  1. Nghiên cứu và áp dụng mô hình động học robot vi sai (differential drive robot) để làm nền tảng di chuyển và tính toán vị trí.
  2. Xây dựng hệ thống điều khiển trung tâm trên máy tính nhúng NVIDIA Jetson Nano kết hợp vi điều khiển Arduino Uno R3 và hệ thống cảm biến chuyên dụng (RPLIDAR A1, MPU6050, encoder).
  3. Ứng dụng thuật toán Hector SLAM để quét và tái tạo bản đồ 2D của khu vực hoạt động mà không phụ thuộc hoàn toàn vào dữ liệu odometry cơ học ban đầu.
  4. Triển khai ROS Navigation Stack (bao gồm các node move_base, amcl, hệ thống Costmap) nhằm giúp robot tự động định vị, lập kế hoạch quỹ đạo toàn cục/cục bộ và tự động tránh vật cản tĩnh cũng như vật cản động.
  5. Xây dựng giao diện ứng dụng Web thông qua Flask, WebSockets và Rosbridge, cho phép người dùng (nhân viên nhà hàng) ra lệnh điều hướng robot mang đồ ăn đến các bàn ăn xác định hoặc điều khiển thủ công bằng joystick ảo.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Mô hình robot tự hành ứng dụng trong nhà hàng, quán ăn phục vụ ăn uống có bề mặt sàn phẳng, không gồ ghề và không có bậc thang.
  • Phạm vi nghiên cứu:
    • Về không gian và môi trường: Môi trường trong nhà (indoor), sàn phẳng cố định.
    • Về giải thuật và kỹ thuật: Tập trung vào giải thuật Hector SLAM để lập bản đồ 2D từ dữ liệu cảm biến Laser LiDAR; thuật toán bộ lọc Kalman mở rộng (Extended Kalman Filter - EKF) để hợp nhất dữ liệu odometry từ encoder động cơ và cảm biến gia tốc MPU6050; ROS Navigation Stack phục vụ di chuyển tự động theo tọa độ chỉ định (2D Nav Goal).
    • Về phần mềm tương tác: Xây dựng local server bằng Flask, kết hợp thư viện roslibjs, nipplejs và rosbridge_suite để truyền nhận lệnh điều khiển thời gian thực qua giao thức mạng.

Cơ sở lý thuyết và phương pháp

Khóa luận kết hợp chặt chẽ giữa cơ sở lý thuyết điều khiển tự động, lý thuyết xác suất trong robotics và kỹ thuật phần mềm nhúng phân tán:

1. Khung lý thuyết và mô hình động học

  • Mô hình động học robot vi sai (Differential Drive Model): Robot di chuyển dựa trên 2 bánh dẫn động độc lập được bố trí hai bên thân xe cùng bán kính $r$, cách nhau một khoảng $L$, và các bánh xe cân bằng bị động (bánh mắt trâu). Mối quan hệ giữa vận tốc dài $v$, vận tốc góc $\omega$ của khung robot với vận tốc góc của bánh phải $\omega_R$ và bánh trái $\omega_L$ được xác định qua công thức: $$v = \frac{r(\omega_R + \omega_L)}{2}$$ $$\omega = \frac{r(\omega_R - \omega_L)}{L}$$
  • Lý thuyết xác suất trong SLAM: Giải quyết bài toán ước lượng đồng thời trạng thái vị trí của robot $x_k$ và bản đồ môi trường $m$ tại thời điểm $k$ dựa trên tập hợp lịch sử quan sát $z_{0:k}$ và tín hiệu điều khiển $u_{0:k}$: $$P(x_k, m \mid z_{0:k}, u_{0:k}, x_0)$$ Quá trình này bao gồm mô hình chuyển động Markov $P(x_k \mid x_{k-1}, u_k)$ và mô hình quan sát môi trường $P(z_k \mid x_k, m)$.
  • Thuật toán Hector SLAM: Sử dụng phương pháp đối sánh dữ liệu quét laser (scan matching) ở tốc độ cao kết hợp nội suy đa tỉ lệ (multi-resolution grid map), cho phép tạo bản đồ lưới 2D chính xác từ dữ liệu LiDAR ngay cả khi thông tin odometry từ bánh xe bị trượt hoặc không đo lường được.
  • Bộ lọc Kalman mở rộng (Extended Kalman Filter - EKF): Sử dụng package robot_pose_ekf để hợp nhất (sensor fusion) ước lượng độ dời từ đĩa quay encoder với dữ liệu góc quay/vận tốc góc từ cảm biến quán tính 6-DOF IMU, từ đó tạo nguồn dữ liệu Odometry liên tục và ổn định.
  • Hệ thống điều hướng ROS Navigation Stack: Dựa trên kiến trúc nút trung tâm move_base kết hợp global_planner, local_planner, thuật toán định vị hạt thích nghi AMCL (Adaptive Monte Carlo Localization), cùng việc phân lớp chi phí môi trường (Global Costmap và Local Costmap).

2. Phương pháp nghiên cứu và thực nghiệm

  • Phương pháp thiết kế cơ khí và điện tử: Mô phỏng 2D/3D bằng SolidWorks nhằm tính toán kích thước, trọng tâm, vị trí lắp đặt linh kiện trước khi gia công; tích hợp mạch điều khiển công suất công nghiệp bảo vệ bằng Opto cách ly và chống nhiễu TVS/ESD.
  • Phương pháp thiết kế phần mềm: Kiến trúc hướng dịch vụ/hướng sự kiện trên Robot Operating System (ROS Melodic/Noetic), quản lý luồng dữ liệu thông qua các Topic, Service, Parameter Master và hệ thống liên kết khung tọa độ tf.
  • Phương pháp thực nghiệm kiểm chứng: Thực hiện đo đạc, so sánh sai số định vị tọa độ đích $(x, y)$ giữa môi trường tĩnh không có vật cản và môi trường biến động có vật cản động (người di chuyển) qua 20 lần thử nghiệm lặp lại cho mỗi kịch bản.

3. Nguồn dữ liệu

  • Dữ liệu laser 2D (mảng khoảng cách 360 điểm/vòng quét) từ cảm biến RPLIDAR A1.
  • Dữ liệu xung đếm encoder (2 kênh tín hiệu xung vuông lệch pha AB) từ động cơ DC JBG37.
  • Dữ liệu vận tốc góc (Gyroscopes) và gia tốc tuyến tính (Accelerometer) 3 trục từ cảm biến GY-521 MPU6050 qua giao tiếp $I^2C$.
  • Dữ liệu bản đồ lưới raster 2D xuất ra dưới dạng tệp ảnh .pgm kèm siêu dữ liệu cấu hình tọa độ .yaml.

Thiết kế và triển khai hệ thống

Hệ thống robot được thiết kế hoàn chỉnh gồm hai phân hệ chính: phần cứng cơ khí - điện tử và phần mềm điều khiển ROS.

       [ Client Browser (HTML/JS/NippleJS) ]
                    (WebSockets)
        [ Rosbridge Server / Flask Web Server ]
                     (ROS Topics)
   [ RPLIDAR A1 ]                 [ Arduino Uno R3 ]
                                  - Đọc MPU6050 (I2C)
                                  - Đọc Encoder (Ticks)
                                  - Xuất PWM điều khiển
                                  [ Motor Driver XY-160D ]
                                   [ Động cơ DC JBG37 ]

1. Phân tích và thiết kế phần cứng

Cấu trúc cơ khí robot được phân tầng thành 3 mặt sàn riêng biệt nhằm tối ưu hóa trọng tâm và phân bố không gian:

  • Tầng dưới: Bố trí máy tính nhúng trung tâm Jetson Nano Developer Kit (bản Carrier Board A02, CPU Quad-core ARM A57 1.43 GHz, GPU Maxwell 128-core 472 GFLOPS, RAM 4GB LPDDR4), bo mạch vi điều khiển Arduino Uno R3 (ATmega328P 16 MHz), mạch cầu H điều khiển động cơ XY-160D (công suất tối đa 160W/kênh, tích hợp Opto cách ly), 2 động cơ DC giảm tốc JBG37 (12V, 303 RPM sau giảm tốc 1:33, đĩa từ encoder 11 xung, tổng 363 xung/vòng) và 2 bánh mắt trâu cân bằng lực.
  • Tầng giữa: Đặt nguồn pin dự phòng cấp nguồn 5V cho Jetson Nano ở vị trí trung tâm nhằm đảm bảo cân bằng trọng lượng; cảm biến quét laser RPLIDAR A1 (SLAMTEC, quét $360^\circ$, tầm xa 12m, tốc độ quét 5.5–10 Hz, 8000 mẫu/giây) được cố định trên hệ lỗ hình thang để tầm quét không bị che khuất.
  • Tầng trên cùng: Mặt phẳng chịu lực dùng làm khay chứa thức ăn và đồ dùng phục vụ bàn.

2. Phân tích và thiết kế phần mềm ROS

  • Cấu hình cây tọa độ (tf Tree): Định nghĩa mối quan hệ biến đổi không gian giữa các gốc tọa độ: map $\rightarrow$ odom $\rightarrow$ base_footprint $\rightarrow$ base_link $\rightarrow$ laser_link và imu_link.
  • Nút cảm biến và tính toán Odometry:
    • Nút rplidarNode (từ package rplidar_ros) thu thập dữ liệu laser và xuất ra topic /scan.
    • Vi điều khiển Arduino nhận tín hiệu xung encoder, gửi về máy tính nhúng qua giao thức rosserial_arduino trên các topic /left_ticks và /right_ticks.
    • Nút ekf_odom_pub chuyển đổi xung tick thành độ dời góc và tọa độ, xuất dữ liệu /odom_data_quat.
    • Cảm biến MPU6050 gửi thông tin góc quay/vận tốc góc qua topic /imu/imu/data_raw.
    • Package robot_pose_ekf hợp nhất hai nguồn dữ liệu trên thành topic /robot_pose_ekf/odom_combined (tương ứng khung odom).
  • Nút điều hướng move_base và Cấu hình Costmap:
    • Cấu hình 4 tệp thông số YAML: costmap_common_params.yaml (bán kính vật cản, lớp footprint), global_costmap_params.yaml (bản đồ toàn cục), local_costmap_params.yaml (bản đồ cục bộ tránh vật cản tức thời) và base_local_planner_params.yaml (giới hạn gia tốc, vận tốc di chuyển).
    • Nút move_base nhận lệnh mục tiêu từ /move_base_simple/goal, liên tục tính toán quỹ đạo và xuất tín hiệu điều khiển vận tốc góc/vận tốc dài vào topic /cmd_vel.
  • Định vị AMCL và Map Server: Nút map_server đọc bản đồ lưu trữ xuất dữ liệu lên topic /map. Nút amcl sử dụng thuật toán Monte Carlo để khớp nối dữ liệu laser thời gian thực với bản đồ tĩnh, xác định vị trí chính xác của robot trên tọa độ toàn cục.

3. Giao diện Web điều khiển và cầu nối Rosbridge

  • Hệ thống xây dựng local web server bằng Python Flask. Giao diện người dùng viết bằng HTML, CSS, JavaScript, tích hợp thư viện nipplejs để tạo nút joystick ảo.
  • Sử dụng công cụ rosbridge_server tạo cổng giao tiếp WebSockets (cổng mặc định 9090) kết hợp với thư viện roslibjs phía máy khách để ánh xạ trực tiếp các thao tác trên trình duyệt thành thông điệp ROS:
    • Nhấn chọn bàn trên bản đồ web $\rightarrow$ gửi tọa độ bàn $(x, y)$ vào topic goal của move_base.
    • Kéo joystick ảo $\rightarrow$ xuất gói tin geometry_msgs/Twist vào topic /cmd_vel để điều khiển di chuyển thủ công.

Nội dung chính theo từng chương

Chương 1: Giới thiệu tổng quan đề tài

Trình bày lý do chọn đề tài, tính cấp thiết của việc áp dụng Robot Navigation vào bài toán phục vụ nhà hàng thực tế. Tác giả xác định rõ mục tiêu chế tạo mô hình robot vi sai tự hành, phạm vi ứng dụng trong môi trường sàn phẳng trong nhà, các đối tượng nghiên cứu liên quan và phương pháp tiếp cận từ thiết kế cơ điện tử đến xây dựng phần mềm nhúng ROS.

Chương 2: Các thành phần của hệ thống

Khảo sát và trình bày chi tiết thông số kỹ thuật, nguyên lý hoạt động của từng khối phần cứng và lý thuyết nền tảng:

  • Máy tính nhúng NVIDIA Jetson Nano Developer Kit A02 (472 GFLOPS, GPU Maxwell 128 nhân, 4GB LPDDR4).
  • Cảm biến RPLIDAR A1 (tầm quét 12m, góc quét $360^\circ$, tần số quét tối đa 10Hz).
  • Bo mạch Arduino Uno R3 (vi điều khiển ATmega328P 8-bit, xung nhịp 16MHz).
  • Mạch điều khiển động cơ XY-160D (công suất tối đa 160W/kênh, hỗ trợ PWM 10kHz).
  • Động cơ DC JBG37 (12VDC, 303 RPM, encoder 363 xung/vòng sau hộp số giảm tốc 1:33).
  • Cảm biến góc/gia tốc GY-521 MPU6050.
  • Lý thuyết động học robot vi sai, cấu trúc hệ điều hành ROS (Master, Node, Topic, Service), giao thức rosserial, nguyên lý SLAM, giải thuật Hector SLAM và cấu trúc ROS Navigation Stack.

Chương 3: Phân tích và thiết kế hệ thống

Đi sâu vào quá trình hiện thực hóa mô hình từ bản vẽ đến lập trình:

  • Phân tích và thiết kế cơ khí 3 tầng trên SolidWorks (bố trí chi tiết các lỗ định vị động cơ 3.4mm, lỗ gắn mạch driver 4.9mm, lỗ gắn Jetson Nano 8.8mm, lỗ chân đế LiDAR 4.65mm).
  • Thiết lập cây biến đổi khung tọa độ tf liên kết giữa map, odom, base_footprint, base_link, laser và imu.
  • Xây dựng luồng dữ liệu odometry kết hợp giữa encoder và IMU qua nút robot_pose_ekf.
  • Lập trình nút điều khiển động cơ Serial_node, ánh xạ tín hiệu /cmd_vel thành giá trị điều chế xung PWM cấp cho động cơ.
  • Thiết lập tệp khởi chạy tổng thể jetson_nano_bot.launch, cấu hình 4 tệp YAML định nghĩa chi phí bản đồ Costmap, cấu hình định vị AMCL và xây dựng Web Server bằng Flask + Rosbridge.

Chương 4: Kết quả thực nghiệm

Đánh giá toàn diện các chức năng đã triển khai của mô hình:

  • Thực hiện quét và tái tạo thành công bản đồ 2D của phòng thử nghiệm bằng Hector SLAM kết hợp công cụ RViz.
  • Đánh giá khả năng bám quỹ đạo và tính toán đường đi của robot thông qua tính năng 2D Nav Goal trong hai môi trường thử nghiệm: không có vật cản và có vật cản.
  • Kiểm thử chức năng điều khiển robot từ xa qua giao diện web GRIMBOT WAITER (nhận diện đơn gọi món, gửi lệnh đưa thức ăn đến bàn ăn số 2, số 3 hoặc lái thủ công bằng joystick ảo).

Chương 5: Kết luận và hướng phát triển

Tổng kết các kết quả đạt được về mặt tích hợp cơ điện tử và điều khiển tự động; chỉ ra các điểm còn hạn chế về mặt thời gian khởi động, độ ổn định của đường truyền và tải trọng thực tế; đồng thời đề xuất các hướng nghiên cứu nâng cấp thuật toán và giao tiếp người - máy trong tương lai.


Kết quả và đóng góp

1. Kết quả thực nghiệm chính

Mô hình robot phục vụ đã hoàn thành việc tích hợp phần cứng và vận hành đầy đủ các nút chức năng trên nền tảng ROS. Khả năng tự hành đến tọa độ chỉ định được đánh giá định lượng qua 2 bảng thực nghiệm với 20 lần thử nghiệm cho mỗi kịch bản:

Bảng 1: Kết quả thực nghiệm trong môi trường không có vật cản

Loại đường đi Số lần thực nghiệm Tọa độ mong muốn $(x, y)$ (m) Tọa độ thực tế trung bình $(x, y)$ (m) Đánh giá sai số
Đường thẳng 20 $(2.34, 0.00)$ $(2.31, 0.04)$ Sai số nhỏ, robot bám sát quỹ đạo trục thẳng
Đường có rẽ 20 $(2.12, 1.85)$ $(2.05, 1.91)$ Độ lệch tăng nhẹ tại các góc quay đổi hướng

Bảng 2: Kết quả thực nghiệm trong môi trường có vật cản (vật cản tĩnh và người di chuyển)

Số lần thực nghiệm Tọa độ mong muốn $(x, y)$ (m) Tọa độ thực tế trung bình $(x, y)$ (m) Đánh giá sai số
20 $(2.98, 1.50)$ $(2.81, 1.63)$ Sai số định vị tăng lên do phải liên tục tính toán quỹ đạo cục bộ (Local Costmap) để tránh vật cản động

2. Đóng góp của đề tài

  • Hiện thực hóa thành công một mô hình robot phục vụ cụ thể theo kịch bản nhà hàng trên nền tảng mã nguồn mở ROS, kết nối trơn tru giữa phần cứng nhúng chi phí thấp (Arduino, Jetson Nano, RPLIDAR A1) với hệ thống điều khiển cấp cao.
  • Xây dựng thành công chuỗi xử lý khép kín: Quét bản đồ (Hector SLAM) $\rightarrow$ Hợp nhất dữ liệu cảm biến (EKF) $\rightarrow$ Định vị (AMCL) $\rightarrow$ Lập đường đi và né vật cản (move_base) $\rightarrow$ Tương tác người dùng từ xa qua Web (Flask + Rosbridge).
  • Cung cấp toàn bộ thiết kế cơ khí 3 tầng trên SolidWorks và cấu hình hệ thống tệp tin Launch/YAML làm tài liệu tham khảo cho các nghiên cứu robot tự hành bánh xe vi sai.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên các kết quả ghi nhận tại Chương 5, tác giả đã thẳng thắn nêu rõ các hạn chế kỹ thuật và đề ra hướng khắc phục như sau:

Hạn chế

  • Thời gian khởi động và thiết lập: Quá trình khởi chạy đồng thời nhiều nút ROS và thiết lập tham số ban đầu cho hệ thống còn mất nhiều thời gian.
  • Độ ổn định đường truyền và sai số định vị: Tín hiệu truyền thông giữa các phân hệ đôi lúc chưa thực sự ổn định; khi hoạt động trong môi trường có nhiều vật cản động phức tạp hoặc vật cản chuyển động chậm, sai số điểm dừng cuối (Goal Pose) còn khá cao do robot phải liên tục đổi hướng tính toán lại quỹ đạo.
  • Khả năng tải trọng: Do chỉ dừng lại ở quy mô mô hình thử nghiệm, kết cấu cơ khí và công suất động cơ chưa cho phép robot chuyên chở khối lượng thức ăn lớn hoặc đồ uống nặng.

Hướng nghiên cứu tiếp

  • Tối ưu động lực học: Nghiên cứu sâu hơn về mô hình động lực học của robot vi sai để hiệu chỉnh giải thuật điều khiển động cơ (PID/PWM), giúp việc chuyển hướng mượt mà và giảm thiểu tối đa sai số tích lũy của bánh xe.
  • Nâng cấp phần mềm và giao diện Web: Phát triển thêm các chức năng giám sát trạng thái vị trí trực quan của robot theo thời gian thực trên bản đồ Web; bổ sung quy trình phản hồi tương tác hai chiều khi giao nhận thức ăn tại bàn.
  • Hoàn thiện kịch bản phục vụ thông minh: Đơn giản hóa hành vi tránh chướng ngại vật động (ví dụ: đối với người đi bộ, lập trình cho robot tạm dừng chờ thay vì liên tục tìm đường vòng gây lệch hướng); bổ sung tính năng tương tác trực tiếp với thực khách.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo có giá trị ứng dụng thực hành cao đối với:

  • Sinh viên ngành Kỹ thuật Máy tính, Điện tử - Tự động hóa, Robot và Cơ điện tử: Cung cấp hướng dẫn từng bước về việc tích hợp ROS Navigation Stack lên phần cứng thực tế (NVIDIA Jetson Nano kết hợp Arduino Uno).
  • Người nghiên cứu và phát triển các hệ thống Robot tự hành (AGV/AMR): Cung cấp tài liệu tham khảo chi tiết về:
    • Thiết kế cây khung tọa độ tf cho mô hình bánh xe vi sai.
    • Cấu hình các lớp Costmap và giải thuật hợp nhất dữ liệu odometry bằng bộ lọc Kalman mở rộng (robot_pose_ekf).
    • Phương pháp xây dựng cầu nối giao tiếp Web - ROS thông qua rosbridge_suite để điều khiển robot từ xa không cần cài đặt phần mềm chuyên dụng trên máy khách.

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

1. Tại sao nhóm nghiên cứu lại lựa chọn thuật toán Hector SLAM thay vì các thuật toán SLAM khác để quét bản đồ ban đầu?

Theo trình bày của tác giả ở Chương 2, thuật toán Hector SLAM xác định vị trí robot dựa trên phương pháp đối sánh dữ liệu quét laser (scan matching) mà không bắt buộc phải sử dụng dữ liệu đo hình học từ bánh xe (odometry). Điều này giúp việc tạo bản đồ lưới 2D ban đầu đạt độ chính xác cao, rất phù hợp trong điều kiện khung tọa độ odometry của robot mô hình dễ bị trượt hoặc có sai số cơ khí lớn.

2. Dữ liệu Odometry hoàn chỉnh của robot được tạo ra từ những nguồn nào và xử lý bằng công cụ gì?

Dữ liệu Odometry hoàn chỉnh được hợp nhất từ hai nguồn độc lập: dữ liệu số xung (ticks) đếm được từ đĩa encoder của 2 động cơ DC (được nút ekf_odom_pub chuyển đổi thành dữ liệu độ dời) và dữ liệu góc quay, vận tốc góc từ cảm biến gia tốc quán tính GY-521 MPU6050 (gửi qua topic /imu/imu/data_raw). Hai luồng dữ liệu này được đưa vào nút robot_pose_ekf sử dụng thuật toán bộ lọc Kalman mở rộng (Extended Kalman Filter) để xuất ra topic dữ liệu hợp nhất /robot_pose_ekf/odom_combined.

3. Giao diện Web tương tác với robot hoạt động theo cơ chế nào để gửi lệnh vận tốc và tọa độ bàn?

Giao diện Web chạy trên nền server cục bộ viết bằng Python Flask. Để giao tiếp với hệ điều hành ROS, hệ thống sử dụng công cụ rosbridge_suite tạo một cổng WebSocket trung gian. Phía trình duyệt Web sử dụng thư viện JavaScript roslibjs để kết nối vào WebSocket này. Khi người dùng thao tác trên joystick ảo (tạo bởi nipplejs), tín hiệu điều khiển sẽ được publish thẳng vào topic /cmd_vel; khi người dùng nhấn chọn nút bàn ăn trên giao diện, tọa độ $(x, y)$ tương ứng của bàn ăn sẽ được gửi đến topic /move_base_simple/goal để robot bắt đầu tự hành.

4. Kết quả thực nghiệm cho thấy sự khác biệt như thế nào về độ chính xác khi robot hoạt động giữa môi trường có và không có vật cản?

Số liệu thực nghiệm tại Chương 4 ghi nhận: Trong môi trường không có vật cản, robot đạt độ chính xác cao với sai số rất nhỏ (đi thẳng 20 lần: tọa độ thực tế trung bình đạt $(2.31, 0.04)$ so với mục tiêu $(2.34, 0.00)$). Tuy nhiên, trong môi trường có vật cản (đặc biệt là vật cản động như người di chuyển), sai số tăng lên rõ rệt (20 lần thử nghiệm: tọa độ thực tế trung bình đạt $(2.81, 1.63)$ so với mục tiêu $(2.98, 1.50)$) do robot phải liên tục đổi hướng và tính toán lại đường đi cục bộ thông qua Local Costmap.


Kết luận

Khóa luận "Nghiên cứu và xây dựng mô hình robot phục vụ nhà hàng" của nhóm tác giả Nguyễn Ngọc Thảo và Danh Quốc Hào đã thiết kế và chế tạo thành công một mô hình robot tự hành vi sai hoạt động ổn định trên nền tảng ROS. Đề tài đã giải quyết trọn vẹn chuỗi kỹ thuật từ thiết kế cơ khí 3 tầng, mạch giao tiếp nhúng phần cứng, giải thuật lập bản đồ Hector SLAM, định vị AMCL, lập quỹ đạo tránh vật cản bằng move_base cho đến giao diện điều khiển Web thân thiện qua Rosbridge. Mặc dù vẫn còn một số hạn chế về thời gian thiết lập hệ thống, tải trọng và sai số trong môi trường động phức tạp, công trình đã thể hiện tính ứng dụng thực tiễn cao và đóng vai trò là một tài liệu kỹ thuật hữu ích cho việc phát triển các dòng robot dịch vụ trong nhà.