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

Trong xu hướng phát triển của tự động hóa và kỹ thuật robot, các cơ cấu tay máy không chỉ giới hạn trong môi trường sản xuất công nghiệp để phục vụ các quy trình lắp ráp, gia công mà ngày càng được mở rộng sang các lĩnh vực giáo dục, giải trí và tương tác người - máy. Đồ án tốt nghiệp "Xây dựng hệ thống robot đánh cờ vua" do sinh viên Nguyễn Tiến Đạt thực hiện dưới sự hướng dẫn của PGS.TS Trương Ngọc Sơn tại Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (chuyên ngành Hệ thống nhúng và IoT, khóa 2020 - 2024), tập trung giải quyết bài toán tích hợp giữa cơ cấu chấp hành phần cứng và thuật toán thông minh nhằm tạo ra một hệ thống robot có khả năng chơi cờ vua trực tiếp với con người trên bàn cờ vật lý.

Theo văn bản đồ án, các mục tiêu nghiên cứu cụ thể bao gồm:

  1. Nghiên cứu, khảo sát và phân tích các thuật toán cùng chiến lược chơi cờ hiện có.
  2. Thiết kế và triển khai một hệ thống robot hoàn chỉnh có khả năng chơi cờ vua với con người.
  3. Đánh giá hiệu suất và khả năng vận hành của hệ thống robot trong quá trình chơi cờ thực tế.

Về giới hạn và phạm vi nghiên cứu:

  • Giới hạn nội dung: Đề tài bị ràng buộc bởi giới hạn thời gian và tài nguyên phần cứng sẵn có; hệ thống chỉ áp dụng duy nhất cho bộ môn cờ vua tiêu chuẩn; không tự xây dựng mới một mô hình trí tuệ nhân tạo (AI) đánh cờ từ đầu mà tích hợp và khai thác các công nghệ, thuật toán mã nguồn mở sẵn có.
  • Đối tượng nghiên cứu: Các công nghệ, phần mềm thị giác máy tính, công cụ tính toán nước đi cờ vua; giải thuật động học và phương pháp điều khiển phần cứng cho cánh tay robot.
  • Phạm vi nghiên cứu: Nghiên cứu, triển khai thuật toán nhận dạng trạng thái bàn cờ, giải thuật tính toán động học robot SCARA và hiện thực hóa mô hình robot vật lý tương tác thời gian thực với người chơi.

Cơ sở lý thuyết và phương pháp nghiên cứu

Đồ án được xây dựng dựa trên sự kết hợp liên ngành giữa trí tuệ nhân tạo chuyên dụng cho cờ vua, thị giác máy tính và động học cánh tay robot:

Công cụ cờ vua Stockfish và Mạng nơ-ron NNUE

Hệ thống sử dụng Stockfish – chương trình cờ vua mã nguồn mở hàng đầu tích hợp thuật toán cắt tỉa Alpha-Beta (Alpha-Beta Pruning) trên cây tìm kiếm Minimax, kết hợp kỹ thuật bảng hoán vị (transposition tables), history heuristics và killer moves. Kể từ phiên bản Stockfish 12, cấu trúc mạng nơ-ron cập nhật hiệu quả (Efficiently Updatable Neural Networks - NNUE) được đưa vào để thay thế hoặc tăng cường hàm đánh giá vị thế truyền thống:

  • Nguyên tắc vận hành của NNUE: Tối ưu hóa số lượng đầu vào khác không ở mức rất thấp (độ thưa khoảng 0,1%), tận dụng sự thay đổi trạng thái tối thiểu giữa hai nước đi liên tiếp để cập nhật từng phần thay vì tính toán lại toàn bộ mạng, và sử dụng miền số nguyên độ chính xác thấp để suy luận trực tiếp trên CPU với tốc độ hàng triệu lần đánh giá mỗi giây.
  • Kiến trúc mạng: Mạng gồm 4 lớp. Kiến trúc HalfKP xử lý $64 \times (64 \times 10 + 1) = 41.024$ đầu vào boolean cho mỗi nửa bàn cờ tương ứng với từng quân vua, nhân với vector trọng số 16-bit để tạo ra 256 đầu ra qua hàm kích hoạt ReLU, tận dụng các tập lệnh SIMD (MMX, SSE2, AVX2, AVX-512). Kiến trúc HalfKA và HalfKAv2 (áp dụng từ Stockfish 14 do Tomasz Sobczyk phát triển) tối ưu hóa với 45.056 đầu vào mỗi bên, kết hợp bộ chuyển đổi đặc trưng tuyến tính và các mạng con phân tách theo số lượng quân cờ để xử lý cấu hình vật liệu không cân bằng.

