1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua

87 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng hệ thống robot đánh cờ vua
Tác giả Nguyễn Tiến Đạt
Người hướng dẫn PGS.TS Trương Ngọc Sơn
Trường học 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
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 87
Dung lượng 10,96 MB

Cấu trúc

  • 1.1 GIỚI THIỆU (18)
  • 1.2 MỤC TIÊU ĐỀ TÀI (18)
  • 1.3 GIỚI HẠN ĐỀ TÀI (18)
  • 1.4 PHƯƠNG PHÁP NGHIÊN CỨU (18)
  • 1.5 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU (19)
  • 1.6 BỐ CỤC QUYỂN BÁO CÁO (19)
  • 2.1 GIỚI THIỆU VỀ STOCKFISH (20)
    • 2.1.1 Khái niệm (20)
    • 2.1.2 Biểu đồ đánh giá quá trình phát triển theo thời gian của Stockfish (21)
  • 2.2 GIỚI THIỆU MẠNG NƠ RON THẦN KINH CÓ THỂ CẬP NHẬT HIỆU QUẢ (EFFICIENTLY UPDATABLE NEURAL NETWORKS - NNUE) (22)
    • 2.2.1 Khái niệm mạng nơ ron thần kinh có thể cập nhật hiệu quả (NNUE) (22)
    • 2.2.2 Kiến trúc mạng nơ ron thần kinh có thể cập nhật hiệu quả (NNUE) (23)
      • 2.2.2.1 Kiến trúc HalfKP (23)
      • 2.2.2.2 Kiến trúc HalfKA (25)
      • 2.2.2.3 Biểu đồ đánh giá quá trình phát triển theo thời gian của Stockfish khi sử dụng mạng nơ ron thần kinh có thể cập nhật hiệu quả (NNUE) (26)
  • 2.3 THƯ VIỆN PHẦN MỀM NGUỒN MỞ VỀ THỊ GIÁC MÁY TÍNH VÀ HỌC MÁY (OPEN SOURCE COMPUTER VISION LIBRARY-OPENCV) (27)
  • 2.4 GIỚI THIỆU ĐỘNG HỌC THUẬN VÀ ĐỘNG HỌC NGƯỢC (28)
  • 3.1 THIẾT KẾ PHẦN CỨNG (31)
    • 3.1.1. Sơ đồ khối hệ thống robot đánh cờ vua (31)
    • 3.1.2 Linh kiện phần cứng (32)
    • 3.1.3 Sơ đồ nguyên lý (41)
    • 3.1.4 Sơ đồ kết nối (44)
    • 3.1.5 Thi công phần cứng (45)
      • 3.1.5.1 Các bộ phận của mô hình robot trên phần mềm 3D view (45)
      • 3.1.5.2 Bộ phận robot trong thực tế (46)
      • 3.1.5.3 Lắp ráp linh kiện (46)
      • 3.1.5.4 Chuẩn hóa bàn cờ vua (47)
  • 3.2 THIẾT KẾ PHẦN MỀM (48)
    • 3.2.1 Sơ đồ hệ thống quá trình xử lý của hệ thống (48)
    • 3.2.2 Lưu đồ giải thuật chương trình chính của hệ thống (49)
    • 3.2.3 Phần mềm di chuyển robot (51)
      • 3.2.3.1 Khái quát công thức của mô hình (51)
      • 3.2.3.2 Áp dụng công thức vào chương trình thực tế của đề tài (52)
    • 3.2.4 Phần mềm nhận diện nước cờ và xác định bước đi tiếp theo (56)
      • 3.2.4.1 Khái quát xử lý và hiệu chỉnh ảnh của OpenCV (57)
      • 3.2.4.2 Nhận diện nước cờ (vị trí các quân cờ) (57)
      • 3.2.4.3 Xác định bước đi tiếp theo (58)
      • 3.2.4.4 Các bước thực hiện trong chương trình thực tế (60)
    • 3.2.5 Phần mềm xử lý nước cờ (61)
  • Chương 4 KẾT QUẢ (64)
    • 4.1 KẾT QUẢ THỰC HIỆN MÔ HÌNH (64)
      • 4.1.1 Kết quả phần cứng (64)
      • 4.1.2 Kết quả hoạt động (67)
        • 4.1.2.1 Xác định tọa độ gốc (67)
        • 4.1.2.2 Người dùng đánh cờ với hệ thống (69)
    • 4.2 ĐÁNH GIÁ MÔ HÌNH (81)
  • Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (83)
    • 5.1 KẾT LUẬN (83)
    • 5.2 HƯỚNG PHÁT TRIỂN (83)
  • TÀI LIỆU THAM KHẢO (85)

Nội dung

● Không xây dựng hệ thống trí tuệ nhân tạo AI mới để đánh cờ, mà dựa trên những công nghệ có sẵn 1.4 PHƯƠNG PHÁP NGHIÊN CỨU Trong quá trình thực hiện đề tài, nhóm thực hiện sẽ sử dụng c

GIỚI THIỆU

Trong thế giới ngày càng phát triển về công nghệ, robot đang ngày càng trở nên quan trọng và đa dạng trong ứng dụng Robot được sử dụng rộng rãi trong các quy trình sản xuất và lắp ráp Tuy nhiên, chúng cũng có thể được ứng dụng trong các lĩnh vực khác như giáo dục, giải trí và thậm chí là chơi cờ vua.

MỤC TIÊU ĐỀ TÀI

Mục tiêu của đề tài là:

● Nghiên cứu, khảo sát và phân tích các thuật toán và chiến lược chơi cờ hiện có

● Thiết kế và triển khai một hệ thống robot có khả năng chơi cờ với con người

● Đánh giá hiệu suất và khả năng của hệ thống robot trong việc chơi cờ.

GIỚI HẠN ĐỀ TÀI

Những giới hạn về nội dung thực hiện

● Giới hạn về thời gian và tài nguyên có sẵn

● Robot chỉ chơi cờ vua

● Không xây dựng hệ thống trí tuệ nhân tạo (AI) mới để đánh cờ, mà dựa trên những công nghệ có sẵn

PHƯƠNG PHÁP NGHIÊN CỨU

Trong quá trình thực hiện đề tài, nhóm thực hiện sẽ sử dụng các phương pháp nghiên cứu sau đây:

● Tìm hiểu và phân tích các thuật toán và chiến lược chơi cờ hiện có

● Nghiên cứu, tìm hiểu thuật toán nhận dạng hình ảnh để xác định vị trí các quân cờ trên bàn cờ vua Hệ thống sẽ được kết nối với camera để thu thập thông tin về vị trí của các quân cờ

● Phân tích các giải thuật di chuyển các quân cờ theo luật chơi cờ vua Robot sẽ thực hiện các nước đi hợp lệ và tránh vi phạm luật chơi

● Phân tích và đánh giá hiệu suất của hệ thống.

BỐ CỤC QUYỂN BÁO CÁO

Nội dung chính của đề tài được trình bày với 5 chương:

- Chương 1 GIỚI THIỆU: giới thiệu chung về đề tài, mục tiêu nghiên cứu, giới hạn đề tài, phương pháp nghiên cứu, đối tượng và phạm vi nghiên cứu

- Chương 2 CƠ SỞ LÝ THUYẾT: giới thiệu về tình hình nghiên cứu, hướng nghiên cứu, các công nghệ đang được sử dụng liên quan đến chơi cờ

- Chương 3 THIẾT KẾ HỆ THỐNG: trình bày mô hình tổng quan của hệ thống, các khối của hệ thống, thiết kế chi tiết từng khối và các thiết bị được sử dụng trong từng khối, các phần mềm sử dụng trong hệ thống

- Chương 4 KẾT QUẢ: trình bày kết quả thực hiện của mô hình hệ thống, bao gồm cả việc chơi cờ và đánh giá hiệu suất của robot

- Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: rút ra các kết luận từ nghiên cứu, và đề xuất các hướng phát triển tiếp theo

Chương 2 CƠ SỞ LÝ THUYẾT

GIỚI THIỆU VỀ STOCKFISH

Khái niệm

Stockfish là một chương trình cờ vua mạnh nhất thế giới, được phát triển bởi một nhóm lập trình viên tình nguyện từ khắp nơi trên thế giới Nó được coi là một trong những hệ thống trí tuệ nhân tạo mạnh nhất hiện nay, luôn đứng đầu các giải đấu cờ vua máy tính

Hình 2 1 Logo chương trình cờ vua Stockfish [16]

Stockfish sử dụng một số thuật toán chính để đạt được sức mạnh cờ vua phi thường của mình:

• Thuật toán Alpha-Beta Pruning: Đây là một thuật toán tìm kiếm cây, cho phép Stockfish xem xét một không gian tìm kiếm lớn một cách hiệu quả hơn so với các thuật toán tìm kiếm cổ điển khác

• Quản lý bộ nhớ và cache: Stockfish sử dụng các kỹ thuật quản lý bộ nhớ tinh vi để tối ưu hóa tốc độ truy xuất dữ liệu, giúp nó có thể phân tích vị thế cờ nhanh chóng

• Đánh giá vị thế (Position Evaluation): Stockfish sử dụng một hàm đánh giá vị thế cực kỳ phức tạp, bao gồm hàng trăm tham số được tinh chỉnh thông qua huấn luyện trên dữ liệu ván cờ

• Quản lý cây tìm kiếm (Minimax Search): Stockfish sử dụng các kỹ thuật như transposition tables, history heuristics và killer moves để quản lý và tối ưu hóa cây tìm kiếm, giúp tăng tốc độ tính toán

Bắt đầu với Stockfish 12 (2020), chức năng đánh giá bảng mạng thần kinh đã được tích hợp Trong Stockfish 16.1 (2024), các chức năng đánh giá bảng cổ điển đã bị loại bỏ, chỉ còn lại mạng lưới thần kinh [17].

Biểu đồ đánh giá quá trình phát triển theo thời gian của Stockfish

Chương trình cờ vua Stockfish chiếm lĩnh top 1 trong nhiều năm do sự cải tiến thuật toán và áp dụng mô hình nơ ron mới dành riêng cho đánh cờ vua Sự tiến bộ Elo của Stockfish trong hành trình 10 năm đầu được thể hiển qua hình sau:

Hình 2 2 Sơ đồ thể hiện sự tiến bộ điểm Elo của Stockfish theo thời gian trong hơn 10 năm qua [18]

GIỚI THIỆU MẠNG NƠ RON THẦN KINH CÓ THỂ CẬP NHẬT HIỆU QUẢ (EFFICIENTLY UPDATABLE NEURAL NETWORKS - NNUE)

Khái niệm mạng nơ ron thần kinh có thể cập nhật hiệu quả (NNUE)

Mạng nơ ron thần kinh có thể cập nhật hiệu quả (NNUE) là một kiến trúc mạng nơ- ron tận dụng sự thay đổi tối thiểu trong các đầu vào của mạng giữa các lần đánh giá liên tiếp Nó được phát minh cho Shogi bởi Yu Nasu, được tích hợp vào YaneuraOu do Motohiro Isozaki phát triển vào tháng 5 năm 2018, và sau đó được đưa vào cờ vua cho Stockfish bởi Hisayori Noda vào tháng 6 năm 2019, nhưng có thể áp dụng cho nhiều trò chơi ván bài khác và thậm chí là trong các lĩnh vực khác NNUE hoạt động dựa trên các nguyên tắc sau: [1][3]

● Mạng nên có số lượng đầu vào không phải 0 tương đối thấp

● Các đầu vào nên thay đổi càng ít càng tốt giữa các lần đánh giá liên tiếp

● Mạng nên đơn giản đủ để hỗ trợ suy luận độ chính xác thấp trong miền số nguyên Tuân theo nguyên tắc 1 có nghĩa là khi mạng được mở rộng quy mô, đầu vào phải trở nên thưa thớt Các kiến trúc tốt nhất hiện tại có mức độ thưa thớt đầu vào khoảng 0,1%

Số lượng đầu vào không phải 0 nhỏ đặt ra một giới hạn trên thời gian cần thiết để đánh giá mạng trong trường hợp phải đánh giá toàn bộ Đây là lý do chính khiến các mạng NNUE có thể lớn nhưng vẫn rất nhanh để đánh giá [1]

Tuân theo nguyên tắc 2 (với giả định rằng nguyên tắc 1 được tuân thủ) tạo ra một cách để hiệu quả cập nhật mạng (hoặc ít nhất là một phần tốn kém của nó) thay vì phải đánh giá lại toàn bộ Điều này tận dụng việc một nước đi duy nhất chỉ thay đổi trạng thái bàn cờ một chút Điều này kém quan trọng hơn nguyên tắc thứ nhất và hoàn toàn không bắt buộc đối với các cài đặt để tận dụng, nhưng tuy nhiên vẫn mang lại một sự cải thiện đáng kể trong các cài đặt quan tâm đến việc sử dụng điều này [1]

Tuân theo nguyên tắc 3 cho phép đạt được hiệu suất tối đa trên phần cứng phổ biến và khiến mô hình đặc biệt phù hợp với suy luận CPU thời gian thực, điều này cần thiết cho các máy chơi cờ truyền thống [1]

Nhìn chung, các nguyên tắc NNUE cũng có thể áp dụng cho các mạng sâu tốn kém, nhưng chúng thể hiện rõ ràng trong các mạng nông nhanh, phù hợp với suy luận CPU thời

6 gian thực mà không cần batching và gia tốc Hiệu suất mục tiêu là hàng triệu lần đánh giá mỗi giây mỗi luồng Đây là một trường hợp sử dụng cực đoan yêu cầu các giải pháp cực đoan, và quan trọng nhất là việc định lượng [1][2].

Kiến trúc mạng nơ ron thần kinh có thể cập nhật hiệu quả (NNUE)

Mạng nơ ron bao gồm bốn lớp Lớp đầu vào được tham số hóa quá mức, nhận vào biểu diễn bàn cờ cho tất cả các vị trí quân vua của mỗi bên [18]

Cấu trúc HalfKP bao gồm hai nửa, mỗi nửa tương ứng với một trong hai quân vua, giao thoa với nữa lớp ẩn đầu tiên về di chuyển hoặc không di chuyển Với mỗi vị trí quân vua đen hoặc trắng, 10 quân không phải vua trên ô tương ứng là các đầu vào boolean {0,1}, cùng với một phần dư từ cờ Shogi (BONA_PIECE_ZERO), tổng cộng 64 x (64 x 10 + 1)

= 41.024 đầu vào cho mỗi nửa, được nhân với một véc-tơ trọng số 16 bit để tạo ra 256 đầu ra cho mỗi nửa, tổng cộng 256 x 41.024 = 10.502.144 trọng số [18]

Như Ronald de Man đã nhấn mạnh trong một cuộc thảo luận trên diễn đàn CCC, các trọng số đầu vào được sắp xếp theo cách mà cấu hình quân cờ đảo ngược màu trong cả hai nửa chia sẻ cùng một chỉ số Tuy nhiên, và điều này cũng có vẻ là một phần dư từ cờ Shogi với đối xứng quay 180 độ trên bàn cờ 9x9, thay vì lật đứng (xor 56), việc xoay (xor 63) được áp dụng [18]

