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

Trong xu thế phát triển của cuộc cách mạng công nghiệp 4.0, lĩnh vực robot tự hành và các hệ thống hỗ trợ người lái thông minh trong ngành kỹ thuật ô tô đang có những bước tiến vượt bậc. Việc tích hợp thị giác máy tính vào các hệ thống điều khiển tự động cho phép robot nhận thức và tương tác linh hoạt với môi trường xung quanh. Tuy nhiên, việc xử lý và diễn giải hình ảnh trong thời gian thực trên các hệ thống nhúng vẫn gặp nhiều thách thức về năng lực tính toán, độ trễ truyền dữ liệu, chi phí phần cứng và sự biến đổi của môi trường ánh sáng.

Nhằm tiếp cận các công nghệ điều khiển không chạm (touchless interface) ứng dụng trong ô tô và thiết bị thông minh, đề tài "Nghiên cứu xe tự hành sử dụng Raspberry kết hợp xử lý hình ảnh" (hay "Đồ án xe robot sử dụng Raspberry kết hợp xử lý ảnh") được thực hiện bởi nhóm sinh viên ngành Công nghệ Kỹ thuật Ô tô thuộc Viện Kỹ thuật – Công nghệ, Trường Đại học Thủ Dầu Một.

Các nhiệm vụ và mục tiêu nghiên cứu cụ thể được xác định bao gồm:

  1. Nhận dạng cử chỉ tay: Xây dựng thuật toán nhận diện cử chỉ bàn tay người từ dữ liệu hình ảnh thu nhận qua camera của laptop, phát hiện và đếm số lượng ngón tay mở để ánh xạ thành các lệnh điều khiển chuyển động của xe robot.
  2. Truyền hình ảnh không dây từ laptop sang Raspberry Pi: Thiết lập hệ thống truyền luồng hình ảnh thời gian thực từ camera máy tính sang bo mạch Raspberry Pi qua giao thức HTTP, giúp hệ thống nhúng xử lý thị giác mà không cần gắn trực tiếp camera vật lý lên khung xe.
  3. Giao tiếp điều khiển giữa Raspberry Pi và Arduino Uno qua cổng USB: Thiết lập liên kết truyền nhận dữ liệu nối tiếp (Serial) qua cáp USB giữa Raspberry Pi và Arduino Uno R3, truyền mã lệnh điều khiển tương ứng với cử chỉ tay nhận dạng được.
  4. Điều khiển và giám sát từ xa (Remote Access): Cấu hình kết nối từ xa (SSH) đến Raspberry Pi nhằm kiểm tra, vận hành hệ thống nhúng mà không cần kết nối bàn phím hay màn hình rời.

Đối tượng nghiên cứu của đồ án là các kỹ thuật xử lý ảnh số, các mô hình thị giác máy tính nhận dạng cử chỉ bàn tay và mô hình phần cứng điều khiển xe robot tự hành. Phạm vi nghiên cứu tập trung vào việc thiết kế mô hình robot bốn bánh sử dụng vi máy tính Raspberry Pi 4 Model B kết hợp vi điều khiển Arduino Uno R3, xử lý hình ảnh nhận diện cử chỉ bàn tay qua thư viện OpenCV và MediaPipe, phân luồng truyền thông mạng qua máy chủ web cục bộ Flask và điều khiển 4 động cơ giảm tốc DC thông qua mạch cầu H.


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

Đồ án xây dựng trên nền tảng lý thuyết xử lý tín hiệu số, thị giác máy tính và kỹ thuật điều khiển nhúng. Hệ thống xử lý ảnh tuân thủ quy trình chuẩn hóa gồm các giai đoạn: thu nhận ảnh (Image Acquisition), tiền xử lý lọc nhiễu và cân bằng tương phản (Image Processing), phân đoạn tách đối tượng (Segmentation), trích chọn đặc trưng và biểu diễn ảnh (Feature Selection & Representation), nhận dạng và nội suy (Recognition & Interpretation) dựa trên cơ sở tri thức (Knowledge Base). Về mặt dữ liệu số, ảnh được mô hình hóa thành ma trận điểm ảnh (Pixel) hai chiều với các mức độ xám chuẩn 8-bit (256 mức từ 0 đến 255).

