Skip to main content

Bộ điều khiển: Khám phá ổ đĩa xe tăng - Python

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Mục đích của phần này

Sử dụng dự án ví dụ về Tank Control cho phép học sinh điều khiển Clawbot bằng Bộ điều khiển. Học sinh sẽ cần điều chỉnh các tham số trong các lệnh left_motor.set_velocity(), right_motor.set_velocity(), left_motor.spin(), right_motor.spin(), left_motor_speed = controller_1.axis3.position() và right_motor_speed = controller_1.axis2.position() để điều khiển tốc độ cho từng động cơ của Clawbot và cho phép Bộ điều khiển điều khiển các chức năng của động cơ.

Để biết thêm thông tin về bất kỳ hướng dẫn nào, hãy truy cập phần trợ giúp Pythontrong VEXcode V5.

Sau đây là phác thảo những gì học sinh sẽ làm trong hoạt động này:

  1. Khám phá dự án ví dụ về Tank Control.
  2. Hiểu cách sử dụng cấu trúc vòng lặp vô hạn while True .
  3. Hoàn thành thử thách Robo-Slalom!

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên

Nếu đây là lần đầu tiên học sinh sử dụng VEXcode V5, các em có thể truy cập nhiều bài viết hữu íchtrong Thư viện VEX.

Vật liệu cần thiết:
Số lượng Vật liệu cần thiết
1

VEX V5 Classroom Starter Kit (với firmware cập nhật)

1

VEXcode V5 (phiên bản mới nhất, Windows, macOS)

1

Sổ tay kỹ thuật

1

Dự án Ví dụ về Kiểm soát Bể chứa

2 trở lên

Các đồ vật trong lớp học được sử dụng làm chướng ngại vật

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên - Sử dụng tính năng Tự động hoàn thành

Tự động hoàn thành là một tính năng trong VEXcode V5 giúp dự đoán phần còn lại của lệnh bạn đang nhập. Khi học sinh làm việc với VEXcode V5, hãy khuyến khích các em sử dụng tính năng Tự động hoàn thành để hỗ trợ cú pháp Python. Bạn có thể nhận thấy chức năng tự động hoàn thành khi bạn bắt đầu nhập hướng dẫn. Sử dụng phím “Lên” và “Xuống” để chọn tên bạn muốn, sau đó nhấn “Tab'' hoặc (Enter/Return) trên bàn phím để thực hiện lựa chọn. Để biết thêm thông tin về tính năng này, hãy xem bài viết Python

VEXcode V5 với phần đầu của lệnh Drivetrain được nhập ở bên trái và bên phải, danh sách có thể cuộn được các tùy chọn tự động hoàn thành cho lệnh đó sẽ được hiển thị.

Hoạt động này sẽ cung cấp cho bạn các công cụ để lập trình Bộ điều khiển. 

  • Hướng dẫn Python VEXcode V5 sẽ được sử dụng trong thăm dò này:
    • left_motor.set_velocity()
    • right_motor.set_velocity()
    • left_motor.spin()
    • right_motor.spin()
    • controller_1.axis2.position()
    • controller_1.axis3.position()
    • trong khi Đúng: 
    • chờ(5, GIÂY)

Để biết thêm thông tin về bất kỳ hướng dẫn nào, hãy truy cập phần trợ giúp Python trong VEXcode V5. 

VEXcode V5 được hiển thị với Hộp công cụ mở ở ngoài cùng bên trái và lệnh Trợ giúp cho Drive mở ở ngoài cùng bên phải. Trợ giúp hiển thị định nghĩa của lệnh và thông tin về cách sử dụng lệnh.

Bước 1: Hãy bắt đầu lập trình Bộ điều khiển.

  • Chọn Tệp và Mở Ví dụ.
  • Thanh công cụ VEXcode V5 với menu Tệp mở và Mở Ví dụ được đánh dấu trong hộp màu đỏ. Open Examples là mục menu thứ tư bên dưới New Blocks Project, New Text Project và Open.
  • Cuộn qua các dự án Ví dụ khác nhau. Chọn dự án ví dụ về Kiểm soát Xe tăng.

Các dự án mẫu trong VEXcode V5 có hộp màu đỏ xung quanh bộ lọc Cảm biến ở trên cùng và biểu tượng dự án mẫu Kiểm soát bình chứa ở phía dưới bên phải.

  • Mở dự án ví dụ về Kiểm soát bình chứa. Dự án ví dụ cấu hình hệ thống truyền động và bộ điều khiển. Mã sẽ trông giống như đoạn mã sau:
# Thư viện nhập
từ nhập vex *

# Bắt đầu mã dự án
# Vòng điều khiển chính để đặt động cơ thành vị trí trục điều khiển

    trong khi True: left_motor.set_velocity (controller_1.axis3.position ()
    , PERCENT) right_motor.set_velocity (controller_1.axis2.position (),
    PERCENT) left_motor.spin (FORWARD
    ) right_motor.spin (FORWARD)
    wait(5, MSEC)