Thư viện thị giác máy tính OpenCV

OpenCV (Open Source Computer Vision Library) cung cấp nền tảng xử lý ảnh với hơn 2.500 thuật toán tối ưu hóa. Trong đề tài, OpenCV được sử dụng trên nền tảng Python để thu nhận luồng video từ webcam, thực hiện hiệu chỉnh góc nhìn (perspective transform), cắt xoay vùng bàn cờ 64 ô, và phân loại trạng thái từng ô cờ (ô trống, quân trắng, quân đen) thông qua phân tích giá trị màu RGB kết hợp tính toán độ lệch chuẩn.

Động học robot (Kinematics)

Đồ án phân tích động học thuận và động học ngược (Inverse Kinematics - IK) cho cấu hình cánh tay robot SCARA (Selective Compliance Assembly Robot Arm):

  • Động học ngược giải tích (Analytical IK): Được lựa chọn để áp dụng cho mô hình do robot có bậc tự do thấp. Phương pháp hình học kết hợp định lý Cosin được sử dụng để giải trực tiếp góc quay của các khớp ($D_1$ và $D_2$) từ tọa độ đích $(X, Y)$ của ô cờ trên mặt phẳng 2D, đảm bảo tốc độ phản hồi tức thời mà không cần lặp số phức tạp như các thuật toán số (Numerical IK).

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo cấu trúc module kết hợp chặt chẽ giữa máy tính xử lý trung tâm, mạch điều khiển nhúng, cơ cấu truyền động và hệ thống thị giác máy tính.

       [ Webcam 2K ICON Q-20 ] (Góc nhìn từ trên xuống)
     [ Laptop Xử lý trung tâm ]
   [ Vi điều khiển Arduino Mega 2560 ]
    [ Board mở rộng RAMPS 1.4 + 3x Driver A4988 ]
  3x Động cơ bước NEMA 17          1x Động cơ Servo MG90S
 (Điều khiển các trục X, Y, Z)     (Đóng/mở ngón kẹp gắp cờ)

Thiết kế phần cứng và phân bổ công suất

Mô hình cơ khí dạng tay máy SCARA có trọng lượng khoảng 2 kg, phạm vi với bao quát toàn bộ bàn cờ kích thước $28 \times 28\text{ cm}$. Các linh kiện phần cứng chính bao gồm:

  • Bộ điều khiển: Arduino Mega 2560 (vi xử lý ATmega2560 16 MHz, 256 KB Flash, 8 KB SRAM, 54 chân I/O) kết hợp bo mạch mở rộng RAMPS 1.4.
  • Khâu chấp hành: 03 động cơ bước NEMA 17 (góc bước 1,8°/bước, điện áp 12V–24V DC, mô-men xoắn 0,4 N.m) điều khiển qua 03 driver A4988 (hỗ trợ vi bước lên đến 1/16 micro-step); 01 động cơ servo MG90S (nặng 13,4 g, điện áp 4,8V–6V, mô-men xoắn 1,8–2,2 kg.cm) dùng cho cơ cấu kẹp giữ quân cờ.
  • Cảm biến hình ảnh: Webcam ICON Q-20 độ phân giải 2K ($2560 \times 1440\text{ pixels}$), tốc độ 60 fps, góc nhìn 120°, kết nối USB.

