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

Sự phát triển nhanh chóng của khoa học kỹ thuật trong lĩnh vực linh kiện điện tử số và thiết bị điều khiển tự động đang từng bước thay thế các công nghệ cũ bằng các giải pháp hiện đại. Các hệ thống điều khiển có thể lập trình sử dụng vi điều khiển, bộ vi xử lý, PLC và các thiết bị điều khiển từ xa ngày càng được ứng dụng rộng rãi trong thực tế. Các sản phẩm thông minh thế hệ mới đòi hỏi khả năng tích hợp công nghệ cao nhằm giải quyết các bài toán thực tiễn phức tạp như gắp vật thể, tránh chướng ngại vật, bám quỹ đạo di chuyển và điều khiển thiết bị tự động.

Đồ án tốt nghiệp đại học ngành Kỹ sư Tin học (Information Computer Engineer) của tác giả Bùi Xuân Hòa, dưới sự hướng dẫn của TS. Nguyễn Thanh Tùng tại Khoa Quốc tế – Đại học Quốc gia Hà Nội (thực hiện năm 2021), tập trung vào đề tài: "Xe robot tránh chướng ngại vật sử dụng Raspberry Pi" (Robot car avoids obstacles using Raspberry Pi).

Nhiệm vụ và mục tiêu nghiên cứu của đồ án bao gồm:

  1. Nghiên cứu tổng quan về hệ thống máy tính nhúng Raspberry Pi, cấu trúc phần cứng, hệ điều hành và khả năng ứng dụng máy tính nhúng trong xử lý ảnh số.
  2. Tìm hiểu cơ sở lý thuyết về thị giác máy tính và thuật toán nhận dạng đối tượng thời gian thực sử dụng mạng nơ-ron tích chập SSD (Single Shot MultiBox Detector).
  3. Thiết kế, chế tạo phần cứng và lập trình tích hợp hệ thống xe robot hoàn chỉnh có gắn cánh tay robot gắp vật, kết nối điều khiển và giám sát từ xa qua nền tảng Internet of Things (IoT) Blynk.

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

  • Đối tượng nghiên cứu: Máy tính nhúng Raspberry Pi (các thế hệ Raspberry Pi 2, 3 và Raspberry Pi 4 Model B), vi điều khiển NodeMCU ESP32, kit Arduino Uno WiFi (WeMos D1), mô hình nhận dạng đối tượng SSD kết hợp mạng trích xuất đặc trưng VGG16, cùng các cơ cấu chấp hành (động cơ servo MG90, động cơ giảm tốc DC) và nền tảng IoT Blynk.
  • Phạm vi triển khai: Mô hình xe robot 4 bánh tích hợp cánh tay robot gắp vật thể, hoạt động trong không gian thực nghiệm trong nhà, truyền hình ảnh thời gian thực qua webcam và điều khiển thông qua mạng không dây Wi-Fi.

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

