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

Khóa luận tốt nghiệp "Ứng dụng công nghệ định vị đồng thời lập bản đồ trên Robot" (Simultaneous Localization And Mapping (SLAM) in Mobile Robots) được thực hiện bởi sinh viên Trần Anh Minh (MSSV: 20521616) và Văn Nhật Minh (MSSV: 20521619), dưới sự hướng dẫn của thầy Phan Đình Duy và thầy Phạm Quốc Hùng tại Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh (năm 2024).

Lý do chọn đề tài xuất phát từ sự phát triển nhanh chóng của tự động hóa và kỹ thuật robot trong nhiều lĩnh vực như nông nghiệp, công nghiệp, dịch vụ và thám hiểm. Trong các hệ sinh thái này, robot tự hành có khả năng tự xác định đường đi và thiết lập bản đồ đóng vai trò trọng tâm. Mặc dù các nghiên cứu về robot tự động trên thế giới đã đạt được nhiều tiến bộ nhờ sự hỗ trợ của hệ điều hành Robot Operating System (ROS), việc nghiên cứu và làm chủ công nghệ này trong nước vẫn còn hạn chế và chưa ổn định. Đề tài được hình thành nhằm tạo cơ sở thực nghiệm hướng tới các ứng dụng phục vụ đời sống tại Việt Nam như robot vận chuyển vật liệu trong nhà xưởng, robot hút bụi và thiết bị hỗ trợ trong nhà thông minh.

Mục tiêu nghiên cứu được xác định cụ thể:

  1. Xây dựng một mô hình robot di động có khả năng tự động di chuyển và né tránh vật cản trong môi trường trong nhà.
  2. Ứng dụng các thuật toán SLAM để tự hoạch định đường đi, tự xác định tọa độ vị trí và vẽ hoàn chỉnh bản đồ môi trường di chuyển.
  3. Lưu trữ bản đồ bằng công cụ Map Server để phục vụ công tác điều hướng (navigation) tự động.

Đối tượng nghiên cứu là hệ thống robot di động dẫn động hai bánh vi sai tích hợp cảm biến khoảng cách laser (LIDAR), cảm biến quán tính (IMU), cảm biến đo góc quay (Encoder), vi điều khiển ESP32 và máy tính nhúng Nvidia Jetson Nano. Phạm vi nghiên cứu giới hạn trong không gian trong nhà (thực nghiệm tại hành lang trường học), sàn phẳng, cấu trúc vật cản tĩnh và động không quá phức tạp, với các linh kiện cơ khí được gia công thủ công.

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

Khóa luận kết hợp khung lý thuyết điều khiển tự động học, cơ cấu động học vi sai và nền tảng phần mềm trung gian mã nguồn mở dành cho robot:

  • Khung phần mềm ROS (Robot Operating System): Hoạt động trên nền tảng mạng phân tán theo mô hình đồ thị tính toán (Computation Graph) bao gồm các Master, Node, Topic, Message, Service, Parameter Server và Rosbag; phân cấp theo cấu trúc tệp hệ thống (Filesystem) với Packages, Manifests và Stacks.
  • Công nghệ LIDAR và SLAM: Nguyên lý đo thời gian bay (Time-of-Flight - TOF) của chùm tia laser phản xạ để tính khoảng cách và trích xuất đám mây điểm (point cloud). Thuật toán SLAM được hiện thực hóa qua gói phần mềm Gmapping (slam_gmapping), ứng dụng bộ lọc hạt (Particle Filter / Monte Carlo) để tạo bản đồ lưới chiếm dụng 2D (nav_msgs/OccupancyGrid) từ dữ liệu quét laser và Odometry.
  • Ngăn xếp điều hướng Move_base: Bao gồm bản đồ chi phí toàn cục (global_costmap), bản đồ chi phí cục bộ (local_costmap), bộ lập quỹ đạo toàn cục (global_planner), bộ lập quỹ đạo cục bộ (local_planner / DWA - Dynamic Window Approach) và cơ chế hành vi phục hồi (recovery_behaviors) giải tỏa không gian khi robot bị kẹt.
  • Gói khám phá biên tự động (frontier_exploration): Tận dụng plugin lớp costmap BoundedExploreLayer cùng kiến trúc actionlib (explore_client, explore_server) để tự động tìm kiếm vùng biên chưa biết.
  • Mô hình động học vi sai (Differential Drive) và Odometry: Vị trí robot $(x, y, \theta)$ được xấp xỉ qua các cung tròn chuyển động với độ dịch chuyển tâm $d_{center} = (d_{left} + d_{right}) / 2$, vận tốc dài trích xuất từ Encoder bánh xe và vận tốc góc đo từ cảm biến IMU MPU-6050.
  • Giải thuật điều khiển hồi tiếp PID: Ổn định và đồng tốc hai động cơ chấp hành dựa trên phản hồi xung Encoder, hiệu chỉnh tham số theo phương pháp Ziegler-Nichols.