Để đảm bảo hệ thống hoạt động ổn định và liên tục trong khoảng 4 đến 5 giờ mà không bị sụt áp hay quá nhiệt, nguồn điện được phân tách thành hai nhánh độc lập:

Nhóm thiết bị Điện áp cấp Dòng điện tối đa Công suất tính toán Nguồn cấp thực tế
Nhóm công suất: Arduino Mega 2560, RAMPS 1.4, 3x Driver A4988, 3x Động cơ NEMA 17 12V DC ~4,0A 52,75W Nguồn xung 12V - 5A (60W)
Nhóm chấp hành phụ & Thị giác: Động cơ servo MG90S, Webcam ICON Q-20 5V DC ~1,0A 10,00W Nguồn xung 5V - 2A (10W)
Tổng toàn hệ thống 5V - 12V 4,8A 62,75W Bộ nguồn 70W (Dư tải an toàn)

Gia công cơ khí và chuẩn hóa không gian làm việc

  • Gia công in 3D: Các chi tiết khung, khớp xoay và bánh răng truyền động được in 3D bằng vật liệu sợi nhựa (PLA, PLA+, PETG hoặc ABS) với mật độ đặc bên trong (Infill) là 25%, độ dày mỗi lớp in (Resolution) đạt 0,22 mm. Quá trình in thiết lập cấu trúc hỗ trợ (Support) riêng cho các chi tiết bánh răng ăn khớp với dây đai truyền lực để đảm bảo độ chính xác cơ khí.
  • Chuẩn hóa bàn cờ và quân cờ: Bàn cờ được chuẩn hóa theo kích thước $28 \times 28\text{ cm}$, tương ứng kích thước mỗi ô vuông là $3,5 \times 3,5\text{ cm}$. Chiều cao các quân cờ dao động trong khoảng từ 2,7 cm (quân tốt) đến 5,4 cm (quân vua/hậu) nhằm đảm bảo đầu kẹp của servo gắp nhả chính xác, tránh va quẹt với các quân cờ xung quanh.

Thiết kế thuật toán phần mềm

Quy trình vận hành phần mềm được điều phối qua các bước:

  1. Hiệu chỉnh hệ thống (Calibration): Xác định tọa độ gốc ("Home") của cánh tay robot và định chuẩn 4 góc của bàn cờ từ góc nhìn camera phía trên.
  2. Nhận diện nước đi: Sau khi người chơi hoàn thành nước đi, camera ghi lại hình ảnh mới. Thuật toán cắt, nắn phẳng và xoay ảnh bàn cờ. Bằng cách so sánh ma trận trạng thái trước và sau, kết hợp đánh giá kênh màu RGB và độ lệch chuẩn của 64 ô, hệ thống nhận diện ô xuất phát và ô đích mà người chơi vừa di chuyển.
  3. Xác thực và tạo nước đi phản hồi: Chương trình kiểm tra tính hợp lệ của nước đi theo luật cờ vua. Nếu hợp lệ, trạng thái bàn cờ được chuyển vào engine Stockfish NNUE để tính toán nước đi đáp trả tối ưu. Đối với trường hợp phong cấp tốt thành các quân khác ngoài Hậu, người chơi sẽ thông báo cho hệ thống để cập nhật chính xác.
  4. Thực thi động học: Tọa độ ô xuất phát và ô đích của máy được đưa vào hàm giải tích IK để tính các góc quay $D_1, D_2$, chuyển đổi thành chuỗi lệnh điều khiển vị trí gửi qua cổng nối tiếp đến Arduino Mega 2560 để điều khiển cánh tay gắp, chuyển quân và lùi về vị trí Home.

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

Chương 1: Tổng quan

Chương 1 giới thiệu lý do phát triển hệ thống robot chơi cờ vua, đặt ra mục tiêu tổng quát và 3 nhiệm vụ kỹ thuật cụ thể. Tác giả xác định rõ giới hạn nghiên cứu về tài nguyên, đối tượng nghiên cứu (công nghệ thị giác máy, thuật toán điều khiển, động cơ bước/servo) và phạm vi nghiên cứu thực nghiệm tương tác người - máy.

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