Đồ án xây dựng dựa trên sự kết hợp giữa lý thuyết xử lý ảnh số, thị giác máy tính dựa trên học sâu (Deep Learning) và kỹ thuật thiết kế hệ thống nhúng điều khiển tự động:

  1. Khung lý thuyết xử lý ảnh và thị giác máy tính:

    • Xử lý ảnh số: Bao gồm các bước thu nhận ảnh từ cảm biến/webcam, tiền xử lý (nâng cao chất lượng, khử nhiễu, chuyển đổi không gian màu sang ảnh xám 8-bit với 256 mức xám), trích xuất đặc trưng và nhận dạng đối tượng.
    • Mô hình nhận diện đối tượng thời gian thực: Áp dụng thuật toán Single Shot MultiBox Detector (SSD). Khác với mô hình Faster R-CNN vốn sử dụng mạng đề xuất vùng (Region Proposal Network - RPN) với tốc độ xử lý chậm (khoảng 7 khung hình/giây), SSD loại bỏ hoàn toàn bước đề xuất vùng riêng biệt để phát hiện đối tượng trực tiếp chỉ trong một lượt truyền thẳng (single forward pass), giúp đạt tốc độ xử lý thời gian thực phù hợp với các thiết bị phần cứng nhúng.
  2. Phương pháp nghiên cứu:

    • Phương pháp phân tích - tổng hợp lý thuyết: Khảo cứu tài liệu kỹ thuật về kiến trúc phần cứng các dòng Raspberry Pi, vi điều khiển ESP32, vi điều khiển ATmega328P tích hợp ESP8266; nguyên lý hoạt động của giao thức truyền thông không dây và nền tảng IoT Blynk.
    • Phương pháp toán học và mô hình hóa: Phân tích cấu trúc toán học của mạng nơ-ron SSD, hàm mất mát đa nhiệm (Multi-task Loss) kết hợp giữa sai số vị trí (Localization Loss dạng Smooth L1) và sai số phân loại (Confidence Loss dạng Softmax), phương pháp tính chỉ số tương đồng giao diện IoU (Intersection over Union) / Jaccard Overlap, cùng công thức nội suy tỷ lệ kích thước khung mặc định ($s_k$).
    • Phương pháp thiết kế và thực nghiệm kỹ thuật: Phân rã hệ thống thành các khối chức năng độc lập (khối xử lý trung tâm, khối điều khiển ngoại vi, khối truyền thông IoT, khối chấp hành và khối nguồn); tiến hành gia công khung gầm, lắp ráp mạch điện tử, nạp chương trình điều khiển và kiểm thử vận hành thực tế.

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

Chương 1: Overview of Raspberry Pi Embedded Computer System

Chương 1 trình bày tổng quan về hệ thống máy tính nhúng Raspberry Pi do Raspberry Pi Foundation phát triển, bao gồm lịch sử phát triển từ các phiên bản sử dụng SoC Broadcom BCM2835 (ARM1176JZF-S 700 MHz, GPU VideoCore IV, RAM 256MB/512MB), Compute Module (2014) đến Raspberry Pi 2 (BCM2836 4 nhân ARM Cortex-A7 900 MHz, RAM 1GB), Raspberry Pi 3 (BCM2837 ARM Cortex-A53 64-bit) và các thông số kỹ thuật chuẩn:

  • Cấu trúc phần cứng: Cổng giao tiếp ngoại vi 40 chân GPIO (hỗ trợ UART, I2C, SPI), cổng Camera Serial Interface (CSI) hỗ trợ camera 1080p, cổng Display Serial Interface (DSI) cho màn hình LCD/OLED, cổng HDMI hỗ trợ xuất video số, cổng Ethernet RJ45, 4 cổng USB 2.0 và khe cắm thẻ nhớ MicroSD dùng làm bộ nhớ lưu trữ hệ điều hành.
  • Hệ điều hành và môi trường phần mềm: Các bản phân phối Linux như Raspbian (Raspberry Pi OS), Ubuntu Mate, Snappy Core Ubuntu, Arch Linux ARM, Windows 10 IoT Core, OpenELEC; ngôn ngữ lập trình chính là Python cùng sự hỗ trợ của C, C++, Java, Perl, Ruby.
  • Kỹ thuật truyền phát và xử lý ảnh: Cơ chế thu nhận luồng hình ảnh từ webcam/camera module và truyền phát qua mạng (webstream) hoặc qua thư viện OpenCV trên nền Python; các nguyên lý cơ bản của một hệ thống xử lý ảnh số từ tiền xử lý, trích xuất đặc trưng đến nhận dạng và phân loại mẫu.

Chương 2: Object Detection Uses SSD Model

