Skip to main content

Bài 2: Lái xe đến số '5'

Trong Bài học này, Robot VR sẽ di chuyển đến số '5' và quay trở lại số '1' trên Sân chơi Bản đồ lưới số số!

Hình ảnh từ trên xuống của sân chơi Bản đồ lưới số. Bạn có thể nhìn thấy Robot VR ở góc dưới bên trái trên số 1. Có thể nhìn thấy chú thích ở giữa hàng dưới cùng của số 5.

Lưu ý rằng Robot VR sẽ di chuyển dọc theo trục X với các giá trị X tăng dần để di chuyển đến số '5' trên Sân chơi Bản đồ lưới số .

Bản đồ lưới số sân chơi có trục x chồng lên nhau ở giữa Sân chơi. Tâm của mỗi ô vuông được đánh dấu bằng giá trị trục X, bắt đầu từ -900 ở phía bên trái và tăng dần 200 ở mỗi ô vuông cho đến 900 ở phía bên phải. Có thể nhìn thấy một robot VR ở số 1 ở góc dưới bên trái với mũi tên chỉ đến số 5.

Robot VR sẽ di chuyển đến vị trí số '5' trên Sân chơi bản đồ lưới số . Tuy nhiên, trước khi VR Robot có thể điều hướng đến số đó, VR Robot phải được cho biết vị trí của số đó. Bắt đầu từ trung tâm của Sân chơi, tọa độ của số '5' là (-100, -900).

Góc dưới bên trái của bản đồ lưới số sân chơi trước đó với trục x và y chồng lên nhau. Một mũi tên được biểu diễn từ số âm 100 trên trục x đến số 5 và từ số âm 900 trên trục y đến số 5. Robot VR vẫn ở vị trí số 1 với tọa độ âm 900, âm 900 bên dưới robot.

  • Để bắt đầu, Robot VR cần phải hướng về số '5'. Kéo vào hoặc nhập lệnh turn_for.
# Thêm mã dự án vào "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)
  • Kéo một vòng lặp while vào bên dưới lệnh turn_for. Dự án của bạn sẽ trông như thế này:
# Thêm mã dự án vào "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while condition:
        wait(5, MSEC)
  • Giống như Đơn vị cảm biến khoảng cách, dự án này sẽ sử dụng điều kiện vị trí của Cảm biến vị trí với toán tử so sánh để điều hướng Bản đồ lưới số Sân chơi. Đặt điều kiện cho vòng lặp while thành lệnh vị trí trên trục X nhỏ hơn -100 tính bằng milimét (mm). Dự án của bạn sẽ trông như thế này:
# Thêm mã dự án vào "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        wait(5, MSEC)
  • Kéo hoặc nhập lệnh không chờ drive bên trong vòng lặp while. Dự án của bạn sẽ trông như thế này:
# Thêm mã dự án vào "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
  • Lưu ý rằng toán tử nhỏ hơn được sử dụng thay cho toán tử lớn hơn vì Robot VR đang lái về phía bên phải từ phía bên trái của Sân chơi. Robot VR bắt đầu ở giá trị X là -900 milimét (mm). Khi Robot VR tiến về phía trước, giá trị X tăng lên và do đó robot sẽ tiếp tục tiến về phía trước khi giá trị X nhỏ hơn -100.

Góc dưới bên trái của bản đồ lưới số sân chơi trước đó với trục x và y chồng lên nhau. Một mũi tên được biểu diễn từ số âm 100 trên trục x đến số 5 và từ số âm 900 trên trục y đến số 5. Robot VR vẫn ở vị trí số 1 với tọa độ âm 900, âm 900 bên dưới robot.

Để bạn biết

Bạn sẽ cần chọn toán tử so sánh nào để sử dụng trong dự án của mình, tùy thuộc vào hướng bạn muốn Robot VR di chuyển dọc theo trục X hoặc Y. Khi Robot VR di chuyển về phía giá trị lớn hơn, toán tử nhỏ hơn (<) sẽ được sử dụng với vòng lặpwhile ; và khi Robot VR di chuyển về phía giá trị nhỏ hơn, toán tử lớn hơn (>) sẽ được sử dụng với vòng lặpwhile .

Điều này phù hợp với chuyển động sang trái và phải khi nhìn vào Sân chơi. Nếu Robot VR di chuyển từ trái sang phải hoặc từ dưới lên trên (giá trị lớn hơn), toán tử nhỏ hơn sẽ được sử dụng để điều khiển khi vị trí là trừ so với giá trị mục tiêu. 

Hai góc nhìn từ trên xuống của sân chơi bản đồ lưới số. Đầu tiên, robot VR được hiển thị ở số 51 với mũi tên chỉ ra rằng robot sẽ di chuyển về bên phải đến số 60. Văn bản trên có nội dung 'lái xe khi vị trí nhỏ hơn'. Trong hình thứ hai, robot VR được hiển thị ở số 6 với mũi tên chỉ ra rằng robot sẽ di chuyển lên đến số 96. Văn bản trên có nội dung 'lái xe khi vị trí nhỏ hơn'.