Phương pháp nghiên cứu thực nghiệm bao gồm: thiết kế và tích hợp phần cứng - phần mềm phân tầng; khảo sát sai số phần trăm giữa khoảng cách vật lý thực tế và thông số Odometry thu nhận; đo đạc khả năng lập bản đồ và điều hướng trong hai kịch bản môi trường hành lang (không có vật cản và có vật cản xuất hiện).

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

Hệ thống được thiết kế theo cấu trúc phần cứng ba tầng độc lập, kích thước tổng thể $20 \times 20 \times 22\text{ cm}$, sử dụng vật liệu bìa foamx giúp giảm trọng lượng và hạn chế nhiễu điện từ so với khung kim loại:

  • Tầng 1 (tầng đáy): Chứa 2 động cơ DC Servo, mạch điều khiển động cơ L298N, vi điều khiển ESP32, mạch hạ áp LM2596, cầu chì, 2 bánh xe chủ động đường kính 65 mm và 2 bánh xe đa hướng giữ thăng bằng.
  • Tầng 2 (tầng giữa): Chứa máy tính nhúng Nvidia Jetson Nano B01, mạch quản lý nguồn UPS Module 3S và màn hình hiển thị 7 inch HDMI LCD.
  • Tầng 3 (tầng đỉnh): Bố trí cảm biến RPLIDAR A1M8 làm trung tâm quét nhận diện môi trường xung quanh.

Cụm động cơ và bánh xe chủ động được bố trí lệch về phía trước khung xe, đưa trọng tâm xoay về điểm chính giữa đoạn nối hai bánh chủ động (tương tự thiết kế Waffle Pi của dòng Turtlebot), giúp robot linh hoạt vượt qua các góc hẹp mà không bị cấn khung.

Thành phần phần cứng Model / Thông số kỹ thuật chi tiết Vai trò chức năng
Máy tính nhúng Nvidia Jetson Nano Developer Kit B01 (Quad-core ARM A57 @ 1.43 GHz, GPU 128-core Maxwell, 4GB LPDDR4, công suất 5W) Xử lý cấp cao: chạy ROS Core, tính toán thuật toán SLAM, Localization và Move_base
Cảm biến khoảng cách SLAMTEC RPLIDAR A1M8 (Quét tam giác Laser DTOE 360°, cự ly 0.15–12m, tần số 5.5Hz, tốc độ lấy mẫu 8000 điểm/s, độ phân giải góc <1°) Thu thập dữ liệu đám mây điểm, nhận diện vật cản phục vụ lập bản đồ
Vi điều khiển cấp thấp Ai-Thinker ESP32-S NodeMCU-32S (Xtensa Dual-core 32-bit, Wi-Fi 802.11 b/g/n, BLE 4.2, giao tiếp UART/I2C/SPI) Đọc Encoder, giao tiếp IMU, chạy ngắt timer tính Odometry và thuật toán PID
Động cơ chấp hành 2x DC Servo JGB37-520 (12VDC, 110 RPM không tải, 85 RPM có tải, tỷ số truyền 90:1, mô-men định mức 10 kg.cm, cực đại 15 kg.cm) Tạo lực kéo chuyển động độc lập cho hai bánh xe chủ động
Cảm biến góc quay Encoder đĩa từ Hall 2 kênh A-B trên JGB37-520 (11 xung/kênh/vòng $\times$ 90:1 = 990 xung/vòng sau hộp số) Đo vận tốc và chiều quay của từng bánh xe để phản hồi cho bộ PID
Cảm biến quán tính MPU-6050 (6 trục: con quay hồi chuyển $\pm 250^\circ/s$ đến $\pm 2000^\circ/s$, gia tốc kế $\pm 2g$ đến $\pm 16g$, giao tiếp I2C) Cung cấp vận tốc góc và gia tốc góc phục vụ tính toán trạng thái định vị
Mạch công suất Cầu H kép L298N (Điện áp hoạt động 5V–30V, dòng định mức 2A/kênh, công suất tối đa 25W) Nhận tín hiệu điều khiển từ ESP32 để cấp dòng cho 2 động cơ DC
Mạch nguồn động lực Pin LiPo 3S 11.1V (gồm 3 cell mắc nối tiếp, dung lượng 1500mAh, dòng xả 35C tương đương 52A, đầu nối XT60) Cung cấp nguồn 12V cho động cơ DC qua mạch L298N
Mạch nguồn máy tính UPS Module 3S (lắp 3 pin Li-ion 18650, ngõ ra 5V 5A và 3.3V 300mA, sạc ngõ vào 12.6V 2A) Cấp nguồn 5V ổn định cho Jetson Nano, chống sụt áp khi động cơ khởi động
Màn hình hiển thị Màn hình LCD rời 7 inch cổng HDMI (cảm ứng, độ phân giải hỗ trợ hiển thị giao diện RViz) Giám sát trạng thái hoạt động và thao tác lệnh trực tiếp trên robot

