Skip to main content

Kết nối cuộc thi: Bước ngoặt - Python

Sân thi đấu Robot Turning Point VEX với các yếu tố trò chơi và khu vực ghi điểm ở vị trí bắt đầu trận đấu. Dọc theo bức tường phía sau là một tấm lưới với một loạt cờ có thể lật được ở phía trước.
VRC 2018-2019 Turning Point Field

Khả năng của Robot

Trò chơi Turning Point của Cuộc thi Robot VEX năm 2018 - 2019 yêu cầu người chơi phải chuyển đổi cờ giữa các yếu tố khác của trò chơi. Tổng cộng có chín lá cờ: ba lá cờ ở dưới cùng có thể được robot bật lên và sáu lá cờ ở trên cùng chỉ có thể bật lên bằng cách đập chúng bằng các mảnh bóng thi đấu. Các đội thi đấu cần tìm ra cách đánh vào những lá cờ cao hơn bằng cách sử dụng máy phóng bóng. Nếu bạn có thể tưởng tượng, việc lập trình robot đánh cờ bằng các mảnh bóng bằng cách đo lường có thể không phải lúc nào cũng chính xác. Nếu robot rẽ sai một lần trong thời gian tự động, có khả năng không có lá cờ nào bị đánh trúng vì các phép tính sẽ bị sai. Tương tự như vậy, đối với thử thách Kỹ năng lái xe, các đội có thể gặp khó khăn trong việc căn chỉnh robot theo cách thủ công để có thể phóng bóng đúng cách. Vì vậy, các nhóm có tay nghề cao sẽ lập trình cho robot sử dụng Cảm biến thị giác để phát hiện cờ và sau đó căn chỉnh robot đúng cách để thực hiện các cú đánh chính xác.

Biểu tượng Mở rộng việc học của bạn Mở rộng việc học của bạn

Để mở rộng hoạt động này, hãy yêu cầu học sinh thiết kế và phác thảo một dự án trong đó robot sẽ di chuyển về phía các vật thể màu vàng được phát hiện mà các em có thể sử dụng cho trò chơi thi đấu này!
Yêu cầu học sinh thực hiện các bước sau:

  • Mở mẫu dự án Clawbot (Hệ thống truyền động, 2 động cơ, Không có con quay hồi chuyển).

    Ví dụ về lựa chọn dự án VEXcode V5 với bộ lọc Mẫu được chọn ở trên cùng và biểu tượng dự án động cơ Clawbot Drivetrain 2 không có con quay hồi chuyển được tô sáng trong hộp màu đỏ.

  • Sử dụng dự án ví dụ Phát hiện đối tượng (Tầm nhìn) làm tài liệu tham khảo khi lập trình Cảm biến tầm nhìn. Sử dụng dự án ví dụ Phát hiện đối tượng (Tầm nhìn) làm tài liệu tham khảo khi lập trình Cảm biến tầm nhìn (Google Doc / .v5python).
  • Thêm Cảm biến thị giác vào cấu hình Clawbot (Hệ thống truyền động, 2 động cơ, Không có con quay hồi chuyển) rồi cấu hình Cảm biến thị giác để phát hiện các vật thể màu đỏ và xanh lam. Tham khảo bài viết Cấu hình cảm biến thị giác sốđể biết thêm thông tin.

    Cửa sổ Thiết bị VEXcode V5 mở ra với các tùy chọn để thêm thiết bị được hiển thị. Cửa sổ có nội dung Chọn thiết bị và tùy chọn Tầm nhìn được đánh dấu bằng hộp màu đỏ. Các tùy chọn khác bao gồm bộ điều khiển, hệ thống truyền động, động cơ và 3 dây.

  • Lập trình Clawbot di chuyển về phía vật thể được phát hiện. Clawbot thậm chí có thể được lập trình để giơ cánh tay lên như thể nó đang lật một lá cờ!
  • Tải xuống và chạy dự án để quan sát xem Cảm biến thị giác có thể phát hiện các vật thể màu vàng như những quả bóng màu vàng trong trò chơi VRC Turning Point hay không. Nếu Cảm biến thị giác có thể phát hiện vật thể, liệu robot có di chuyển dựa trên những vật thể được phát hiện đó không? Để được trợ giúp về việc tải xuống và chạy một dự án,xem bài viết này.
  • Nếu có thời gian, hãy thiết lập một sân chơi tương tự như sân Turning Point. Thực hành sử dụng Cảm biến thị giác để cho phép robot di chuyển và ghi điểm!

Xem giải pháp mẫu bên dưới:

# Thư viện nhập
từ vex import *

# Bắt đầu mã dự án

check_yellow = Event()

def check_yellow_callback():
    brain.screen.set_font(FontType.MONO40)
    brain.screen.clear_row(3)
    brain.screen.set_cursor(3, 1)
    vision_5_objects = vision_5.take_snapshot(vision_5__YELLOWBOX)

    if (vision_5_objects):
        arm_motor.spin_for(FORWARD, 300, DEGREES)
        claw_motor.spin_for(FORWARD, 100, DEGREES)
        drivetrain.drive_for(FORWARD, 12, INCHES)
        arm_motor.spin_for(REVERSE, 300, DEGREES)
        claw_motor.spin_for(REVERSE, 100, DEGREES)
    
    else:
        brain.screen.print("No Yellow Object")

# trình xử lý sự kiện hệ thống
check_yellow(check_yellow_callback)

# độ trễ nhỏ để đảm bảo trình xử lý sự kiện đã sẵn sàng để sử dụng
wait(15, MSEC)

# liên tục chạy để kiểm tra dữ liệu cảm biến mới
while True:
    check_blue.broadcast_and_wait()
    wait(105, MSEC)