Nếu Robot VR di chuyển từ phải sang trái hoặc từ trên xuống dưới (giá trị nhỏ hơn), toán tử lớn hơn sẽ được sử dụng để điều khiển khi vị trí là lớn hơn so với giá trị mục tiêu.

Hai góc nhìn từ trên xuống của sân chơi bản đồ lưới số. Đầu tiên, robot VR được hiển thị ở số 60 với mũi tên chỉ ra rằng robot sẽ di chuyển sang trái đến số 51. Văn bản trên có nội dung 'lái xe khi vị trí lớn hơn'. Trong hình thứ hai, robot VR được hiển thị ở số 96 với mũi tên chỉ ra rằng robot sẽ di chuyển xuống số 6. Văn bản trên có nội dung 'lái xe khi vị trí lớn hơn'.

Khi sử dụng các toán tử so sánh, Robot VR sẽ di chuyển trong khi giá trị do Cảm biến vị trí báo cáo lớn hơn (>) hoặc nhỏ hơn (<) giá trị ngưỡng. Trong ví dụ này, Robot VR sẽ điều hướng đến vị trí dương 500 milimét (mm) trên trục X. Robot VR sẽ lái khi vị trí trên trục X nằm trong khoảng từ 0 đến dương 499. Khi Cảm biến vị trí báo cáo rằng vị trí là 501 hoặc cao hơn, Robot VR sẽ dừng lái. 

# Thêm mã dự án vào "main"
def main():
    monitor_sensor(location.position)
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < 500:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

Lưu ý rằng giá trị được Cảm biến vị trí báo cáo không phải làmà chính xác là 500 milimét (mm). Giống như Cảm biến khoảng cách, các toán tử so sánh được sử dụng vì thời gian cần thiết để Robot VR lặp lại dự án và báo cáo giá trị.

  • Kéo hoặc nhập lệnh stop ra ngoài vòng lặp while. Dự án của bạn sẽ trông như thế này:
# Thêm mã dự án vào "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()
  • Mở Cửa sổ Sân chơinếu nó chưa mở. Đảm bảo rằng Sân chơi bản đồ lưới sốmở ra và chạy dự án.
  • Xem Robot VR lái đến số '5' trên Sân chơi bản đồ lưới số .

Hình ảnh từ trên xuống của sân chơi Bản đồ lưới số. Có thể nhìn thấy Robot VR ở phía dưới số 5.

  • Trong dự án này, Robot VR sẽ di chuyển đến số '5' trên Sân chơi bản đồ lưới số . Vòng lặp while được sử dụng để Robot VR tiếp tục tiến về phía trước trong khi giá trị X bằng trừ so với giá trị X của tọa độ chứa số được chỉ định.
  • Khi giá trị X lớn hơn -100, dự án sẽ chuyển sang lệnh tiếp theo bên ngoài vòng lặp, đó là lệnh stop. Vì giá trị X của số '5' là -100, nên Robot VR sẽ dừng lái khi giá trị X lớn hơn -100.

Luồng của dự án python vừa chạy. Mũi tên chỉ ra rằng robot sẽ di chuyển đến vòng lặp while sau khi hoàn tất vòng quay phải 90 độ. Một mũi tên tuần hoàn nằm cạnh vòng lặp while với nội dung là 'giá trị x nhỏ hơn âm 100 trả về True, VR Robot tiến về phía trước.' Bên dưới là một mũi tên màu đỏ có nội dung 'giá trị x lớn hơn âm 100, trả về False. Robot VR ngừng lái xe.

Để bạn biết

Lưu ý rằng giá trị do Cảm biến vị trí báo cáo có thể không chính xác làmà là-100 milimét (mm). Giống như Cảm biến khoảng cách, các toán tử so sánh được sử dụng vì thời gian cần thiết để Robot VR lặp lại dự án và báo cáo giá trị.

Bảng điều khiển trong cửa sổ Sân chơi được phóng to để hiển thị giá trị x được báo cáo của cảm biến Vị trí là âm 90 mm.

Trong VEXcode VR Python, bạn có thể sử dụng toán tử so sánh lớn hơnhoặc bằng(>=) hoặc nhỏ hơn hoặc bằng(<=) trong dự án của mình để có thêm độ chính xác trong chuyển động.

# Thêm mã dự án vào "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) <= -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

Tùy thuộc vào tốc độ của Robot VR và tốc độ lặp lại của dự án qua vòng lặp, bạn có thể thấy rằng Robot VR có thể dừng lại gần giá trị ngưỡng hơn khi hoặc bằng (<= hoặc >=) được thêm vào toán tử.

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.