Về mặt phần mềm, luồng dữ liệu thời gian thực được tổ chức phân tầng. Vi điều khiển ESP32 sử dụng hai ngắt timer phần cứng: ngắt 10ms (timer10ms_interrupt) tính toán Odometry và thực thi bộ điều khiển PID; ngắt 1ms (timer1ms_interrupt) thu thập dữ liệu gia tốc và góc quay từ MPU-6050, trích xuất dữ liệu JointState. ESP32 giao tiếp với Jetson Nano thông qua giao thức rosserial qua cổng UART.

Tên Package trên ROS Tên Node thực thi Topic đăng tải (Publish) Topic đăng ký (Subscribe) Chức năng cụ thể
rplidar_ros /rplidar /scan Không có Giao tiếp phần cứng RPLIDAR A1 qua UART, xuất dữ liệu tia laser
rosserial_arduino /serial_node /joint_states, /odom_noisy, /imu Không có Cầu nối UART nhận dữ liệu Encoder và IMU từ vi điều khiển ESP32
myrobot_controller /myrobot_controller /Left_wheel_right/command, /Right_wheel_right/command /cmd_vel Tiếp nhận lệnh vận tốc điều hướng, chuyển đổi thành lệnh điều khiển bánh xe
myrobot_localization /myrobot_localization /tf, /odom /odom_noisy, /imu Ứng dụng EKF/UKF dung hợp dữ liệu IMU và Odometry khử nhiễu
myrobot_slam_gmapping /myrobot_slam_gmapping /map /scan, /odom Tiếp nhận LaserScan và Odometry chuẩn hóa để xây dựng bản đồ chiếm dụng
myrobot_move_base /myrobot_move_base /cmd_vel /scan, /map, /odom, /PoseStamped Định tuyến toàn cục/cục bộ, điều khiển chuyển động né vật cản
myrobot_frontier_explore /myrobot_frontier_explore /PoseStamped Không có Xác định tọa độ biên chưa khám phá, gửi điểm mục tiêu cho move_base
map_server /map_server /map Không có Lưu trữ tệp bản đồ .yaml/.pgm và phân phối lại cho hệ thống điều hướng

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

Chương 1. Tổng quan đề tài

Chương này trình bày tính cấp thiết của tự động hóa và phát triển robot di động trong công nghiệp, dịch vụ và đời sống sinh hoạt. Tác giả phân tích các ứng dụng thực tế từ phạm vi vĩ mô đến môi trường vi mô như nhà kho, nhà xưởng và căn hộ thông minh. Mục tiêu cốt lõi được xác lập là chế tạo robot di động tự lập bản đồ bằng SLAM và di chuyển tránh va chạm bằng các node điều khiển trên máy tính nhúng. Luồng dữ liệu hệ thống được chia thành: dữ liệu đầu vào (Lidar, Odometry, IMU MPU-6050, JointState, TF), quá trình xử lý trung tâm (ESP32 điều khiển vòng kín và Jetson Nano chạy các thuật toán SLAM/Move_base trên nền ROS), và dữ liệu đầu ra (bản đồ chiếm dụng 2D hoàn chỉnh cùng lệnh vận tốc điều hướng cmd_vel). Tác giả cũng chỉ rõ các giới hạn ban đầu về khả năng lọc nhiễu, hạn chế góc quay hẹp và sai số kết cấu do chế tạo thủ công.

