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

Trong xu thế phát triển mạnh mẽ của cuộc Cách mạng Công nghiệp lần thứ tư, robot tự hành (Autonomous Mobile Robot - AMR) và các hệ thống xe tự hành dẫn đường (AGV) đóng vai trò then chốt trong chuỗi cung ứng, kho vận thông minh và logistics tự động hóa. Việc ứng dụng robot thay thế sức người trong các môi trường làm việc khắc nghiệt, lặp đi lặp lại hoặc đòi hỏi độ chính xác cao giúp nâng cao năng suất lao động và giảm thiểu rủi ro tai nạn nghề nghiệp. Trên thế giới, các mô hình robot tự hành vận chuyển hàng hóa đã được triển khai rộng rãi bởi các tập đoàn lớn như Amazon, Syrius Robotics hay Brightpick. Tại Việt Nam, nhiều doanh nghiệp thương mại điện tử và logistics như Tiki cũng đã bước đầu ứng dụng robot vào quy trình phân loại và vận chuyển nội kho. Tuy nhiên, việc phát triển các giải pháp robot vừa có khả năng tự hành linh hoạt trong không gian hẹp, vừa có khả năng định vị chính xác vị trí kệ hàng ở cự ly gần để tự động chuyển giao hàng hóa vẫn là một bài toán kỹ thuật phức tạp đối với các cơ sở đào tạo và doanh nghiệp trong nước.

Xuất phát từ thực tiễn trên, đề tài đồ án tốt nghiệp "Thiết kế và điều khiển robot di động chuyển hàng lên kệ" được thực hiện tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh nhằm nghiên cứu, chế tạo và thử nghiệm một mô hình robot di động tự hành có khả năng lập bản đồ, tự định vị, điều hướng tránh vật cản và kết hợp thị giác máy tính để đưa hàng lên kệ chính xác.

Mục tiêu nghiên cứu của đồ án bao gồm:

  1. Thiết kế và chế tạo mô hình robot tự hành hai bánh vi sai tích hợp cơ cấu nâng và đẩy hàng lên kệ, có khả năng di chuyển đến vị trí mục tiêu định trước và né tránh vật cản trên đường đi.
  2. Vận dụng kiến thức liên ngành về mô hình hóa động học robot, thuật toán điều khiển tự động, hệ điều hành robot (ROS) và kỹ thuật thị giác máy tính vào một hệ thống phần cứng thực tế.
  3. Ứng dụng công nghệ xử lý ảnh kết hợp mã định danh quang học ArUco để tính toán chính xác khoảng cách và góc lệch tương đối giữa robot và kệ hàng, hỗ trợ quá trình cập kệ và chuyển hàng.
  4. Xây dựng giao diện web giám sát, điều khiển và liên lạc với robot từ xa thông qua mạng Internet.

Nhiệm vụ nghiên cứu cụ thể bao gồm:

  1. Tính toán mô hình động học thuận và động học nghịch cho hệ robot di động hai bánh vi sai.
  2. Nghiên cứu kiến trúc hệ điều hành ROS (Robot Operating System), ứng dụng các công cụ mô phỏng Gazebo và trực quan hóa dữ liệu Rviz.
  3. Nghiên cứu thuật toán điều khiển phản hồi PID để ổn định vận tốc động cơ dẫn động dựa trên tín hiệu encoder.
  4. Thiết kế mô hình 3D trên phần mềm SolidWorks và xuất sang định dạng URDF để mô phỏng.
  5. Thi công kết cấu cơ khí phần cứng gồm cụm chuyển động thân dưới và cơ cấu nâng - đẩy hàng thân trên.
  6. Xây dựng bản đồ môi trường thực tế (SLAM) sử dụng cảm biến quét laser 2D (LiDAR).
  7. Cấu hình và triển khai ngăn xếp điều hướng (2D Navigation Stack) kết hợp thuật toán tìm đường toàn cục Dijkstra và thuật toán tránh vật cản cục bộ Dynamic Window Approach (DWA).
  8. Lập trình chương trình xử lý ảnh trên nền tảng Python, thực hiện hiệu chỉnh camera và nhận diện mã ArUco phục vụ điều hướng thứ cấp.
  9. Thiết kế giao diện web điều khiển bằng React kết nối qua WebSocket và thiết lập kết nối điều khiển từ xa qua giao thức Remote Desktop Protocol (RDP).

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

  • Đối tượng nghiên cứu: Mô hình robot di động hai bánh vi sai (Differential Drive Robot) tích hợp cơ cấu nâng - đẩy hàng hai bậc tự do và hệ thống tính toán nhúng hai tầng (Raspberry Pi 4 và Arduino Mega 2560).
  • Phạm vi không gian: Không gian trong nhà, thử nghiệm thực tế tại phòng học C304, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh.
  • Phạm vi thời gian: Đồ án được triển khai thực hiện từ ngày 22/02/2024 đến ngày 25/06/2024.
  • Giới hạn đề tài: Do kinh phí thực hiện có hạn, mô hình robot được chế tạo ở kích thước thử nghiệm nhỏ, chỉ phù hợp tải các loại hàng hóa nhẹ. Về mặt cảm biến, kết cấu khung che khuất khiến cảm biến LiDAR chỉ quét được góc 220° (từ -110° đến +110° thay vì 360°); đồng thời hệ thống chưa trang bị cảm biến tiệm cận phía sau nên không thể nhận diện vật cản khi robot chuyển động lùi.

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

