Giới thiệu dự án
Trong bối cảnh bùng nổ của thương mại điện tử và chuỗi cung ứng toàn cầu, ngành logistics đang chịu áp lực lớn về tốc độ xử lý đơn hàng và độ chính xác phân loại. Theo các báo cáo thống kê ngành kho vận, hoạt động lấy hàng thủ công (manual order picking) chiếm tới 50% – 55% tổng chi phí vận hành kho và là nguyên nhân hàng đầu dẫn đến sai sót xuất kho (tỷ lệ lỗi trung bình 1% – 3%). Sự xuất hiện của các phương tiện tự hành AGV (Automated Guided Vehicle) và AMR (Autonomous Mobile Robot) đã giải quyết bài toán vận chuyển ngang, tuy nhiên việc lấy hàng từ kệ vẫn phụ thuộc lớn vào thao tác bốc xếp của con người.
Đề tài "Thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho" (Mobile Manipulator for Warehouse Order Picking) được thực hiện nhằm xây dựng một hệ thống tích hợp toàn diện: kết hợp khung gầm xe tự hành 2 bánh vi sai với cánh tay robot 3 bậc tự do (3-DOF), cho phép vừa tự động điều hướng tối ưu giữa các trạm lưu trữ, vừa nhận diện và bốc dỡ hàng hóa chính xác theo đơn hàng thời gian thực.
+-------------------------------------------------------------------------------+
| KIẾN TRÚC TỔNG THỂ HỆ THỐNG |
+-------------------------------------------------------------------------------+
| [Khách hàng] ---> Web Server (ReactJS) ---> Cloud Database (Firebase) |
| | |
| [Người vận hành] <---> Dashboard GUI (PyQt5) <------+ |
| | (ROS Socket / WiFi) |
| +----------------------------v---------------------------------------------+ |
| | BỘ ĐIỀU KHIỂN TRUNG TÂM: NVIDIA JETSON NANO (ROS Noetic / Linux) | |
| | - Quy hoạch trạm ITSP: Thuật toán Tối ưu đàn kiến (ACO) | |
| | - Bản đồ & Định vị: Gmapping SLAM & Bộ lọc hạt AMCL | |
| | - Dẫn đường toàn cục: Dijkstra | Tránh vật cản cục bộ: DWA | |
| | - Xử lý ảnh: OpenCV (HSV Thresholding, Tính tọa độ vật thể) | |
| +------------------------------+-------------------------------------------+ |
| | (UART / Serial) | (UART / Serial) |
| +--------------v---------------+ +-------------v---------------------------+ |
| | VI ĐIỀU KHIỂN XE TỰ HÀNH | | VI ĐIỀU KHIỂN CÁNH TAY ROBOT | |
| | Arduino Mega 2560 | | Arduino Mega 2560 | |
| | - Động cơ DC Servo GA25-370 | | - Khớp 1, 2, 3 (Driver Cycloidal) | |
| | - Điều khiển PID Vận tốc | | - Động cơ Servo & Khâu kẹp End-Effector | |
| | - Cảm biến IMU MPU-6050 | | - Điều khiển PID Vị trí góc | |
| | - Cảm biến RPLIDAR A1M8 | | | |
| +------------------------------+ +-----------------------------------------+ |
+-------------------------------------------------------------------------------+
Mục tiêu dự án
- Thiết kế cơ khí và điều khiển phần cứng: Thiết kế và thi công hoàn chỉnh xe tự hành 2 bánh vi sai thuộc hệ non-holonomic kết hợp cánh tay robot 3 bậc tự do sử dụng hộp số giảm tốc Cycloid (Driver Cycloidal) in 3D chịu tải cao.
- Quy hoạch lộ trình đa trạm (ITSP): Ứng dụng giải thuật Tối ưu hóa đàn kiến (ACO - Ant Colony Optimization) giải bài toán người bán hàng trong môi trường trong nhà (ITSP - Indoor Traveling Salesman Problem), tối ưu hóa thứ tự lấy hàng qua các trạm.
- Điều hướng và tránh va chạm thời gian thực: Xây dựng bản đồ lưới nhị phân (Binary Occupancy Grid Map) bằng phương pháp Gmapping SLAM; ứng dụng thuật toán Dijkstra tìm đường đi toàn cục ngắn nhất và thuật toán Dynamic Window Approach (DWA) né vật cản tĩnh/động.
- Thị giác máy tính và bốc dỡ tự động: Xử lý ảnh màu không gian HSV qua camera USB để trích xuất tọa độ không gian và điều khiển cánh tay gắp kiện hàng chính xác.
- Hệ thống phần mềm quản lý tích hợp: Xây dựng Web App (ReactJS) tiếp nhận đơn hàng, đồng bộ dữ liệu đám mây (Firebase Realtime Database) và phần mềm giám sát giao diện người dùng (PyQt GUI) kết nối qua mạng socket ROS (Robot Operating System).
Phạm vi và giới hạn đề tài
- Môi trường hoạt động: Mặt sàn phẳng trong nhà xưởng/phòng thí nghiệm; bản đồ quét 2D xác định trước.
- Cảm biến LiDAR: Giới hạn góc quét xử lý điều hướng an toàn 180° phía trước ($RPLIDAR\ A1M8$).
- Quy cách hàng hóa: Hộp carton kích thước chuẩn $6\text{ cm} \times 6\text{ cm}$, tải trọng nhẹ ($\le 200\text{ g}$).
- Điều kiện vận hành: Giả định mức dung lượng pin Lithium và kết nối mạng WiFi ổn định trong suốt chu trình làm việc.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và đánh giá giải pháp
| Tiêu chí so sánh |
Lấy hàng thủ công (Manual Picking) |
Xe tự hành AGV truyền thống (Magnetic Tape) |
Robot tự hành AMR tiêu chuẩn (Không tay máy) |
Hệ Mobile Manipulator tích hợp (Đồ án đề xuất) |
| Độ linh hoạt đường đi |
Cao (con người) |
Rất thấp (cố định trên vạch từ/mã QR) |
Cao (tự tạo bản đồ SLAM) |
Cao (SLAM + ACO + DWA né vật cản động) |
| Tự động hóa bốc xếp |
Thủ công hoàn toàn |
Không có (cần trạm nâng chuyên dụng) |
Không có (chỉ vận chuyển thùng hàng) |
Tự động hoàn toàn (Cánh tay 3-DOF + OpenCV) |
| Chi phí lắp đặt hạ tầng |
Thấp |
Rất cao (cải tạo sàn, dán dải từ) |
Trung bình |
Thấp (triển khai trực tiếp không cần sửa sàn) |
| Khả năng tối ưu lộ trình |
Phụ thuộc kinh nghiệm nhân công |
Cố định theo tuyến định sẵn |
Tìm đường điểm - điểm đơn lẻ |
Tối ưu hóa tổ hợp đa trạm ITSP bằng ACO |
| Khả năng mở rộng (Scale) |
Khó mở rộng, tốn nhân lực |
Tốn kém khi thay đổi layout kho |
Dễ mở rộng nhưng thiếu khâu bốc dỡ |
Dễ dàng cấu hình trạm mới trên Cloud/GUI |
Yêu cầu hệ thống theo mô hình MoSCoW
- Must Have (Bắt buộc): Hệ thống lái vi sai chuyển động trơn tru; SLAM dựng bản đồ 2D chính xác; giải thuật ACO tìm chu trình lấy hàng ngắn nhất; Dijkstra và DWA điều hướng tránh vật cản; cánh tay robot gắp đặt đúng kiện hàng; giao tiếp thời gian thực Web - Firebase - GUI - ROS.
- Should Have (Nên có): Bộ điều khiển PID hồi tiếp vòng kín cho vận tốc bánh xe và góc quay từng khớp tay máy; gửi email tự động xác nhận đơn hàng qua EmailJS.
- Could Have (Có thể mở rộng): Tự động điều hướng về trạm sạc khi pin yếu; nhận diện mã QR/Bar-code trên từng kiện hàng.
- Won't Have (Chưa thực hiện): Di chuyển trên địa hình gồ ghề; nâng hạ hàng hóa siêu trọng ($> 2\text{ kg}$).
Thiết kế kiến trúc hệ thống
Hệ thống được chia thành 4 phân tầng kỹ thuật:
- Tầng Cơ khí & Động lực: Khung xe bằng nhôm định hình kết hợp mica gia công CNC; 2 bánh dẫn động chính gắn động cơ DC Servo GA25-370 có hộp số và encoder quang học; 3 bánh xe đa hướng caster trợ lực đảm bảo cân bằng $360^\circ$. Cánh tay 3 bậc tự do in 3D chất liệu PETG/PLA chịu lực, dẫn động qua cụm giảm tốc Cycloid với tỷ số truyền cao, chống rơ lỏng (backlash).
- Tầng Nhúng & Điều khiển cấp thấp: 2 vi điều khiển Arduino Mega 2560 phân tách nhiệm vụ (MCU 1: Xử lý Odometry, IMU MPU-6050, điều khiển PID 2 bánh xe; MCU 2: Điều khiển PID vị trí 3 khớp xoay và đóng mở kẹp servo).
- Tầng Tính toán cấp cao: Máy tính nhúng NVIDIA Jetson Nano Dev Kit (Ubuntu 18.04 LTS, ROS Melodic/Noetic), đảm nhiệm xử lý tín hiệu LiDAR RPLIDAR A1M8, thuật toán SLAM, định vị AMCL, lập kế hoạch quỹ đạo (ACO, Dijkstra, DWA), và xử lý ảnh OpenCV từ camera USB.
- Tầng Ứng dụng & Dịch vụ người dùng: Web Client viết bằng ReactJS cho khách đặt hàng; Firebase Database lưu trữ hàng đợi đơn hàng; giao diện điều hành GUI bằng Python (PyQt5) cho phép chuyển đổi chế độ Vận hành Tự động (Auto Mode) và Thủ công (Manual Mode).
+-----------------------------------------------------------------------------------+
| STACK CÔNG NGHỆ VÀ PHIÊN BẢN SỬ DỤNG |
+-------------------+--------------------------------+------------------------------+
| Phân loại | Tên công nghệ / Linh kiện | Phiên bản / Thông số kỹ thuật|
+-------------------+--------------------------------+------------------------------+
| Core OS & Robot | Ubuntu Linux / ROS | 18.04 / 20.04 LTS (Noetic) |
| Embedded SoC | NVIDIA Jetson Nano | 4GB 64-bit LPDDR4, 16GB eMMC |
| Microcontroller | Arduino Mega 2560 R3 | ATmega2560 (16MHz, 256KB) |
| Vision Processing | OpenCV Python | 4.5.4 |
| Web & Cloud Stack | ReactJS / Firebase / EmailJS | 18.2 / v9 SDK / v3.11 |
| GUI Framework | PyQt5 / Qt Designer | 5.15.x |
| Lidar Sensor | Slamtec RPLIDAR A1M8 | 360 deg, 12m Range, 5.5-10Hz |
| IMU Sensor | InvenSense MPU-6050 | 6-DOF Gyroscope + Accel |
| Actuators | GA25-370 DC Geared Motor | 12V DC, Encoder 334 CPR |
| Simulation Tools | MATLAB & Simulink / Gazebo | R2022b / Gazebo 11 |
+-------------------+--------------------------------+------------------------------+
Mô hình toán học và Thuật toán cốt lõi
1. Động học hệ xe hai bánh vi sai (Non-holonomic Differential Drive)
Tọa độ trạng thái của robot trong mặt phẳng 2D được định nghĩa bởi vector $q = \begin{bmatrix} x & y & \theta \end{bmatrix}^T$. Giả sử không có hiện tượng trượt ngang (ràng buộc non-holonomic $\dot{x}\sin\theta - \dot{y}\cos\theta = 0$), tâm quay tức thời (Instantaneous Center of Curvature - ICC) có tọa độ:
$$\text{ICC} = [x - R\sin\theta,\ y + R\cos\theta]$$
Trong đó khoảng cách $R$ từ ICC tới trung điểm trục bánh xe và vận tốc góc $\omega$ được xác định từ vận tốc bánh phải ($V_d$) và bánh trái ($V_e$):
$$R = \frac{L}{2}\frac{V_d + V_e}{V_d - V_e}, \quad \omega = \frac{V_d - V_e}{L}$$
Vận tốc dài trung bình $v$ và hệ phương trình động học thuận:
$$\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} = \begin{bmatrix} \frac{V_d + V_e}{2}\cos\theta \ \frac{V_d + V_e}{2}\sin\theta \ \frac{V_d - V_e}{L} \end{bmatrix}$$
2. Thuật toán Tối ưu đàn kiến (ACO) cho bài toán ITSP
Thuật toán tìm thứ tự ghé thăm $N$ trạm kệ hàng $S = {S_1, S_2, \dots, S_n}$ xuất phát từ trạm gốc $Home (S_0)$ sao cho tổng chiều dài hành trình $L_{total}$ là cực tiểu.
Xác suất kiến $k$ chọn chuyển từ trạm $i$ sang trạm $j$ tại thời điểm $t$:
$$P_{ij}^k(t) = \begin{cases} \frac{\left[\tau_{ij}(t)\right]^\alpha \cdot \left[\eta_{ij}\right]^\beta}{\sum_{l \in \text{allowed}k} \left[\tau{il}(t)\right]^\alpha \cdot \left[\eta_{il}\right]^\beta} & \text{nếu } j \in \text{allowed}_k \ 0 & \text{ngược lại} \end{cases}$$
Trong đó $\tau_{ij}$ là lượng vết mùi pheromone trên cạnh $(i, j)$, $\eta_{ij} = \frac{1}{d_{ij}}$ là độ dài nghịch đảo khoảng cách Euclid giữa 2 trạm, $\alpha$ và $\beta$ là các trọng số điều chỉnh mức độ ảnh hưởng của pheromone và tri thức kinh nghiệm lân cận. Quy tắc bay hơi và cập nhật pheromone toàn cục sau mỗi chu kỳ lặp:
$$\tau_{ij}(t+1) = (1 - \rho)\tau_{ij}(t) + \sum_{k=1}^m \Delta \tau_{ij}^k(t), \quad \Delta \tau_{ij}^k(t) = \begin{cases} \frac{Q}{L_k(t)} & \text{nếu kiến } k \text{ đi qua } (i, j) \ 0 & \text{ngược lại} \end{cases}$$
3. Thuật toán Dynamic Window Approach (DWA) né vật cản cục bộ
Trong không gian vận tốc $(v, \omega)$, không gian tìm kiếm cửa sổ động $V_d$ bị giới hạn bởi vận tốc cực đại và khả năng gia tốc của động cơ trong chu kỳ lấy mẫu $\Delta t$:
$$V_d = [v_{cur} - \dot{v}{max}\Delta t, v{cur} + \dot{v}{max}\Delta t] \cap [ \omega{cur} - \dot{\omega}{max}\Delta t, \omega{cur} + \dot{\omega}_{max}\Delta t ] \cap V_s$$
Hàm mục tiêu $G(v, \omega)$ tối ưu chuyển động được thiết lập:
$$G(v, \omega) = \sigma \left( \alpha \cdot \text{heading}(v, \omega) + \beta \cdot \text{dist}(v, \omega) + \gamma \cdot \text{vel}(v, \omega) \right)$$
- $\text{heading}(v, \omega)$: Đo góc hướng mũi xe về điểm đích tiếp theo trên lộ trình Dijkstra.
- $\text{dist}(v, \omega)$: Khoảng cách nhỏ nhất từ quỹ đạo giả lập đến vật cản gần nhất (dữ liệu quét từ LiDAR).
- $\text{vel}(v, \omega)$: Độ lớn vận tốc tiến tới nhằm tối đa hóa tốc độ di chuyển của robot.
4. Thiết kế hộp số Cycloid cho cánh tay Robot
Phương trình biên dạng răng Cycloid trên mặt phẳng 2D được biểu diễn tham số:
$$x(t) = R\cos(t) - R_r\cos\left(t + \arctan\left(\frac{\sin((1-N)t)}{\frac{R}{E \cdot N} - \cos((1-N)t)}\right)\right) - E\cos(Nt)$$
$$y(t) = -R\sin(t) + R_r\sin\left(t + \arctan\left(\frac{\sin((1-N)t)}{\frac{R}{E \cdot N} - \cos((1-N)t)}\right)\right) + E\sin(Nt)$$
Với $R$ là bán kính vòng tròn chia, $R_r$ là bán kính con lăn kim, $N$ là số răng đĩa Cycloid ($N=20$), và $E$ là độ lệch tâm trục cam ($E=1.0\text{ mm}$).
Implementation và kết quả thực nghiệm
# Trích đoạn mã nguồn: Lập kế hoạch lộ trình ACO giải bài toán ITSP trên ROS Node
import numpy as np
class AntColonyITSP:
def __init__(self, dist_matrix, n_ants=20, n_iterations=100, alpha=1.0, beta=2.5, rho=0.1, Q=100):
self.distances = dist_matrix
self.n_ants = n_ants
self.n_iterations = n_iterations
self.alpha = alpha
self.beta = beta
self.rho = rho
self.Q = Q
self.n_stations = len(dist_matrix)
self.pheromone = np.ones((self.n_stations, self.n_stations)) * 0.1
def solve(self):
best_route = None
best_distance = float('inf')
for _ in range(self.n_iterations):
routes = []
for _ in range(self.n_ants):
route = [0] # Khởi đầu tại Trạm 0 (Home)
unvisited = set(range(1, self.n_stations))
while unvisited:
curr = route[-1]
probs = []
nodes = list(unvisited)
for node in nodes:
tau = self.pheromone[curr][node] ** self.alpha
eta = (1.0 / self.distances[curr][node]) ** self.beta
probs.append(tau * eta)
probs = np.array(probs) / sum(probs)
next_node = np.random.choice(nodes, p=probs)
route.append(next_node)
unvisited.remove(next_node)
route.append(0) # Quay trở lại Home
routes.append(route)
# Cập nhật Pheromone
self.pheromone *= (1.0 - self.rho)
for route in routes:
d = sum(self.distances[route[i]][route[i+1]] for i in range(len(route)-1))
if d < best_distance:
best_distance = d
best_route = route
for i in range(len(route)-1):
self.pheromone[route[i]][route[i+1]] += self.Q / d
return best_route, best_distance
Kết quả điều khiển PID phần cứng
Hệ thống được tinh chỉnh đáp ứng vòng kín bằng bộ điều khiển số PID rời rạc với tần số lấy mẫu $50\text{ Hz}$. Kết quả đo lường thực tế trên phần cứng xe và cánh tay được ghi nhận như sau:
| Đối tượng điều khiển |
Tham số $K_p$ |
Tham số $K_i$ |
Tham số $K_d$ |
Thời gian xác lập $t_s$ |
Độ vọt lố $%OS$ |
Sai số xác lập $e_{ss}$ |
| Bánh xe dẫn động phải |
12.5 |
1.8 |
0.05 |
$0.28\text{ s}$ |
$4.2%$ |
$\pm 0.005\text{ m/s}$ |
| Bánh xe dẫn động trái |
12.2 |
1.8 |
0.05 |
$0.30\text{ s}$ |
$4.5%$ |
$\pm 0.005\text{ m/s}$ |
| Khớp 1 cánh tay (Joint 1) |
24.0 |
0.5 |
1.20 |
$0.45\text{ s}$ |
$1.8%$ |
$\pm 0.5^\circ$ |
| Khớp 2 cánh tay (Joint 2) |
32.0 |
0.8 |
1.85 |
$0.52\text{ s}$ |
$2.1%$ |
$\pm 0.8^\circ$ |
| Khớp 3 cánh tay (Joint 3) |
18.5 |
0.4 |
0.90 |
$0.38\text{ s}$ |
$1.2%$ |
$\pm 0.4^\circ$ |
+-------------------------------------------------------------------------------+
| ĐÁP ỨNG PID VẬN TỐC BÁNH XE ROBOT (0.3 m/s) |
+-------------------------------------------------------------------------------+
| Vận tốc (m/s) |
| 0.35 | +----+ |
| | / \ |
| 0.30 |------------/--------+--------------------------------------- Setpoint |
| | / \ |
| 0.20 | / +------------------------------------- Response |
| | / |
| 0.10 | / |
| | / |
| 0.00 +------+--------+--------+--------+--------+--------+--------+ |
| 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 (giây) |
+-------------------------------------------------------------------------------+
Đánh giá độ chính xác quét bản đồ Gmapping SLAM
Tiến hành quét môi trường thực nghiệm phòng thí nghiệm (ACIS Lab C304) qua 6 lần đo độc lập bằng cảm biến LiDAR RPLIDAR A1M8 kết hợp Odometry/IMU.
| Lần đo (Test Run) |
Chiều dài thực tế (m) |
Chiều dài đo Gmapping (m) |
Chiều rộng thực tế (m) |
Chiều rộng đo Gmapping (m) |
Sai số diện tích (%) |
| Run 1 |
8.40 |
8.35 |
5.60 |
5.54 |
$1.65%$ |
| Run 2 |
8.40 |
8.38 |
5.60 |
5.58 |
$0.59%$ |
| Run 3 |
8.40 |
8.32 |
5.60 |
5.51 |
$2.54%$ |
| Run 4 |
8.40 |
8.37 |
5.60 |
5.57 |
$0.89%$ |
| Run 5 |
8.40 |
8.34 |
5.60 |
5.55 |
$1.59%$ |
| Run 6 |
8.40 |
8.36 |
5.60 |
5.56 |
$1.18%$ |
| Trung bình |
8.40 |
8.353 |
5.60 |
5.552 |
1.41% |
Kịch bản lấy hàng 5 trạm thực tế (ITSP Real-world Execution)
Trong kịch bản đơn hàng yêu cầu lấy hàng tại 5 trạm phân tán: $S = {S_1, S_2, S_3, S_4, S_5}$.
- Lộ trình tối ưu tính bởi ACO: $\text{Home} \rightarrow S_1 \rightarrow S_3 \rightarrow S_5 \rightarrow S_4 \rightarrow S_2 \rightarrow \text{Home}$.
- Tổng thời gian hoàn thành chu trình: $142\text{ giây}$.
- Tỷ lệ tránh vật cản động thành công của thuật toán DWA: $100%$ (không xảy ra va chạm cơ học).
- Tỷ lệ gắp và thả hàng chính xác vào thùng chứa trên xe: $93.3%$ (28/30 lần thử nghiệm thành công).
Đổi mới và đóng góp kỹ thuật
- Cơ chế truyền động Cycloid in 3D tích hợp trên Manipulator: Đề tài tự thiết kế và gia công thành công bộ giảm tốc Cycloid tỷ số truyền cao ($1:20$) trực tiếp bằng công nghệ in 3D. Giải pháp này giúp triệt tiêu hiện tượng rơ trục, tăng momen xoắn giữ vị trí gấp 3.8 lần so với phương án dùng bánh răng trụ thẳng thông thường mà không làm tăng đáng kể khối lượng cánh tay.
- Kiến trúc quy hoạch đường đi phân tầng linh hoạt (Hierarchical Path Planning): Kết hợp chặt chẽ 3 cấp thuật toán:
- Cấp 1 (Cấp nhiệm vụ): ACO tối ưu tổ hợp thứ tự ghé thăm các kệ hàng, giảm $28.4%$ tổng quãng đường di chuyển so với thuật toán tuần tự truyền thống (FIFO).
- Cấp 2 (Cấp toàn cục): Dijkstra tạo lộ trình tối ưu tĩnh trên bản đồ lưới nhị phân.
- Cấp 3 (Cấp cục bộ): DWA liên tục tính toán quỹ đạo vận tốc thực thi để né tránh chướng ngại vật xuất hiện bất ngờ với độ trễ phản hồi $< 120\text{ ms}$.
- Chuỗi cung ứng thông tin khép kín (End-to-End Cloud-to-Motion): Xây dựng luồng dữ liệu mượt mà từ giao diện người dùng web (ReactJS) $\rightarrow$ Cloud Database (Firebase) $\rightarrow$ GUI Quản lý (PyQt5) $\rightarrow$ Robot Core (ROS Noetic) $\rightarrow$ Chấp hành cấp thấp (Dual Arduino).
Ứng dụng thực tế và triển khai
+-------------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI THỰC TẾ |
+-------------------------------------------------------------------------------+
| Giai đoạn 1: Khảo sát & Quét bản đồ (Mapping) |
| - Sử dụng Teleop lái robot thu thập dữ liệu Laser Scan & Odometry |
| - Tạo Binary Occupancy Grid Map 2D qua gói Gmapping SLAM |
+-------------------------------------------------------------------------------+
|
v
| Giai đoạn 2: Định vị & Đánh dấu trạm (Tagging Stations) |
| - Nạp bản đồ vào Navigation Stack, cấu hình Costmap toàn cục và cục bộ |
| - Đánh dấu tọa độ $(x, y, \theta)$ của Trạm Home và các Kệ hàng trên Rviz |
+-------------------------------------------------------------------------------+
|
v
| Giai đoạn 3: Tích hợp hệ thống quản lý (System Integration) |
| - Cấu hình Firebase Realtime DB và liên kết Web Order (ReactJS) |
| - Khởi chạy GUI điều hành, thiết lập chế độ Auto Mode và Manual Mode |
+-------------------------------------------------------------------------------+
|
v
| Giai đoạn 4: Vận hành & Bảo trì (Operation & Monitoring) |
| - Tiếp nhận đơn hàng, tự động chạy giải thuật ACO & điều phối xe lấy hàng |
| - Giám sát dòng động cơ, trạng thái định vị AMCL và cảnh báo lỗi qua Dashboard|
+-------------------------------------------------------------------------------+
Phân tích hiệu quả kinh tế (ROI)
- Chi phí chế tạo mẫu thử nghiệm: Ước tính khoảng 15.000.000 – 18.000.000 VNĐ (sử dụng Jetson Nano, linh kiện in 3D, Arduino, DC Servo và cảm biến LiDAR tầm trung).
- So sánh chi phí công nghiệp: Rẻ hơn 80% – 85% so với việc đầu tư các cánh tay robot công nghiệp kết hợp AMR chuyên dụng nhập khẩu (thường dao động từ 150 – 300 triệu VNĐ/hệ thống).
- Thời gian hoàn vốn (ROI): Dự kiến từ 8 – 12 tháng tại các kho hàng bán lẻ quy mô vừa và nhỏ (Micro-fulfillment Centers) nhờ tiết kiệm chi phí nhân công lấy hàng theo ca đêm.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Cảm biến LiDAR 2D chỉ quét trên một mặt phẳng cắt ngang cố định, chưa nhận diện được các vật cản thấp hơn hoặc cao hơn mặt phẳng quét của tia laser.
- Camera USB cố định góc nhìn trên khung xe gây phụ thuộc vào vị trí dừng xe chính xác của AMR trước kệ hàng để nhận diện màu sắc.
- Chưa trang bị cơ chế tự động sạc không dây hoặc tiếp xúc trạm sạc khi pin Lithium giảm xuống dưới ngưỡng an toàn ($< 15%$).
Hướng phát triển trong tương lai
- Nâng cấp lên camera đo độ sâu 3D (Intel RealSense D435i / Orbbec Astra) để nhận diện đám mây điểm (Point Cloud) và áp dụng giải thuật học sâu YOLOv8 kết hợp 6-DOF Grasp Pose Estimation.
- Chuyển đổi nền tảng sang ROS 2 (Humble/Iron) kết hợp hệ thống quản trị hạm đội xe đa robot (Multi-Robot Fleet Management) qua giao thức Zenoh/DDS.
- Tích hợp cánh tay 4-DOF hoặc 6-DOF bằng sợi carbon nhằm mở rộng không gian làm việc (work envelope) và nâng cao tải trọng nâng.
Đối tượng hưởng lợi
- Sinh viên ngành Kỹ thuật Điều khiển & Tự động hóa, Cơ điện tử, Robotics: Nguồn tài liệu tham khảo hoàn chỉnh từ mô hình hóa toán học động học robot, thiết kế hộp số Cycloid, lập trình ROS nhúng đến các thuật toán AI Heuristic.
- Kỹ sư phát triển hệ thống nhúng và phần mềm Robot: Khung kiến trúc mẫu (architecture boilerplate) để kết nối vi điều khiển Arduino với máy tính nhúng NVIDIA Jetson qua giao tiếp ROS Serial / TCP Socket.
- Doanh nghiệp vừa và nhỏ (SMEs) trong lĩnh vực Logistics: Cung cấp phương án kỹ thuật khả thi với chi phí thấp để tự động hóa khâu gom hàng chia chọn trong các kho thông minh.
- Nhà nghiên cứu học thuật: Cung cấp dữ liệu thực nghiệm so sánh giữa mô phỏng MATLAB/Gazebo và môi trường vận hành thực tế đối với hệ thống Mobile Manipulator.
Câu hỏi thường gặp (FAQ)
1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai hệ thống này là gì?
Máy tính nhúng trên robot cần tối thiểu NVIDIA Jetson Nano 4GB (hoặc Raspberry Pi 4 Model B 4GB/8GB), 01 cảm biến LiDAR 2D (như Slamtec RPLIDAR A1/A2), 01 IMU 6 trục MPU-6050, 02 mạch Arduino Mega 2560 và nguồn cấp pin Lithium 12V 10A có mạch xả dòng đỉnh $\ge 20\text{A}$. Máy trạm vận hành cần cài Ubuntu 18.04/20.04 có ROS và hỗ trợ card mạng WiFi băng tần $5\text{GHz}$ để giảm độ trễ truyền dữ liệu hình ảnh.
2. Khi số lượng trạm lấy hàng tăng lên lớn (hàng trăm trạm), thuật toán ACO có bị trễ không?
Với quy mô kho lớn ($> 50$ trạm), thuật toán ACO tiêu chuẩn có thể mất vài giây để hội tụ. Giải pháp là chia bản đồ thành các vùng cụm (Clustering bằng K-Means) theo từng dãy kệ hàng, sau đó áp dụng ACO đa tầng (Hierarchical ACO) để giải bài toán trong từng cụm trước khi kết nối toàn cục, giúp thời gian xử lý duy trì ở mức dưới $0.5\text{ giây}$.
3. Làm thế nào để hệ thống tích hợp với phần mềm quản lý kho (WMS/ERP) có sẵn của doanh nghiệp?
Tầng Web Server được thiết kế theo kiến trúc RESTful API và đồng bộ qua Firebase Realtime Database. Hệ thống WMS hiện hữu của doanh nghiệp chỉ cần gửi yêu cầu đơn hàng dạng JSON (gồm Order ID, Item ID, Trạm lưu trữ, Số lượng) đến API endpoint của server để đưa vào hàng đợi tự động của robot mà không cần sửa đổi mã nguồn điều khiển robot.
4. Hệ thống cần bảo trì định kỳ những bộ phận nào và tần suất ra sao?
Cần hiệu chuẩn lại cảm biến IMU (MPU-6050) và kiểm tra độ mòn cơ khí của các con lăn trong hộp số Cycloid in 3D sau mỗi 200 giờ hoạt động. Bề mặt gương bảo vệ của mắt quét RPLIDAR cần được lau sạch bụi định kỳ 2 tuần/lần để tránh hiện tượng suy giảm cường độ tín hiệu phản xạ laser.
5. Chi phí đầu tư dự kiến và thời gian hoàn vốn (ROI) được tính toán như thế nào?
Tổng chi phí chế tạo một xe nguyên mẫu khoảng 15 – 18 triệu VNĐ. So với chi phí thuê 01 nhân công kho vận (khoảng 8 – 10 triệu VNĐ/tháng), hệ thống giúp cắt giảm $60%$ thời gian gom hàng thủ công, mang lại khả năng hoàn vốn đầu tư trong vòng 8 đến 12 tháng vận hành liên tục.
Kết luận
Đồ án tốt nghiệp "Thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho" đã chứng minh tính khả thi và hiệu quả cao của việc tích hợp hệ thống xe tự hành AMR với cánh tay robot thao tác 3 bậc tự do. Bằng việc ứng dụng đồng bộ các giải thuật tiên tiến bao gồm thuật toán tối ưu đàn kiến (ACO) giải bài toán ITSP, thuật toán Dijkstra và DWA trong điều hướng tránh va chạm, cùng cơ chế điều khiển PID vòng kín trên nền tảng ROS, hệ thống đã thực hiện thành công chu trình hoàn chỉnh: từ lúc tiếp nhận đơn hàng trên Web, tự động hoạch định đường đi ngắn nhất qua 5 trạm kệ, nhận diện và gắp chính xác kiện hàng, cho đến khi vận chuyển an toàn về trạm đích trong thời gian 142 giây.
Kết quả nghiên cứu không chỉ giải quyết triệt để bài toán tự động hóa thao tác bốc xếp hàng hóa tại chỗ mà còn mở ra hướng phát triển ứng dụng robot di động phục vụ kho vận thông minh với mức chi phí đầu tư tối ưu, phù hợp với điều kiện thực tế của các doanh nghiệp tại Việt Nam.