Chương 2. Cơ sở lý thuyết

Nội dung chương tập trung giải thích chi tiết nền tảng công nghệ và lý thuyết tính toán:

  • Kiến trúc ROS: Phân tích 3 tầng Filesystem, Computation Graph và Community. Chi tiết hóa phương thức giao tiếp hướng thông điệp peer-to-peer thông qua Master, Node, Topic, Service và Parameter Server.
  • Cảm biến LIDAR: Phân tích nguyên lý tạo dữ liệu đám mây điểm (point cloud) từ chùm tia hồng ngoại gần, cấu tạo gồm nguồn phát laser, bộ quét quang cơ và cảm biến thu nhận tín hiệu phản xạ. Liệt kê toàn bộ thông số hoạt động của cảm biến khoảng cách RPLIDAR A1M8 (cự ly 0.15–12m, tần số quét 5.5Hz, tốc độ lấy mẫu 8K).
  • Thuật toán SLAM và Gmapping: Trình bày cơ sở toán học của bài toán ước lượng tư thế robot và vị trí vật mốc bằng bộ lọc Kalman, bộ lọc hạt (Particle Filter) và kỹ thuật ước tính xấp xỉ MAP. Phân tích nguyên lý chuyển đổi dữ liệu quét laser thành lưới bản đồ chiếm dụng 2D bằng node slam_gmapping.
  • Ngăn xếp Move_base và Frontier Exploration: Phân tích sơ đồ liên kết giữa global_costmap, local_costmap, global_planner, local_planner và chuỗi hành vi phục hồi khi robot bị kẹt (xóa vật cản ngoài vùng quy định, xoay tại chỗ, xóa vật cản diện rộng, hủy bỏ hành vi). Trình bày cơ chế tìm kiếm biên khám phá tự động thông qua hai dịch vụ UpdatePolygonBoundary và GetNextFrontier.
  • Khảo cứu phần cứng: Trình bày cấu trúc vi kiến trúc của vi điều khiển ESP32-S, máy tính nhúng Nvidia Jetson Nano B01 (128 nhân Maxwell, ARM A57), mạch cầu H L298N, động cơ DC Servo JGB37-520 kèm hộp giảm tốc 90:1 và cảm biến góc quay từ trường Hall.

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

Chương 3 trình bày các quyết định thiết kế kỹ thuật then chốt:

  • Thiết kế cơ khí: Chuyển đổi từ khung xe bánh xích sang mô hình hình hộp 3 tầng dẫn động vi sai 2 bánh chủ động kết hợp 2 bánh đa hướng bằng vật liệu bìa foamx. Bố trí vị trí động cơ dịch về phía trước để đưa tâm quay trùng với trung điểm hai bánh chủ động (theo mô hình Turtlebot Waffle Pi), cho phép robot xoay tròn tại chỗ mà không bị cấn khung.
  • Kiến trúc phần mềm phân tầng: Xây dựng sơ đồ phân luồng dữ liệu giữa tầng máy tính nhúng Jetson Nano (giao tiếp người dùng qua RViz, thực thi SLAM) và tầng vi điều khiển ESP32 (xử lý ngắt timer phần cứng đọc cảm biến và điều khiển động cơ).
  • Tính toán Odometry vi sai: Xây dựng công thức hình học xấp xỉ chuyển động xe thành các cung tròn trong khoảng thời gian vi phân ngắn. Vận tốc dài trung bình được tính bằng trung bình cộng quãng đường hai bánh xe $d_{center} = (d_{left} + d_{right}) / 2$, kết hợp với khoảng cách giữa hai bánh xe $d_{baseline}$ và dữ liệu vận tốc góc từ IMU MPU-6050 để xác định tọa độ vị trí $(x, y, \theta)$.
  • Thuật toán điều khiển PID: Thiết lập bộ điều khiển PID hồi tiếp tốc độ động cơ trên ESP32, sử dụng phương pháp Ziegler-Nichols để xác định các hệ số khuếch đại, triệt tiêu sai số xác lập và rút ngắn thời gian đáp ứng của hai bánh xe.

Chương 4. Thực nghiệm và đánh giá