Khung lý thuyết và mô hình toán học

Nghiên cứu sử dụng mô hình toán học của hệ robot di động hai bánh vi sai thuộc hệ ràng buộc phi holonomic (non-holonomic constraints). Chuyển động của robot được điều khiển bằng cách thay đổi độc lập vận tốc góc của hai bánh xe dẫn động bên trái ($V_l$) và bên phải ($V_r$). Robot quay quanh một tâm quay tức thời (Instantaneous Center of Curvature - ICC).

Mối quan hệ giữa vận tốc tuyến tính $v$, vận tốc góc $\omega$, bán kính quay $R$ và khoảng cách giữa hai bánh xe $l$ được thiết lập qua các phương trình:

  • Vận tốc trung bình của robot: $v = \frac{V_r + V_l}{2}$
  • Vận tốc góc của robot: $\omega = \frac{V_r - V_l}{l}$
  • Bán kính cong từ tâm ICC đến điểm giữa trục hai bánh: $R = \frac{l}{2} \cdot \frac{V_l + V_r}{V_r - V_l}$

Trong bài toán động học thuận, từ vị trí hiện tại $(x, y, \theta)$ và vận tốc của từng bánh đọc được từ encoder, tọa độ tiếp theo của robot sau khoảng thời gian $\Delta t$ được xác định dựa trên tích phân vận tốc chuyển động. Đối với động học nghịch, từ vector vận tốc điều khiển mong muốn $(v, \omega)$, hệ thống phân giải thành vận tốc đặt cho động cơ trái và động cơ phải: $$V_r = v + \frac{\omega \cdot l}{2}$$ $$V_l = v - \frac{\omega \cdot l}{2}$$

Các trường hợp chuyển động đặc biệt được phân tích bao gồm: khi $V_l = V_r > 0$, robot tịnh tiến thẳng; khi $V_l = V_r < 0$, robot lùi thẳng; khi $V_l = -V_r$, robot quay tại chỗ quanh trung điểm trục bánh; khi một bánh dừng và một bánh quay, robot quay quanh tâm của bánh xe đang dừng với bán kính $l/2$.

Nền tảng hệ điều hành robot (ROS) và ngăn xếp điều hướng (2D Navigation Stack)

Hệ thống phần mềm được tổ chức dựa trên ROS 1 trên hệ điều hành Ubuntu. Kiến trúc ROS được phân chia thành ba cấp độ:

  1. ROS Filesystem Level: Quản lý tài nguyên lưu trữ gồm Packages (chứa mã nguồn, node, file cấu hình), Metapackages, Stacks và Messages định nghĩa cấu trúc dữ liệu.
  2. ROS Computation Graph Level: Quản lý quá trình truyền thông ngang hàng giữa các tiến trình thông qua Master (roscore), các Nodes, Parameter Server, Topics (cơ chế Publish/Subscribe), Services (cơ chế Request/Response) và ROS Bags (lưu trữ và phát lại dữ liệu cảm biến).
  3. ROS Community Level: Hệ thống chia sẻ kho mã nguồn và tài liệu chuẩn từ cộng đồng ROS toàn cầu.

Ngăn xếp điều hướng 2D Navigation Stack chịu trách nhiệm tiếp nhận dữ liệu đo đạc từ cảm biến LaserScan, thông tin định vị biến đổi khung toạ độ tf, dữ liệu ước lượng vị trí Odometry từ bánh xe và cảm biến quán tính IMU để điều khiển robot di chuyển tới đích. Trong đó:

  • Costmap 2D: Sử dụng bản đồ chi phí hai chiều chia thành Global Costmap (bản đồ toàn cục tĩnh dựa trên khung tham chiếu map) và Local Costmap (bản đồ cục bộ thời gian thực dạng cửa sổ cuộn Rolling Window dựa trên khung tham chiếu odom). Thông số bán kính lạm phát (inflation_radius) được thiết lập để giữ khoảng cách an toàn giữa robot và biên vật cản.
  • Global Planner (Thuật toán Dijkstra): Lập kế hoạch đường đi toàn cục ngắn nhất từ điểm xuất phát đến điểm đích dựa trên ma trận lưới pixel của bản đồ môi trường, với giả định trọng số các cạnh không âm và chướng ngại vật có chi phí vô cùng.
  • Local Planner (Thuật toán Dynamic Window Approach - DWA): Lập kế hoạch chuyển động cục bộ và tránh vật cản động theo thời gian thực. DWA tính toán không gian vận tốc có thể đạt được trong khoảng thời gian kế tiếp dựa trên giới hạn gia tốc của động cơ. Quỹ đạo robot được xấp xỉ bằng các cung tròn ứng với các cặp vận tốc $(v, \omega)$. Hàm mục tiêu đánh giá tối ưu hóa quỹ đạo có dạng: $$G(v, \omega) = \sigma \left( \alpha \cdot \text{heading}(v, \omega) + \beta \cdot \text{dist}(v, \omega) + \gamma \cdot \text{vel}(v, \omega) \right)$$ Trong đó: $\text{heading}$ đánh giá góc hướng tới mục tiêu, $\text{dist}$ là khoảng cách đến vật cản gần nhất trên quỹ đạo, $\text{vel}$ ưu tiên vận tốc di chuyển lớn, còn $\alpha, \beta, \gamma$ là các hệ số trọng số.
  • Thuật toán điều khiển PID: Bộ điều khiển tỷ lệ - tích phân - vi phân (Proportional Integral Derivative) được triển khai trên vi điều khiển nhằm bám sát vận tốc đặt của từng bánh xe, khắc phục hiện tượng trượt cơ học và sai lệch tải trọng.