Chương 2 đi sâu vào kiến trúc và giải thuật của mô hình nhận diện đối tượng SSD (Single Shot MultiBox Detector):

  • Cấu trúc mạng: Sử dụng mạng cơ sở (Base Network) là VGG16 đã loại bỏ các tầng kết nối đầy đủ (Fully Connected Layers), kết hợp thêm các tầng tích chập phụ trợ (Extra Feature Layers) có kích thước giảm dần từ Conv4_3, Conv7, Conv8_2, Conv9_2, Conv10_2 đến Conv11_2.
  • Cơ chế dự đoán đa tỷ lệ (Multi-scale Feature Maps): Các bản đồ đặc trưng có độ phân giải cao ở các tầng đầu (như Conv4_3 kích thước $38 \times 38$) chịu trách nhiệm phát hiện các đối tượng kích thước nhỏ, trong khi các tầng có độ phân giải thấp hơn ở phía sau chịu trách nhiệm phát hiện các đối tượng kích thước lớn.
  • Khung neo mặc định (Default/Anchor Bounding Boxes): Tại mỗi ô lưới trên feature map, mạng tạo ra một số lượng khung mặc định nhất định (4 hoặc 6 khung) với các tỷ lệ khung hình khác nhau ($1, 2, 3, 1/2, 1/3$). Tác giả trình bày chi tiết cách xác định hệ số co giãn $s_k$ theo công thức: $$s_k = s_{min} + \frac{s_{max} - s_{min}}{m - 1}(k - 1), \quad k \in [1, m]$$ với $s_{min} = 0.1$ và $s_{max} = 0.9$.
  • Tổng số lượng khung dự đoán: Mô hình SSD300 thực hiện dự đoán trên 6 tầng đặc trưng, tạo ra tổng cộng 8.732 khung bao:
    • Tầng Conv4_3 ($38 \times 38 \times 4$): 5.776 khung.
    • Tầng Conv7 ($19 \times 19 \times 6$): 2.166 khung.
    • Tầng Conv8_2 ($10 \times 10 \times 6$): 600 khung.
    • Tầng Conv9_2 ($5 \times 5 \times 6$): 150 khung.
    • Tầng Conv10_2 ($3 \times 3 \times 4$): 36 khung.
    • Tầng Conv11_2 ($1 \times 1 \times 4$): 4 khung.
  • Hàm mất mát và quá trình huấn luyện: Hàm mất mát tổng hợp là tổng có trọng số giữa hàm mất mát vị trí và hàm mất mát độ tin cậy: $$L(x, c, p, g) = \frac{1}{N} \left( L_{conf}(x, c) + \alpha L_{loc}(x, p, g) \right)$$ Trong đó, $L_{loc}$ sử dụng hàm sai số Smooth L1 để chuẩn hóa và hồi quy 4 tham số khoảng cách dịch tâm và tỷ lệ chiều rộng/chiều cao $(t_x, t_y, t_w, t_h)$ giữa khung dự đoán ($p$) và khung chuẩn mặt đất ($g$). $L_{conf}$ sử dụng hàm Softmax để tối ưu hóa xác suất phân loại nhãn cho $C$ lớp đối tượng cộng thêm 1 lớp nền (background). Các khung dự đoán có chỉ số IoU $> 0.5$ với ground truth được coi là mẫu dương tính (positive match).
Tầng đặc trưng (Feature Layer) Kích thước ô lưới (Grid Size) Số khung mặc định / ô Tổng số khung dự đoán
Conv4_3 $38 \times 38$ 4 5.776
Conv7 $19 \times 19$ 6 2.166
Conv8_2 $10 \times 10$ 6 600
Conv9_2 $5 \times 5$ 6 150
Conv10_2 $3 \times 3$ 4 36
Conv11_2 $1 \times 1$ 4 4
Tổng cộng toàn mô hình — — 8.732

Chương 3: Construction Robot Vehicles Apply Raspberry Pi