Chương này mô tả quá trình kiểm thử hệ thống trong thực tế:

  • Cài đặt môi trường: Thiết lập hệ điều hành ROS trên Jetson Nano và máy tính cá nhân, cấu hình kết nối mạng nội bộ phân tán và xác định thứ tự chạy các lệnh khởi động Map và Navigation.
  • Đánh giá chất lượng lập bản đồ: Tiến hành quét thực nghiệm tại khu vực hành lang trường học. So sánh trực quan giữa bản đồ thực tế và bản đồ 2D xuất ra từ thuật toán Gmapping cho thấy sự tương đồng cao về biên dạng tường, các góc rẽ và độ rộng hành lang.
  • Đánh giá khả năng điều hướng: Kiểm tra tính năng tự định tuyến và di chuyển của robot trong hai kịch bản: môi trường hành lang trống (không có vật cản) và môi trường có chướng ngại vật xuất hiện ngẫu nhiên trên đường đi. Ghi nhận khả năng tự cập nhật bản đồ chi phí costmap cục bộ để điều khiển robot né vật cản an toàn.
  • Đánh giá sai số định vị: Trích xuất dữ liệu tọa độ từ terminal khi chạy thuật toán localization, so sánh khoảng cách đo đạc vật lý thực tế với giá trị Odometry ước tính để tính toán phần trăm sai số di chuyển.

Chương 5. Kết luận và kiến nghị

Tổng kết các kết quả đạt được về mặt tích hợp hệ thống, khẳng định mô hình robot đã đáp ứng các yêu cầu thiết kế ban đầu về lập bản đồ và tự hành. Đánh giá khách quan các ưu điểm về tính module hóa của ROS, đồng thời chỉ rõ các hạn chế tồn đọng về kết cấu cơ khí thủ công, độ rung lắc khi di chuyển và khả năng xử lý góc quay hẹp.

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

Khóa luận đã hoàn thành các nội dung kỹ thuật thực nghiệm:

  • Xây dựng thành công mô hình phần cứng robot di động 3 tầng kích thước $20 \times 20 \times 22\text{ cm}$, vận hành ổn định trên hệ thống nguồn kép (pin LiPo 3S 11.1V 1500mAh 35C cho động cơ và UPS Module 3S cấp dòng 5A liên tục cho Jetson Nano).
  • Lập trình cấu hình hoàn chỉnh các gói phần mềm trên ROS: tự tạo hai gói điều khiển myrobot_description (mô tả hình học URDF) và myrobot_controller; tích hợp thành công các gói kế thừa gồm rplidar_ros, rosserial, myrobot_localization (sử dụng ekf_localization_node), myrobot_slam_gmapping, myrobot_move_base và myrobot_frontier_explore.
  • Thuật toán SLAM Gmapping dựng được bản đồ dạng lưới chiếm dụng 2D của hành lang thực tế, phản ánh chính xác cấu trúc hình học không gian và lưu trữ ổn định qua map_server.
  • Ngăn xếp move_base kết hợp bộ điều khiển PID hồi tiếp trên ESP32 giúp robot tự động bám quỹ đạo di chuyển theo mục tiêu đặt trước, tự động tính toán tránh chướng ngại vật tĩnh và động trong môi trường trong nhà.
  • Thu thập dữ liệu thực nghiệm kiểm chứng Odometry và đánh giá sai số định vị trích xuất trực tiếp từ terminal của node điều hướng.

Các giải pháp kỹ thuật do tác giả đề xuất:

  • Tách biệt hai hệ thống nguồn điện độc lập bằng mạch UPS Module 3S nhằm loại bỏ hoàn toàn hiện tượng sụt áp làm tắt Jetson Nano khi 2 động cơ DC khởi động tiêu thụ dòng lớn.
  • Bố trí trọng tâm xoay của xe nằm tại trung điểm hai bánh chủ động ở phần đầu xe, giảm thiểu bán kính quét đuôi xe khi xoay tại chỗ.
  • Phân chia nhiệm vụ xử lý thời gian thực: đẩy toàn bộ các tác vụ ngắt đọc cảm biến tần số cao (1ms, 10ms) và tính toán PID sang vi điều khiển ESP32, giải phóng tài nguyên tính toán của Jetson Nano cho các thuật toán xử lý dữ liệu đám mây điểm laser và lập bản đồ chi phí.