Hiệu quả của NNUE là do việc cập nhật dần đầu ra của lớp đầu vào trong các bước di chuyển, nơi chỉ một phần nhỏ các neuron cần được xem xét trong trường hợp di chuyển không phải vua Ba lớp còn lại với 2x256x32, 32x32 và 32x1 trọng số thì tính toán ít tốn kém hơn, các lớp ẩn áp dụng kích hoạt ReLu, được tính toán tốt nhất bằng cách sử dụng các hướng dẫn SIMD phù hợp thực hiện tính toán véc-tơ số nguyên 8 bit/16 bit nhanh chóng, như MMX, SSE2 hoặc AVX2 trên x86/x86-64, hoặc, nếu có sẵn, AVX-512 [18]

Hình 2 3 Các lớp NNUE trong hoạt động [18]

Theo giải thích của Ronald de Man, người đã thực hiện việc port NNUE của Stockfish sang CFish [18]:

• Bộ tích lũy (accumulator) có một nửa "vua trắng" và một nửa "vua đen", trong đó mỗi nửa là một vector 256 phần tử của các số nguyên 16-bit, tương đương với tổng của các trọng số của các đặc trưng "hoạt động" (pt, sq, ksq) cộng với một vector 256 phần tử của các độ lệch 16-bit

• Bước "biến đổi" (transform) của việc đánh giá NNUE tạo ra một vector 512 phần tử của các số nguyên 8-bit, trong đó nửa đầu được tạo ra từ vector 256 phần tử của phía đi và nửa sau được tạo ra từ vector 256 phần tử của phía kia Trong bước này, các phần tử 16-bit được cắt/giới hạn (clip/clamp) về một giá trị từ 0 đến 127 Đây là đầu ra của lớp đầu vào

• Vector 512 phần tử 8-bit này sau đó được nhân với một ma trận 32x512 các trọng số 8-bit để thu được một vector 32 phần tử các số nguyên 32-bit, và sau đó cộng thêm một vector các độ lệch 32-bit Các giá trị tổng này được chia cho 64 và cắt/giới

8 hạn về một vector 32 phần tử các số nguyên 8-bit từ 0 đến 127 Đây là đầu ra của lớp ẩn thứ nhất

• Vector 32 phần tử 8-bit thu được này được nhân với một ma trận 32x32 các trọng số 8-bit để thu được một vector 32 phần tử các số nguyên 32-bit, và sau đó cộng thêm một vector các độ lệch 32-bit khác Các giá trị nguyên này lại được chia cho 64 và cắt/giới hạn về 32 số nguyên 8-bit từ 0 đến 127 Đây là đầu ra của lớp ẩn thứ hai

• Vector 32 phần tử 8-bit này sau đó được nhân với một ma trận 1x32 các trọng số 8- bit (tức là thực hiện phép nhân vô hướng của hai vector) Điều này tạo ra một giá trị 32-bit, và một độ lệch 32-bit được cộng vào Đây là đầu ra của lớp đầu ra

• Đầu ra của lớp đầu ra được chia cho FV_SCALE = 16 để tạo ra đánh giá NNUE Đánh giá của Stockfish sau đó thực hiện một số bước tiếp theo như cộng thêm một điểm thưởng Tempo (mặc dù đánh giá NNUE đã bao gồm thông tin về phía đi trong bước "biến đổi") và thu hẹp đánh giá về không khi rule50_count() tiến gần đến 50 nước

Trong các phiên bản Stockfish tiếp theo, kiến trúc mạng lưới đã được cải thiện thêm bởi Tomasz Sobczyk và cộng sự Kiến trúc HalfKA sử dụng 12x64x64 = 45056 đầu vào cho mỗi trong 12 loại quân cờ, nhân với 64 ô vuông cho mỗi trong 64 ô của vua của mình, nhân với 2 vì cả hai phía đi và phía đối thủ, sử dụng lật dọc thay vì xoay HalfKP HalfKAv2 được áp dụng trong Stockfish 14 tiết kiệm một số không gian khi xem xét sự dư thừa của ô vua bằng cách sử dụng 11x64x64 = 45056 đầu vào mỗi bên, được ánh xạ vào bộ chuyển đổi đặc trưng tuyến tính 2x520, sau đó trực tiếp cấp vào 8x2 đầu ra của bộ chuyển đổi đặc trưng này để học tốt hơn các cấu hình vật liệu không cân bằng Một cải tiến khác là sử dụng tám mạng con 512x2->16->32->1 phân biệt theo (piece_count-1) div 4 trong phạm vi từ 0 đến 7 [18]

Hình 2 4 Kiến trúc HalfKAv2 của Tomasz Sobczyk [18]

2.2.2.3 Biểu đồ đánh giá quá trình phát triển theo thời gian của Stockfish khi sử dụng mạng nơ ron thần kinh có thể cập nhật hiệu quả (NNUE)

Joost VandeVondele đã tạo ra một biểu đồ để cho thấy cách Stockfish tăng Elo với NNUE sau một năm [18]:

Hình 2 5 Biểu đồ quá trình tăng Elo của Stockfish khi dùng NNUE [18]

THƯ VIỆN PHẦN MỀM NGUỒN MỞ VỀ THỊ GIÁC MÁY TÍNH VÀ HỌC MÁY (OPEN SOURCE COMPUTER VISION LIBRARY-OPENCV)

OpenCV (Open Source Computer Vision Library) là một thư viện phần mềm mã nguồn mở về thị giác máy tính và học máy OpenCV được xây dựng để cung cấp một cơ sở hạ tầng chung cho các ứng dụng thị giác máy tính và để tăng tốc việc sử dụng nhận thức máy trong các sản phẩm thương mại Với giấy phép Apache 2, OpenCV giúp cho các doanh nghiệp dễ dàng sử dụng và chỉnh sửa mã nguồn [5]

Thư viện này có hơn 2.500 thuật toán được tối ưu hóa, bao gồm một bộ đầy đủ các thuật toán thị giác máy tính và học máy hiện đại cũng như truyền thống Các thuật toán này có thể được sử dụng để phát hiện và nhận dạng khuôn mặt, xác định các đối tượng, phân loại các hành động của con người trong video, theo dõi chuyển động của máy ảnh, theo dõi các vật thể di chuyển, trích xuất mô hình 3D của các đối tượng, tạo ra đám mây điểm 3D từ camera stereo, ghép ảnh lại với nhau để tạo ra một ảnh có độ phân giải cao của toàn cảnh, tìm các ảnh tương tự từ một cơ sở dữ liệu ảnh, loại bỏ mắt đỏ trong ảnh được chụp bằng

11 flash, theo dõi chuyển động của mắt, nhận diện phông cảnh và đặt các điểm chuẩn để lồng ghép thực tế ảo, v.v OpenCV có cộng đồng người dùng lên tới hơn 47.000 người và ước tính số lượng tải về vượt quá 18 triệu Thư viện này được sử dụng rộng rãi trong các công ty, nhóm nghiên cứu và các cơ quan chính phủ [5]

Bên cạnh các công ty lớn như Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota sử dụng thư viện này, còn có nhiều công ty khởi nghiệp như Applied Minds, VideoSurf và Zeitera cũng sử dụng OpenCV rộng rãi Các ứng dụng triển khai của OpenCV bao gồm ghép ảnh đường phố, phát hiện xâm nhập trong video giám sát tại Israel, giám sát thiết bị khai thác mỏ tại Trung Quốc, hỗ trợ robot điều hướng và nhặt các vật thể tại Willow Garage, phát hiện tai nạn đuối nước trong hồ bơi ở Châu Âu, chạy các tác phẩm nghệ thuật tương tác ở Tây Ban Nha và New York, kiểm tra đường băng để phát hiện mảnh vỡ tại Thổ Nhĩ Kỳ, kiểm tra nhãn mác trên sản phẩm trong các nhà máy trên toàn thế giới, và phát hiện khuôn mặt nhanh chóng tại Nhật Bản [5]