Kỹ thuật thị giác máy tính và điều hướng thứ cấp

Để đưa hàng vào kệ chính xác, hệ thống áp dụng kỹ thuật nhận diện mã đánh dấu quang học ArUco bằng thư viện OpenCV trên Python. Quy trình xử lý ảnh bao gồm:

  1. Hiệu chỉnh camera (Camera Calibration): Sử dụng gói công cụ camera_calibration của ROS cùng tấm bàn cờ chuẩn (checkerboard) để tính toán ma trận thông số nội (intrinsic matrix) và các hệ số biến dạng quang học (distortion coefficients) của webcam Rapoo WX180.
  2. Nhận diện mã ArUco: Chuyển đổi khung hình sang mức xám (grayscale), phân đoạn ảnh bằng ngưỡng thích nghi (adaptive thresholding), dò tìm đường biên và trích xuất các hình tứ giác lồi. Sau đó tiến hành khử biến dạng phối cảnh (perspective transform) và phân tích ma trận bit nhị phân để định danh ID của mã.
  3. Ước lượng tư thế và điều hướng thứ cấp: Từ kích thước thực tế của mã ArUco dán trên kệ hàng và ma trận camera, giải bài toán Perspective-n-Point (PnP) để trích xuất vector tịnh tiến $(t_x, t_y, t_z)$ và vector quay $(r_x, r_y, r_z)$. Dữ liệu khoảng cách và góc lệch này được đưa vào giải thuật điều khiển thứ cấp nhằm căn chỉnh thân robot thẳng hàng vuông góc với kệ trước khi tiến hành đẩy hàng.

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

Đồ án kết hợp các phương pháp:

  • Phương pháp mô hình hóa và mô phỏng: Dựng hình học robot 3D trên SolidWorks, xuất sang mô tả URDF, kiểm tra tính đúng đắn của giải thuật trên phần mềm Gazebo và Rviz.
  • Phương pháp thực nghiệm chế tạo: Lựa chọn linh kiện điện tử, gia công cơ khí khung xe và kệ hàng, lắp ráp mạch nguồn, mạch động lực và máy tính nhúng.
  • Phương pháp đo đạc và kiểm thử từng bước: Thực hiện quét bản đồ SLAM bằng gói gmapping, kiểm tra sai số kích thước bản đồ so với thực địa; kiểm thử điều hướng đơn điểm, đa điểm, né vật cản tĩnh, né vật cản bất ngờ; và kiểm thử toàn trình chu trình chuyển hàng vào kệ.

Thiết kế và triển khai

Hệ thống được thiết kế hoàn chỉnh từ cơ khí, mạch điện tử phần cứng đến kiến trúc phần mềm điều khiển phân tầng.

Nhóm chức năng Tên thiết bị / Phần mềm Thông số kỹ thuật / Vai trò
Tính toán cấp cao Raspberry Pi 4 Máy tính nhúng chạy hệ điều hành Ubuntu, điều phối ROS Master, Navigation Stack và thuật toán thị giác máy tính
Xử lý cấp thấp Arduino Mega 2560 Vi điều khiển nhận lệnh vận tốc từ ROS qua Rosserial, điều khiển vòng lặp kín PID động cơ và giao tiếp cảm biến
Cảm biến quét môi trường RPLIDAR A1M1 LiDAR 2D công nghệ đo tam giác quang học, tầm quét 12m, tần số quét 5.5 Hz – 10 Hz (góc quét mở 220° trên xe)
Cảm biến tư thế MPU-6050 Cảm biến IMU 6 trục đo gia tốc và vận tốc góc, cung cấp thông tin góc quay bổ trợ tính toán Odometry
Thị giác máy tính Webcam Rapoo WX180 Độ phân giải Full HD 1080P, thu nhận hình ảnh để phát hiện mã ArUco trên kệ
Động cơ dẫn động 2 × Động cơ JGB37-545 Động cơ DC giảm tốc tích hợp cảm biến encoder hồi tiếp xung vận tốc bánh xe
Mạch công suất bánh xe Mạch cầu H L298N Điều khiển đảo chiều và điều chế độ rộng xung (PWM) cho hai động cơ dẫn động
Cơ cấu nâng - đẩy hàng 2 × Động cơ bước (Step Motor) Động cơ bước kết hợp driver điều khiển TB6600, thanh trượt nhôm định hình V-slot, trục vít me T8 và gối đỡ
Bánh xe phụ 3 × Bánh xe đa hướng Trợ lực cân bằng thân xe, giảm thiểu ma sát trượt khi xe chuyển hướng
Hệ thống nguồn cấp Pin LiPo 12V & Pin dự phòng 5V Pin LiPo 12V cấp cho động cơ DC, driver TB6600; sạc dự phòng 5V cấp nguồn độc lập cho Raspberry Pi 4
Phần mềm điều khiển ROS Noetic / Kinetic, Python, React Nền tảng trung gian ROS, ngôn ngữ Python cho thị giác, giao diện React Web qua giao thức WebSocket