Chương này tổng thuật chi tiết nền tảng lý thuyết:

  • Cấu trúc giải thuật của công cụ cờ vua Stockfish (Alpha-Beta, Minimax, hàm đánh giá vị thế).
  • Bản chất mạng nơ-ron NNUE, chi tiết kỹ thuật của kiến trúc HalfKP (41.024 đầu vào, các lớp ẩn 2x256x32, 32x32, 32x1 sử dụng kích hoạt ReLU) và kiến trúc cải tiến HalfKAv2 (45.056 đầu vào).
  • Nguyên lý hoạt động của thư viện OpenCV và các giao diện lập trình.
  • Cơ sở toán học của động học thuận và động học ngược, phân loại hai hướng tiếp cận IK giải tích và IK số học cho tay máy.

Chương 3: Thiết kế hệ thống robot đánh cờ vua

Chương 3 trình bày toàn bộ quy trình thiết kế kỹ thuật:

  • Sơ đồ khối và thông số kỹ thuật chi tiết của các linh kiện phần cứng (RAMPS 1.4, Arduino Mega 2560, A4988, NEMA 17, MG90S, Webcam ICON Q-20).
  • Bảng tính toán và thiết kế sơ đồ cấp nguồn phân tách (12V 5A và 5V 2A).
  • Quy trình gia công in 3D (Infill 25%, layer 0.22 mm) và các yêu cầu kỹ thuật xử lý bavia, hỗ trợ bánh răng.
  • Chuẩn hóa thông số vật lý bàn cờ ($28 \times 28\text{ cm}$) và chiều cao quân cờ (2,7 cm – 5,4 cm).
  • Lưu đồ thuật toán xử lý ảnh, giải thuật nhận diện ô cờ và công thức động học ngược SCARA dựa trên định lý Cosin để tính toán hai góc khớp $D_1$ và $D_2$.

Chương 4: Kết quả

Chương 4 công bố các kết quả thực nghiệm đạt được:

  • Hoàn thiện mô hình phần cứng thực tế và sơ đồ đấu nối dây giữa RAMPS 1.4, Arduino, driver và động cơ.
  • Quy trình thiết lập điểm Home và điểm trung tâm bàn cờ.
  • Diễn biến thực nghiệm một ván cờ tương tác thực tế giữa người và máy:
    • Nước 1: Người chơi đi mã g1 đến f3 (mg1f3) $\rightarrow$ Máy nhận diện, tính toán và điều khiển robot di chuyển tốt từ c7 đến c5 (c7c5).
    • Nước 2: Người chơi đi tốt từ c2 đến c4 (c2c4) $\rightarrow$ Máy đáp trả bằng nước đi tốt từ g7 đến g6 (g7g6).
    • Kiểm thử tính hợp lệ: Người chơi thực hiện nước đi sai luật e1 sang e4 (e1e4) $\rightarrow$ Hệ thống phát hiện không hợp lệ, phát thông báo cảnh báo và không di chuyển cánh tay robot, yêu cầu người chơi đi lại.
    • Nước 3: Người chơi đi mã từ b1 sang a3 (b1a3) $\rightarrow$ Máy thực hiện nước đi tượng từ f8 sang g7 (f8g7).
  • Ghi nhận chi tiết từng chuỗi chuyển động của cánh tay robot: di chuyển đến tọa độ, hạ kẹp, gắp quân, nâng lên, di chuyển sang ô đích, hạ đặt quân, mở kẹp và tự động quay về vị trí Home.

Chương 5: Kết luận và hướng phát triển

Chương 5 tổng kết mức độ hoàn thành so với mục tiêu đề ra và nêu các định hướng cải tiến hệ thống trong tương lai.

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