OpenCV có giao diện C++, Python, Java và MATLAB, hỗ trợ Windows, Linux, Android và Mac OS OpenCV chủ yếu hướng tới các ứng dụng thị giác thời gian thực và tận dụng các hướng dẫn MMX và SSE khi có sẵn Hiện đang được phát triển một giao diện CUDA và OpenCL đầy đủ tính năng Có hơn 500 thuật toán và khoảng 10 lần số lượng hàm để tạo thành hoặc hỗ trợ các thuật toán đó OpenCV được viết bằng C++ nguyên thủy và có một giao diện dạng mẫu làm việc một cách tự nhiên với các bộ chứa STL [5].

GIỚI THIỆU ĐỘNG HỌC THUẬN VÀ ĐỘNG HỌC NGƯỢC

Động học (kinematics) là nghiên cứu về chuyển động mà không xem xét đến nguyên nhân gây ra chuyển động, ví dụ như lực và mô-men Động học ngược (inverse kinematics) là việc sử dụng các phương trình động học để xác định chuyển động của một robot để đạt đến vị trí mong muốn Ví dụ, để thực hiện việc lấy tự động các vật từ trong thùng, một cánh tay robot sử dụng trong dây chuyền sản xuất cần có chuyển động chính xác từ vị trí ban đầu đến vị trí mong muốn giữa các thùng và các máy móc sản xuất Phần cuối cùng của cánh tay robot được gọi là bộ định vị (end-effector) Cấu hình của robot là một danh sách các vị

12 trí khớp nằm trong giới hạn vị trí của mô hình robot và không vi phạm bất kỳ ràng buộc nào mà robot có [6][9]

Với vị trí mong muốn của bộ định vị robot, động học ngược (IK) có thể xác định cấu hình khớp thích hợp mà bộ định vị sẽ di chuyển đến vị trí mục tiêu [6]

Sau khi các góc khớp của robot được tính toán bằng cách sử dụng động học ngược, một hồ sơ chuyển động có thể được tạo ra bằng cách sử dụng ma trận Jacobian để di chuyển bộ định vị từ vị trí ban đầu đến vị trí mục tiêu Ma trận Jacobian giúp xác định mối quan hệ giữa các thông số khớp của robot và tốc độ của bộ định vị [6]

Ngược lại với động học thuận (Forward Kinematics), các robot có nhiều khớp quay thường có nhiều giải pháp cho động học ngược, và nhiều phương pháp khác nhau đã được đề xuất tùy theo mục đích Nhìn chung, chúng được phân loại thành hai phương pháp, một phương pháp thu được theo cách phân tích (tức là giải tích) và phương pháp khác sử dụng tính toán số[6]

Giải pháp động học ngược số học (Numerical Inverse Kinematic Solutions) [6][7]: Để xấp xỉ cấu hình robot đạt được các mục tiêu và ràng buộc được chỉ định cho robot, các giải pháp số có thể được sử dụng Mỗi góc khớp được tính toán lặp đi lặp lại bằng cách sử dụng các thuật toán để tối ưu hóa, chẳng hạn như các phương pháp dựa trên gradient [6][7]

Các trình giải IK số linh hoạt hơn nhưng yêu cầu nhiều bước hội tụ theo hướng của hệ thống phi tuyến, trong khi các trình giải IK phân tích thích hợp hơn cho các bài toán IK đơn giản IK số linh hoạt hơn ở chỗ các ràng buộc động học robot có thể được chỉ định và các ràng buộc bên ngoài, chẳng hạn như một ràng buộc nhắm mục tiêu cho cánh tay camera để chỉ về một vị trí mục tiêu, có thể được thiết lập cho các trình giải IK Việc xác định trình giải IK nào để áp dụng chủ yếu phụ thuộc vào các ứng dụng robot, chẳng hạn như các ứng dụng tương tác thời gian thực, và vào một số tiêu chí về hiệu suất, chẳng hạn như độ mượt mà của tư thế cuối cùng và khả năng mở rộng cho các hệ thống robot dư thừa[6][7]

Giải pháp động học ngược giải tích (Analytical Inverse Kinematic Solutions) [6]

Mỗi góc khớp được tính toán từ tư thế của bộ định vị dựa trên một công thức toán học Bằng cách định nghĩa các thông số khớp và tư thế của bộ định vị một cách biểu tượng, động học ngược có thể tìm tất cả các giải pháp khả dĩ của các góc khớp dưới dạng giải tích như một hàm của độ dài các liên kết, tư thế ban đầu của nó và các ràng buộc quay [6][8] Động học ngược giải tích chủ yếu được sử dụng cho các robot có độ tự do (DoF) thấp do tính phi tuyến của các phương trình động học và thiếu khả năng mở rộng cho các cấu hình robot dư thừa [6][8]

Chương 3 THIẾT KẾ HỆ THỐNG ROBOT ĐÁNH

THIẾT KẾ PHẦN CỨNG

Sơ đồ khối hệ thống robot đánh cờ vua

Hệ thống robot đánh cờ vua được xây dựng dựa trên một kiến trúc tích hợp nhiều thành phần công nghệ, bao gồm camera USB, laptop, vi điều khiển Arduino Mega 2560 và mạch điều khiển RAMPS 1.4 Mô hình gọn nhẹ khoảng 2 kí lô gram có thể di động, cánh tay robot đủ dài và bao quát hết bàn cờ 28 cm nhân 28 cm, công suất ổn định, có tản nhiệt, để hệ thống có thể hoạt động liên tục trong 4 đến 5 giờ

Quá trình hoạt động hệ thống bắt đầu bằng việc lấy dữ liệu ảnh từ camera USB và gửi sang laptop để xử lý Trên laptop, các thuật toán xử lý ảnh và hiệu chuẩn ảnh được viết bằng ngôn ngữ Python để phân tích tình huống trên bàn cờ, xác định vị trí các quân cờ và tính toán nước đi tiếp theo

Sau khi xử lý trên laptop, lệnh điều khiển robot được gửi đến vi điều khiển Arduino Mega 2560 Arduino Mega 2560 sẽ tiếp nhận lệnh từ laptop thông qua cổng giao tiếp để xử lý lệnh và điều khiển mạch RAMPS 1.4

Mạch RAMPS 1.4 được cấp nguồn 12V và có 3 driver A4988 để điều khiển 3 động cơ bước Nema 17 Các động cơ này sẽ thực hiện di chuyển cánh tay robot đến vị trí đúng trên bàn cờ để thực hiện nước đi mới Đồng thời, nguồn 5V cũng được cấp cho động cơ servo MG90S để điều khiển các khớp nối của cánh tay robot

Với kiến trúc này, hệ thống robot đánh cờ vua có thể tự động lấy dữ liệu từ camera, xử lý ảnh trên laptop, và điều khiển robot thực hiện nước đi một cách chính xác và linh hoạt Sự kết hợp giữa laptop, Arduino Mega 2560 và mạch RAMPS 1.4 cùng với các thành phần phần cứng khác mang lại một giải pháp hoàn chỉnh cho hệ thống robot này

Hình 3 1 Sơ đồ khối hệ thống robot đánh cờ vua

Linh kiện phần cứng

RAMPS 1.4 là board mở rộng cắm trên Arduino Mega 2560, được thiết kế đặc biệt để điều khiển các hệ thống robot Với khả năng tương thích cao với nhiều loại bộ điều khiển và động cơ, RAMPS 1.4 mang lại sự linh hoạt tối đa cho các nhà phát triển robot

Một trong những ưu điểm nổi bật của RAMPS 1.4 chính là khả năng điều khiển nhiệt độ và cảm biến nhiệt độ tiên tiến Điều này đặc biệt quan trọng trong các ứng dụng robot đòi hỏi sự chính xác và ổn định cao về nhiệt độ, như các hệ thống robot công nghiệp hoặc robot y tế Việc kiểm soát nhiệt độ chính xác giúp nâng cao độ tin cậy và hiệu suất của các hệ thống robot