Mô hình nhận dạng cử chỉ bàn tay được triển khai dựa trên giải pháp máy học MediaPipe của Google. Kiến trúc này tích hợp hai mô hình học máy phối hợp:

  • Mô hình Palm Detection: Dò tìm và định vị vùng chứa bàn tay trong khung hình theo cơ chế single-shot, hoạt động ổn định trên tập dữ liệu đào tạo khoảng 30.000 mẫu gán nhãn thực tế.
  • Mô hình Hand Landmark: Dự đoán và định vị chính xác 21 điểm mốc tọa độ 3D (Landmarks) trên các khớp ngón tay và cổ tay từ vùng bàn tay đã được cắt trích. Dựa trên vị trí tương đối giữa các đầu ngón tay và khớp ngón, thuật toán xác định trạng thái đóng/mở của từng ngón và đếm tổng số ngón tay đang giơ.

Phương pháp nghiên cứu thực nghiệm và thiết kế kỹ thuật được áp dụng xuyên suốt đồ án:

  • Phương pháp thu thập và phân tích dữ liệu: Sử dụng camera laptop thu nhận video, mã hóa khung hình dưới dạng luồng dữ liệu liên tục (streaming) qua định dạng JPEG.
  • Phương pháp tích hợp hệ thống nhúng: Sử dụng kiến trúc truyền thông phân tán Client-Server qua giao thức mạng HTTP để truyền video, kết hợp giao thức truyền thông nối tiếp Serial qua USB giữa vi máy tính và vi điều khiển.

Thiết kế và triển khai

Hệ thống xe robot được thiết kế theo cấu trúc điều khiển phân tầng, kết hợp giữa tầng tính toán thị giác (Laptop và Raspberry Pi 4) và tầng điều khiển chấp hành thời gian thực (Arduino Uno R3 và Driver điều khiển động cơ).

1. Kiến trúc phần cứng

Hệ thống phần cứng bao gồm các khối chức năng chính:

  • Khối xử lý trung tâm (Raspberry Pi 4 Model B): Trang bị bộ vi xử lý Broadcom BCM2711 quad-core Cortex-A72 (ARMv8) 64-bit tốc độ 1.5GHz, đồ họa VideoCore VI GPU, bộ nhớ RAM LPDDR4, hỗ trợ kết nối mạng Dual-band Wi-Fi và Bluetooth 5.0 BLE. Bo mạch tiếp nhận luồng video qua Wi-Fi, chạy chương trình xử lý ảnh và xuất lệnh điều khiển qua cổng USB.
  • Khối điều khiển chấp hành (Arduino Uno R3): Trang bị vi điều khiển 8-bit ATmega328P hoạt động ở xung nhịp 16 MHz, bộ nhớ Flash 32 KB, SRAM 2 KB, EEPROM 1 KB. Arduino tiếp nhận dữ liệu chuỗi ký tự từ Raspberry Pi qua cổng Serial và phát xung PWM cùng các mức logic để điều khiển động cơ.
  • Khối công suất và chuyển động: Sử dụng 4 động cơ giảm tốc DC GA25 kết nối với mạch điều khiển động cơ L298N (Driver shield tích hợp IC cầu H L298 và IC ổn áp 78M05), cho phép đảo chiều quay và điều chỉnh tốc độ thông qua các chân ENA, ENB, IN1, IN2, IN3, IN4.
  • Khối nguồn: Sử dụng pin Lithium Polymer (LiPo) 3S dung lượng 1500 mAh, điện áp danh định 11.1V (sạc đầy 12.6V), dòng xả 45C, khối lượng 130g, kích thước 75 x 34 x 26 mm để cấp nguồn cho mạch công suất động cơ và hệ vi điều khiển.
