Mục lục:

AI trong LEGO EV3 Robot điều khiển mê cung: 13 bước
AI trong LEGO EV3 Robot điều khiển mê cung: 13 bước

Video: AI trong LEGO EV3 Robot điều khiển mê cung: 13 bước

Video: AI trong LEGO EV3 Robot điều khiển mê cung: 13 bước
Video: Phần mềm Robot ảo: Thử thách Mê cung 2021 - 1 2024, Tháng bảy
Anonim
Image
Image
Làm thế nào một mê cung được giải quyết
Làm thế nào một mê cung được giải quyết

Đây là một robot tự động, đơn giản với một số trí thông minh nhân tạo. Nó được thiết kế để khám phá một mê cung và khi được đặt trở lại lối vào, để lái xe qua lối ra và tránh các ngõ cụt. Nó phức tạp hơn nhiều so với dự án trước đây của tôi, chỉ đơn giản là lái xe qua mê cung. Tại đây, robot phải nhớ lại con đường mà nó đã đi, loại bỏ các ngõ cụt, lưu giữ con đường mới rồi đi theo con đường mới.

Robot trước đây của tôi được mô tả ở đây:

Robot được chế tạo bằng LEGO Mindstorms EV3. Phần mềm EV3 chạy trên máy tính và tạo ra một chương trình, chương trình này sau đó được tải xuống bộ vi điều khiển có tên là EV3 Brick. Phương pháp lập trình dựa trên biểu tượng và mức độ cao. Nó rất dễ dàng và linh hoạt.

Quân nhu

CÁC BỘ PHẬN

  1. Bộ LEGO Mindstorms EV3
  2. LEGO Mindstorms EV3 cảm biến siêu âm. Nó không được bao gồm trong bộ EV3.
  3. Các tông sóng cho mê cung. Hai hộp phải là đủ.
  4. Một miếng bìa cứng mỏng để giúp cố định một số góc và bức tường.
  5. Keo và băng dính để kết nối các miếng bìa cứng với nhau.
  6. Một phong bì thiệp đỏ để xác định lối ra của mê cung.

CÔNG CỤ

  1. Dao tiện ích để cắt các tông.
  2. Thước thép để hỗ trợ quá trình cắt.

PHẦN MỀM

Chương trình ở đây:

Bước 1: Mê cung được giải quyết như thế nào

PHƯƠNG PHÁP LÁI XE MAZE

Có một số phương pháp điều hướng mê cung. Nếu bạn quan tâm đến việc nghiên cứu chúng, chúng được mô tả rất tốt trong bài viết sau trên Wikipedia:

Tôi đã chọn phương pháp theo sau bức tường bên trái. Ý tưởng là robot sẽ giữ một bức tường ở phía bên trái của nó bằng cách đưa ra các quyết định sau khi nó đi qua mê cung:

  1. Nếu có thể rẽ trái, hãy làm như vậy.
  2. Nếu không, hãy đi thẳng nếu có thể.
  3. Nếu nó không thể đi sang trái hoặc đi thẳng, hãy rẽ phải, nếu có thể.
  4. Nếu không có điều nào ở trên là có thể, đây phải là một ngõ cụt. Quay lại.

Một lưu ý là phương pháp này có thể thất bại nếu mê cung có một vòng lặp trong đó. Tùy thuộc vào vị trí của vòng lặp, robot có thể tiếp tục đi vòng quanh vòng lặp. Một giải pháp khả thi cho vấn đề này là cho rô bốt chuyển sang quy tắc người theo tường bên phải nếu nó nhận ra rằng nó đang đi vòng lặp. Tôi đã không đưa sự sàng lọc này vào dự án của mình.

GIẢI QUYẾT KÍCH THƯỚC ĐỂ TÌM MỘT CON ĐƯỜNG TRỰC TIẾP

Trong khi lái xe qua mê cung, robot phải ghi nhớ con đường mà nó đang đi và loại bỏ các ngõ cụt. Nó thực hiện điều này bằng cách lưu trữ từng ngã rẽ và giao lộ trong một mảng, kiểm tra các kết hợp cụ thể của các ngã rẽ và giao lộ khi nó đi, và thay thế các kết hợp bao gồm đường cụt. Danh sách cuối cùng của các ngã rẽ và giao lộ là con đường trực tiếp qua mê cung.