Hình 3 2 Ảnh mặt trên ramp 1.4 [10]

Bảng 3 1 Thông số kỹ thuật RAMPS 1.4 [10]

Bộ vi xử lý ATmega2560

Tốc độ xung nhịp 16 MHz

Số chân I/O 54 (trong đó 15 chân PWM)

Giao tiếp USB, SPI, I2C, UART

Dòng điện tối đa 4A/trục

Hỗ trợ Stepper motors, Servo motors, Endstops, Temperature sensors Phần mềm tương thích Marlin, Repetier, Sprinter, grbl Ứng dụng 3D printing, CNC machines, Laser cutters, Robotics

Hình bên dưới là sơ đồ các chân của Arduino mega 2560 nối với RAMPS 1-4, điều này là quan trọng khi tiến hành kiểm thử hệ thống có hoạt động có tốt hay không, các chân có xuất tín hiệu ổn định hay không

Hình 3 3 Sơ đồ các chân của Arduino mega 2560 nối với RAMPS 1.4 [10]

Hình bên dưới là sơ đồ che chắn chân cả hai bên của RAMPS 1.4

Hình 3 4 Sơ đồ che chắn chân cả hai bên của RAMPS 1.4 [10]

18 Động cơ bước Nema 17 (Nema 17 Stepper motor) Động cơ bước Nema 17 là một trong những thành phần cốt lõi trong nhiều ứng dụng robot hiện đại Với kích thước nhỏ gọn, mô-men xoắn mạnh mẽ và khả năng điều khiển chính xác, động cơ Nema 17 đóng vai trò quan trọng trong việc cung cấp sức mạnh và độ chính xác cần thiết cho các robot công nghiệp, robot phục vụ và robot gia dụng

Trong các hệ thống robot, động cơ Nema 17 thường được sử dụng để điều khiển các trục chuyển động, cánh tay robot hoặc các cơ cấu định vị Với cấp bước 1,8 độ/bước, động cơ có thể cung cấp độ phân giải cao, cho phép robot thực hiện các thao tác chính xác và lặp lại Mô-men xoắn từ 0,4 N.m đến 1,5 N.m giúp động cơ Nema 17 có thể di chuyển các tải trọng đáng kể, đáp ứng yêu cầu của nhiều ứng dụng robot khác nhau

Hình 3 5 Ảnh minh họa kèm kích thước của động cơ bước Nema 17 [11][12] Bảng 3 2 Thông số kỹ thuật động cơ bước Nema 17 [11] [12]

Kích thước (NEMA) 17 Điện áp hoạt động 12V - 24V DC

Cấp bước 1.8°/bước (200 bước/vòng)

Kích thước (D x R x C) 42mm x 42mm x 40mm

Nguồn gốc Trung Quốc Ứng dụng 3D printing, CNC machines, Robotics, Automation Động cơ servo MG90S Động cơ servo MG90S là một trong những thành phần quan trọng trong nhiều ứng dụng robot hiện đại Với kích thước nhỏ gọn, thiết kế gọn nhẹ và khả năng điều khiển chính xác, động cơ servo MG90S đóng vai trò quan trọng trong việc cung cấp sức mạnh và độ chính xác cần thiết cho các robot công nghiệp, robot phục vụ và robot gia dụng

Trong các hệ thống robot, động cơ servo MG90S thường được sử dụng để điều khiển các bộ cảm biến, cánh tay robot hoặc các cơ cấu định vị Với tốc độ phản hồi nhanh, độ chính xác cao và mô-men xoắn ổn định, động cơ servo MG90S cho phép robot thực hiện các thao tác chính xác và lặp lại một cách hiệu quả

Hình 3 6 Động cơ Servo MG90S [13]

Bảng 3 3 Thông số kỹ thuật động cơ servo MG90S [13]

Trọng lượng 13,4 g Điện áp hoạt động 4,8 V - 6 V

Tốc độ quay 0,1 sec/60° (4,8 V) 0,08 sec/60° (6 V)

Mô-men xoắn 1,8 kg.cm (4,8 V) 2,2 kg.cm (6 V) Độ phân giải góc 0,5°

Tín hiệu điều khiển Xung PWM, 50 Hz, 0,5-2,5 ms

Nhiệt độ hoạt động -20°C ~ 60°C Độ ồn < 45 dB

Kết nối 3 dây (nâu, đỏ, cam) Ứng dụng Robot, máy bay không người lái, các thiết bị điều khiển

Vi điều khiển Arduino mega 2560

Vi điều khiển Arduino Mega 2560 sở hữu 54 chân digital I/O, 16 chân analog input và 4 kênh UART, cung cấp đầy đủ các cổng kết nối cần thiết để tích hợp các cảm biến, động cơ và các thành phần khác của hệ thống robot Bộ vi xử lý Atmel ATmega2560 có tốc độ xung nhịp lên đến 16 MHz, cung cấp khả năng xử lý dữ liệu và điều khiển ở mức độ cao

Một điểm nổi bật của Arduino Mega 2560 là khả năng mở rộng và tính linh hoạt Với

256 KB flash memory, 8 KB SRAM và 4 KB EEPROM, vi điều khiển này có thể lưu trữ và xử lý lượng dữ liệu lớn, phù hợp với các ứng dụng robot phức tạp Ngoài ra, các chân GPIO và cổng kết nối đa dạng giúp người dùng có thể dễ dàng mở rộng hệ thống, kết nối với các mô-đun bổ sung như các cảm biến, mô-tơ, màn hình hiển thị và các thiết bị khác

Hình 3 7 Vi điều khiển Arduino Mega 2560 [14]

Bảng 3 4 Thông số kỹ thuật Arduino mega 2560 [14]

Vi xử lý Atmel ATmega2560

Tốc độ xung nhịp 16 MHz

Chân digital I/O 54 (15 có khả năng PWM)

Kênh SPI 1 Điện áp hoạt động 5V Điện áp cấp vào 7-12V

Cường độ dòng DC cho chân I/O 20 mA

Cường độ dòng DC cho chân 3.3V 50 mA

Trọng lượng 37 g Ứng dụng Robot, tự động hóa, thiết bị nhúng

Mạch Điều Khiển Động Cơ Bước A4988

Mạch điều khiển động cơ bước A4988 là một trong những linh kiện quan trọng được sử dụng rộng rãi trong các ứng dụng robot Mạch này có khả năng điều khiển các động cơ bước với độ chính xác và độ phân giải cao, đồng thời tiêu thụ công suất thấp

Mạch A4988 có thể cung cấp tới 2A dòng điện cực đại cho mỗi pha động cơ, có khả năng điều chỉnh độ phân giải từ full-step đến 1/16 micro-step, giúp đạt được độ chính xác cao trong vận hành Mạch còn được trang bị các chức năng bảo vệ như ngắt nhiệt độ, ngắt quá dòng, giúp bảo vệ động cơ và linh kiện khỏi các tình huống sự cố

Hình 3 8 Mạch Điều Khiển Động Cơ Bước A4988 Bảng 3 5 Thông số kỹ thuật Mạch Điều Khiển Động Cơ Bước A4988 [15]

Thông số Mô tả Điện áp vận hành 8V - 35V

Dòng điện cực đại mỗi pha 2A Độ phân giải Full-step, 1/2, 1/4, 1/8, 1/16 micro-step

Chức năng bảo vệ Ngắt quá dòng, ngắt nhiệt độ

Kích thước bo mạch 43mm x 33mm

Giao tiếp Step/Dir Ứng dụng Robot, máy in 3D, máy CNC, máy in, v.v