Cấu trúc liên lạc và các ROS Node trong hệ thống

Kiến trúc phần mềm trên ROS bao gồm các node chức năng liên kết chặt chẽ qua cơ chế topic:

  1. Key Teleop: Node nhận tín hiệu điều khiển thủ công từ bàn phím để chuyển đổi thành vận tốc tuyến tính $v$ và vận tốc góc $\omega$.
  2. Twist to Motor: Tiếp nhận thông điệp dạng geometry_msgs/Twist chứa $(v, \omega)$, tính toán vận tốc thành phần cho từng động cơ theo mô hình động học vi sai.
  3. Serial Node (Rosserial): Cầu nối giao tiếp UART giữa Raspberry Pi 4 và Arduino Mega 2560, gửi giá trị vận tốc điều khiển xuống vi điều khiển và đọc chuỗi dữ liệu xung encoder gửi ngược lên.
  4. Imu Node: Đọc dữ liệu từ MPU-6050, tính toán các góc Roll, Pitch, Yaw để hỗ trợ node ước lượng vị trí.
  5. Odometry Node: Lắng nghe dữ liệu vận tốc từ bánh xe và góc xoay từ IMU để tính toán vị trí tương đối, công bố lên topic /odom và phát sóng biến đổi toạ độ tf từ odom sang base_link.
  6. RPLIDAR Node: Giao tiếp với cảm biến LiDAR qua cổng USB-Serial, công bố dữ liệu đám mây điểm 2D lên topic /scan.
  7. SLAM / AMCL Node: Chế độ lập bản đồ sử dụng gói gmapping kết hợp vị trí odometry và dữ liệu laser để vẽ bản đồ lưới. Khi đã có bản đồ, node amcl (Adaptive Monte Carlo Localization) được kích hoạt để định vị hạt xác suất trong bản đồ tĩnh.
  8. Map Server: Lưu trữ bản đồ môi trường dưới định dạng ảnh .pgm và file thông số .yaml, nạp lại bản đồ khi kích hoạt chế độ điều hướng.
  9. Move Base: Node trung tâm của quá trình tự hành, kết hợp Global Planner (Dijkstra) và Local Planner (DWA) trên nền 2D Costmap để phát tín hiệu vận tốc cmd_vel tới động cơ.
  10. Robot State Publisher: Nạp tệp mô tả hình học URDF của robot được trích xuất từ SolidWorks, hiển thị trực quan cấu trúc động học, các liên kết (link) và khớp (joint) trên giao diện Rviz theo thời gian thực.
  11. Web GUI & RDP Interface: Thiết lập giao diện điều khiển bằng React kết nối với ROS thông qua thư viện roslibjs và server rosbridge_websocket. Toàn bộ quá trình giám sát cấp cao và vận hành hệ thống trên Raspberry Pi được thao tác từ xa trên máy tính cá nhân thông qua giao thức mạng RDP (Remote Desktop Protocol).

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

Chương 1: Tổng quan

Chương 1 trình bày tính cấp thiết của đề tài trong bối cảnh tự động hóa kho hàng và ứng dụng robot tự hành trên thế giới cũng như tại Việt Nam. Tác giả nêu bật các mục tiêu cụ thể, xác định nhiệm vụ thiết kế mô hình robot hai bánh vi sai có tích hợp cơ cấu nâng hạ và đẩy hàng, trang bị cảm biến LiDAR tạo bản đồ và camera định vị kệ hàng. Đồng thời, chương này xác định rõ các giới hạn về kinh phí, kích thước mô hình, phạm vi góc quét của cảm biến LiDAR (220°) và việc chưa trang bị cảm biến tiệm cận lùi phía sau xe.

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