Các lối rẽ có thể là: Trái, Phải, Quay lại (ở ngõ cụt) và Đi thẳng (là giao lộ).

Các kết hợp được thay thế như sau:

  • "Left, Back, Left" trở thành "Straight".
  • "Left, Back, Right" trở thành "Back".
  • "Left, Back, Straight" trở thành "Right".
  • "Right, Back, Left" trở thành "Back".
  • "Thẳng, Lưng, Trái" trở thành "Phải".
  • "Straight, Back, Straight" trở thành "Back".

CÁCH ROBOT XỬ LÝ KÍCH THƯỚC CỦA TÔI

  1. Khi rô bốt bắt đầu lái xe, nó sẽ nhìn thấy một khoảng trống ở bên phải và lưu giữ Thẳng trong danh sách trong mảng.
  2. Sau đó, nó quay sang trái và thêm Left vào danh sách. Danh sách bây giờ bao gồm: Thẳng, Trái.
  3. Với một ngõ cụt, nó sẽ quay lại và thêm Quay lại vào danh sách. Danh sách bây giờ bao gồm: Thẳng, Trái, Quay lại.
  4. Vượt qua làn đường mà nó sử dụng từ lối vào, nó sẽ thêm thẳng vào danh sách. Danh sách bây giờ bao gồm: Thẳng, Trái, Quay lại, Thẳng. Nó nhận ra sự kết hợp và thay đổi Trái, Quay lại, Thẳng sang Phải. Danh sách bây giờ có Straight, Right.
  5. Với một ngõ cụt, nó sẽ quay lại và thêm Quay lại vào danh sách. Danh sách bây giờ bao gồm: Thẳng, Phải, Quay lại.
  6. Sau khi rẽ trái, danh sách bao gồm Đi thẳng, Phải, Quay lại, Trái. Nó nhận ra sự kết hợp và thay đổi Phải, Quay lại, Trái sang Quay lại. Danh sách bây giờ bao gồm Thẳng, Quay lại.
  7. Sau khi rẽ trái tiếp theo, danh sách bao gồm Đi thẳng, Quay lại, Trái. Nó thay đổi sự kết hợp đó thành Right. Danh sách bây giờ chỉ có Quyền.
  8. Nó vượt qua một khoảng trắng và thêm thẳng vào danh sách. Danh sách bây giờ có Right, Straight.
  9. Sau khi rẽ phải, danh sách bao gồm Right, Straight, Right là con đường trực tiếp.

Bước 2: Cân nhắc khi lập trình Robot

CẦN NHẬN XÉT CHO BẤT KỲ BỘ GHÉP VIÊN NÀO

Khi rô-bốt quyết định rẽ, rô-bốt phải rẽ rộng hoặc đi về phía trước một đoạn ngắn trước khi rẽ và sau khi rẽ tiếp tục đi một đoạn ngắn nữa mà không cần kiểm tra cảm biến. Lý do cho khoảng cách ngắn đầu tiên là rô bốt không được va vào tường sau khi rẽ và lý do cho khoảng cách ngắn thứ hai là sau khi rô bốt quay, cảm biến sẽ nhìn thấy khoảng không dài mà nó vừa đến. và robot sẽ nghĩ rằng nó sẽ quay lại, đây không phải là điều thích hợp để làm.

Khi rô-bốt cảm nhận được giao lộ ở bên phải nhưng đó không phải là ngã rẽ bên phải, tôi nhận thấy rằng tốt hơn nếu rô-bốt lái xe về phía trước khoảng 10 inch (25 cm) mà không cần kiểm tra các cảm biến của nó.

CẦN NHẬN XÉT CỤ THỂ ĐỐI VỚI LEGO MINDSTORMS EV3