Thành phần phần cứng Thông số kỹ thuật chính Vai trò trong hệ thống
Raspberry Pi 4 Model B CPU Quad-core 1.5GHz, Broadcom SoC, Wi-Fi Dual-band, 40 chân GPIO Nhận luồng video qua HTTP, chạy thuật toán OpenCV/MediaPipe, gửi lệnh Serial
Arduino Uno R3 ATmega328P (16MHz), 14 chân Digital I/O (6 chân PWM), 6 chân Analog Nhận lệnh điều khiển từ Raspberry Pi, xuất xung điều khiển Driver động cơ
Driver L298N IC L298, tích hợp ổn áp 78M05, dòng cấp điều khiển động cơ DC Điều khiển chiều quay và tốc độ của 4 động cơ GA25
Động cơ GA25 Điện áp 12V, tỉ số truyền 9.6:1, tốc độ không tải 620 rpm, có tải 477 rpm Dẫn động 4 bánh xe của robot
Pin LiPo 1500mAh Pin 3S 11.1V (tối đa 12.6V), độ xả 45C, giắc cắm XT60/T-plug Cung cấp nguồn động lực cho toàn bộ xe robot

2. Kiến trúc phần mềm và luồng dữ liệu

Hệ thống phần mềm được xây dựng trên hệ điều hành Linux (Raspbian OS trên Raspberry Pi) kết hợp ngôn ngữ lập trình Python và C/C++ (Arduino IDE):

  • Phần mềm máy chủ Flask (trên Laptop): Khởi tạo một web server cục bộ, thu thập khung hình từ camera máy tính, chuyển đổi sang định dạng hình ảnh chuẩn và phân phối tại đường dẫn URL /video_feed qua giao thức HTTP (cổng mặc định 5000).
  • Mô-đun thị giác máy tính (trên Raspberry Pi): Kết nối tới máy chủ Flask qua địa chỉ IP, đọc luồng video thời gian thực, chuyển đổi không gian màu sang RGB và đưa vào pipeline xử lý của MediaPipe. Sau khi trích xuất 21 điểm mốc landmark, thuật toán so sánh vị trí tọa độ Y của các đầu ngón tay với các đốt ngón tương ứng để xác định số lượng ngón tay duỗi thẳng.
  • Luồng truyền thông nối tiếp: Raspberry Pi gửi ký tự điều khiển qua cổng nối tiếp USB (Serial communication) tới Arduino Uno R3.
  • Chương trình điều khiển chấp hành (trên Arduino): Lắng nghe dữ liệu trên cổng Serial (Serial.available()), giải mã ký tự nhận được và kích hoạt các hàm điều khiển động cơ (tiến, lùi, rẽ trái, rẽ phải, dừng xe) bằng cách điều khiển logic các chân IN1-IN4 và xuất tín hiệu điều chế độ rộng xung (PWM) trên các chân ENA, ENB của driver L298N.

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

CHƯƠNG 1: TỔNG QUAN

Chương này trình bày bối cảnh công nghệ 4.0, tính cấp thiết của việc nghiên cứu robot tự hành có tích hợp thị giác máy tính nhằm tăng cường độ an toàn, tự động hóa và tiện nghi trong lĩnh vực giao thông - ô tô. Tác giả khảo sát các công trình nghiên cứu tiêu biểu liên quan:

  • Nghiên cứu của Phạm Trần Lam Hải và cộng sự (Trường Đại học Cần Thơ) về ứng dụng kỹ thuật số theo dõi chuyển động của robot tự động thông qua xử lý ảnh ngoại tuyến bằng MATLAB trên 3 robot ảo hình tròn màu.
  • Nghiên cứu của tác giả Trần Nguyên Ngọc về nhận dạng cử chỉ bàn tay người thời gian thực sử dụng cảm biến Microsoft Kinect, đạt độ chính xác trên 93%.

Từ những phân tích này, chương 1 xác định tính cấp thiết, lý do lựa chọn giải pháp kết hợp Raspberry Pi, Arduino và xử lý ảnh để mô phỏng hệ thống điều khiển xe bằng cử chỉ tay không chạm, đồng thời công bố mục tiêu, đối tượng và phạm vi nghiên cứu của đề tài.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Chương 2 trình bày có hệ thống các khái niệm cơ bản về lý thuyết xử lý ảnh số:

  • Lịch sử phát triển và các giai đoạn xử lý ảnh từ những năm 1920 (truyền ảnh cáp London - New York), năm 1964 (ảnh vệ tinh Ranger 7 của Mỹ) đến các kỹ thuật học sâu hiện đại.
  • Cấu trúc 7 bước cơ bản của quá trình xử lý ảnh: Thu nhận ảnh, Tiền xử lý, Phân đoạn ảnh, Biểu diễn ảnh và trích chọn đặc trưng, Nhận dạng và nội suy ảnh, Cơ sở tri thức, Mô tả/mã hóa ảnh (mã chạy, mã xích, mã tứ phân).
  • Các khái niệm nền tảng: Điểm ảnh (Pixel/PEL), Độ phân giải (Resolution) theo trục tọa độ (x, y), Mức xám (Grayscale levels) biểu diễn dưới dạng số 8-bit gồm 256 giá trị ($2^8$).
  • Tổng quan về cấu trúc phần cứng xe robot: Sơ đồ khối kết nối tổng thể giữa Laptop, Raspberry Pi 4 Model B, Arduino Uno R3, Driver shield L298N/L293D, Pin LiPo 1500mAh và 4 động cơ GA25 12V 620rpm.