Đóng góp của khóa luận nằm ở việc hiện thực hóa một mô hình mẫu hoàn chỉnh về tích hợp hệ thống robot SLAM sử dụng linh kiện phần cứng nhúng giá thành thấp, cung cấp tài liệu kỹ thuật chi tiết về cấu hình liên kết các node và topic ROS trong bài toán tự hành trong nhà.

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

Các hạn chế được văn bản ghi nhận bao gồm:

  • Khả năng lọc và xử lý tín hiệu nhiễu cảm biến trong một số điều kiện môi trường vẫn còn hạn chế.
  • Khả năng xoay xở của xe tại các góc không gian quá nhỏ hẹp còn gặp khó khăn, đôi khi vẫn xảy ra hiện tượng kẹt khung.
  • Quá trình di chuyển thực tế chịu tác động của các yếu tố ngoại lực và động lực học (hiện tượng ma sát thay đổi, trượt bánh xe trên mặt sàn làm phát sinh sai số tích lũy cho Odometry).
  • Khung xe được gia công thủ công bằng bìa foamx nên độ chính xác cơ khí, độ bền và tính chịu lực chưa đạt mức tuyệt đối.
  • Hệ thống chỉ sử dụng duy nhất một cảm biến LIDAR quét trên một mặt phẳng 2D ngang, do đó robot chỉ hoạt động ổn định trên địa hình sàn phẳng và không có khả năng phát hiện các vật cản nằm cao hơn hoặc thấp hơn mặt phẳng quét của tia laser.

Hướng nghiên cứu tiếp theo dựa trên phạm vi đề tài là hoàn thiện kết cấu cơ khí bằng vật liệu bền vững hơn, tối ưu thuật toán xử lý nhiễu cho Odometry và bổ sung cảm biến nhận diện đa tầng nhằm nâng cao độ an toàn khi di chuyển.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo thực nghiệm phù hợp cho:

  • Sinh viên và học viên chuyên ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Tự động hóa và Cơ điện tử đang thực hiện đồ án, luận văn về xe tự hành trong nhà (AGV), robot dịch vụ hoặc các hệ thống định vị SLAM.
  • Các nhà phát triển hệ thống nhúng cần tài liệu hướng dẫn cụ thể về việc kết nối và truyền nhận dữ liệu giữa vi điều khiển ESP32 và máy tính nhúng Nvidia Jetson Nano thông qua thư viện rosserial.

Các phần có giá trị tham khảo cao nhất trong tài liệu gồm: phương pháp giải thuật tính toán Odometry vi sai từ Encoder và IMU MPU-6050; bảng cấu hình chi tiết các tham số publish/subscribe giữa các package ROS; giải pháp thiết kế mạch nguồn phân lập chống sụt áp cho máy tính nhúng; và quy trình thiết lập ngắt timer phần cứng phục vụ điều khiển PID động cơ DC trên ESP32.

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

1. Cảm biến RPLIDAR A1M8 sử dụng trên robot có các thông số kỹ thuật hoạt động như thế nào?

Cảm biến RPLIDAR A1M8 do hãng SLAMTEC sản xuất, hoạt động dựa trên nguyên lý quét tam giác laser (DTOE). Cảm biến có góc quét toàn vòng 360 độ, phạm vi đo khoảng cách từ 0,15m đến 12m, tần số quét 5,5Hz và tốc độ lấy mẫu đạt 8000 điểm trong một giây (8K). Độ chính xác đo lường của cảm biến đạt mức sai số dưới 1% trong phạm vi cự ly nhỏ hơn 3m, 2% trong phạm vi từ 3m đến 5m, và 2,5% trong phạm vi từ 5m đến 12m. Thiết bị tiêu thụ điện áp 5V, dòng điện 100mA, công suất 0,5W và giao tiếp với máy tính nhúng thông qua cổng UART Serial.

2. Tại sao nhóm tác giả phải thay đổi kết cấu khung xe từ bánh xích sang hệ dẫn động hai bánh vi sai?

Ban đầu nhóm tác giả sử dụng khung hình hộp chữ nhật chạy hệ bánh xích/4 bánh, tuy nhiên qua thực nghiệm nhận thấy việc điều khiển 4 bánh xe rất khó khăn, chuyển động không linh hoạt và không đáp ứng được mục tiêu di chuyển trong các góc hẹp. Nhóm đã đổi sang kết cấu khung hộp bằng bìa foamx với 2 bánh xe chủ động lắp động cơ độc lập kết hợp 2 bánh xe đa hướng. Thiết kế này giúp dời trọng tâm xoay của xe về chính giữa đoạn thẳng nối hai bánh chủ động (tham khảo từ robot Waffle Pi của Turtlebot), cho phép robot xoay tròn tại chỗ thuận lợi, giảm thiểu va chạm khung xe khi di chuyển qua các khúc cua hẹp.