Trong thời đại công nghệ số phát triển nhanh chóng, việc lựa chọn camera có chất lượng hình ảnh tốt trở nên vô cùng quan trọng đối với các ứng dụng robot Webcam Laptop ICON Q-20 là một lựa chọn đáng chú ý nhờ vào khả năng ghi hình ở độ phân giải 2K (2560 x 1440 pixels) sắc nét

Với độ phân giải cao, Webcam ICON Q-20 có thể ghi lại các chi tiết quan trọng một cách rõ ràng, giúp robot có thể thu thập và xử lý thông tin hình ảnh một cách chính xác hơn Điều này đặc biệt hữu ích trong các ứng dụng yêu cầu nhận dạng vật thể, theo dõi chuyển động hoặc định vị chính xác

Bảng 3 6 Thông số kỹ thuật Webcam Laptop ICON Q-20

Thông số Mô tả Độ phân giải 2K (2560 x 1440 pixels)

Mic Một mic thu âm

Hệ điều hành tương thích Windows, macOS, Linux Ứng dụng Họp video, stream, ứng dụng robot

Chức năng đặc biệt Tự động lấy nét, điều chỉnh độ sáng và độ tương phản tự động, chống rung

Sơ đồ nguyên lý

Hình bên dưới là sơ đồ nguyên lý tổng quan hệ thống

Hình 3 10 Sơ đồ nguyên lý tổng quan hệ thống

Bảng 3 7 Chi tiết nguồn tiêu thụ của toàn bộ hệ thống

STT Tên thiết bị Số lượng

Tổng dòng tiêu thụ I dòng*số lượng (Ampe)

Tổng công suất P=U*I (Wat) Điện áp (Vôn)

3 Mạch điều khiển động cơ bước A4988

Dựa theo tính toán của bảng, nguồn tối thiểu cho các thiết bị hoạt động được là từ 5V đến 12V, dòng là 4.8A, công suất là 62.75W Để cho rô bốt hoạt động ổn định và lâu dài, nhóm tiến hành chia nguồn như sau:

• Đối với thiết bị Arduino Mega 2560, RAMPS 1.4, Mạch điều khiển động cơ bước A4988, Động cơ bước Nema 17 Nhóm sẽ cấp nguồn 12V 5A, với công suất P= U*I

= 12*5 = 60W để RAMPS 1.4 phân phối và hạ nguồn hợp lý cho từng thiết bị được mắc trên nó

• Đối với thiết bị Servo MG90S, Webcam Laptop ICON Q-20 Độ Phân Giải 2K Nhóm sẽ cấp nguồn riêng khác là 5V 2A, với công suất P= U*I = 5*2 = 10W nhằm mục đích cho các thiết bị hoạt động ổn định hơn

Vậy là tống công suất sẽ đáp ứng tốt với 60W+10W = 70W > 62.75W so với theo thiết kế

Sơ đồ kết nối

Hình bên dưới là sơ đồ kết nối các linh kiện trong hệ thống

Hình 3 11 Sơ đồ kết nối các linh kiện trong hệ thống

Hình dưới là sơ đồ kết nối thực tế của RAMPS 1.4 với các bộ phận trong hệ thống

Hình 3 12 Sơ đồ kết nối thực tế của RAMPS 1.4 với các bộ phận trong hệ thống

Thi công phần cứng

3.1.5.1 Các bộ phận của mô hình robot trên phần mềm 3D view

Hình bên dưới là các bộ phận của mô hình robot được hiển thị trên phần mềm 3D view

Hình 3 13 Bộ phận của mô hình robot Bảng 3 8 Thông số kỹ thuật in 3D của bộ phận robot

Thông số Mô tả Độ đặc bên trong (Infill) 25% Độ mỏng từng lớp nhựa (Resolution) Dày 0.22

Tạo vùng hỗ trợ (Support) Có

Chất liệu sợi tơ nhựa PLA, PLA+, PETG, ABS

Thương hiệu loại tơ nhựa Bất kỳ thương hiệu nào có chất lượng tơ tốt

Lưu ý khi in đối với mô hình 3D của rô bốt

• Khi in, cần hỗ trợ vùng (Support) cho các chi tiết bánh răng.Vì yếu tố chính xác để ăn khớp các dây đai, cũng như là nguồn chính là truyền lực Đây là chi tiết quan trọng nhất nên yêu cầu chậm và chính xác

• Khi in, do sợi quá nóng, độ dày của lớp sẽ tăng lên và sai sót của các bộ phận khác nhau có thể bị ảnh hưởng Chính vì vậy, cần gọt sạch sẽ các cấu trúc nhựa thừa bám xung quanh mô hình 3D, để có thể mang đến tính thẩm mỹ, giảm thiểu khối lượng mô hình, không vướng hay ảnh hưởng đến hoạt động rô bốt

3.1.5.2 Bộ phận robot trong thực tế

Hình bên dưới là các bộ phận robot trong thực tế sau khi đã tiến hành in 3D

Hình 3 14 Các bộ phận robot trong thực tế

Hình bên dưới là quá trình lắp ráp các linh kiện với nhau

Hình 3 15 Quá trình lắp ráp các linh kiện

3.1.5.4 Chuẩn hóa bàn cờ vua

Trong đề tài này, hệ thống sử dụng bàn cờ vua với kích thước là 28 cm nhân 28 cm, với mỗi ô vuông là 3.4 cm Các quân cờ khác nhau được sử dụng, có chiều cao thấp nhất là từ 2.7 cm và cao nhất là 5.3 cm

Mục đích thiết kế này nhằm đáp ứng với chương trình khai báo khi chạy hệ thống, cánh tay rô bốt được thiết kế tinh gọn, đủ để gắp các quân cờ nhỏ nhẹ Khi chưa chuẩn hóa bàn cờ, khai báo không đồng bộ dẫn đến làm ảnh hưởng đến chính xác toàn bộ hệ thống

Hình 3 16 Ảnh và thông số kỹ thuật bàn cờ vua được sử dụng trong hệ thống

THIẾT KẾ PHẦN MỀM

Sơ đồ hệ thống quá trình xử lý của hệ thống

Hệ thống robot đánh cờ vua được thiết kế dựa trên việc tích hợp các công nghệ xử lý ảnh, nhận diện mẫu và điều khiển cánh tay robot Quá trình xử lý bắt đầu bằng việc lấy dữ liệu từ camera USB, sau đó gửi dữ liệu ảnh này sang một chiếc laptop để tiến hành xử lý

Trên laptop, các thuật toán xử lý ảnh và nhận diện mẫu sẽ được áp dụng để phân tích bàn cờ, nhận diện vị trí các quân cờ và xác định nước đi hợp lệ tiếp theo Kết quả của quá trình này được gửi sang vi điều khiển Arduino Mega 2560 để điều khiển cánh tay robot thực hiện nước đi

Mô-đun Arduino Mega 2560 sẽ tiến hành phân tích và tính toán động học ngược để điều khiển các khớp nối của cánh tay robot thực hiện nước đi mới trên bàn cờ Cuối cùng, chuỗi các mảnh ghép của cánh tay robot sẽ được phân tích và điều khiển để hoàn thành nước đi

Với kiến trúc hệ thống như vậy, hệ thống robot đánh cờ vua có thể tự động lấy dữ liệu từ camera, phân tích tình huống cờ, và điều khiển cánh tay robot thực hiện nước đi mới một cách chính xác và liên tục Việc sử dụng vi điều khiển Arduino Mega 2560 cũng mang lại tính linh hoạt, mở rộng và tin cậy cao cho hệ thống

Hình 3 17 Sơ đồ khối quá trình xử lý của hệ thống

Lưu đồ giải thuật chương trình chính của hệ thống