CHƯƠNG 3: GIỚI THIỆU VỀ PHẦN CỨNG VÀ PHẦN MỀM

Chương này đi sâu vào cấu tạo chi tiết, thông số kỹ thuật và sơ đồ chân của từng linh kiện phần cứng cùng các thư viện phần mềm:

  • Phần cứng Raspberry Pi 4 Model B: Phân tích vi xử lý Broadcom BCM2711 quad-core Cortex-A72 @ 1.5GHz (cùng thông tin SoC BCM2835 trong dòng Pi), sơ đồ 40 chân GPIO (bao gồm 28 chân Digital I/O, các chân cấp nguồn 5V, 3.3V, GND, các cổng UART TXD1-TXD5/RXD1-RXD5, SPI0-SPI6, I2C SDA0-SDA6/SCL0-SCL6, chân PWM0-PWM1 và các chân SDIO). Nêu rõ ưu điểm tiết kiệm điện, nhỏ gọn, chạy Raspbian OS và nhược điểm dùng thẻ nhớ microSD làm bộ nhớ chính.
  • Phần cứng Arduino Uno R3: Phân tích vi điều khiển Atmega328P-PU, dải điện áp hoạt động 7-12V, dòng ngõ ra chân I/O 30-40mA, cấu hình 14 chân Digital I/O (6 chân PWM), 6 chân Analog Input (độ phân giải 10-bit), bộ nhớ Flash 32KB, SRAM 2KB, EEPROM 1KB, giao thức truyền thông nối tiếp Serial (Rx-0, Tx-1), giao tiếp SPI và I2C (A4, A5).
  • Mạch điều khiển động cơ L298N: Cấu trúc IC L298, ổn áp 78M05, jumper chọn nguồn 5V, các chân đầu vào điều khiển IN1-IN4, chân kích hoạt PWM ENA-ENB và ngõ ra động cơ OUT1-OUT4.
  • Động cơ GA25 và Pin LiPo 1500mAh: Thông số tốc độ không tải 620 rpm (có tải 477 rpm), tỉ số truyền 9.6:1, pin 3S 11.1V xả 45C nặng 130g.
  • Thư viện OpenCV: Cấu trúc các module core, imgproc, video, calib3d, features2d và các bước cài đặt trên Linux qua gói nhị phân dựng sẵn (python3-opencv) hoặc biên dịch từ mã nguồn bằng CMake và Make.
  • Thư viện MediaPipe: Kiến trúc framework học máy đa nền tảng, 2 mô hình nhận diện Palm Detection và định vị 21 điểm Landmark trên bàn tay.
  • Mô-đun truyền phát hình ảnh Flask & HTTP: Nguyên lý micro-framework Flask, mô hình Client-Server, tạo route /video_feed, mã hóa ảnh JPEG và truyền phát dữ liệu hình ảnh trực tiếp qua giao thức mạng HTTP.

CHƯƠNG 4: CHƯƠNG TRÌNH XỬ LÝ ẢNH ĐIỀU KHIỂN XE

