Skip to main content

Bài 3: Sử dụng cảm biến và nam châm điện để đặt đĩa vào mục tiêu

Thêm cảm biến khoảng cách vào dự án

Trong Bài 2, Robot VR lái xe ngược trở lại điểm xuất phát để thả đĩa xuống. Điều này yêu cầu người dùng phải tính toán khoảng cách chính xác mà Robot VR có thể di chuyển. Điều này không phải lúc nào cũng có thể thực hiện được. Thay vào đó, VR Robot có thể sử dụng các giá trị cảm biến được báo cáo để nhặt và thả đĩa với độ chính xác nhất quán. 

Trong Bài học này, Cảm biến khoảng cách sẽ được sử dụng để xác định nơi Robot VR nên dừng di chuyển khi quay trở lại mục tiêu. Cảm biến này báo cáo khoảng cách từ mặt trước của Robot VR đến vật thể gần nhất bằng lệnhget_distance. Để sử dụng Cảm biến khoảng cách để điều khiển Robot VR quay trở lại mục tiêu, cần phải thực hiện những điều sau: 

  • Robot VR sẽ phải quay 180 độ để Cảm biến khoảng cách hướng về phía mục tiêu. Có thể sử dụng lệnh turn_to_heading để đảm bảo Robot VR quay theo đúng hướng.
  • Robot VR sẽ sử dụng Cảm biến khoảng cách với bức tường phía sau của Sân chơi để xác định vị trí thả đĩa. 
  • Robot VR sẽ lái xe đến đích. 
Góc nhìn từ xa của Robot VR trên Sân chơi Di chuyển đĩa tại vị trí của đĩa màu xanh đầu tiên, với đĩa được gắn vào nam châm điện. Mục tiêu màu xanh nằm ở phía sau robot.

Để bạn biết

Lệnh turn_to_heading sẽ điều khiển Robot VR theo hướng cụ thể bằng Cảm biến con quay hồi chuyển. Hướng mà Robot VR sẽ rẽ (trái hoặc phải) được xác định dựa trên hướng hiện tại của Cảm biến con quay hồi chuyển. Chuyển sang tiêu đề Lệnh Python VEXcode VR, đọc drivetrain dot turn underscore thành tiêu đề gạch dưới, với 90 và Độ trong ngoặc đơn.

Lệnh turn_to_headingđược sử dụng để điều khiển Robot VR theo hướng cụ thể bất kể vị trí của Robot VR. Khi bạn nhặt hoặc thả đĩa, Robot VR có thể bị đánh bật ra khỏi quỹ đạo. Sử dụng lệnh turn_to_heading đảm bảo rằng Robot VR sẽ quay đến vị trí tuyệt đối chứ không phải vị trí tương đối so với hướng trước đó.

Góc nhìn từ trên xuống của Robot VR ở trung tâm của một vòng tròn minh họa hướng di chuyển của robot. Ở vị trí 12 giờ, thẳng hàng với mặt trước của robot là 0 độ. Tiêu đề chạy theo chiều kim đồng hồ quanh vòng tròn, với 90 độ ở vị trí 3 giờ, 180 độ ở vị trí 6 giờ và 270 độ ở vị trí 9 giờ.