Kết quả thực nghiệm

  • Xây dựng thành công mô hình robot đánh cờ vua vật lý hoàn chỉnh với trọng lượng gọn nhẹ xấp xỉ 2 kg, có tính di động cao.
  • Hệ thống cơ điện tử vận hành bền bỉ và ổn định liên tục từ 4 đến 5 giờ nhờ thiết kế phân bổ nguồn điện công suất 70W hợp lý kết hợp giải pháp tản nhiệt cho driver động cơ.
  • Hệ thống thị giác máy tính xử lý ổn định luồng ảnh từ camera 2K, nhận diện chính xác 3 trạng thái ô cờ và các nước đi của người chơi, đồng thời kiểm soát chặt chẽ luật chơi (từ chối các nước đi không hợp lệ như e1e4).
  • Tay máy SCARA tính toán động học ngược chính xác bằng phương pháp hình học, điều khiển 3 động cơ bước NEMA 17 và 1 động cơ servo MG90S thực hiện trơn tru các chuỗi thao tác gắp, nhả và chuyển quân trên bàn cờ chuẩn $28 \times 28\text{ cm}$.

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

  • Hiện thực hóa một giải pháp tích hợp hoàn chỉnh từ phần mềm phân tích cờ vua cấp cao (Stockfish NNUE), thuật toán thị giác máy tính OpenCV thời gian thực đến bộ điều khiển nhúng giá thành thấp (Arduino Mega 2560 + RAMPS 1.4).
  • Cung cấp phương pháp chuẩn hóa không gian làm việc cơ khí giữa kích thước bàn cờ ($28 \times 28\text{ cm}$, ô $3,5 \times 3,5\text{ cm}$) và độ cao quân cờ (2,7–5,4 cm) với tầm với của cánh tay robot in 3D.

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

Dựa trên các nội dung được tác giả trình bày trong văn bản:

  • Hạn chế:
    • Trường hợp người chơi thăng cấp quân tốt thành các quân cờ khác ngoài quân Hậu (như Xe, Tượng, Mã), hệ thống thị giác chưa thể tự động phân biệt trực tiếp mà người chơi phải thực hiện thao tác khai báo/thông báo cho robot.
    • Hệ thống phụ thuộc vào điều kiện ánh sáng ổn định và camera treo cố định vuông góc từ trên cao để đảm bảo độ chính xác khi phân tích màu RGB và độ lệch chuẩn.
    • Đề tài bị giới hạn về thời gian và tài nguyên, chưa mở rộng sang việc tự huấn luyện các mô hình AI riêng biệt.
  • Hướng phát triển:
    • Nâng cấp thuật toán nhận dạng để tự động xử lý mọi trường hợp phong cấp quân cờ mà không cần can thiệp thủ công.
    • Tối ưu hóa cấu trúc cơ khí và đầu kẹp để tăng tốc độ di chuyển và độ mượt mà khi gắp nhả quân.
    • Nâng cao khả năng thích ứng của hệ thống xử lý ảnh dưới các điều kiện chiếu sáng môi trường thay đổi.

Giá trị tham khảo

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

  • Hệ thống nhúng và IoT, Kỹ thuật Cơ điện tử, Kỹ thuật Robot: Tham khảo thiết kế hệ thống điều khiển nhiều trục dùng Arduino Mega 2560 kết hợp shield RAMPS 1.4, phương pháp tính toán giải tích động học ngược cho tay máy phẳng SCARA, và kỹ thuật tính toán phân bổ công suất nguồn DC.
  • Công nghệ thông tin, Trí tuệ nhân tạo, Thị giác máy tính: Tham khảo quy trình tiền xử lý ảnh bàn cờ bằng OpenCV, thuật toán phân loại trạng thái ô cờ dựa trên RGB và độ lệch chuẩn, cùng phương pháp tích hợp engine Stockfish sử dụng mạng nơ-ron NNUE vào ứng dụng điều khiển thiết bị vật lý thời gian thực.

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