Chương 4 phân tích chi tiết quy trình xử lý tín hiệu và kết quả hoạt động của toàn bộ hệ thống:

  • Phân tích luồng tín hiệu chương trình: Trình bày chi tiết 3 lưu đồ tín hiệu: luồng tín hiệu hình ảnh trên Laptop (chụp ảnh, khởi tạo Flask server, tạo liên kết video feed cục bộ qua địa chỉ IP); luồng xử lý trên Raspberry Pi (kết nối video feed, nạp mô hình MediaPipe, trích xuất landmark, đếm ngón tay, gửi mã điều khiển qua Serial USB); và luồng tiếp nhận tín hiệu trên Arduino (đọc Serial, phân loại mã lệnh, kích hoạt chân điều khiển động cơ).
  • Kết quả và hiệu suất hoạt động: Trình bày giao diện khởi tạo máy chủ thành công, địa chỉ IP kết nối, giao diện hiển thị hình ảnh đã nhận diện khung xương bàn tay và số lượng ngón tay trên Raspbian OS, giao diện lập trình Visual Studio Code, cùng hình ảnh mô hình xe robot 4 bánh đã được lắp ráp và hoàn thiện thực tế.

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

1. Kết quả kỹ thuật đạt được

  • Chế tạo thành công mô hình phần cứng: Lắp ráp hoàn chỉnh xe robot 4 bánh dẫn động độc lập bằng 4 động cơ GA25 12V 620rpm, tích hợp khung xe, mạch điều khiển L298N, khối nguồn pin LiPo 1500mAh 11.1V, bo mạch Arduino Uno R3 và máy tính nhúng Raspberry Pi 4 Model B.
  • Thiết lập luồng truyền phát video không dây ổn định: Triển khai thành công máy chủ Flask trên máy tính xách tay, truyền phát liên tục luồng hình ảnh từ camera máy tính sang Raspberry Pi qua giao thức mạng HTTP tại cổng 5000 mà không cần camera vật lý gắn trên xe.
  • Xây dựng thuật toán nhận diện cử chỉ bàn tay: Tích hợp thành công thư viện MediaPipe và OpenCV trên hệ điều hành Raspbian OS, định vị chính xác 21 điểm mốc landmark của bàn tay theo thời gian thực và đếm số lượng ngón tay mở.
  • Hoàn thiện giao tiếp điều khiển liên bo mạch: Thiết lập đường truyền thông nối tiếp Serial qua cáp USB giữa Raspberry Pi và Arduino Uno R3, chuyển đổi thành công số lượng ngón tay nhận diện được thành các trạng thái di chuyển (tiến, lùi, quay trái, quay phải, dừng) của robot.

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

  • Đề xuất giải pháp thị giác máy tính phân tán: tách biệt khâu thu nhận hình ảnh (trên máy tính) và khâu xử lý/chấp hành (trên Raspberry Pi và Arduino), giúp giảm tải trọng lượng phần cứng camera trên robot mô hình.
  • Ứng dụng thành công mô hình học máy gọn nhẹ (MediaPipe) lên máy tính nhúng Raspberry Pi, minh chứng khả năng xử lý thị giác máy tính thời gian thực mà không đòi hỏi phần cứng GPU chuyên dụng đắt tiền.
  • Cung cấp mô hình thực nghiệm trực quan cho việc nghiên cứu giao diện điều khiển không chạm (Hand Gesture Interface), có tiềm năng ứng dụng vào việc điều khiển các tiện ích trong khoang lái ô tô thông minh.

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

  • Hạn chế: Hệ thống phụ thuộc vào độ ổn định của kết nối mạng không dây cục bộ (Wi-Fi) giữa máy tính phát luồng video và Raspberry Pi; nếu mạng chập chờn sẽ gây độ trễ trong quá trình nhận dạng và điều khiển. Thuật toán nhận diện cử chỉ dựa trên hình ảnh quang học nên độ chính xác có thể bị ảnh hưởng khi cường độ ánh sáng môi trường thay đổi đột ngột hoặc bàn tay bị che khuất.
  • Hướng nghiên cứu tiếp: Nâng cấp thuật toán xử lý ảnh để hoạt động ổn định trong các điều kiện môi trường ánh sáng phức tạp; tối ưu hóa mã nguồn để giảm thiểu tối đa độ trễ truyền dữ liệu; tích hợp thêm các cảm biến hỗ trợ (như cảm biến siêu âm tránh vật cản) và mở rộng nhận diện các cử chỉ tay phức tạp hơn nhằm tăng tính an toàn cho hệ thống tự hành.

Giá trị tham khảo