Chương 2 tập trung xây dựng nền tảng toán học và kỹ thuật phần mềm của hệ thống:

  • Trình bày chi tiết phương trình động học thuận và nghịch của robot hai bánh vi sai thuộc hệ non-holonomic, phân tích chuyển động quay quanh tâm ICC và các trường hợp vận tốc biên.
  • Phân tích kiến trúc hệ điều hành ROS qua ba cấp độ (Filesystem, Computation Graph, Community) và phương thức giao tiếp giữa các node.
  • Giới thiệu cấu trúc ngăn xếp 2D Navigation Stack, cơ chế phân lớp và cấu hình tham số cho Global Costmap và Local Costmap.
  • Phân tích nguyên lý làm việc của cảm biến RPLIDAR A1 và kỹ thuật lập bản đồ bằng SLAM.
  • Trình bày chi tiết giải thuật tìm đường toàn cục Dijkstra trên bản đồ lưới đồ thị và giải thuật cửa sổ động DWA tối ưu quỹ đạo chuyển động cục bộ dựa trên ba hàm thành phần (hướng, khoảng cách vật cản, vận tốc).
  • Khảo sát các hình thức truyền thông gồm Rosserial UART giữa Arduino và ROS, giao tiếp mạng WebSocket qua rosbridge và điều khiển từ xa bằng giao thức RDP. Giới thiệu giải thuật điều khiển phản hồi PID và các công cụ mô phỏng Gazebo, Rviz.

Chương 3: Thiết kế hệ thống

Chương 3 trình bày chi tiết phương án thiết kế phần cứng và cơ khí của robot:

  • Xây dựng bản vẽ thiết kế 3D hoàn chỉnh trên phần mềm SolidWorks với kích thước thực tế và bố trí các tầng linh kiện.
  • Lựa chọn và thuyết minh thông số các linh kiện chính: vi điều khiển Arduino Mega 2560, máy tính nhúng Raspberry Pi 4, động cơ DC giảm tốc JGB37-545 kèm encoder, webcam Rapoo WX180, cảm biến MPU-6050, mạch điều khiển L298N, 2 động cơ bước kèm driver TB6600, 3 bánh xe đa hướng, pin LiPo 12V, khung nhôm định hình, hệ trượt V-slot và trục vít me T8.
  • Xây dựng sơ đồ kết nối dây phần cứng toàn diện giữa khối xử lý, khối công suất, cảm biến và cơ cấu chấp hành.
  • Gia công, lắp ráp hoàn chỉnh mô hình robot thực tế và mô hình kệ hàng thử nghiệm mang mã đánh dấu ArUco.

Chương 4: Thực nghiệm và thiết kế chương trình điều khiển

Chương 4 tập trung vào quy trình triển khai phần mềm và các giải thuật điều khiển:

  • Xây dựng lưu đồ giải thuật tổng thể của toàn bộ chương trình từ lúc khởi động, tạo bản đồ, nhận vị trí mục tiêu cho đến khi tiếp cận kệ và đẩy hàng.
  • Quy trình chuyển đổi mô hình từ SolidWorks sang tệp mô tả hình học URDF để mô phỏng trên Gazebo và Rviz.
  • Thiết lập kết nối mạng và quản trị Raspberry Pi 4 bằng Remote Desktop từ máy tính cá nhân.
  • Tiến hành thực nghiệm lập bản đồ phòng C304 bằng thuật toán Gmapping kết hợp cảm biến RPLIDAR, lưu bản đồ và sử dụng phần mềm đồ họa GIMP để xử lý các vết nhiễu trên map.
  • Cấu hình các node điều hướng trong 2D Navigation Stack, thiết lập các tệp cấu hình tham số YAML cho costmap toàn cục và cục bộ.
  • Lập trình giao diện web điều khiển bằng React, tích hợp các khối hiển thị tọa độ thực thời, vận tốc và các phím nhấn điều hướng.
  • Ứng dụng xử lý ảnh: thực hiện quy trình hiệu chuẩn camera bằng bàn cờ chuẩn, lập trình thuật toán phát hiện mã ArUco trên Python và xây dựng lưu đồ điều khiển hai giai đoạn cho chương trình điều hướng thứ cấp tiếp cận kệ hàng.

Chương 5: Kết quả và đánh giá

Chương 5 công bố toàn bộ dữ liệu thực nghiệm thu được từ quá trình kiểm thử mô hình:

  • Khảo sát đáp ứng động học và tính ổn định của vận tốc bánh xe qua bộ điều khiển PID trên đồ thị thời gian thực.
  • Đánh giá độ chính xác của bản đồ SLAM thu được so với kích thước đo đạc thực tế của phòng thí nghiệm.
  • Kiểm thử chức năng điều hướng tự hành điểm-điểm đến các tọa độ được chỉ định trên bản đồ Rviz, so sánh sai số giữa tọa độ đặt và tọa độ thực tế đạt được.
  • Đánh giá khả năng né vật cản tĩnh đơn lẻ, né nhiều vật cản cố định và phản xạ né tránh vật cản xuất hiện bất ngờ cắt ngang đường đi bằng thuật toán DWA.
  • Công bố kết quả hiệu chỉnh ma trận camera, kết quả nhận diện mã ArUco ở các cự ly và góc quan sát khác nhau.
  • Đánh giá chu trình vận hành hoàn chỉnh: robot nhận lệnh, tự hành đến gần kệ hàng, chuyển giao sang chế độ điều hướng thứ cấp bằng camera để căn chỉnh chính xác, kích hoạt cơ cấu động cơ bước đẩy hàng vào đúng tầng kệ yêu cầu, và tự động điều hướng quay trở về vị trí xuất phát (Home).

Chương 6: Kết luận và hướng phát triển đề tài