Mặc dù LEGO Mindstorms EV3 rất linh hoạt, nhưng nó cho phép không quá một trong mỗi loại cảm biến được kết nối với một Brick. Hai hoặc nhiều Viên gạch có thể được ghép theo chuỗi, nhưng tôi không muốn mua một Viên gạch khác, vì vậy tôi đã sử dụng các cảm biến sau (thay vì ba cảm biến siêu âm): cảm biến hồng ngoại, cảm biến màu và cảm biến siêu âm. Điều này đã diễn ra tốt đẹp.

Nhưng cảm biến màu có phạm vi rất ngắn, khoảng 2 inch (5 cm), dẫn đến một số cân nhắc đặc biệt như được mô tả dưới đây:

  1. Khi cảm biến màu phát hiện có bức tường phía trước và rô-bốt quyết định rẽ phải hoặc quay lại, rô-bốt sẽ lùi lại trước để có đủ không gian để quay mà không va vào tường.
  2. Một vấn đề phức tạp xảy ra với một số giao lộ "Đi thẳng". Do phạm vi hoạt động ngắn của cảm biến màu, rô bốt không thể xác định được liệu nó có cảm nhận được giao lộ “Đi thẳng” thích hợp hay hướng dẫn đến chỗ rẽ phải hay không. Tôi đã cố gắng khắc phục sự cố này bằng cách đặt chương trình lưu trữ một "Thẳng" trong danh sách mỗi khi rô-bốt cảm nhận được một điểm, sau đó loại bỏ nhiều hơn một "Thẳng" liên tiếp trong danh sách. Điều này khắc phục tình huống rẽ phải theo sau "Đi thẳng" trong mê cung nhưng không phải là tình huống rẽ phải mà không có "Đi thẳng" trước đó. Tôi cũng đã thử thiết lập chương trình để loại bỏ "Đi thẳng" nếu nó nằm ngay trước "Phải" nhưng điều này không hiệu quả nếu rẽ phải sau "Đi thẳng". Tôi chưa thể tìm ra giải pháp phù hợp với mọi trường hợp, nhưng tôi cho rằng robot có thể xem xét quãng đường đã đi (bằng cách đọc các cảm biến quay động cơ) và quyết định xem đó là "Đi thẳng" hay phải xoay. Tôi không nghĩ rằng sự phức tạp này đáng làm vì mục đích thể hiện khái niệm AI trong dự án này.
  3. Một ưu điểm của cảm biến màu là nó phân biệt giữa màu nâu của bức tường và màu đỏ của rào chắn mà tôi đã sử dụng ở lối ra và cung cấp một cách dễ dàng để robot quyết định khi nào nó đã hoàn thành mê cung.

Bước 3: Chương trình chính

Chương trình chính
Chương trình chính

LEGO Mindstorms EV3 có phương pháp lập trình dựa trên biểu tượng rất tiện lợi. Các khối được hiển thị ở cuối màn hình hiển thị trên máy tính và có thể được kéo và thả vào cửa sổ lập trình để xây dựng chương trình. Brick EV3 có thể được kết nối với máy tính bằng cáp USB, Wi-Fi hoặc Bluetooth, và chương trình sau đó có thể được tải xuống từ máy tính vào Brick.

Chương trình bao gồm một chương trình chính và một số "Khối của tôi" là các chương trình con. Tệp được tải lên chứa toàn bộ chương trình ở đây:

Các bước trong chương trình chính như sau:

  1. Định nghĩa và khởi tạo biến đếm lần lượt và mảng.
  2. Chờ 5 giây và nói “Bắt đầu”.
  3. Bắt đầu một vòng lặp.
  4. Lái xe qua mê cung. Khi đạt đến lối ra, vòng lặp được thoát.
  5. Hiển thị trên màn hình của Brick, các giao điểm được tìm thấy trong mê cung cho đến nay.
  6. Kiểm tra xem có nên rút ngắn đường dẫn hay không.
  7. Hiển thị các giao lộ trong đường dẫn rút gọn.
  8. Lặp lại bước 4.
  9. Sau vòng lặp, lái xe đường dẫn trực tiếp.

Ảnh chụp màn hình hiển thị chương trình chính này.