1. Hệ thống nhận diện nước đi của người chơi trên bàn cờ bằng kỹ thuật nào?
Hệ thống sử dụng webcam 2K gắn cố định từ trên cao chụp ảnh bàn cờ sau mỗi lượt đi của người chơi. Bằng thư viện OpenCV trên Python, ảnh được cắt và nắn phẳng theo 4 góc bàn cờ. Chương trình phân tích các giá trị màu RGB kết hợp với độ lệch chuẩn của từng ô vuông để xác định 3 trạng thái: ô trống, ô có quân đen hoặc ô có quân trắng, từ đó so sánh với trạng thái trước để tìm ra nước đi.

2. Đồ án giải bài toán động học ngược (Inverse Kinematics) cho robot SCARA như thế nào?
Tác giả sử dụng phương pháp động học ngược giải tích (Analytical IK) dựa trên hình học và định lý Cosin. Phương pháp này thiết lập công thức toán học trực tiếp để tính toán hai góc khớp quay $D_1$ và $D_2$ từ tọa độ đích $(X, Y)$ của ô cờ trên mặt phẳng, giúp hệ thống tính toán nhanh, chính xác và không tiêu tốn tài nguyên xử lý lặp như các giải thuật số.

3. Tại sao mạng nơ-ron NNUE trong Stockfish lại cho tốc độ suy luận rất nhanh trên CPU?
NNUE tuân theo 3 nguyên tắc: số lượng đầu vào khác không cực kỳ thấp (độ thưa ~0,1%), chỉ cập nhật vi sai các nơ-ron bị ảnh hưởng bởi nước đi vừa thực hiện thay vì tính toán lại toàn bộ mạng, và cấu trúc mạng nông với trọng số được lượng tử hóa sang miền số nguyên (8-bit/16-bit) để tận dụng triệt để các tập lệnh SIMD (SSE2, AVX2, AVX-512) trên CPU thời gian thực.

4. Giải pháp cấp nguồn của hệ thống được thiết kế như thế nào để đảm bảo hoạt động liên tục 4–5 giờ?
Hệ thống tính toán tổng công suất tiêu thụ tối đa của các linh kiện là 62,75W và chia thành hai nhánh nguồn độc lập: nguồn 12V – 5A (60W) cấp qua RAMPS 1.4 cho Arduino Mega 2560, 3 driver A4988 và 3 động cơ bước NEMA 17; nguồn 5V – 2A (10W) cấp riêng cho servo MG90S và webcam 2K. Tổng công suất nguồn cấp thực tế là 70W, đảm bảo an toàn tải và chống sụt áp.

5. Hệ thống xử lý thế nào khi người chơi thực hiện một nước đi không hợp lệ hoặc khi phong cấp tốt?
Nếu người chơi thực hiện nước đi trái luật (ví dụ trong thực nghiệm đi nước e1e4), chương trình sẽ phát cảnh báo trên màn hình, giữ nguyên vị trí cánh tay robot và yêu cầu người chơi thực hiện lại nước đi hợp lệ. Trong trường hợp phong cấp tốt thành quân cờ khác ngoài Hậu, người chơi cần thông báo trực tiếp cho hệ thống biết quân cờ được thăng cấp để cập nhật trạng thái bàn cờ logic.

Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống robot đánh cờ vua" của sinh viên Nguyễn Tiến Đạt đã hoàn thành trọn vẹn các mục tiêu nghiên cứu đề ra thông qua việc thiết kế và chế tạo thành công một mô hình robot SCARA vật lý tương tác thời gian thực với con người. Bằng sự kết hợp chặt chẽ giữa công cụ tính toán nước đi Stockfish NNUE, xử lý ảnh OpenCV và vi điều khiển Arduino Mega 2560, hệ thống đã chứng minh độ chính xác và tính ổn định cao qua các ván đấu thực nghiệm. Đây là công trình kỹ thuật tiêu biểu cho việc ứng dụng công nghệ hệ thống nhúng, thị giác máy tính và cơ điện tử vào các bài toán tự động hóa giải trí và tương tác người - máy.