Làm như sau trong sổ ghi chép kỹ thuật của bạn:

  1. Dự đoán dự án sẽ có Clawbot làm gì. Giải thích nhiều hơn thực tế là dự án sử dụng Kiểm soát viên.
  2. Cần điều khiển di chuyển robot như thế nào? Clawbot đang làm gì?

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Câu trả lời

  1. Dự án này sẽ sử dụng cấu trúc vòng lặp vô hạn while True để liên tục kiểm tra vị trí của cần điều khiển bên trái và bên phải. Khi cần điều khiển bên trái (hoặc bên phải) được đẩy lên, tốc độ sẽ được thiết lập theo mức độ cần điều khiển được đẩy về phía trước. 
  2. Vì vậy, cần điều khiển được đẩy càng xa về phía trước thì tốc độ sẽ được thiết lập càng nhanh và động cơ sẽ di chuyển càng nhanh. Ý tưởng tương tự cũng có tác dụng khi đẩy cần điều khiển về phía sau. Càng đẩy cần điều khiển về phía sau thì động cơ sẽ di chuyển ngược lại càng nhanh.
  • Đặt tên cho dự án là TankControl. Lưu, tải xuống và chạy dự án Python TankControl.

Hộp thoại tên dự án trong VEXcode V5 đọc Tank Control và hiển thị vị trí 1 được chọn.

  • Để biết thêm thông tin trợ giúp, hãy xem video hướng dẫn trong VEXcode V5 giải thích cách tải xuống và chạy một dự án.

Thanh công cụ trong VEXcode V5 với một hộp màu đỏ xung quanh biểu tượng Hướng dẫn. Thanh công cụ hiển thị, từ trái sang phải, logo V5, biểu tượng quả địa cầu, Tệp, sau đó là Hướng dẫn.

  • Kiểm tra lời giải thích của bạn về dự án trong sổ ghi chép kỹ thuật của bạn và thêm ghi chú để sửa chúng khi cần thiết.

Bước 2: Bộ điều khiển: Điều khiển bể chứa

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Cấu trúc vòng lặp vô hạn thực sự của while

Bước này thảo luận về tầm quan trọng của cấu trúc vòng lặp vô hạn while True . Bạn nên xem lại thông tin này như một lớp học. Bạn có thể mô hình hóa hành vi bằng Clawbot và Controller hoặc nếu có thời gian, hãy để học sinh chạy chương trình mà không có cấu trúc vòng lặp vô hạn while True .

Nếu học sinh cần hỗ trợ thêm để hiểu vòng lặp vô hạn while True , hãy nhấp vào ở đây.

​Lợi ích của việc sử dụng cấu trúc vòng lặp vô hạn while True là gì?

Đây là dự án của chúng tôi mà không có cấu trúc vòng lặp vô hạn thực sự while:

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

# Bắt đầu mã dự án
# Vòng lặp bộ điều khiển chính để đặt động cơ thành vị

trí trục bộ điều khiển left_motor.set_velocity (controller_1.axis3.position ()
, PERCENT) right_motor.set_velocity (controller_1.axis2.position (),
PERCENT) left_motor.spin (FORWARD
) right_motor.spin (FORWARD)


Bạn nghĩ điều gì sẽ xảy ra nếu chương trình này được chạy? Thảo luận theo nhóm. Viết ra dự đoán của bạn trong sổ ghi chép kỹ thuật.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Hiểu về cấu trúc

Nếu không có vòng lặp vô hạn while True , giá trị vận tốc cho mỗi động cơ sẽ được thiết lập ngay khi dự án được chạy và giá trị đó vẫn không đổi cho đến khi dự án dừng lại. Nói cách khác, nếu bạn chạy dự án mà không di chuyển bất kỳ Cần điều khiển nào, vì vị trí mặc định của Cần điều khiển trên trục là 0, nên tốc độ của cả hai động cơ sẽ vẫn ở mức 0, ngay cả khi bạn di chuyển Cần điều khiển.

Tương tự như vậy, giả sử bạn di chuyển cần điều khiển bên trái lên cao nhất có thể dọc theo trục 3 và giữ nguyên ở đó. Nếu bạn chạy dự án ở trên, động cơ bên trái sẽ di chuyển với tốc độ tối đa và duy trì ở tốc độ đó ngay cả khi bạn di chuyển cần điều khiển xuống dọc theo trục 3. Điều này là do Clawbot nhận được lệnh ban đầu từ Bộ điều khiển ngay khi dự án được chạy; tuy nhiên, nếu không có Vòng lặp, giá trị ban đầu đó không thể cập nhật.

Vòng lặp vô hạn while True yêu cầu Clawbot liên tục cập nhật vận tốc và chạy trong suốt thời gian của dự án. Nói cách khác, vòng lặp vô hạn while True trong dự án này cho phép bạn thay đổi vận tốc của từng động cơ bằng cách di chuyển cần điều khiển dọc theo trục 2 hoặc 3 và Clawbot sẽ phản hồi tương ứng cho đến khi bạn dừng dự án hoặc tắt Clawbot.

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