Bước 4: Khối của tôi (Chương trình con)

Các khối của tôi (Chương trình con)
Các khối của tôi (Chương trình con)

Điều hướng Khối của tôi, điều khiển cách rô-bốt lái qua mê cung, được hiển thị. Bản in rất nhỏ và có thể không rõ ràng. Nhưng đó là một ví dụ điển hình về mức độ linh hoạt và mạnh mẽ của các câu lệnh if (được gọi là Công tắc trong hệ thống LEGO EV3).

  1. Mũi tên # 1 trỏ đến một Công tắc để kiểm tra xem cảm biến hồng ngoại có nhìn thấy một vật thể ở cách xa hơn một khoảng cách cụ thể hay không. Nếu vậy, chuỗi khối trên cùng được thực thi. Nếu không, thì quyền kiểm soát được chuyển cho loạt khối lớn, dưới cùng, nơi có mũi tên số 2.
  2. Mũi tên # 2 trỏ đến một Công tắc để kiểm tra màu mà cảm biến màu nhìn thấy. Có 3 trường hợp: không có màu ở phía trên, màu đỏ ở giữa và màu nâu ở phía dưới.
  3. Hai mũi tên # 3 trỏ đến Công tắc để kiểm tra xem cảm biến siêu âm có nhìn thấy một vật thể ở cách xa hơn một khoảng cách cụ thể hay không. Nếu vậy, chuỗi khối trên cùng được thực thi. Nếu không, thì quyền điều khiển sẽ được chuyển cho loạt khối dưới cùng.

Các Khối của tôi để rút ngắn đường dẫn và để lái con đường trực tiếp phức tạp hơn và sẽ hoàn toàn không đọc được, vì vậy chúng không được bao gồm trong tài liệu này.

Bước 5: Bắt đầu chế tạo Robot: Căn cứ

Bắt đầu chế tạo Robot: Căn cứ
Bắt đầu chế tạo Robot: Căn cứ
Bắt đầu chế tạo Robot: Căn cứ
Bắt đầu chế tạo Robot: Căn cứ

Như đã đề cập trước đây, LEGO Mindstorms EV3 cho phép không quá một trong mỗi loại cảm biến được kết nối với một Brick. Tôi đã sử dụng các cảm biến sau (thay vì ba cảm biến siêu âm): cảm biến hồng ngoại, cảm biến màu và cảm biến siêu âm.

Các cặp ảnh dưới đây cho thấy cách chế tạo robot. Bức ảnh đầu tiên của mỗi cặp hiển thị các bộ phận cần thiết và bức ảnh thứ hai hiển thị các bộ phận giống nhau được kết nối với nhau.

Bước đầu tiên là xây dựng cơ sở của robot, sử dụng các bộ phận được hiển thị. Phần đế của robot được hiển thị lộn ngược. Phần hình chữ L nhỏ ở phía sau của robot là giá đỡ cho phần lưng. Nó trượt khi robot di chuyển. Điều này hoạt động ổn. Bộ EV3 không có bộ phận kiểu bi lăn.

Bước 6: Đỉnh của đế, 1

Đỉnh của cơ sở, 1
Đỉnh của cơ sở, 1
Đỉnh của cơ sở, 1
Đỉnh của cơ sở, 1

Bước ThIs và 2 bước tiếp theo dành cho phần trên cùng của đế của robot, cảm biến màu và cáp, tất cả đều là cáp 10 inch (26 cm).

Bước 7: Đỉnh của đế, 2

Đỉnh của cơ sở, 2
Đỉnh của cơ sở, 2
Đỉnh của cơ sở, 2
Đỉnh của cơ sở, 2

Bước 8: Đỉnh của đế, 3

Đỉnh của Căn cứ, 3
Đỉnh của Căn cứ, 3
Đỉnh của Căn cứ, 3
Đỉnh của Căn cứ, 3

Bước 9: Cảm biến hồng ngoại và siêu âm

Cảm biến hồng ngoại và siêu âm
Cảm biến hồng ngoại và siêu âm
Cảm biến hồng ngoại và siêu âm
Cảm biến hồng ngoại và siêu âm