Sau khi người chơi đã di chuyển quân cờ, máy ảnh sẽ chụp ảnh Chương trình sẽ cắt và xoay ảnh để bàn cờ vừa khít với ảnh sau đó Vì hệ thống biết vị trí của tất cả quân cờ sau khi máy đi, nên chỉ cần mã code nhận biết được ba trường hợp sau sau khi người chơi di chuyển: Nếu ô trống, quân cờ đen bất kỳ, hoặc quân cờ trắng bất kỳ

Hệ thống sẽ kiểm tra xem di chuyển của người chơi có hợp lệ không và thông báo nếu không hợp lệ Trường hợp duy nhất không được bao gồm là khi người chơi thăng quân tốt thành quân khác ngoài quân Hậu, lúc này người chơi phải thông báo cho robot biết quân nào được thăng Bằng cách phân tích các giá trị RGB và độ lệch chuẩn, chương trình có thể xác định được các ô trống và màu của các quân cờ đặt trên bàn Ngoài ra chương trình cũng bao gồm các chức năng để định chuẩn camera và robot

Hình 3 18 Lưu đồ giải thuật chương trình chính của hệ thống

Phần mềm di chuyển robot

3.2.3.1 Khái quát công thức của mô hình

Robot SCARA (Selective Compliance Assembly Robot Arm) là loại robot thường được dùng trong các ứng dụng gắp, đặt, và lắp ráp Dưới đây là các thông số, công thức liên quan đến mô hình và điều khiển robot SCARA:

Các thông số của robot:

Robot có cấu trúc như sau:

• Theta1 (𝜃 1 ): Góc xoay của khớp đầu tiên (shoulder joint)

• Theta2 (𝜃 2 ): Góc xoay của khớp thứ hai (elbow joint)

• 𝑑 3 : Độ dài thay đổi của khớp trượt (prismatic joint)

• Theta4 (𝜃 4 ): Góc xoay của khớp cuối cùng (wrist joint)

Mô Hình Hình Học (Kinematic Model): Mô hình hình học của robot bao gồm mô hình thuận và mô hình nghịch

Mô hình hình học thuận (Forward Kinematics):

Mô hình này dùng để xác định vị trí và hướng của bộ tác động cuối (end effector) từ các góc và độ dài của các khớp

• 𝑙 1 , 𝑙 2 : Chiều dài các đoạn liên kết

• 𝑑 1 : Chiều dài trục z của base

• 𝜃 1 , 𝜃 2 , 𝜃 4 : Các góc xoay của các khớp

Mô hình hình học nghịch (Inverse Kinematics)

Mô hình này dùng để xác định các góc và độ dài của các khớp từ vị trí và hướng của bộ tác động cuối

• 𝑙 1 , 𝑙 2 : Chiều dài các đoạn liên kết

• 𝑑 1 : Chiều dài trục z của base

• 𝜃 1 , 𝜃 2 , 𝜃 4 : Các góc xoay của các khớp

3.2.3.2 Áp dụng công thức vào chương trình thực tế của đề tài

Các biến và hàm chính Động học ngược là quá trình tính toán các góc khớp cần thiết để đặt một điểm cuối của robot tại vị trí mong muốn trong không gian

Hình 3 19 Áp dụng phương pháp hình học cho robot SCARA

• 𝐿 1 : Chiều dài của cánh tay thứ nhất

• 𝐿 2 : Chiều dài của cánh tay thứ hai

• 𝑥 𝑚𝑚 : Tọa độ x của điểm cuối cánh tay trong hệ tọa độ Descartes (Tọa độ đích trong không gian ba chiều (đơn vị: mm))

• 𝑦 𝑚𝑚 : Tọa độ y của điểm cuối cánh tay trong hệ tọa độ Descartes

• 𝑧 𝑚𝑚 : Tọa độ z của điểm cuối cánh tay trong hệ tọa độ Descartes

• 𝜃 1 : Góc xoay của khớp đầu tiên (góc khớp tính bằng radian)

• 𝜃 2 : Góc xoay của khớp thứ hai (góc khớp tính bằng radian)

• 𝜃 𝑧 : Góc xoay của cột dọc trục z (góc khớp tính bằng radian)

• LEAD (lead screw pitch) = 8mm là khoảng cách di chuyển dọc trục z trong một vòng quay hoàn chỉnh của vít dẫn hướng

• 𝐷 1 : góc từ gốc tọa độ đến điểm đích

• 𝐷 2 : góc tạo bởi đoạn thẳng từ gốc đến điểm đích và cánh tay thứ nhất

• 𝑟𝑜𝑡 (rotation): số vòng quay cần thiết của vít dẫn hướng để đạt được vị trí 𝑧 𝑚𝑚

• 𝑑𝑖𝑠𝑡 : khoảng cách từ gốc tọa độ đến điểm đích (𝑥 𝑚𝑚 , 𝑦 𝑚𝑚 ) trong mặt phẳng Hàm Chính:

• lawOfCosines(float a, float b, float c): Sử dụng định lý cosin để tính góc giữa các cạnh trong tam giác

• calculateGrad(): Tính toán các góc khớp dựa trên tọa độ đích Định lý Cosin Định lý cosin được sử dụng để tính các góc của tam giác khi biết độ dài của ba cạnh Công thức được sử dụng như sau:

Hình 3 20 Định lý cosin trong robot SCARA

Các bước tính toán như sau:

𝑑𝑖𝑠𝑡 = 𝑑 = √𝑥 𝑚𝑚 2 + 𝑦 𝑚𝑚 2 _ Điều kiện kiểm tra giới hạn:

• Nếu xmm > 0 và ymm

Ngày đăng: 26/09/2024, 14:35

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] official-stockfish, “what is NNUE” [Online]. Available “https://github.com/official- stockfish/nnue-pytorch/blob/master/docs/nnue.md#what-is-nnue“ , truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: what is NNUE
[2]Qhapaq,“StockfishNNUE”.[Online].Available”https://www.qhapaq.org/shogi/shogiwiki/stockfish-nnue/“ [Online] , truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: StockfishNNUE”.[Online].Available
[3]Office-Stockfish ,“Add NNUE evaluation”.[Online]. Available “https://github.com/official-stockfish/Stockfish/commit/84f3e867903f62480c33243dd0ecbffd342796fc “, truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: Add NNUE evaluation
[5] Open CV “About OpenCV’” [Online]. Available https://opencv.org/about/ “ , truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: About OpenCV’
[6] Mathworks ,“What Is Inverse Kinematics?” [Online]. Available https://www.mathworks.com/discovery/inverse-kinematics.html“, truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: What Is Inverse Kinematics
[7] Mathworks ,“Plan a Reaching Trajectory with Multiple Kinematic Constraints” [Online]. Available https://www.mathworks.com/help/robotics/ug/plan-a-reaching-trajectory-with-kinematic-constraints.html “ , truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: Plan a Reaching Trajectory with Multiple Kinematic Constraints
[8] Mathworks, “Derive and Apply Inverse Kinematics to Two-Link Robot Arm” [Online]. Available https://www.mathworks.com/help/symbolic/derive-and-apply-inverse-kinematics-to-robot-arm.html“ , truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: Derive and Apply Inverse Kinematics to Two-Link Robot Arm
[9] Clemson University “Inverse Kinematics”. [Online]. Available “https://opentextbooks.clemson.edu/wangrobotics/chapter/inverse-kinematics/ “ , truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: Inverse Kinematics
[10]Reprap,“RAMPS1.4”.[Online].Available “https://reprap.org/wiki/RAMPS_1.4#Source” , truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: RAMPS1.4”.[Online].Available “https://reprap.org/wiki/RAMPS_1.4#Source
[11]Reprap,“Stepper motor”. [Online]. Available” https://reprap.org/wiki/Stepper_motor”, truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: Stepper motor”. [Online]. Available” https://reprap.org/wiki/Stepper_motor
[12]Reprap,“NEMA-17”.[Online].Available “https://reprap.org/wiki/NEMA_17_Stepper_motor” truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: NEMA-17”.[Online].Available “https://reprap.org/wiki/NEMA_17_Stepper_motor
[13] electronicoscaldas, “datasheet-Micro Servo Motor MG90S - Tower Pro” [Online]. Available “https://www.electronicoscaldas.com/datasheet/MG90S_Tower-Pro.pdf” truy cập ngày 02/06/2024https://docs.arduino.cc/resources/datasheets/A000067-datasheet.pdf” truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: datasheet-Micro Servo Motor MG90S - Tower Pro” [Online]. Available “https://www.electronicoscaldas.com/datasheet/MG90S_Tower-Pro.pdf” truy cập ngày 02/06/2024 https://docs.arduino.cc/resources/datasheets/A000067-datasheet.pdf
[16] Stockfish, “Stockfish Strong open-source chess engine” [Online]. Available “https://stockfishchess.org“ , truy cập ngày 02/06/2024 Sách, tạp chí
Tiêu đề: Stockfish Strong open-source chess engine
[4] Nodchip, “Stockfish NNUE “ [Online]. Available https://github.com/nodchip/Stockfish “ , truy cập ngày 02/06/2024 Link
[15] Components101 ,“A4988 Stepper Motor Driver Module “.[Online]. Available “https://components101.com/modules/a4988-stepper-motor-driver-module “truy cập ngày 02/06/2024 Link