Chương 3 trình bày toàn bộ quá trình thiết kế sơ đồ khối, lựa chọn linh kiện phần cứng và nguyên lý hoạt động của xe robot:

  • Nền tảng điều khiển IoT Blynk: Khai thác hệ sinh thái Blynk bao gồm Blynk App (giao diện kéo thả trên smartphone Android/iOS), Blynk Server/Cloud (trung gian định tuyến thông điệp) và thư viện Blynk Library để truyền nhận dữ liệu điều khiển qua kết nối Wi-Fi.
  • Khối xử lý trung tâm và điều khiển:
    • Bộ xử lý máy tính nhúng Raspberry Pi 4: Trang bị vi xử lý Broadcom BCM2711 4 nhân Cortex-A72 1.5 GHz, RAM LPDDR4, hỗ trợ Wi-Fi băng tần kép, cổng USB 3.0 và cổng camera CSI. Module này đảm nhận việc thu nhận luồng video từ camera, thực thi thuật toán xử lý ảnh và nhận dạng vật thể.
    • Khối điều khiển di chuyển NodeMCU ESP32: Sử dụng chip ESP32-D0WDQ6 (module ESP-WROOM-32, bộ nhớ Flash 32 Mbit), kết nối Wi-Fi chuẩn 802.11 b/g/n, nhận tín hiệu điều khiển từ Blynk App để điều khiển hướng di chuyển của xe.
    • Khối điều khiển cánh tay Arduino Uno WiFi (WeMos D1): Tích hợp vi điều khiển ATmega328P và chip Wi-Fi ESP8266 (bộ nhớ Flash 32Mb, chip nạp CH340G), nhận lệnh từ ứng dụng để điều khiển các khớp servo của cánh tay robot và đọc dữ liệu từ cảm biến siêu âm.
  • Khối chấp hành:
    • Cánh tay robot sử dụng các động cơ servo MG90 để điều khiển góc xoay các khớp và thao tác đóng/mở kẹp gắp vật thể.
    • Hệ thống truyền động bánh xe sử dụng các động cơ giảm tốc DC màu vàng (điện áp 3–9VDC, dòng tiêu thụ 110–140mA, tỷ số truyền 1:120, tốc độ 50 vòng/phút ở 3V và 83 vòng/phút ở 5V) gắn cùng bộ bánh xe cao su V1.
  • Khối nguồn cấp: Phân tách thành hai nguồn độc lập gồm pin sạc dự phòng 5V (cung cấp cho Raspberry Pi và mạch điều khiển) và khối pin 9V (cung cấp năng lượng cho động cơ truyền động của xe).

Thiết kế và triển khai

Hệ thống xe robot tránh chướng ngại vật được thiết kế theo kiến trúc module hóa với sự phối hợp chặt chẽ giữa các thành phần phần cứng và phần mềm:

Khối chức năng Phần cứng / Công nghệ sử dụng Thông số kỹ thuật & Chức năng chính
Xử lý thị giác & Nhận dạng Raspberry Pi 4 Model B + Webcam/Camera SoC Broadcom BCM2711 4 nhân Cortex-A72 @ 1.5 GHz; chạy thuật toán SSD trên môi trường Python + OpenCV để trích xuất khung nhận dạng vật thể; công suất tiêu thụ tối đa 7.6W khi tải nặng, 3.4W khi không tải.
Điều khiển di chuyển NodeMCU ESP32 (Module ESP-WROOM-32) SoC ESP32-D0WDQ6, Flash 32Mbit, Wi-Fi 802.11 b/g/n, điện áp hoạt động 5V (mức logic 3.3V); nhận lệnh điều khiển động cơ bánh xe từ Blynk App qua giao thức mạng.
Điều khiển cơ cấu gắp Kit Arduino Uno WiFi (WeMos D1) Vi điều khiển ATmega328P + ESP8266, cổng nạp Micro USB qua chip CH340G, điện áp khuyên dùng 6–9VDC; điều khiển góc quay các động cơ servo của cánh tay robot và thu thập dữ liệu cảm biến siêu âm.
Cơ cấu chấp hành Động cơ Servo MG90 & Động cơ giảm tốc DC vàng Servo MG90 điều khiển chuyển động khớp tay gắp; Động cơ DC giảm tốc tỷ số 1:120 (50–83 rpm, dòng 110–140mA) kết hợp bánh xe V1 (nhựa, cao su) dẫn động thân xe.
Khối nguồn Pin dự phòng 5V & Khối pin 9V Pin sạc dự phòng 5V cấp nguồn cổng Type-C cho Raspberry Pi và mạch logic; pin 9V độc lập cấp nguồn công suất cho hệ thống động cơ.
Giao diện điều khiển Ứng dụng Blynk (Android / iOS) Giao diện điều khiển từ xa dạng nút bấm/thanh trượt kết nối thông qua Blynk Cloud Server hoặc Private Server qua Wi-Fi.

Quy trình vận hành của hệ thống:

  1. Luồng video thời gian thực từ webcam kết nối với Raspberry Pi được xử lý bằng các bộ lọc tích chập theo mô hình mạng SSD.
  2. Hệ thống xác định tọa độ khung bao và nhãn phân loại của các đối tượng/chướng ngại vật xuất hiện phía trước đường đi.
  3. Người dùng theo dõi luồng hình ảnh truyền về máy tính/thiết bị giám sát và gửi lệnh điều khiển di chuyển, né tránh hoặc thao tác gắp vật thể thông qua giao diện Blynk App trên điện thoại thông minh.
  4. Tín hiệu điều khiển không dây được chuyển tiếp đến vi điều khiển ESP32 (điều khiển 4 động cơ bánh xe) và WeMos D1 (điều khiển các trục servo cánh tay robot) để thực thi hành động vật lý tương ứng.

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

Đồ án đã hoàn thành việc nghiên cứu, tích hợp và chế tạo thực nghiệm hệ thống xe robot với các kết quả cụ thể:

  • Lắp ráp hoàn chỉnh mô hình phần cứng xe robot 4 bánh tích hợp cánh tay gắp linh hoạt, bố trí mạch điện gọn gàng với hệ thống cấp nguồn kép (5V và 9V).
  • Triển khai thành công thuật toán Single Shot MultiBox Detector (SSD) trên máy tính nhúng Raspberry Pi, tính toán chi tiết cấu trúc 6 tầng đặc trưng với tổng số 8.732 khung neo mặc định phục vụ nhận dạng đối tượng đa kích thước.
  • Thiết lập kênh truyền dữ liệu điều khiển và giám sát từ xa thông qua nền tảng Blynk qua kết nối không dây Wi-Fi, cho phép điều khiển linh hoạt chuyển động của xe và các khớp của cánh tay robot theo thời gian thực.
  • Đóng góp về mặt kỹ thuật: Xây dựng giải pháp kết hợp phân tán giữa máy tính nhúng hiệu năng cao (Raspberry Pi 4) chuyên trách thị giác máy tính và các vi điều khiển giá thành thấp (ESP32, WeMos D1) phụ trách giao tiếp ngoại vi và điều khiển động cơ, giúp tối ưu hóa tài nguyên phần cứng.

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

Văn bản khóa luận đã chỉ ra một số hạn chế kỹ thuật và định hướng cải tiến:

  • Hạn chế về độ phân giải đầu vào: Khi đưa hình ảnh vào mô hình mạng SSD tiêu chuẩn (kích thước $300 \times 300$ pixel), kích thước ảnh gốc bị nén giảm đáng kể, dẫn đến việc độ chính xác nhận dạng đối với các vật thể có kích thước quá nhỏ hoặc ở khoảng cách xa chưa cao.
  • Hướng nghiên cứu và giải pháp đề xuất:
    • Nâng cao độ phân giải của hình ảnh đầu vào (như chuyển sang kiến trúc SSD500 kích thước $500 \times 500 \times 3$) nhằm cải thiện độ chi tiết của bản đồ đặc trưng.
    • Nghiên cứu thay thế mạng trích xuất đặc trưng VGG16 bằng các kiến trúc mạng nơ-ron tối ưu hóa cho thiết bị biên như MobileNet, ResNet hoặc InceptionNet để cải thiện tốc độ xử lý và giảm tải cho phần cứng máy tính nhúng.

Giá trị tham khảo

Tài liệu đồ án là nguồn tham khảo hữu ích cho:

  • Sinh viên chuyên ngành Kỹ thuật máy tính, Công nghệ thông tin, Điện tử - Viễn thông và Điều khiển tự động đang thực hiện các đồ án liên quan đến robot tự hành, xe tránh chướng ngại vật hoặc hệ thống nhúng.
  • Người nghiên cứu về ứng dụng thị giác máy tính trên thiết bị biên (Edge AI): Phần phân tích cấu trúc mạng SSD, công thức tính hàm mất mát và phân bổ khung mặc định (Chương 2) cung cấp cơ sở toán học rõ ràng cho việc cài đặt mô hình Deep Learning.
  • Người phát triển ứng dụng IoT: Phần thiết kế phần cứng giao tiếp giữa ESP32, Arduino Uno WiFi (WeMos D1) và nền tảng Blynk cung cấp cấu hình mạch thực tế và nguyên lý ghép nối module.

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