Tiếp theo, là cảm biến hồng ngoại (bên trái robot) và cảm biến siêu âm (bên phải). Ngoài ra, 4 chốt để gắn Brick lên trên.

Các cảm biến hồng ngoại và siêu âm được đặt theo chiều dọc thay vì chiều ngang thông thường. Điều này giúp xác định rõ hơn các góc hoặc các đầu của bức tường.

Bước 10: Cáp

Cáp
Cáp

Các loại cáp kết nối với Brick như sau:

  • Cổng B: động cơ lớn bên trái.
  • Cổng C: động cơ lớn bên phải.
  • Cổng 2: cảm biến siêu âm.
  • Cổng 3: cảm biến màu.
  • Cổng 4: cảm biến hồng ngoại.

Bước 11: Bước cuối cùng trong việc chế tạo Robot: Trang trí

Bước cuối cùng trong việc chế tạo Robot: Trang trí
Bước cuối cùng trong việc chế tạo Robot: Trang trí
Bước cuối cùng trong việc chế tạo Robot: Trang trí
Bước cuối cùng trong việc chế tạo Robot: Trang trí

Cánh và vây chỉ để trang trí.

Bước 12: Xây dựng một mê cung

Xây dựng một mê cung
Xây dựng một mê cung
Xây dựng một mê cung
Xây dựng một mê cung

Hai thùng các tông sóng phải là đủ cho mê cung. Tôi đã làm các bức tường mê cung cao 5 inch (12,5 cm), nhưng 4 inch (10 cm) cũng sẽ hoạt động tốt nếu bạn thiếu bìa các-tông gợn sóng.

Đầu tiên, tôi cắt xung quanh thành thùng, cách đáy 10 inch (25 cm). Sau đó, tôi cắt xung quanh các bức tường cách đáy 5 inch. Điều này cung cấp một số bức tường 5 inch. Ngoài ra, tôi cắt xung quanh đáy của các thùng giấy, để lại khoảng 1 inch (2,5 cm) gắn vào tường để tạo sự ổn định.

Các mảnh khác nhau có thể được cắt và dán hoặc dán vào bất cứ nơi nào cần thiết để tạo thành mê cung. Giữa các bức tường bên phải có một khoảng trống 11 hoặc 12 inch (30 cm) ở bất kỳ lối đi nào có ngõ cụt. Chiều dài không được nhỏ hơn 10 inch (25 cm). Những khoảng cách này là cần thiết để robot quay đầu lại.

Một số góc của mê cung có thể cần được gia cố, Ngoài ra, một số bức tường thẳng cần được giữ để không bị uốn cong nếu chúng bao gồm một góc carton thẳng. Những miếng bìa cứng mỏng nên được dán vào đáy ở những vị trí đó, như hình minh họa.

Lối ra có một rào chắn màu đỏ bao gồm một nửa phong bì đựng thiệp màu đỏ và một đế làm từ 2 miếng bìa cứng mỏng, như hình minh họa.

Bước 13: Mê cung

Mê cung
Mê cung

Một lưu ý là mê cung không được lớn. Nếu lượt của robot ở một góc nhỏ so với lượt thích hợp, sự chênh lệch sẽ cộng lại sau một vài lượt và robot có thể chạy vào tường. Tôi đã phải thao tác nhiều lần với các cài đặt Rotations của các ngã rẽ để có được một chuyến lái xe thành công qua ngay cả mê cung nhỏ mà tôi đã thực hiện.

Một cách giải quyết vấn đề đó là bao gồm một quy trình làm thẳng đường đi để giữ cho rô-bốt một khoảng cách cụ thể so với bức tường bên trái. Tôi không bao gồm điều này. Chương trình này đủ phức tạp và nó đủ để thể hiện khái niệm AI trong dự án này.

KẾT LUẬN NHẬN XÉT

Đây là một dự án thú vị và một trải nghiệm học tập tuyệt vời. Tôi hy vọng bạn cũng thấy nó thú vị.

Đề xuất: