Giới thiệu dự án
Trong bối cảnh Cách mạng Công nghiệp 4.0 và xu hướng tự động hóa Logistics toàn cầu, thị trường robot di động tự hành (Autonomous Mobile Robots - AMR) và phương tiện tự hành có dẫn đường (Automated Guided Vehicles - AGV) đang ghi nhận mức tăng trưởng kép hàng năm (CAGR) đạt hơn 19.8% trong giai đoạn 2021–2028. Tuy nhiên, việc vận hành các robot đơn lẻ bộc lộ nhiều điểm nghẽn về hiệu suất xử lý tác vụ quy mô lớn, khả năng thích ứng linh hoạt và độ tin cậy hệ thống. Nghiên cứu điều khiển phân tán robot bầy đàn (Swarm Robotics) mô phỏng tập tính sinh học tự nhiên (như đàn chim, đàn kiến) trở thành giải pháp then chốt giúp tối ưu hóa khả năng cộng tác, chia sẻ tải trọng và duy trì hoạt động liên tục ngay cả khi một cá thể gặp sự cố.
+-----------------------------------------------------------------------------+
| HỆ THỐNG TỔNG QUAN |
| |
| [ Overhead Global Camera ] ---> [ Host Server: OpenCV + PyQt5 + GUI ] |
| | |
| (TCP/IP Stream Sockets over WiFi) |
| | |
| +-------------------------+-----------------+-------------------+ |
| | | | |
| v v v |
| [ Leader Robot 1 ] [ Follower Robot 2 ] [ Follower Robot 3 ]
| (Jetson Nano B01) (Jetson Nano B01) (Jetson Nano B01)
| - LC Avoidance - Leader-Follower (L-psi) - Leader-Follower
+-----------------------------------------------------------------------------+
Vấn đề kỹ thuật (Problem Statement)
Các hệ thống robot bầy đàn truyền thống thường phụ thuộc vào cấu trúc điều khiển tập trung hoàn toàn hoặc sử dụng các module vô tuyến RF/Zigbee chuyên dụng có băng thông hẹp, dễ suy hao và nghẽn tín hiệu khi số lượng gói tin tăng cao. Bên cạnh đó, các thuật toán bám đội hình kinh điển như Virtual Structure hay Behavior-based thường gặp khó khăn khi xử lý đồng thời bài toán động học của hệ cơ không vi phân (Nonholonomic Mobile Robot), dẫn đến hiện tượng trôi dạt sai số tích lũy, vỡ đội hình hoặc va chạm khi môi trường xuất hiện vật cản bất ngờ.
Mục tiêu dự án cụ thể
- Thiết kế và chế tạo phần cứng: Xây dựng hệ thống 03 mobile robot vi sai nonholonomic tích hợp máy tính nhúng Nvidia Jetson Nano B01, card mạng không dây Intel Dual Band Wireless-AC 8265 và động cơ DC giảm tốc JGY370.
- Xử lý ảnh định vị toàn cục: Ứng dụng thư viện OpenCV để hiệu chuẩn méo thấu kính (Camera Calibration), phân đoạn không gian màu HSV và trích xuất tâm hình học ($C_x, C_y$), góc hướng ($\theta$) của từng robot và chướng ngại vật trong thời gian thực.
- Truyền thông phân tán đa luồng: Thiết kế kiến trúc Socket API qua giao thức TCP/IP trên nền tảng mạng WiFi, hỗ trợ truyền nhận dữ liệu full-duplex giữa Server điều phối và các Client robot.
- Giải thuật điều khiển đội hình và tránh vật cản: Tích hợp mô hình Leader-Follower dựa trên động học bước sau (Backstepping Kinematics) kết hợp giải thuật quỹ đạo vòng giới hạn (Limit Cycle - LC) để robot dẫn đầu tự động vẽ quỹ đạo né vật cản trong khi các robot bám sau duy trì cấu trúc hình học xác định.
- Giao diện giám sát thời gian thực: Lập trình phần mềm GUI bằng PyQt5 cho phép trực quan hóa tọa độ, chuyển đổi linh hoạt 03 chế độ vận hành (Tụ bầy, Duy trì đội hình, Tránh vật cản).
Phạm vi và Giới hạn
- Không gian hoạt động: Môi trường mặt phẳng 2D giới hạn trong trường quan sát (FOV) của Camera quan sát đặt tĩnh phía trên (Overhead Camera).
- Đối tượng thực nghiệm: Cụm 03 robot di động hai bánh vi sai chủ động và một bánh xe dẫn hướng đa hướng (Caster Wheel).
- Mô hình vật cản: Vật cản tĩnh có biên dạng quy ước tròn/trụ trong không gian khảo sát.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Hiện nay, các nghiên cứu và giải pháp điều khiển đội hình robot công nghiệp tập trung vào ba hướng tiếp cận chính:
| Tiêu chí phân tích |
Hệ thống RF/Zigbee tập trung |
Kiến trúc Virtual Structure |
Giải pháp đề xuất (API Socket + LC) |
| Cơ chế truyền thông |
RF 433MHz / Zigbee 2.4GHz |
CAN Bus / Wi-Fi UDP |
WiFi TCP/IP Stream Socket đa luồng |
| Băng thông & Độ tin cậy |
Thấp (<250 kbps), dễ mất gói |
Trung bình, không đảm bảo thứ tự |
Cao (lên đến 867 Mbps), bảo đảm toàn vẹn gói tin |
| Xử lý vật cản |
Dừng toàn bộ hệ thống |
Biến dạng cấu trúc phức tạp |
Phân nhánh Limit Cycle động, duy trì $L-\psi$ |
| Tính linh hoạt phần cứng |
Phụ thuộc module RF chuyên biệt |
Chi phí vi điều khiển cao |
Sử dụng SoC chuẩn (Nvidia Jetson Nano) |
| Chi phí triển khai |
Trung bình |
Rất cao |
Tối ưu, tận dụng hạ tầng mạng cục bộ |
Phân loại yêu cầu theo mô hình MoSCoW
- Must have (Bắt buộc): Truyền nhận dữ liệu thời gian thực qua TCP Socket giữa Server và 3 robot; định vị chính xác tọa độ $(x, y, \theta)$; duy trì đội hình tam giác/hàng ngang/hàng dọc; tự động đổi hướng tránh vật cản.
- Should have (Nên có): Hiệu chỉnh méo quang học thấu kính; giao diện GUI PyQt5 hiển thị đồ thị sai số thời gian thực; cơ chế Multi-threading độc lập cho từng kết nối Client.
- Could have (Có thể có): Tự động phát hiện lỗi mất kết nối Socket và khôi phục đường truyền; vẽ vết quỹ đạo di chuyển thực tế của các robot trên GUI.
- Won't have (Chưa thực hiện): Tránh vật cản động di chuyển với vận tốc cao; hoạt động trong không gian 3D ngoài trời không có camera toàn cục.
Thiết kế hệ thống
graph TD
subgraph Host_Control_Center [Trung tâm Điều khiển & Xử lý Thị giác]
CAM[USB Global Camera] -->|Frame thô| CALIB[Camera Calibration & Undistortion]
CALIB -->|Frame chuẩn| HSV[Chuyển đổi HSV & Lọc ngưỡng màu]
HSV -->|Binary Mask| MOMENT[Tính Moment M00, M10, M01 -> Toạ độ x, y, theta]
MOMENT -->|State Feedback| GUI[PyQt5 GUI Monitoring & Trajectory Planner]
GUI -->|Lệnh điều khiển / Quỹ đạo| SOCK_SRV[TCP Stream Socket Server Multi-threaded]
end
subgraph Swarm_Agents [Phân hệ Robot Bầy Đàn]
SOCK_SRV -->|WiFi Network| C1[Client 1: Leader Robot Jetson Nano B01]
SOCK_SRV -->|WiFi Network| C2[Client 2: Follower 1 Jetson Nano B01]
SOCK_SRV -->|WiFi Network| C3[Client 3: Follower 2 Jetson Nano B01]
C1 -->|I2C / GPIO PWM| DRV1[Motor Driver & JGY370 Motors]
C2 -->|I2C / GPIO PWM| DRV2[Motor Driver & JGY370 Motors]
C3 -->|I2C / GPIO PWM| DRV3[Motor Driver & JGY370 Motors]
end
Ngăn xếp Công nghệ (Technology Stack)
- Hệ điều hành nhúng: Linux Ubuntu 18.04 LTS tích hợp sẵn trên nền tảng Nvidia JetPack 4.6.
- Ngôn ngữ lập trình: Python 3.8 với thư viện tính toán ma trận khoa học
NumPy 1.19.5.
- Thị giác máy tính (Computer Vision):
OpenCV 4.5.4 (Module: cv2.calibrateCamera, cv2.findContours, cv2.moments).
- Giao thức mạng: Python Standard Library
socket (Giao thức socket.AF_INET, socket.SOCK_STREAM) kết hợp threading.
- Giao diện người dùng:
PyQt5 5.15.6 thiết kế layout bằng Qt Designer.
- Mô phỏng & Đánh giá giải thuật:
MATLAB/Simulink R2021b.
- Phần cứng truyền thông: Card mạng
Intel Dual Band Wireless-AC 8265 chuẩn 802.11ac băng tần kép 2.4GHz/5GHz, Anten đa hướng độ lợi cao 5dBi.
Mô hình toán học hệ thống
Mô hình động học của Mobile Robot vi sai nonholonomic được mô tả trong không gian Descartes hai chiều qua vector trạng thái $q = [x, y, \theta]^T$:
$$\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}$$
Trong đó:
- $x, y$: Tọa độ tâm hình học trục bánh sau của robot (m).
- $\theta$: Góc hướng của robot so với trục $Ox$ (rad).
- $v$: Vận tốc dài của tâm robot ($m/s$).
- $\omega$: Vận tốc góc của robot ($rad/s$).
- $2r$: Khoảng cách giữa hai bánh xe chủ động ($2r = 0.15\text{ m}$).
Đối với bài toán tránh vật cản, phương pháp Limit Cycle thiết lập một trường vector vận tốc quanh tâm vật cản $(x_o, y_o)$ với bán kính an toàn $R_s$:
$$\dot{x}_r = \alpha y_r + x_r (R_s^2 - x_r^2 - y_r^2)$$
$$\dot{y}_r = -\alpha x_r + y_r (R_s^2 - x_r^2 - y_r^2)$$
Trong đó: $x_r = x - x_o$, $y_r = y - y_o$, và $\alpha = \pm 1$ xác định hướng quay né tránh (cùng chiều hoặc ngược chiều kim đồng hồ).
Implementation và kết quả
Development process & Core Code Architecture
Quy trình phát triển được chia thành 4 giai đoạn rõ ràng:
- Giai đoạn 1 (Tuần 1–6): Thiết kế mô hình toán học động học và mô phỏng hoàn chỉnh trên MATLAB/Simulink R2021b.
- Giai đoạn 2 (Tuần 7–12): Gia công cơ khí khung gầm mica, lắp ráp mạch điều khiển động cơ Jetbot Expansion Board và tích hợp máy tính Jetson Nano.
- Giai đoạn 3 (Tuần 13–18): Xây dựng module xử lý ảnh định vị OpenCV và lập trình máy chủ Socket TCP Server đa luồng.
- Giai đoạn 4 (Tuần 19–24): Tích hợp giải thuật điều khiển bám Leader-Follower + Limit Cycle, lập trình GUI PyQt5 và hiệu chỉnh thực nghiệm.
/Swarm_Robot_System/
│
├── /Server_Host/
│ ├── main_gui.py # PyQt5 GUI Application & Visualization
│ ├── vision_pipeline.py # Camera undistortion, HSV filter, Blob detection
│ ├── trajectory_planner.py # Limit Cycle & Reference Path Generator
│ └── socket_server.py # Multi-threaded TCP Socket Server
│
└── /Client_Robot_Jetson/
├── robot_client.py # TCP Socket Client Receiver & Parser
├── kinematics_controller.py # Closed-loop PID & Nonholonomic Controller
└── motor_driver.py # Jetbot I2C Motor Board Controller
Trích đoạn mã nguồn máy chủ đa luồng (Multi-threaded TCP Socket Server)
import socket
import threading
import json
import time
class SwarmSocketServer:
def __init__(self, host='192.168.1.100', port=8888):
self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.server_socket.bind((host, port))
self.server_socket.listen(5)
self.clients = {} # {robot_id: client_socket}
self.is_running = True
print(f"[*] Swarm Server listening on {host}:{port}")
def handle_client(self, client_socket, address):
robot_id = None
try:
# Bắt tay nhận ID của Robot Client
handshake = client_socket.recv(1024).decode('utf-8')
init_data = json.loads(handshake)
robot_id = init_data.get("robot_id")
self.clients[robot_id] = client_socket
print(f"[+] Robot {robot_id} connected from {address}")
while self.is_running:
data = client_socket.recv(1024)
if not data:
break
# Xử lý phản hồi telemetry nếu có
except Exception as e:
print(f"[-] Error with Robot {robot_id}: {e}")
finally:
if robot_id in self.clients:
del self.clients[robot_id]
client_socket.close()
def send_control_command(self, robot_id, v_target, w_target):
if robot_id in self.clients:
payload = json.dumps({"v": round(v_target, 3), "w": round(w_target, 3)}) + "\n"
try:
self.clients[robot_id].sendall(payload.encode('utf-8'))
except socket.error as err:
print(f"[-] Transmission error to Robot {robot_id}: {err}")
def start(self):
while self.is_running:
client_sock, addr = self.server_socket.accept()
thread = threading.Thread(target=self.handle_client, args=(client_sock, addr))
thread.daemon = True
thread.start()
Xử lý ảnh định vị và trích xuất góc hướng qua OpenCV
import cv2
import numpy as np
def extract_robot_pose(frame, hsv_lower, hsv_upper, min_area=150):
"""
Trích xuất tọa độ tâm (Cx, Cy) và góc hướng theta từ Blob màu dán trên Robot
"""
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, hsv_lower, hsv_upper)
# Biến đổi hình thái học Morphology: Opening để khử nhiễu đốm nhỏ
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if not contours:
return None
# Lấy đường bao lớn nhất tương ứng với diện tích Blob nhận diện
largest_cnt = max(contours, key=cv2.contourArea)
if cv2.contourArea(largest_cnt) < min_area:
return None
# Tính Spatial Moments
M = cv2.moments(largest_cnt)
if M["m00"] == 0:
return None
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
# Xác định hướng thông qua elip bao (hoặc 2 điểm đánh dấu đầu-đuôi)
if len(largest_cnt) >= 5:
ellipse = cv2.fitEllipse(largest_cnt)
theta = np.deg2rad(ellipse[2]) # Góc quay tính theo radian
else:
theta = 0.0
return (cX, cY, theta)
Testing và validation
Kiểm thử và Hiệu chuẩn Hệ thống (Calibration & Benchmarks)
- Hiệu chuẩn Camera (Intrinsics Calibration): Sử dụng bàn cờ mẫu (Chessboard Pattern) kích thước $8 \times 5$ ô cờ tiêu chuẩn. Đã tính toán triệt tiêu thành công hệ số méo xuyên tâm $(k_1, k_2, k_3)$ và méo tiếp tuyến $(p_1, p_2)$, đưa sai số tái chiếu (Reprojection Error) về mức $\sigma = 0.28\text{ pixel}$.
- Khảo sát độ trễ mạng WiFi Socket: Thực hiện kiểm thử truyền liên tục 10.000 gói tin JSON điều khiển ở tần số $50\text{ Hz}$.
| Chỉ số kiểm thử |
Giá trị Mô phỏng (Simulink) |
Kết quả Thực nghiệm |
Độ lệch |
| Độ trễ truyền gói tin Socket (Latency) |
$0.00\text{ ms}$ |
$4.25 \pm 1.12\text{ ms}$ |
$+4.25\text{ ms}$ |
| Tốc độ xử lý Pipeline Thị giác |
$60.0\text{ FPS}$ |
$42.6\text{ FPS}$ |
$-17.4\text{ FPS}$ |
| Sai số vị trí bám quỹ đạo $e_{xy}$ (Leader) |
$0.012\text{ m}$ |
$0.038\text{ m}$ |
$+0.026\text{ m}$ |
| Sai số góc hướng $e_\theta$ |
$0.035\text{ rad}$ |
$0.082\text{ rad}$ |
$+0.047\text{ rad}$ |
| Sai số khoảng cách giữa các xe ($L_{12}, L_{13}$) |
$0.005\text{ m}$ |
$0.021\text{ m}$ |
$+0.016\text{ m}$ |
| Tỷ lệ vượt vật cản an toàn (Limit Cycle) |
$100%$ |
$100%$ ($20/20$ lần thử) |
$0%$ |
Khoảng cách thực nghiệm giữa Leader (R1) và Follower (R2) khi di chuyển:
Khoảng cách đặt (L_ref) = 0.35 m
+----------------------------------------------------------------------+
| Thời gian (s) | Khoảng cách đo (m) | Sai số e_L (m) | Góc lệch (rad) |
|---------------|-------------------|----------------|----------------|
| 0.0 | 0.52 | +0.17 | 0.45 |
| 3.0 | 0.38 | +0.03 | 0.12 |
| 6.0 | 0.35 | 0.00 | 0.06 |
| 9.0 (Né VC) | 0.37 | +0.02 | 0.09 |
| 12.0 | 0.35 | 0.00 | 0.04 |
+----------------------------------------------------------------------+
Đổi mới và đóng góp
- Kiến trúc truyền thông phân tán không dây qua API Socket TCP: Thay vì sử dụng các module RF phần cứng đắt tiền và dễ nhiễu, hệ thống chuẩn hóa toàn bộ luồng truyền tín hiệu qua mạng WiFi cục bộ bằng giao thức TCP Socket Stream. Cơ chế đa luồng độc lập (Multi-threading) giúp triệt tiêu hiện tượng thắt nút cổ chai (Bottleneck), giảm độ trễ truyền thông đến $35%$ so với giao tiếp nối tiếp UART/RF truyền thống.
- Tích hợp Giải thuật Limit Cycle kết hợp Leader-Follower kín: Khắc phục triệt để nhược điểm của các tài liệu trước đây (vốn chỉ áp dụng điều khiển hở hoặc không có cơ chế tái lập quỹ đạo né vật cản). Robot dẫn đầu liên tục cập nhật trường vector Limit Cycle để đi vòng qua vật cản mượt mà, đồng thời tính toán bù vận tốc góc cho hai robot bám sau, đảm bảo giữ vững $100%$ hình thái đội hình (tam giác, hàng ngang) mà không xảy ra xung đột nội bộ.
- Pipeline thị giác máy tính khép kín: Tối ưu hóa thuật toán Moment kết hợp phân đoạn ngưỡng màu HSV trên OpenCV, cho phép phát hiện đồng thời 3 xe và vật cản ở tốc độ thực tế $>40\text{ FPS}$, triệt tiêu ảnh hưởng của hiện tượng méo cầu thấu kính quang học.
Ứng dụng thực tế và triển khai
+------------------------------------------------------------------------------+
| TRIỂN KHAI THỰC TẾ & MỞ RỘNG |
| |
| [ Logistics / Smart Factory ] [ Trinh sát / Tìm kiếm Cứu nạn ] |
| - Cụm AGV vận chuyển hàng nặng - Bầy robot dò mìn / khảo sát hang động |
| - Tụ bầy và tách luồng tự động - Phân tán cảm biến đo đạc môi trường độc |
| |
| Yêu cầu triển khai: |
| - Router WiFi công nghiệp: Băng thông >= 300 Mbps, độ phủ ổn định |
| - Nguồn cấp: Pin Li-ion 3S 12V dung lượng >= 2600 mAh (hoạt động 2.5h) |
| - Mặt sàn: Hệ số ma sát đồng đều, độ nghiêng < 3 độ |
+------------------------------------------------------------------------------+
Phân tích Kinh tế & Hiệu quả Đầu tư (Cost-Benefit Analysis)
- Chi phí phần cứng cho 03 Robot: Ước tính khoảng $18.500.000\text{ VNĐ}$ (Bao gồm 3 kit Nvidia Jetson Nano, camera góc rộng, động cơ, khung gầm và mạch điều khiển).
- So với hệ thống AMR công nghiệp nhập ngoại: Giảm hơn $75%$ chi phí chế tạo mẫu thử nghiệm phục vụ nghiên cứu và đào tạo.
- Thời gian hoàn vốn (ROI): Ứng dụng trong các xưởng lắp ráp linh kiện quy mô vừa và nhỏ dự kiến giúp cắt giảm $40%$ nhân công vận chuyển nội khu, thời gian thu hồi vốn ước tính từ 8 đến 12 tháng.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Hệ thống vẫn phụ thuộc vào điều kiện chiếu sáng của môi trường xung quanh; khi cường độ sáng thay đổi đột ngột, ngưỡng màu HSV có thể bị trôi dạt dẫn đến sai số định vị.
- Không gian làm việc bị giới hạn trực tiếp bởi trường nhìn (FOV) của một Camera quan sát gắn cố định trên cao.
- Chưa tích hợp cảm biến đo cự ly cục bộ (như LiDAR hay Siêu âm) trên từng robot để xử lý các vật cản bất ngờ nằm ngoài vùng quét của Camera toàn cục.
Hướng phát triển tiếp theo
- Chuyển đổi mô hình định vị từ Camera toàn cục sang hệ thống định vị tương đối gắn trực tiếp trên xe (Onboard Stereo Camera kết hợp 2D LiDAR) sử dụng framework ROS2 (Robot Operating System 2) và giải thuật Cartographer SLAM.
- Nâng cấp giao thức truyền thông sang nền tảng FastDDS hoặc MQTT trên mạng không dây công nghiệp 5G NR để mở rộng quy mô bầy đàn lên $N \ge 20$ robot.
- Tích hợp mạng nơ-ron học sâu (Deep Reinforcement Learning - DRL) để tự động điều chỉnh tham số bán kính an toàn của Limit Cycle theo vận tốc di chuyển thực tế của vật cản động.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
| |
| [ Sinh viên Kỹ thuật ] [ Kỹ sư Lập trình Nhúng ] |
| - Bộ tài liệu mẫu hoàn chỉnh - Mẫu kiến trúc Socket TCP đa luồng |
| - Phương pháp luận kết hợp - Thuật toán trích xuất Pose từ OpenCV |
| Simulink -> Thực nghiệm chạy ổn định trên Jetson Nano |
| |
| [ Doanh nghiệp Tự động hóa ] [ Nhà nghiên cứu (Researchers) ] |
| - Thiết kế AGV bầy đàn tối ưu - Cơ sở thực nghiệm mở rộng giải thuật |
| - Giảm 75% chi phí đầu tư R&D Limit Cycle và Backstepping Nonholonomic|
+-----------------------------------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai hệ thống là gì?
Máy chủ Host Server yêu cầu CPU tối thiểu Intel Core i5 thế hệ 8 hoặc tương đương, RAM 8GB, có hỗ trợ card đồ họa tích hợp hoặc rời để xử lý OpenCV mượt mà. Mỗi robot cần trang bị tối thiểu máy tính nhúng Nvidia Jetson Nano (2GB/4GB) hoặc Raspberry Pi 4 Model B, kèm card mạng WiFi băng tần 5GHz để đảm bảo độ trễ kết nối $<10\text{ ms}$.
2. Hệ thống có khả năng mở rộng (Scalability) cho bao nhiêu Robot?
Với kiến trúc TCP Socket Server đa luồng trên một cổng port duy nhất, hệ thống hiện tại có thể mở rộng ổn định từ 3 đến 8 robot trong cùng một mạng LAN cục bộ mà không làm suy giảm tần số gửi lệnh điều khiển ($>30\text{ Hz}$). Khi số lượng robot vượt quá 10, cần nâng cấp Server lên kiến trúc phân tán microservices hoặc chuyển đổi sang broker ROS2 DDS.
3. Giải thuật Limit Cycle có tránh được vật cản có hình dạng bất kỳ không?
Trong phạm vi đồ án, giải thuật Limit Cycle được thiết lập dựa trên mô hình bao tròn (bounding circle) với bán kính an toàn $R_s$. Đối với các vật cản có hình dạng phức tạp (hình chữ nhật, đa giác lõm), thuật toán sẽ gán một vòng tròn ngoại tiếp quanh đối tượng để đảm bảo robot không tiếp cận vùng nguy hiểm.
4. Nếu kết nối WiFi bị ngắt đột ngột giữa chừng, robot sẽ xử lý như thế nào?
Trên client robot Jetson Nano, chương trình điều khiển được thiết kế với cơ chế kiểm tra nhịp tim (Heartbeat Watchdog). Nếu không nhận được gói tin dữ liệu từ Server trong khoảng thời gian vượt quá $500\text{ ms}$, robot sẽ tự động ngắt chân xung PWM về 0 để dừng khẩn cấp động cơ, ngăn chặn tình trạng mất kiểm soát gây va chạm.
5. Tại sao không sử dụng ROS/ROS2 mà lại tự xây dựng Socket API từ đầu?
Việc xây dựng trực tiếp giao tiếp Stream Socket bằng thư viện chuẩn Python mang lại khả năng làm chủ mã nguồn tuyệt đối, tối ưu hóa dung lượng bộ nhớ nhúng, loại bỏ độ phức tạp của các gói phụ thuộc (dependencies) trong ROS, đồng thời giúp sinh viên nắm vững bản chất tầng giao vận TCP/IP và kiến trúc mạng hướng dịch vụ.
Kết luận
Đề tài "Điều khiển phân tán robot bầy đàn tránh vật cản dùng mạng API Socket" đã giải quyết trọn vẹn bài toán tích hợp giữa lý thuyết điều khiển tự động phi tuyến, thị giác máy tính và công nghệ mạng truyền thông nhúng. Hệ thống chứng minh tính khả thi và độ chính xác cao qua việc điều khiển thành công cụm 03 robot bám quỹ đạo, duy trì các cấu trúc hình học đa dạng và tự động né vật cản an toàn với sai số bám trung bình dưới $3.8\text{ cm}$. Đây là nền tảng kỹ thuật vững chắc mở ra hướng ứng dụng thực tiễn rộng rãi trong các hệ thống nhà kho thông minh, logistics tự hành và giám sát môi trường phân tán trong kỷ nguyên công nghiệp tương lai.