HÌNH ẢNH LIÊN QUAN

Hình 2. 2 Sơ đồ thể hiện sự tiến bộ điểm Elo của Stockfish  theo thời gian trong hơn 10 - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 2. 2 Sơ đồ thể hiện sự tiến bộ điểm Elo của Stockfish theo thời gian trong hơn 10 (Trang 21)
Hình 2. 3 Các lớp NNUE trong hoạt động [18] - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 2. 3 Các lớp NNUE trong hoạt động [18] (Trang 24)
Hình 2. 4  Kiến trúc HalfKAv2 của Tomasz Sobczyk [18] - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 2. 4 Kiến trúc HalfKAv2 của Tomasz Sobczyk [18] (Trang 26)
Hình 2. 5 Biểu đồ quá trình tăng Elo của Stockfish khi dùng NNUE [18] - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 2. 5 Biểu đồ quá trình tăng Elo của Stockfish khi dùng NNUE [18] (Trang 27)
Hình 3. 1 Sơ đồ khối hệ thống robot đánh cờ vua - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 1 Sơ đồ khối hệ thống robot đánh cờ vua (Trang 32)
Hình 3. 2 Ảnh mặt trên ramp 1.4 [10] - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 2 Ảnh mặt trên ramp 1.4 [10] (Trang 33)
Hình 3. 7 Vi điều khiển Arduino Mega 2560 [14] - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 7 Vi điều khiển Arduino Mega 2560 [14] (Trang 38)
Hình 3. 11 Sơ đồ kết nối các linh kiện trong hệ thống - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 11 Sơ đồ kết nối các linh kiện trong hệ thống (Trang 44)
Hình bên dưới là các bộ phận của mô hình robot được hiển thị trên phần mềm 3D view - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình b ên dưới là các bộ phận của mô hình robot được hiển thị trên phần mềm 3D view (Trang 45)
Hình 3. 15 Quá trình lắp ráp các linh kiện - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 15 Quá trình lắp ráp các linh kiện (Trang 47)
Hình 3. 16 Ảnh và thông số kỹ thuật bàn cờ vua được sử dụng trong hệ thống - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 16 Ảnh và thông số kỹ thuật bàn cờ vua được sử dụng trong hệ thống (Trang 48)
Hình 3. 18 Lưu đồ giải thuật chương trình chính của hệ thống - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 18 Lưu đồ giải thuật chương trình chính của hệ thống (Trang 50)
Hình 3. 24 Ví dụ minh họa nhận diện quân cờ trắng - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 24 Ví dụ minh họa nhận diện quân cờ trắng (Trang 58)
Hình 3. 25 Xác định tọa độ 4 góc khu vực bàn cờ - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 25 Xác định tọa độ 4 góc khu vực bàn cờ (Trang 59)
Hình 3. 27 Quá trình hiệu chỉnh bàn cờ của hệ thống - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 3. 27 Quá trình hiệu chỉnh bàn cờ của hệ thống (Trang 60)
Hình 4. 1 Tổng quan thực tế hệ thống robot đánh cờ vua - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 1 Tổng quan thực tế hệ thống robot đánh cờ vua (Trang 65)
Hình 4. 3 Kết nối thực tế của RAMPS 1.4 gắn với Arduino Mega 2560 và kết nối với - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 3 Kết nối thực tế của RAMPS 1.4 gắn với Arduino Mega 2560 và kết nối với (Trang 66)
Hình 4. 5 Kết nối thực tế của Laptop với USB webcam được treo lên cao trên trục đèn trợ - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 5 Kết nối thực tế của Laptop với USB webcam được treo lên cao trên trục đèn trợ (Trang 67)
Hình 4. 6 Tọa độ ban đầu “Home” của robot - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 6 Tọa độ ban đầu “Home” của robot (Trang 67)
Hình 4. 9 Góc chụp từ trên nhìn xuống thông qua camera của hệ thống - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 9 Góc chụp từ trên nhìn xuống thông qua camera của hệ thống (Trang 69)
Hình 4. 15 Robot bắt đầu kẹp quân tốt đen và chuẩn bị gắp lên - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 15 Robot bắt đầu kẹp quân tốt đen và chuẩn bị gắp lên (Trang 72)
Hình bên dưới là khi robot bắt đầu kẹp quân tốt đen và chuẩn bị gắp lên - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình b ên dưới là khi robot bắt đầu kẹp quân tốt đen và chuẩn bị gắp lên (Trang 72)
Hình 4. 17 Robot trở về vị trí Home và kết thúc lượt c7c5 - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 17 Robot trở về vị trí Home và kết thúc lượt c7c5 (Trang 73)
Hình 4. 23 Robot đưa quân tốt đen từ vị trí g7 lên g6 và bắt đầu buông kẹp thả cờ xuống - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 23 Robot đưa quân tốt đen từ vị trí g7 lên g6 và bắt đầu buông kẹp thả cờ xuống (Trang 76)
Hình 4. 24 Robot trở về vị trí Home và kết thúc lượt g7g6 - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 24 Robot trở về vị trí Home và kết thúc lượt g7g6 (Trang 76)
Hình 4. 25 Thông báo nước đi e1e4 là không hợp lệ và yêu cầu người chơi thực hiện nước - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 25 Thông báo nước đi e1e4 là không hợp lệ và yêu cầu người chơi thực hiện nước (Trang 77)
Hình 4. 27 Nguời chơi phải thực hiện nước đi khác, với điều kiện nước đi phải là hợp lệ - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 27 Nguời chơi phải thực hiện nước đi khác, với điều kiện nước đi phải là hợp lệ (Trang 78)
Hình 4. 31 Cánh tay robot thực hiện theo tọa độ chỉ định, đến và chuẩn bị gắp quân - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 31 Cánh tay robot thực hiện theo tọa độ chỉ định, đến và chuẩn bị gắp quân (Trang 80)
Hình 4. 32 Robot đưa quân tượng đen từ vị trí f8 lên g7 và bắt đầu buông kẹp thả cờ - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 32 Robot đưa quân tượng đen từ vị trí f8 lên g7 và bắt đầu buông kẹp thả cờ (Trang 80)
Hình 4. 33 Robot trở về vị trí Home và kết thúc lượt f8g7 - Đồ án tốt nghiệp: Xây dựng hệ thống robot đánh cờ vua
Hình 4. 33 Robot trở về vị trí Home và kết thúc lượt f8g7 (Trang 81)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w