1. Tại sao đồ án lại lựa chọn thuật toán SSD thay vì Faster R-CNN cho bài toán phát hiện đối tượng trên Raspberry Pi?
Faster R-CNN sử dụng mạng đề xuất vùng (RPN) riêng biệt để tạo khung bao rồi mới phân loại đặc trưng, khiến tốc độ xử lý chỉ đạt khoảng 7 khung hình/giây (fps), không đáp ứng được yêu cầu thời gian thực. SSD loại bỏ mạng RPN và tích hợp trực tiếp việc dự đoán khung bao cùng xác suất lớp trong một lần truyền thẳng, đồng thời kết hợp bản đồ đặc trưng đa tỷ lệ giúp tốc độ xử lý nhanh hơn nhiều trong khi độ chính xác tiệm cận Faster R-CNN.

2. Tổng số khung bao mặc định (bounding boxes) mà mô hình SSD300 trong đồ án tính toán là bao nhiêu?
Mô hình SSD300 tạo ra tổng cộng 8.732 khung bao mặc định trên 6 tầng tích chập: tầng Conv4_3 ($38 \times 38 \times 4 = 5.776$ khung), Conv7 ($19 \times 19 \times 6 = 2.166$ khung), Conv8_2 ($10 \times 10 \times 6 = 600$ khung), Conv9_2 ($5 \times 5 \times 6 = 150$ khung), Conv10_2 ($3 \times 3 \times 4 = 36$ khung) và Conv11_2 ($1 \times 1 \times 4 = 4$ khung).

3. Khối điều khiển trung tâm của xe robot bao gồm những linh kiện chính nào và nhiệm vụ của từng linh kiện là gì?
Khối điều khiển gồm 3 thành phần chính:

  • Raspberry Pi 4: Xử lý ảnh thu nhận từ camera và thực thi thuật toán nhận dạng vật thể SSD.
  • NodeMCU ESP32: Kết nối mạng Wi-Fi và nhận tín hiệu điều khiển chuyển động của 4 bánh xe từ Blynk App.
  • Arduino Uno WiFi Kit (WeMos D1 - ATmega328P + ESP8266): Điều khiển các khớp động cơ servo MG90 của cánh tay robot và đọc tín hiệu cảm biến siêu âm.

4. Động cơ giảm tốc DC dùng cho chuyển động bánh xe có thông số kỹ thuật ra sao?
Hệ thống sử dụng động cơ giảm tốc DC màu vàng có điện áp hoạt động 3–9VDC, dòng tiêu thụ 110–140mA, tỷ số truyền 1:120, cho tốc độ vòng quay đạt 50 vòng/phút ở điện áp 3VDC và 83 vòng/phút ở điện áp 5VDC, kết hợp cùng bánh xe V1 cấu tạo từ nhựa, cao su và bọt biển.

5. Hệ thống cấp nguồn cho xe robot được phân chia như thế nào?
Hệ thống sử dụng nguồn cấp kép độc lập để tránh sụt áp: một pin sạc dự phòng 5V cấp nguồn cho máy tính nhúng Raspberry Pi cùng các mạch điều khiển logic, và một khối pin 9V chuyên dụng để cấp nguồn công suất cho các động cơ di chuyển của thân xe.


Kết luận

Đồ án tốt nghiệp "Xe robot tránh chướng ngại vật sử dụng Raspberry Pi" của tác giả Bùi Xuân Hòa đã giải quyết thành công bài toán tích hợp thuật toán nhận dạng đối tượng học sâu SSD lên nền tảng phần cứng máy tính nhúng kết hợp vi điều khiển. Hệ thống thực nghiệm hoàn chỉnh có khả năng truyền hình ảnh, nhận dạng đối tượng và cho phép điều khiển linh hoạt chuyển động của xe cũng như cánh tay gắp thông qua nền tảng IoT Blynk qua mạng Wi-Fi. Đây là tài liệu kỹ thuật có giá trị thực tiễn cao cho việc nghiên cứu và triển khai các hệ thống robot tự hành ứng dụng trí tuệ nhân tạo ở quy mô vừa và nhỏ.