3. Vi điều khiển ESP32 xử lý dữ liệu cảm biến và điều khiển động cơ với chu kỳ thời gian ra sao?

Trên ESP32, nhóm tác giả thiết lập hai ngắt timer phần cứng độc lập:

  • Ngắt timer10ms_interrupt (chu kỳ 10ms): Thực thi thuật toán điều khiển hồi tiếp PID cho hai động cơ DC và tính toán các thông số Odometry từ số xung Encoder đọc được.
  • Ngắt timer1ms_interrupt (chu kỳ 1ms): Đọc dữ liệu gia tốc và góc quay từ cảm biến IMU MPU-6050, thực hiện tính toán góc hướng, đồng thời trích xuất dữ liệu trạng thái khớp nối JointState để gửi lên Jetson Nano qua node /serial_node.

4. Hệ thống ngăn ngừa hiện tượng sụt áp làm tắt máy tính nhúng Jetson Nano bằng phương pháp nào?

Khi khởi động hoặc đảo chiều, hai động cơ DC Servo JGB37-520 có thể tiêu thụ dòng điện cực đại lên tới 2,3A mỗi động cơ, dễ gây hiện tượng sụt áp nguồn hệ thống. Nhóm tác giả đã giải quyết vấn đề này bằng cách thiết kế hai hệ thống nguồn cấp điện riêng biệt: một bộ pin LiPo 3S 11.1V dung lượng 1500mAh (dòng xả 35C chịu tải tức thời lên đến 52A) chuyên cấp điện cho động cơ thông qua mạch cầu H L298N; và một mạch UPS Module 3S (lắp 3 pin Li-ion 18650) với tính năng điều chỉnh ngõ ra 5V liên tục lên đến 5A dành riêng cho máy tính nhúng Jetson Nano.

5. Gói điều hướng move_base xử lý như thế nào khi robot gặp chướng ngại vật hoặc rơi vào trạng thái mắc kẹt?

Khi robot bị mắc kẹt, node move_base sẽ tự động kích hoạt chuỗi hành vi phục hồi (recovery_behaviors) theo các bước tuần tự:

  1. Xóa toàn bộ các chướng ngại vật nằm bên ngoài vùng không gian quy định ra khỏi bản đồ chi phí costmap của robot.
  2. Thực hiện lệnh điều khiển cho robot xoay tròn tại chỗ để tự tìm hướng thoát ra khỏi không gian hẹp.
  3. Nếu xoay tại chỗ thất bại, hệ thống sẽ thực hiện thao tác mạnh hơn là xóa toàn bộ các vật cản nằm bên ngoài khu vực hình chữ nhật tối thiểu mà xe có thể xoay, sau đó tiến hành xoay tại chỗ lần thứ hai.
  4. Nếu tất cả các bước trên đều không thành công, move_base sẽ xác định mục tiêu điều hướng là không khả thi, hủy bỏ hành vi (Aborted) và gửi thông báo lỗi đến người dùng.

Kết luận

Khóa luận tốt nghiệp của sinh viên Trần Anh Minh và Văn Nhật Minh đã nghiên cứu, chế tạo và thử nghiệm thành công mô hình robot di động tự hành ứng dụng công nghệ định vị đồng thời lập bản đồ (SLAM) trong môi trường trong nhà. Bằng việc kết hợp hệ điều hành ROS trên máy tính nhúng Nvidia Jetson Nano B01 với vi điều khiển ESP32, cảm biến RPLIDAR A1M8 và IMU MPU-6050, hệ thống đã giải quyết hoàn chỉnh bài toán thu nhận dữ liệu cảm biến, tính toán Odometry vi sai, điều khiển PID động cơ và xây dựng bản đồ chiếm dụng 2D qua thuật toán Gmapping. Kết quả thực nghiệm tại hành lang trường học khẳng định khả năng lập bản đồ trực quan, tự hoạch định quỹ đạo và né tránh chướng ngại vật hiệu quả, cung cấp cơ sở kỹ thuật thực tiễn cho việc phát triển các dòng robot tự hành phục vụ đời sống và sản xuất.