# Bắt đầu mã dự án
# Vòng lặp Bộ điều khiển chính để đặt động cơ vào vị trí trục bộ điều khiển
while True:
    left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
    right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
    left_motor.spin(FORWARD)
    right_motor.spin(FORWARD)
    wait(5, MSEC)

Điều hướng một khóa học Slalom!

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Thiết lập hoạt động

Chia học sinh thành các nhóm nhỏ gồm 2 hoặc 4 học sinh. Cần chỉ định một học sinh làm Người lái - người sẽ sử dụng Bộ điều khiển để điều khiển Clawbot.

Yêu cầu học sinh hoàn thành bài tập này bằng cách sử dụng Bộ điều khiển để di chuyển Clawbot dọc theo bên ngoài của mỗi "lá cờ". Đường đi của Clawbot phải ngăn không cho nó chạm vào bất kỳ lá cờ nào và cho phép nó vượt qua vạch đích. Cờ có thể là bất kỳ vật dụng/đồ vật nào trong lớp học mà bạn có sẵn (tẩy, cuộn băng dính, hộp khăn giấy) và có thể được đặt đúng vị trí trước khi vận hành Clawbot.

Nếu thời gian cho phép, hãy để học sinh đổi vai để những người khác có cơ hội lái Clawbot. Bạn thậm chí có thể biến điều này thành một cuộc thi trong nhóm hoặc giữa các nhóm bằng cách xem mỗi tay đua có thể điều khiển xe đua slalom nhanh như thế nào.

Một người trượt tuyết đang đua xuống dốc trên một con dốc phủ đầy tuyết, điều hướng qua một loạt các cổng màu đỏ và màu xanh được định vị theo mô hình ngoằn ngoèo

Slaloms là các khóa học mà người tham gia phải điều hướng xung quanh các cờ đã đặt hoặc điểm đánh dấu. Trượt tuyết slalom là môn thể thao mùa đông phổ biến và được đưa vào Thế vận hội mùa đông.
Bây giờ Bộ điều khiển đã được ghép nối và dự án Python đã được tải , bạn đã sẵn sàng di chuyển Clawbot của mình bằng Bộ điều khiển!

  • Thu thập bốn vật dụng trong lớp học mà bạn sẽ sử dụng làm cờ trong slalom của bạn từ giáo viên.
  • Phối hợp để đặt cờ tại chỗ cho Trình điều khiển để điều hướng Clawbot xung quanh, theo sơ đồ slalom.
  • Ta ̉ i xuô ́ ng dư ̣ a ́ n Vi ́ du ̣ Nếu có bất kỳ câu hỏi nào về cách tải xuống dự án, hãy xem hướng dẫn Tải xuống và chạy dự án.

Hình minh họa một khóa học slalom trên tuyết, với nhãn 'Bắt đầu' ở trên cùng và Đường kết thúc ở dưới cùng. Giữa, một đường ngoằn ngoèo chấm đan xen giữa các cờ xanh và đỏ xen kẽ.

Sử dụng Bộ điều khiển để di chuyển Clawbot của bạn dọc theo bên ngoài mỗi "cờ". Đường đi của robot phải ngăn không cho nó chạm vào bất kỳ cờ nào và cho phép nó vượt qua vạch đích.

  • Chạy dự án và lái Clawbot về phía trước và ngược lại, và rẽ trái và phải bằng cả hai Cần điều khiển.
  • Thời gian để Clawbot hoàn thành khóa học. Ghi lại thời gian vào sổ ghi chép kỹ thuật.
  • Bạn có thể đưa Clawbot vượt qua khóa học Slalom nhanh như thế nào?
     

Biểu tượng thảo luận thúc đẩy Thảo luận thúc đẩy - Suy ngẫm về hoạt động

Q: Clawbot có phản hồi Bộ điều khiển như bạn mong đợi không?

A: Câu trả lời có thể khác nhau; tuy nhiên, mục đích của câu hỏi này là thúc đẩy tư duy nhận thức. Học sinh bắt đầu bằng cách dự đoán hành vi trước khi kiểm tra, ghi lại kết quả và suy ngẫm.

Q: Thách thức lớn nhất khi di chuyển Clawbot tiến về phía trước hoặc lùi theo đường thẳng là gì?

A: Mặc dù câu trả lời có thể khác nhau, nhưng câu trả lời chung là cả hai cần điều khiển phải di chuyển đồng bộ với nhau để đảm bảo rằng động cơ của Clawbot di chuyển theo cùng một hướng và với cùng một vận tốc

Q: Làm thế nào việc sử dụng vòng lặp vô hạn while True cho phép bạn liên tục sử dụng Bộ điều khiển để di chuyển Clawbot?

A: Nếu không có vòng lặp vô hạn while True , Clawbot sẽ chỉ thực hiện các hành vi được xác định bởi các hướng dẫn trong dự án một lần. Vòng lặp vô hạn while True yêu cầu Clawbot liên tục cập nhật vận tốc và chạy trong suốt thời gian của dự án. Nói cách khác, vòng lặp vô hạn while True cho phép bạn sử dụng Bộ điều khiển để di chuyển Clawbot vô thời hạn hoặc cho đến khi hết pin.