Chương 6 đúc kết các mục tiêu đã hoàn thành của đồ án về mặt thiết kế cơ khí, tích hợp hệ thống phần cứng, lập bản đồ và tự hành điều hướng kết hợp xử lý ảnh. Đồng thời, tác giả thẳng thắn chỉ ra các điểm hạn chế về độ ổn định cơ khí, góc quét cảm biến và đề xuất các giải pháp nâng cấp, phát triển hệ thống trong tương lai.


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

Kết quả thực nghiệm định lượng

Quá trình chạy thực nghiệm mô hình đã thu được các số liệu cụ thể được ghi nhận trong văn bản đồ án:

1. Kết quả tạo bản đồ SLAM (Gmapping): Bản đồ phòng thí nghiệm C304 được xây dựng thành công bằng cảm biến RPLIDAR A1M1 kết hợp thuật toán Gmapping. Dữ liệu đối chiếu kích thước trên bản đồ lưới và kích thước đo đạc thực tế cho thấy độ sai lệch nhỏ:

Kích thước phòng C304 Kích thước thực tế Kích thước trên bản đồ SLAM Sai số đo đạc
Chiều ngang 7,60 m 7,54 m 0,06 m (0,79%)
Chiều dọc 9,80 m 9,68 m 0,12 m (1,22%)

2. Kết quả điều hướng tự hành tới tọa độ mục tiêu (Bảng đối chiếu tọa độ): Robot được thử nghiệm điều hướng tự hành từ vị trí ban đầu (0, 0) đến 6 điểm mục tiêu liên tiếp trên bản đồ thông qua thuật toán Dijkstra và DWA:

Lần thử Tọa độ đặt $(X, Y)$ (m) Tọa độ thực tế robot đạt được $(X, Y)$ (m) Sai lệch vị trí $(\Delta X, \Delta Y)$ (m)
Điểm 1 $(1,00;; 0,00)$ $(0,98;; -0,03)$ $(-0,02;; -0,03)$
Điểm 2 $(2,00;; -1,00)$ $(1,96;; -1,04)$ $(-0,04;; -0,04)$
Điểm 3 $(3,00;; 0,50)$ $(2,95;; 0,46)$ $(-0,05;; -0,04)$
Điểm 4 $(-2,00;; -2,00)$ $(-1,94;; -2,05)$ $(+0,06;; -0,05)$
Điểm 5 $(0,00;; -4,00)$ $(0,05;; -3,94)$ $(+0,05;; +0,06)$
Điểm 6 $(0,00;; -3,00)$ $(-0,04;; -2,96)$ $(-0,04;; +0,04)$

Sai số định vị trung bình tại các điểm dừng dao động trong khoảng từ 0,02 m đến 0,06 m, nằm trong phạm vi dung sai cho phép của ngăn xếp 2D Navigation Stack trong môi trường thực địa.

3. Khả năng né tránh chướng ngại vật:

  • Vật cản cố định: Khi xuất hiện chướng ngại vật tĩnh trên quỹ đạo định trước, thuật toán DWA kịp thời cập nhật Local Costmap, tính toán lại không gian vận tốc cho phép và vẽ lại quỹ đạo vòng tránh an toàn để tiếp tục hành trình.
  • Vật cản bất ngờ: Khi có vật cản đột ngột cắt ngang lối đi, hệ thống phản xạ dừng giảm tốc nhanh chóng nhờ cơ chế kiểm tra khoảng cách an toàn của thuật toán DWA, sau đó chờ vật cản di chuyển hoặc tìm đường tránh mới mà không xảy ra va chạm.

4. Kết quả nhận diện ArUco và điều hướng thứ cấp:

  • Quá trình hiệu chỉnh camera bằng gói camera_calibration cung cấp ma trận nội tham số chính xác, loại bỏ hiện tượng méo rìa hình ảnh của webcam Rapoo WX180.
  • Robot nhận dạng ổn định mã ArUco dán trên kệ hàng ở cự ly từ 0,5 m đến 1,5 m.
  • Thuật toán điều hướng thứ cấp hai giai đoạn đã điều khiển robot xoay thân xe khử góc lệch hướng ($\Delta \theta$), sau đó tịnh tiến thẳng hàng vuông góc với mặt kệ với khoảng cách dừng chuẩn xác, tạo điều kiện cho cơ cấu vít me đẩy hàng vào đúng ô kệ định sẵn.

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

  1. Xây dựng thành công một mô hình thực nghiệm robot tự hành vận chuyển hàng hóa chi phí thấp, tích hợp đồng bộ giữa cơ cấu cơ điện (nâng hạ vít me, động cơ bước) và hệ thống máy tính nhúng hai tầng trên nền tảng ROS.
  2. Đề xuất và kiểm nghiệm thành công giải pháp điều hướng kết hợp hai giai đoạn: sử dụng thuật toán toàn cục LiDAR SLAM/AMCL để dẫn đường diện rộng trong nhà kho, kết hợp thị giác máy tính nhận diện mã ArUco để căn chỉnh cục bộ cự ly gần với độ chính xác cao.
  3. Thiết kế hoàn chỉnh giải pháp điều khiển và giám sát từ xa kết hợp giữa giao diện web thân thiện trên nền React (thông qua giao thức mạng WebSocket) và quản trị hệ thống bằng RDP.

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