Đồ án là tài liệu tham khảo chuyên ngành hữu ích cho sinh viên, học viên và các nhóm nghiên cứu thuộc các ngành:

  • Công nghệ Kỹ thuật Ô tô & Cơ điện tử: Tham khảo quy trình thiết kế xe tự hành mô hình, phương pháp ghép nối phần cứng giữa máy tính nhúng (Raspberry Pi), vi điều khiển (Arduino) và mạch công suất động cơ (L298N).
  • Kỹ thuật Điều khiển & Tự động hóa / Robot: Tham khảo phương thức phân luồng truyền thông công nghiệp qua Serial USB và giao thức mạng HTTP trong điều khiển phân tầng.
  • Công nghệ thông tin & Trí tuệ nhân tạo: Tham khảo quy trình cài đặt, cấu hình OpenCV và MediaPipe trên môi trường Linux/Raspbian OS, phương pháp lập trình truyền luồng video thời gian thực bằng Flask framework.

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

1. Tại sao hệ thống lại truyền hình ảnh từ Laptop sang Raspberry Pi qua giao thức HTTP thay vì gắn camera trực tiếp lên xe?
Trong thiết kế của đề tài, việc xây dựng máy chủ Flask trên Laptop để truyền luồng video qua giao thức HTTP cho phép tận dụng camera có sẵn của máy tính để nhận diện người điều khiển từ xa, đồng thời giảm bớt việc gắn thêm module camera vật lý trực tiếp lên khung xe robot, giúp giảm tải trọng và tinh gọn phần cứng trên mô hình.

2. MediaPipe nhận dạng cử chỉ bàn tay dựa trên nguyên lý kỹ thuật nào?
MediaPipe kết hợp hai mô hình học máy: mô hình Palm Detection để dò tìm vùng bàn tay theo cơ chế single-shot, và mô hình Hand Landmark để định vị chính xác 21 điểm mốc tọa độ 3D trên các khớp xương ngón tay. Chương trình so sánh tọa độ các điểm mốc ở đầu ngón tay với khớp ngón để xác định ngón tay đang mở hay gập, từ đó đếm tổng số ngón tay giơ lên.

3. Sự phân chia nhiệm vụ giữa Raspberry Pi và Arduino Uno R3 trong đồ án được thiết kế như thế nào?
Raspberry Pi 4 đóng vai trò máy tính xử lý trung tâm, tiếp nhận luồng video qua mạng Wi-Fi, chạy thuật toán thị giác máy tính (OpenCV, MediaPipe) để nhận dạng cử chỉ tay và chuyển đổi thành mã ký tự điều khiển. Arduino Uno R3 đóng vai trò vi điều khiển chấp hành, nhận mã ký tự từ Raspberry Pi qua cáp USB (Serial) và trực tiếp điều khiển xung PWM cùng mức logic đến mạch L298N để vận hành động cơ.

4. Động cơ và nguồn cấp của xe robot sử dụng loại nào và có thông số ra sao?
Hệ thống sử dụng 4 động cơ giảm tốc DC GA25 điện áp 12V, tỉ số truyền 9.6:1, tốc độ không tải 620 rpm (tốc độ có tải 477 rpm), lực kéo định mức 0.2kg (tối đa 0.9kg). Nguồn cấp cho toàn xe là khối pin Lithium Polymer (LiPo) 3S dung lượng 1500 mAh, điện áp danh định 11.1V (sạc đầy 12.6V), dòng xả 45C.


Kết luận

Đồ án "Nghiên cứu xe tự hành sử dụng Raspberry kết hợp xử lý hình ảnh" đã hoàn thành việc thiết kế, chế tạo và thử nghiệm thành công mô hình xe robot 4 bánh điều khiển bằng cử chỉ bàn tay. Hệ thống tích hợp hiệu quả giữa tầng tính toán thị giác máy tính (OpenCV, MediaPipe trên nền vi máy tính Raspberry Pi 4 qua luồng video Flask HTTP) và tầng điều khiển chuyển động chấp hành (Arduino Uno R3 kết hợp mạch cầu H L298N và động cơ GA25). Nghiên cứu mang lại giải pháp kỹ thuật có tính ứng dụng thực tiễn cao, đóng góp tài liệu tham khảo có giá trị trong việc phát triển các giao diện tương tác không chạm và các hệ thống xe tự hành thông minh.