Tiếp tục xây dựng dự án 

  • Tiếp tục làm việc trong dự ánUnit8Lesson3.
  • Thêm lệnh turn_to_heading sau bình luận thứ ba. Đặt tham số thành 180 độ để dự án trông như thế này: 

    def main():
        #1. Lái đến đĩa đầu tiên
        khi không down_eye.near_object():
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
    
        # 2. Nhấc đĩa đầu tiên
        magnet.energize(BOOST)
    
        # 3. Lái xe đến đích
        drivetrain.turn_to_heading(180, DEGREES)
    
        # 4. Thả đĩa vào mục tiêu
  • Bây giờ, khi VR Robot đã hướng về mục tiêu, VR Robot sẽ cần phải lái xe quay trở lại mục tiêu. Thêm vòng lặpwhile bên dưới lệnh turn_to_heading để phần thứ ba của dự án trông như thế này: 

    	# 3. Lái xe đến đích
        drivetrain.turn_to_heading(180, DEGREES)
        while điều kiện:
            wait(5, MSEC)
  • Để lái xe trở lại mục tiêu, VR Robot sẽ sử dụng dữ liệu từ Cảm biến khoảng cách để xác định thời điểm VR Robot ở bên trong mục tiêu. Như đã thảo luận trong bài học trước, mỗi ô lưới trên Sân chơi di chuyển đĩa có kích thước 200 milimét (mm) x 200 milimét (mm).Góc nhìn cận cảnh góc dưới bên trái của sân chơi, cho thấy mỗi ô vuông trong lưới 10 x 10 trên sàn sân chơi có kích thước 200mm x 200mm.
  • Sử dụng các phép đo đó, có thể xác định tâm của khung thành cách tường của Sân chơi khoảng 200 milimét (mm).

    Góc nhìn cận cảnh góc dưới bên trái của Sân chơi Disk Mover. Robot VR có một đĩa màu xanh gắn vào nam châm điện và hướng về mục tiêu màu xanh. Khoảng cách từ bức tường phía sau của sân chơi đến tâm của khung thành màu xanh được đánh dấu là 200 mm.
  • Robot VR phải điều khiển trong khi Cảm biến khoảng cáchbáo cáo rằng Robot VR cách tường của Sân chơi hơn 200 milimét (mm). Đặt điều kiện của vòng lặp while thành lệnh get_distance với tham số milimét (mm). Sau đó thêm toán tử so sánh vào số lớn hơn (>) 200. Phần thứ ba của dự án bây giờ sẽ trông như thế này: 

    	# 3. Lái xe đến đích
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            wait(5, MSEC)
  • Thêm lệnh drivevào vòng lặp while này để phần thứ ba của dự án trông như thế này. Thao tác này sẽ hướng dẫn Robot VR di chuyển về phía trước trong khi Cảm biến khoảng cách báo cáo khoảng cách lớn hơn 200 milimét (mm).

    	# 3. Lái xe đến đích
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
  • Khi VR Robot đã đến đích (cách tường 200 mm), VR Robot sẽ cần dừng lái. Thêm lệnh stopbên ngoài vòng lặp while để phần thứ ba của dự án trông như thế này:

    	# 3. Lái xe đến đích
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
  • Bây giờ khi VR Robot đã dừng lại ở mục tiêu, nó có thể thả đĩa xuống. Thêm lệnh energize bên dưới chú thích thứ tư và đặt tham số thành 'DROP'. Phần thứ tư của dự án bây giờ sẽ trông như thế này:

    	# 4. Thả đĩa vào mục tiêu
        nam châm.kích hoạt(DROP)
  • Robot VR sẽ phải lái lùi một đoạn ngắn để tránh bị đổ hoặc va chạm với bất kỳ đĩa nào. Va chạm với đĩa có khả năng khiến Robot VR bị lệch hướng. Sau đó, VR Robot sẽ cần phải quay lại để hướng mặt về phía đĩa một lần nữa. Thêm các lệnh sau vào sau lệnh energize cuối cùng như minh họa để hướng dẫn Robot VR lái lùi 100 milimét (mm) và quay trở lại hướng 0 độ. Hãy đảm bảo các lệnh được thụt lề đúng cách trong dự án của bạn.

    	# 4. Thả đĩa vào mục tiêu
        magnet.energize(DROP)
    
    	drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)
  • Mở Disk Mover Playground nếu nó chưa được mở và chạy dự án.
  • Robot VR tiến về phía trước, nhặt đĩa đầu tiên, sau đó quay 180 độ để hướng về mục tiêu. Sau đó, VR Robot sử dụng các giá trị từ Cảm biến khoảng cách để xác định thời điểm dừng lái và thả đĩa.

    Góc nhìn từ bên hông của mục tiêu màu xanh của Sân chơi di chuyển đĩa, với đĩa màu xanh đầu tiên được thả vào mục tiêu, và Robot VR được quay và đặt ở phía trước mục tiêu, sẵn sàng để thu thập đĩa tiếp theo.

Project Flow để thả đĩa đầu tiên vào mục tiêu

Lưu ý cách vòng lặp while hoạt động với Cảm biến khoảng cách trong phần này của dự án.

  • Robot VR sẽ di chuyển về phía trước khibiến khoảng cách cách tường hơn 200 mm.
  • Khi Cảm biến khoảng cách phát hiện tường của Sân chơi cách xa dưới 200 milimét (mm), dự án sẽ chuyển sang lệnh tiếp theo bên ngoài vòng lặp whilevà Robot VR sẽ dừng lái.
  • Dự án sẽ tiếp tục, để cung cấp năng lượngcho Nam châm điện để thả đĩa vào mục tiêu.
  • Sau đó, VR Robot sẽ đảo ngược và quay 180 độ để sẵn sàng đối mặt với đĩa tiếp theo.

Chọn nút Tiếp theo để tiếp tục phần còn lại của Bài học này.