Hạn chế của đề tài

Căn cứ vào nội dung báo cáo và phiếu nhận xét của giảng viên phản biện (TS. Trần Mạnh Sơn), đề tài còn tồn tại một số điểm hạn chế:

  1. Hạn chế cơ khí và tải trọng: Khung cơ khí của robot và kết cấu kệ hàng gia công thủ công chưa đạt độ vững chắc cao, còn hiện tượng rung lắc trong quá trình di chuyển và đẩy hàng; mô hình chỉ đáp ứng được việc nâng chuyển các kiện hàng mẫu có khối lượng nhẹ.
  2. Chuyển động chưa tối ưu: Robot di chuyển trên thực địa đôi lúc chưa thật sự mượt mà do độ trễ truyền thông nối tiếp và quán tính của cơ cấu thân trên.
  3. Góc quét cảm biến bị che khuất: Do kết cấu cơ khí và vị trí lắp đặt, cảm biến RPLIDAR A1 bị thân trên che chắn, góc quét thực tế bị thu hẹp từ 360° xuống còn 220° (từ -110° đến +110°), tạo ra vùng điểm mù ở phía sau robot.
  4. Thiếu cảm biến cảnh báo lùi: Hệ thống không được trang bị cảm biến tiệm cận hoặc cảm biến siêu âm phía sau đuôi xe, do đó tiềm ẩn nguy cơ va chạm nếu robot phải thực hiện thao tác lùi trong không gian có vật cản.

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

Để hoàn thiện và nâng cao tính ứng dụng của mô hình, các hướng phát triển tiếp theo được đề xuất:

  1. Gia công lại khung cơ khí bằng vật liệu kim loại chịu lực, tối ưu hóa trọng tâm xe, nâng cấp động cơ dẫn động và động cơ bước có mô-men xoắn lớn hơn nhằm tăng tải trọng nâng chuyển hàng hóa.
  2. Lắp đặt bổ sung cụm cảm biến tiệm cận hoặc cảm biến siêu âm ở đuôi xe, hoặc thiết kế lại vị trí gá đặt LiDAR trên điểm cao nhất của thân xe để đảm bảo góc quét toàn vẹn 360°, đảm bảo an toàn tuyệt đối khi lùi xe.
  3. Chuyển đổi nền tảng phần mềm từ ROS 1 sang ROS 2 (Robot Operating System 2) nhằm nâng cao tính ổn định thời gian thực (real-time performance), tăng cường bảo mật và tối ưu hóa khả năng liên lạc đa robot trong môi trường công nghiệp.
  4. Nghiên cứu nâng cấp cơ cấu chấp hành từ dạng bàn trượt đẩy cố định sang cơ cấu cánh tay robot nhiều bậc tự do hoặc bàn nâng pallet tự động để có thể thao tác với đa dạng quy cách hàng hóa và kệ chứa khác nhau.

Giá trị tham khảo

Đồ án là tài liệu tham khảo có giá trị ứng dụng và học thuật đối với:

  • Sinh viên ngành Công nghệ Kỹ thuật Điều khiển và Tự động hóa, Cơ điện tử, Kỹ thuật Robot và Kỹ thuật Máy tính: Đồ án cung cấp một hướng dẫn thực hành hoàn chỉnh về việc tích hợp một hệ thống robot tự hành thực tế từ việc tính toán động học lý thuyết, dựng hình 3D trên SolidWorks, chuyển đổi tệp URDF, cho đến cấu hình các gói phần mềm cốt lõi của ROS (Gmapping, AMCL, Costmap 2D, Move Base).
  • Các nhóm nghiên cứu làm đề tài về xe tự hành AMR trong nhà kho: Cung cấp phương pháp chi tiết về cách kết nối phân tầng giữa máy tính nhúng (Raspberry Pi 4) và vi điều khiển điều khiển động cơ (Arduino Mega 2560 qua Rosserial), thiết lập thông số cho thuật toán Dijkstra/DWA và phương pháp xử lý ảnh định vị ArUco trong OpenCV để giải quyết bài toán căn chỉnh vị trí tiếp xúc chính xác.

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

1. Tại sao góc quét thực tế của cảm biến RPLIDAR A1 trên robot chỉ đạt 220° thay vì 360° như thiết kế của nhà sản xuất?

Theo thuyết minh đồ án tại mục Giới hạn đề tài (Chương 1), cảm biến RPLIDAR A1 nguyên bản có khả năng quét 360°, tuy nhiên khi bố trí lắp đặt trên mô hình thực tế, do phần khung cơ khí và cơ cấu nâng - đẩy hàng ở thân trên của robot nhô ra phía sau đã che khuất một phần tầm nhìn của chùm laser. Do đó, góc quét khả dụng thực tế của cảm biến bị giới hạn trong phạm vi 220° (từ -110° đến +110° ở mặt trước của robot).

2. Thuật toán điều hướng thứ cấp sử dụng mã ArUco có vai trò gì và hoạt động theo quy trình nào?

Thuật toán điều hướng thứ cấp được kích hoạt sau khi robot hoàn thành giai đoạn tự hành toàn cục (dùng LiDAR và 2D Navigation Stack) đến khu vực lân cận kệ hàng. Do sai số tích lũy của bánh xe và độ phân giải bản đồ laser có thể khiến robot dừng lệch vài centimet hoặc lệch góc so với mặt kệ, việc đẩy hàng trực tiếp sẽ dễ bị kẹt hoặc rơi hàng. Nhờ webcam nhận diện mã ArUco dán trên kệ qua thư viện OpenCV, robot tính toán được góc lệch hướng và khoảng cách chính xác, từ đó thực hiện thao tác xoay thân xe vuông góc với kệ và tịnh tiến vào vị trí chuẩn xác trước khi ra lệnh cho động cơ bước đẩy hàng.

3. Trong kiến trúc phần cứng, việc phân chia nhiệm vụ giữa máy tính nhúng Raspberry Pi 4 và vi điều khiển Arduino Mega 2560 được thực hiện như thế nào?

Hệ thống áp dụng mô hình điều khiển phân cấp:

  • Raspberry Pi 4 (Cấp cao): Chạy hệ điều hành Ubuntu và ROS Master, chịu trách nhiệm các tác vụ tính toán nặng gồm xử lý dữ liệu đám mây điểm từ LiDAR, xử lý ảnh từ webcam, chạy các thuật toán lập bản đồ SLAM, định vị AMCL, lập kế hoạch đường đi (Dijkstra, DWA), quản lý giao tiếp WebSocket với web React và duy trì kết nối điều khiển qua giao thức RDP.
  • Arduino Mega 2560 (Cấp thấp): Đóng vai trò là một ROS Node thông qua thư viện Rosserial UART, chịu trách nhiệm các tác vụ thời gian thực gồm đếm xung encoder từ hai bánh xe, thực thi giải thuật điều khiển kín PID vận tốc, xuất tín hiệu PWM và điều khiển chiều quay động cơ qua mạch cầu H L298N.

4. Ngõ vào của bộ điều khiển vận tốc hai bánh xe của robot là gì và liên hệ như thế nào với mô hình động học?

(Đây là câu hỏi phản biện chính của TS. Trần Mạnh Sơn). Ngõ vào của bộ điều khiển vận tốc hai bánh xe là giá trị vận tốc góc mong muốn của từng bánh xe ($V_r$ và $V_l$). Giá trị này được chuyển đổi từ lệnh vận tốc điều khiển của toàn xe gồm vận tốc tuyến tính $v$ và vận tốc góc $\omega$ (được phát ra từ node move_base qua topic cmd_vel) thông qua phương trình động học nghịch của robot hai bánh vi sai: $V_r = v + \frac{\omega \cdot l}{2}$ và $V_l = v - \frac{\omega \cdot l}{2}$, với $l$ là khoảng cách giữa hai trục bánh dẫn động.

5. Hai node SLAM và AMCL trong hệ điều hành ROS có hoạt động đồng thời cùng lúc không?

Theo thuyết minh tại Chương 2 (mục 2.4 - Gói SLAM/AMCL), hai node này không hoạt động cùng lúc. Node SLAM (Gmapping) chỉ hoạt động ở giai đoạn đầu khi người dùng điều khiển robot di chuyển thủ công để thăm dò môi trường và vẽ bản đồ tĩnh. Sau khi bản đồ được lưu lại qua Map Server, node SLAM sẽ được tắt đi và node AMCL (Adaptive Monte Carlo Localization) mới được kích hoạt trong quá trình robot tự hành điều hướng để định vị vị trí hiện tại của xe trên bản đồ đã có sẵn.


Kết luận

Đồ án tốt nghiệp "Thiết kế và điều khiển robot di động chuyển hàng lên kệ" của sinh viên Nguyễn Huy Toàn và Đặng Đình Khôi dưới sự hướng dẫn của PGS.TS Vũ Văn Phong đã hoàn thành đầy đủ các nhiệm vụ kỹ thuật đề ra, từ tính toán lý thuyết động học, gia công mô hình cơ khí đến lập trình hệ thống điều khiển tự động trên nền tảng ROS. Hệ thống đã chứng minh tính khả thi qua các thử nghiệm thực tế tại phòng C304: lập bản đồ SLAM với sai số dưới 1,3%, tự hành bám quỹ đạo và né tránh vật cản hiệu quả bằng thuật toán Dijkstra và DWA với sai số vị trí chỉ từ 0,02 m đến 0,06 m, đồng thời ứng dụng thành công thị giác máy tính ArUco để căn chỉnh vị trí đưa hàng lên kệ. Mặc dù vẫn còn một số hạn chế về góc quét LiDAR và độ cứng vững cơ khí, đồ án đã cung cấp một mô hình thực nghiệm hoàn chỉnh, đóng vai trò là tài liệu tham khảo học thuật có giá trị cho các nghiên cứu tiếp theo trong lĩnh vực robot tự hành và tự động hóa kho hàng thông minh.