Python dành riêng cho robot#
Giới thiệu#
Robot anh hùng Dex bao gồm hai tùy chọn động cơ, một cảm biến thị giác AI, một cảm biến quang học và một cảm biến hệ thống định vị trong game (GPS).
Tất cả các phương pháp VEXcode VR tiêu chuẩn đều có sẵn để sử dụng trong V5 25-26 Push Back Playground.
Dưới đây là danh sách tất cả các phương pháp dành riêng cho Robot:
Hệ thống truyền động – Giúp robot di chuyển và xoay.
Hành động
drive— Di chuyển robot tiến hoặc lùi mãi mãi.drive_for— Di chuyển robot tiến hoặc lùi một khoảng cách cụ thể.turn— Xoay robot sang trái hoặc phải mãi mãi.turn_for— Xoay robot sang trái hoặc phải một số độ cụ thể.turn_to_heading— Xoay robot để hướng về một hướng cụ thể từ -359 đến 359 độ.turn_to_rotation— Xoay robot theo hướng cụ thể.stop— Dừng chuyển động của robot.
Các sinh vật đột biến
set_heading— Thay đổi hướng hiện tại của robot thành một hướng mới.set_rotation— Thay đổi hướng quay hiện tại của robot thành hướng quay mới.set_timeout— Đặt khoảng thời gian robot sẽ cố gắng hoàn thành một chuyển động.set_drive_velocity— Cho robot biết tốc độ lái xe.set_turn_velocity— Cho robot biết tốc độ quay.
Người đạt giải
heading— Trả về hướng hiện tại của robot từ 0 đến 359,99 độ.rotation— Trả về góc xoay hiện tại của robot.is_done— Trả về giá trị Boolean cho biết robot đã hoàn thành việc di chuyển hay chưa.is_moving— Trả về giá trị Boolean cho biết robot có đang di chuyển hay không.velocity— Trả về tốc độ di chuyển của robot.
Chuyển động – Di chuyển và theo dõi các động cơ của robot.
Hành động
spin— Quay động cơ tiến hoặc lùi mãi mãi.spin_for— Quay động cơ trong một khoảng cách cụ thể.spin_to_position— Quay động cơ đến một vị trí cụ thể.stop— Dừng động cơ quay.
Các sinh vật đột biến
set_position— Thay đổi vị trí hiện tại của động cơ thành một giá trị mới.set_velocity— Cho động cơ biết tốc độ quay.set_timeout— Đặt khoảng thời gian mà động cơ sẽ cố gắng hoàn thành một chuyển động.
Người đạt giải
is_done— Trả về giá trị Boolean cho biết động cơ đã ngừng chuyển động hay chưa.is_spinning— Trả về giá trị Boolean cho biết động cơ có đang quay hay không.position— Trả về vị trí hiện tại của động cơ.velocity— Trả về tốc độ quay của động cơ.
Công nghệ Thị giác AI - Thu thập và phân tích đối tượng bằng cảm biến thị giác AI.
Người đạt giải
take_snapshot– Trả về một bộ các đối tượng được phát hiện cho một chữ ký cụ thể.
Của cải
width– Chiều rộng của đối tượng được phát hiện tính bằng pixel.height– Chiều cao của đối tượng được phát hiện tính bằng pixel.centerX– Vị trí X của tâm đối tượng tính bằng pixel.centerY– Vị trí Y của tâm đối tượng tính bằng pixel.originX– Vị trí X của góc trên bên trái của đối tượng tính bằng pixel.originY– Vị trí Y của góc trên bên trái của đối tượng tính bằng pixel.id– Phân loại hoặc ID thẻ của đối tượng.
Bảng điều khiển – In ra bảng điều khiển và theo dõi các giá trị.
In
brain.screen.print— Hiển thị văn bản, số hoặc giá trị biến trong Console.brain.screen.next_row— Di chuyển con trỏ Console đến đầu hàng tiếp theo.brain.screen.clear_screen— Xóa tất cả các hàng khỏi Bảng điều khiển.
Màn hình
monitor_variable— Thêm một hoặc nhiều biến được xác định trước vào tab Giám sát.monitor_sensor— Thêm một hoặc nhiều giá trị cảm biến vào tab Giám sát.
Cảm biến - Sử dụng các cảm biến khác nhau của robot.
Quang học
is_near_object– Trả về liệu Cảm biến quang có phát hiện vật thể trong phạm vi hay không.color– Trả về màu được phát hiện bởi Cảm biến quang học.brightness– Trả về lượng ánh sáng phản xạ từ vật thể.hue– Trả về sắc độ được phát hiện bởi Cảm biến quang học.object_detected– Đăng ký một hàm sẽ được gọi khi Cảm biến quang học phát hiện một vật thể.object_lost– Đăng ký một hàm sẽ được gọi khi Cảm biến quang học mất một vật thể.
Hệ thống định vị GPS
x_position– Trả về tọa độ x hiện tại của Cảm biến GPS trên thực địa.y_position– Trả về tọa độ y hiện tại của Cảm biến GPS trên thực địa.heading– Trả về hướng mà robot hiện đang đối mặt dựa trên các giá trị đọc của Cảm biến GPS từ 0 đến 359 độ.
Các ví dụ trên trang này sử dụng vị trí bắt đầu mặc định của Playground.
Hệ thống truyền động#
Hệ thống truyền động điều khiển cách robot VR di chuyển và xoay hướng. Hệ thống truyền động có thể tiến hoặc lùi, rẽ trái hoặc phải, xoay theo hướng mong muốn và theo dõi chuyển động quay của nó.
Hành động#
lái xe#
Phím drive cho phép robot di chuyển tiến hoặc lùi liên tục. Robot sẽ tiếp tục di chuyển cho đến khi nhận được lệnh khác, chẳng hạn như rẽ hoặc dừng lại.
Usage:
drivetrain.drive(direction)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng di chuyển của robot: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
ổ đĩa cho#
Lệnh drive_for di chuyển robot tiến hoặc lùi một khoảng cách cụ thể. Chương trình sẽ đợi cho đến khi robot hoàn thành việc di chuyển trước khi dòng mã tiếp theo được thực thi.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng di chuyển của robot: |
|
Quãng đường robot di chuyển. Giá trị này có thể là số nguyên |
|
Tùy chọn. Đơn vị khoảng cách: |
|
Tùy chọn. |
def main():
# Drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
# VR threads — Do not delete
vr_thread(main)
xoay#
turn sẽ khiến robot quay sang trái hoặc phải liên tục. Robot sẽ tiếp tục quay cho đến khi nhận được lệnh thực hiện hành động khác, chẳng hạn như lái xe hoặc dừng lại.
Usage:
drivetrain.turn(direction)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng quay của robot: |
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
lượt cho#
Lệnh turn_for cho phép robot quay sang trái hoặc phải một số độ nhất định. Góc quay được tính tương đối so với vị trí hiện tại của robot. Chương trình sẽ chờ cho đến khi robot quay xong trước khi thực thi dòng mã tiếp theo.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng quay của robot: |
|
Số độ mà robot quay. Giá trị này có thể là số nguyên |
|
Tùy chọn. Đơn vị xoay: |
|
Tùy chọn. |
def main():
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
quay_đến_hướng#
Hướng quay là hướng mà robot đang đối mặt, được đo bằng độ. Lệnh turn_to_heading sẽ xoay robot để quay về một hướng cụ thể từ -359 đến 359 độ. Robot sẽ quay theo hướng ngắn nhất để đạt được hướng mục tiêu.
Hướng di chuyển ban đầu của robot là 0 độ.
Dự án sẽ chờ cho đến khi robot hoàn thành việc quay trước khi dòng mã tiếp theo được thực thi.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng mà robot nên đối mặt, tính bằng độ. Giá trị này có thể là số nguyên |
|
Tùy chọn. Đơn vị xoay: |
|
Tùy chọn. |
def main():
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
xoay tới#
turn_to_rotation xoay robot theo một hướng cụ thể.
Góc quay là mức độ robot đã quay, được đo bằng độ. Khi bắt đầu một dự án, giá trị góc quay được đặt là 0 độ. Góc quay cũng có thể được đặt bằng phương pháp set_rotation.
Các giá trị xoay là tuyệt đối. Điều này có nghĩa là hướng quay phụ thuộc vào góc xoay hiện tại của robot. Xoay sang phải sẽ làm tăng góc xoay, và xoay sang trái sẽ làm giảm góc xoay.
Ví dụ, nếu robot bắt đầu ở 0 độ và bạn xoay nó một góc 720 độ, nó sẽ quay sang phải hai lần. Nếu sau đó bạn xoay nó một góc 360 độ, nó sẽ quay sang trái một lần, vì 360 nhỏ hơn 720.
Dự án sẽ chờ cho đến khi robot hoàn thành việc quay trước khi dòng mã tiếp theo được thực thi.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Thông số |
Sự miêu tả |
|---|---|
|
Giá trị góc quay, tính bằng độ, mà robot sẽ quay tới. Giá trị này có thể là số nguyên |
|
Tùy chọn. Đơn vị xoay: |
|
Tùy chọn. |
def main():
# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
dừng lại#
stop dừng chuyển động của robot.
Usage:
drivetrain.stop()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Biến đổi#
đặt tiêu đề#
Hướng di chuyển là hướng mà robot đang đối mặt, được đo bằng độ. Lệnh set_heading thay đổi hướng di chuyển hiện tại của robot thành một giá trị hướng di chuyển mới.
Ví dụ, nếu robot đã quay mặt sang phải, việc đặt hướng quay về 0 độ sẽ biến vị trí quay mặt sang phải đó thành 0 độ mới. Sau đó, robot có thể quay đến các vị trí khác dựa trên hướng quay mới đó.
Usage:
drivetrain.set_heading(heading, units)
Thông số |
Sự miêu tả |
|---|---|
|
Giá trị hướng, tính bằng độ, cần thiết lập cho robot. Giá trị này có thể là số nguyên |
|
Tùy chọn. Đơn vị hướng: |
def main():
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
đặt_xoay#
Góc quay là mức độ robot đã xoay, được đo bằng độ. Khi bắt đầu một dự án, giá trị góc quay được đặt là 0 độ. Lệnh set_rotation thay đổi góc quay hiện tại của robot thành một giá trị mới.
Ví dụ, nếu robot đã quay hai vòng hoàn chỉnh sang phải, giá trị góc quay của nó sẽ là 720 độ. Việc đặt góc quay về 0 độ sẽ thiết lập lại góc quay từ 720 độ về 0 độ. Sau đó, robot có thể quay theo các hướng dựa trên giá trị mới đó.
Usage:
drivetrain.set_rotation(rotation, units)
Thông số |
Sự miêu tả |
|---|---|
|
Giá trị xoay, tính bằng độ, cần thiết lập cho robot. Giá trị này có thể là số nguyên |
|
Tùy chọn. Đơn vị xoay: |
def main():
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
đặt thời gian chờ#
set_timeout thiết lập khoảng thời gian robot sẽ cố gắng hoàn thành một chuyển động. Nếu robot không thể hoàn thành trong thời gian đó, nó sẽ ngừng cố gắng và chuyển sang dòng mã tiếp theo. Điều này giúp robot không bị kẹt ở một chuyển động nào đó.
Usage:
drivetrain.set_timeout(value, units)
Thông số |
Sự miêu tả |
|---|---|
|
The amount of time the robot can try to finish a movement. This can be a positive |
|
Đơn vị thời gian: |
def main():
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# VR threads — Do not delete
vr_thread(main)
đặt_vận_độ_lực_lái#
set_drive_velocity cho robot biết tốc độ di chuyển. Tỷ lệ phần trăm càng cao thì robot càng di chuyển nhanh hơn và tỷ lệ phần trăm càng thấp thì robot càng di chuyển chậm hơn.
Mỗi dự án đều bắt đầu với việc robot di chuyển ở tốc độ mặc định là 50%.
Lưu ý: Vận tốc cao hơn giúp robot di chuyển nhanh hơn, nhưng có thể kém chính xác hơn. Vận tốc thấp hơn giúp robot di chuyển chậm hơn, nhưng có thể chính xác hơn.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Thông số |
Sự miêu tả |
|---|---|
|
Tốc độ lái xe từ 0% đến 100%. Giá trị này có thể là số nguyên |
|
Tùy chọn. Đơn vị vận tốc: |
def main():
# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
đặt_vận_độ_quay#
set_turn_velocity cho robot biết tốc độ quay. Tỷ lệ phần trăm càng cao thì robot quay càng nhanh, tỷ lệ phần trăm càng thấp thì robot quay càng chậm.
Mỗi dự án đều bắt đầu với việc robot quay ở tốc độ 50% theo mặc định.
Lưu ý: Vận tốc cao hơn làm cho robot quay nhanh hơn, nhưng có thể kém chính xác hơn. Vận tốc thấp hơn làm cho robot quay chậm hơn, nhưng có thể chính xác hơn.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Thông số |
Sự miêu tả |
|---|---|
|
Tốc độ quay từ 0% đến 100%. Giá trị này có thể là số nguyên |
|
Tùy chọn. Đơn vị vận tốc: |
def main():
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Người nhận#
tiêu đề#
Hướng di chuyển là hướng mà robot đang đối mặt, được đo bằng độ. Lệnh heading trả về hướng di chuyển hiện tại của robot từ 0 đến 359,99 độ.
Hướng di chuyển ban đầu của robot là 0 độ.
Usage:
drivetrain.heading(units)
Thông số |
Sự miêu tả |
|---|---|
|
Tùy chọn. Đơn vị hướng: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
xoay#
Góc quay là mức độ robot đã xoay, được đo bằng độ. Khi bắt đầu một dự án, giá trị góc quay được đặt là 0 độ. Lệnh rotation trả về góc quay hiện tại của robot.
Xoay sang phải sẽ làm tăng góc quay, và xoay sang trái sẽ làm giảm góc quay. Ví dụ, xoay hai vòng sang phải sẽ tạo ra góc quay 720 độ.
Usage:
drivetrain.rotation(units)
Thông số |
Sự miêu tả |
|---|---|
|
Tùy chọn. Đơn vị xoay: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
đã xong#
is_done trả về giá trị Boolean cho biết robot đã di chuyển xong hay chưa. Điều này có thể được sử dụng để điều khiển thời gian của các hành vi khác dựa trên chuyển động của robot.
True— Robot đã di chuyển xong.False— Robot vẫn đang di chuyển.
Phương pháp này hoạt động cùng với các phương pháp Drivetrain sau có tham số wait : drive_for, turn_for, turn_to_heading, và turn_to_rotation.
Usage:
drivetrain.is_done()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
đang di chuyển#
is_moving trả về trạng thái di chuyển của robot, dưới dạng giá trị Boolean. Điều này có thể được sử dụng để điều khiển thời gian thực hiện các hành vi khác dựa trên chuyển động của robot.
True— Robot đang di chuyển.False— Robot không di chuyển.
Usage:
drivetrain.is_moving()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
vận tốc#
Giá trị velocity trả về tốc độ di chuyển của robot, được biểu thị bằng phần trăm từ -100% đến 100%.
Usage:
drivetrain.velocity(units)
Thông số |
Sự miêu tả |
|---|---|
|
Tùy chọn. Đơn vị vận tốc: |
Ví dụ
def main():
# Display the velocity after driving
drivetrain.drive_for(FORWARD, 150, MM)
brain.screen.print("Velocity: ")
brain.screen.print(drivetrain.velocity(PERCENT))
Cử động#
Dex sử dụng động cơ hút để kéo các khối vào robot. Động cơ băng tải di chuyển các khối từ bộ phận hút lên đỉnh robot để chúng có thể được đẩy vào mục tiêu.
Mỗi động cơ có cách vận hành hướng riêng. Phần mô tả hướng giải thích cách mỗi hướng di chuyển động cơ đó trên Dex.
Hành động#
quay#
spin sẽ làm cho động cơ quay tiến hoặc lùi liên tục. Động cơ sẽ tiếp tục quay cho đến khi nhận được một lệnh khác, chẳng hạn như quay theo hướng khác hoặc dừng lại.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
|
Hướng quay của động cơ:
|
def main():
# Pick up a second Block
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 350, MM)
# VR threads — Do not delete
vr_thread(main)
quay cho#
Lệnh spin_for quay một động cơ một khoảng cách nhất định. Khoảng cách quay này tương đối so với vị trí hiện tại của động cơ. Chương trình sẽ chờ cho đến khi động cơ quay xong trước khi dòng mã tiếp theo được thực thi.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
|
Hướng quay của động cơ:
|
|
Quãng đường quay của động cơ. |
|
Tùy chọn. Đơn vị khoảng cách: |
|
Tùy chọn.
|
def main():
# Pick up a second Block
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 350, MM)
# VR threads — Do not delete
vr_thread(main)
quay đến vị trí#
spin_to_position quay động cơ đến một vị trí cụ thể.
Vị trí của động cơ là khoảng cách nó đã quay, được đo bằng DEGREES hoặc TURNSMột vòng quay bằng 360 độ. Khi bắt đầu một dự án, vị trí của động cơ được đặt thành 0 độ. Vị trí của động cơ cũng có thể được đặt bằng phương pháp set_position.
Các giá trị vị trí là tuyệt đối. Điều này có nghĩa là hướng quay phụ thuộc vào vị trí hiện tại của động cơ.
Ví dụ, nếu động cơ bắt đầu ở 0 độ và quay đến vị trí 720 độ, nó sẽ quay thuận hai vòng. Nếu sau đó nó quay đến vị trí 360 độ, nó sẽ quay ngược một vòng, vì 360 nhỏ hơn 720.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
|
Giá trị vị trí mà động cơ sẽ quay tới. |
|
Tùy chọn. Đơn vị vị trí: |
|
Tùy chọn.
|
def main():
# Pick up a second Block
conveyor_motor.spin_to_position(150, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 350, MM)
# VR threads — Do not delete
vr_thread(main)
dừng lại#
stop dừng động cơ quay.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Pick up a second Block
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 350, MM)
intake_motor.stop()
# VR threads — Do not delete
vr_thread(main)
Biến đổi#
đặt vị trí#
Vị trí của động cơ được xác định bằng khoảng cách quay, tính bằng DEGREES hoặc TURNSMột vòng quay tương đương với 360 độ. set_position thay đổi vị trí hiện tại của động cơ thành một giá trị mới.
Ví dụ, nếu một động cơ đã quay đến 180 độ, việc đặt vị trí về 0 độ sẽ thiết lập lại vị trí đó từ 180 độ về 0 độ. Sau đó, động cơ có thể quay đến các vị trí dựa trên giá trị mới đó.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
|
Giá trị vị trí cần thiết lập cho động cơ. |
|
Tùy chọn. Đơn vị vị trí: |
def main():
# Pick up a second Block
conveyor_motor.set_position(-150, DEGREES)
conveyor_motor.spin_to_position(0, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 350, MM)
# VR threads — Do not delete
vr_thread(main)
đặt vận tốc#
Tham số set_velocity cho biết tốc độ quay của động cơ. Tỷ lệ phần trăm càng cao thì động cơ càng quay nhanh, và tỷ lệ phần trăm càng thấp thì động cơ càng quay chậm.
Mỗi dự án đều bắt đầu với việc mỗi động cơ quay ở tốc độ 50% theo mặc định.
Lưu ý: Tốc độ cao hơn làm cho động cơ quay nhanh hơn, nhưng có thể kém chính xác hơn. Tốc độ thấp hơn làm cho động cơ quay chậm hơn, nhưng có thể chính xác hơn.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
|
Tốc độ quay từ 0% đến 100%. Giá trị này có thể là số nguyên |
|
Đơn vị vận tốc: |
def main():
# Pick up a second Block
conveyor_motor.set_velocity(90, PERCENT)
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 400, MM)
# VR threads — Do not delete
vr_thread(main)
đặt thời gian chờ#
set_timeout thiết lập khoảng thời gian tối đa mà động cơ sẽ cố gắng hoàn thành một chuyển động. Nếu động cơ không thể hoàn thành trong thời gian đó, nó sẽ ngừng cố gắng và chuyển sang dòng mã tiếp theo. Điều này giúp ngăn động cơ bị kẹt ở một chuyển động nào đó.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
|
The amount of time the motor can try to finish a movement. This can be a positive |
|
Đơn vị thời gian: |
def main():
# Pick up a second Block
conveyor_motor.set_timeout(0.5, SECONDS)
conveyor_motor.spin_to_position(1000, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 400, MM)
# VR threads — Do not delete
vr_thread(main)
Người nhận#
đã xong#
is_done trả về giá trị Boolean cho biết động cơ đã ngừng chuyển động hay chưa. Giá trị này có thể được sử dụng để điều khiển thời gian của các hành vi khác dựa trên chuyển động của động cơ.
True— Động cơ đã ngừng chuyển động.False— Động cơ vẫn đang hoạt động.
Phương pháp này hoạt động cùng với các phương pháp Chuyển động sau có tham số wait : spin_for và spin_to_position.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Pick up a second Block
conveyor_motor.spin_to_position(300, DEGREES, wait=False)
wait(0.1, SECONDS)
while not conveyor_motor.is_done():
drivetrain.drive(FORWARD)
intake_motor.spin(FORWARD)
wait(5, MSEC)
drivetrain.stop()
intake_motor.stop()
# VR threads — Do not delete
vr_thread(main)
đang quay#
is_spinning trả về giá trị Boolean cho biết động cơ có đang quay hay không. Giá trị này có thể được sử dụng để điều khiển thời gian của các hành vi khác dựa trên chuyển động của động cơ.
True— Động cơ đang quay.False— Động cơ không quay.
Phương pháp này hoạt động cùng với các phương pháp Chuyển động sau có tham số wait : spin_for và spin_to_position.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Pick up a second Block
conveyor_motor.spin_to_position(300, DEGREES, wait=False)
wait(0.1, SECONDS)
while conveyor_motor.is_spinning():
drivetrain.drive_for(FORWARD, 200, MM)
intake_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
chức vụ#
Vị trí của động cơ được xác định bằng số vòng quay, tính bằng DEGREES hoặc TURNSMột vòng quay tương đương với 360 độ. Vị trí position trả về vị trí hiện tại của động cơ.
Khi bắt đầu dự án, vị trí của động cơ được đặt ở 0 độ. Nếu động cơ quay một vòng hoàn chỉnh về phía trước, vị trí sẽ là 360 độ hoặc 1 vòng. Nếu động cơ quay theo hướng ngược lại, vị trí sẽ là số âm.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
|
Bộ phận đưa động cơ trở lại vị trí ban đầu: |
def main():
# Pick up a second Block
while conveyor_motor.position(DEGREES) < 150:
conveyor_motor.spin(FORWARD)
wait(2, MSEC)
conveyor_motor.stop()
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 400, MM)
# VR threads — Do not delete
vr_thread(main)
vận tốc#
velocity trả về tốc độ quay của động cơ.
Giá trị dương có nghĩa là động cơ đang quay thuận. Giá trị âm có nghĩa là động cơ đang quay ngược.
Cách sử dụng:
Một trong hai đối tượng động cơ có sẵn có thể được sử dụng với phương pháp này, như minh họa bên dưới:
động cơ |
Yêu cầu |
|---|---|
|
|
|
|
Thông số |
Sự miêu tả |
|---|---|
|
Đơn vị vận tốc cần trả về: |
def main():
# Pick up a second block
conveyor_motor.set_velocity(100, PERCENT)
conveyor_motor.spin_to_position(300, DEGREES, wait=False)
wait(0.2, SECONDS)
brain.screen.print(conveyor_motor.velocity(PERCENT))
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 400, MM)
# VR threads — Do not delete
vr_thread(main)
Tầm nhìn AI#
Người nhận#
chụp ảnh#
take_snapshot lọc dữ liệu từ khung hình của Cảm biến Thị giác AI thành một chữ ký duy nhất — một mô tả đã lưu về thứ mà cảm biến có thể nhận ra, chẳng hạn như một yếu tố trò chơi trên sân — và trả về một bộ dữ liệu.
The tuple stores objects ordered from largest to smallest by width, starting at index 0. Each object’s properties can be accessed using its index. An empty tuple is returned if no matching objects are detected.
Usage:
ai_vision.take_snapshot(signature)
Thông số |
Sự miêu tả |
|---|---|
|
Lọc tập dữ liệu chỉ bao gồm dữ liệu có chữ ký đã cho. Các chữ ký có sẵn là:
|
def main():
# If an object is detected, pick it up
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
while not bumper.pressing():
wait(2, MSEC)
drivetrain.stop()
break
# VR threads — Do not delete
vr_thread(main)
Của cải#
Có bảy thuộc tính được bao gồm trong mỗi đối tượng được lưu trữ trong một tuple sau khi take_snapshot được sử dụng.
Tất cả các giá trị thuộc tính ngoại trừ .id mô tả vị trí và kích thước của đối tượng được phát hiện trong tầm nhìn của Cảm biến Thị giác AI tại thời điểm take_snapshot được sử dụng. Các giá trị này được đo bằng pixel, dựa trên độ phân giải 320 x 240 pixel của cảm biến.
.chiều rộng#
.width trả về chiều rộng của đối tượng được phát hiện tính bằng pixel, là một số nguyên nằm giữa 1 và 320.
def main():
# If an object is detected, approach and pick it up
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].width > 65:
drivetrain.stop()
break
else:
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.chiều cao#
.height trả về chiều cao của đối tượng được phát hiện tính bằng pixel, là một số nguyên nằm giữa 1 và 240.
def main():
# If an object is detected, approach and pick it up
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].height > 55:
drivetrain.stop()
break
else:
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.centerX#
.centerX trả về tọa độ x của tâm đối tượng được phát hiện tính bằng pixel, là một số nguyên nằm giữa 0 và 320.
def main():
# Pick up a Block from the top left group
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
drivetrain.turn_for(LEFT, 80, DEGREES)
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn(LEFT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if 140 < ai_objects[0].centerX < 180:
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
while not bumper.pressing():
wait(2, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
.centerY#
.centerY trả về tọa độ y của tâm đối tượng được phát hiện tính bằng pixel, là một số nguyên nằm giữa 0 và 240.
def main():
# If an object is detected, approach and pick it up
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerY > 140:
drivetrain.stop()
break
else:
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.originX#
.originX trả về tọa độ x của góc trên bên trái của khung bao quanh đối tượng được phát hiện tính bằng pixel, là một số nguyên nằm giữa 0 và 320.
def main():
# Pick up a Block from the top left group
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
drivetrain.turn_for(LEFT, 80, DEGREES)
drivetrain.drive_for(FORWARD, 300, MM)
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn(RIGHT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if 100 < ai_objects[0].originX < 140:
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
while not bumper.pressing():
wait(2, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
.originY#
.originY trả về tọa độ y của góc trên bên trái của khung bao quanh đối tượng được phát hiện tính bằng pixel, là một số nguyên nằm giữa 0 và 240.
def main():
# If an object is detected, approach and pick it up
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originY > 120:
drivetrain.stop()
break
else:
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.nhận dạng#
.id trả về ID của Phân loại AI được phát hiện dưới dạng số nguyên.
Phân loại AI |
nhận dạng |
Chữ ký |
|---|---|---|
Khối Xanh |
1 |
|
Khối Đỏ |
2 |
|
def main():
# Pick up a Red Block from the top left group
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
drivetrain.turn_for(LEFT, 80, DEGREES)
drivetrain.drive_for(FORWARD, 300, MM)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
drivetrain.drive(FORWARD)
if (ai_objects[0].id) == 2:
intake_motor.spin(FORWARD)
while not bumper.pressing():
wait(2, MSEC)
drivetrain.stop()
break
# VR threads — Do not delete
vr_thread(main)
Bảng điều khiển#
Cửa sổ Console hiển thị văn bản, số và giá trị biến trong khi dự án đang chạy. Các phương thức của Console cũng có thể di chuyển con trỏ đến hàng mới, xóa nội dung Console và thêm biến hoặc giá trị cảm biến vào tab Monitor.
In#
não.màn hình.in#
brain.screen.print hiển thị văn bản, số hoặc giá trị biến trong Console bằng cách sử dụng vị trí con trỏ hiện tại.
Sử dụng brain.screen.next_row khi bạn muốn giá trị được in tiếp theo bắt đầu trên một hàng mới.
Usage:
brain.screen.print(value)
Thông số |
Sự miêu tả |
|---|---|
|
Văn bản, số hoặc giá trị biến cần hiển thị trong Console. |
def main():
# Display a message in the Console
brain.screen.print("Hello, robot!")
# VR threads — Do not delete
vr_thread(main)

não.màn hình.hàng tiếp theo#
Lệnh brain.screen.next_row di chuyển con trỏ đến cột 1 trên hàng tiếp theo trong Console. Giá trị tiếp theo được in sẽ xuất hiện trên hàng đó.
Usage:
brain.screen.next_row()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Print on two rows
brain.screen.print("Row 1")
brain.screen.next_row()
brain.screen.print("Row 2")
# VR threads — Do not delete
vr_thread(main)

brain.screen.clear_screen#
brain.screen.clear_screen xóa tất cả các hàng khỏi Console và di chuyển con trỏ trở lại Hàng 1.
Usage:
brain.screen.clear_screen()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Display text, then clear it after two seconds
brain.screen.print("This will disappear...")
wait(2, SECONDS)
brain.screen.clear_screen()
# VR threads — Do not delete
vr_thread(main)
Màn hình#
monitor_variable#
Lệnh monitor_variable thêm một hoặc nhiều biến được định nghĩa trước vào tab Monitor trong VEXcode. Điều này cho phép bạn theo dõi sự thay đổi giá trị của một biến trong khi dự án đang chạy.
Các biến phải là biến toàn cục để lệnh monitor_variable có thể giám sát chúng thành công. Cung cấp tên của mỗi biến dưới dạng chuỗi.
Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)
Thông số |
Sự miêu tả |
|---|---|
|
Tên của một biến toàn cục được định nghĩa trước để theo dõi, được cung cấp dưới dạng chuỗi ký tự. Để theo dõi nhiều hơn một biến, hãy phân tách tên của mỗi biến bằng dấu phẩy. |
def main():
# Monitor the amount of loops
global loops
monitor_variable("loops")
# Drive in a square 3 times
for loops in range(12):
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
cảm biến giám sát#
Lệnh monitor_sensor thêm một hoặc nhiều giá trị cảm biến vào tab Monitor trong VEXcode. Điều này cho phép bạn theo dõi sự thay đổi của các giá trị cảm biến trong khi dự án đang chạy.
Cung cấp giá trị của từng cảm biến dưới dạng chuỗi ký tự.
Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)
Thông số |
Sự miêu tả |
|---|---|
|
The sensor value to monitor, given as a string. To monitor more than one sensor value, separate each sensor value with a comma. Supported sensor identifiers include:
|
def main():
# Monitor the robot's heading
monitor_sensor("drivetrain.heading")
drivetrain.turn_for(RIGHT, 450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Cảm biến#
Quang học#
là_vật_thể_gần#
is_near_object trả về giá trị Boolean cho biết liệu Cảm biến quang học có phát hiện vật thể trong phạm vi hay không.
True– Cảm biến quang học phát hiện vật thể.False– Cảm biến quang học không phát hiện vật thể.
Usage:
optical.is_near_object()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Move the preloaded Block to the top of the Conveyor
conveyor_motor.spin(FORWARD)
while not optical.is_near_object():
wait(2, MSEC)
conveyor_motor.stop()
# VR threads — Do not delete
vr_thread(main)
màu sắc#
color trả về một thể hiện của lớp Color , dựa trên giá trị sắc độ được phát hiện. Chúng có thể được so sánh với các đối tượng Color được định nghĩa trước để tạo ra các câu lệnh điều kiện.
Các màu sắc có thể là:
NONERED- Giá trị màu sắc nằm giữa 340° - 20°GREEN- Giá trị màu sắc nằm trong khoảng 80° - 140°BLUE- Giá trị màu sắc nằm trong khoảng 200° - 240°YELLOW- Giá trị màu sắc nằm trong khoảng 40° - 60°ORANGE- Giá trị màu sắc nằm trong khoảng 20° - 40°PURPLE- Giá trị màu sắc nằm trong khoảng 240° - 280°CYAN- Giá trị màu sắc nằm trong khoảng 140° - 200°
Lưu ý: Cảm biến quang học đang tìm kiếm các dải màu phù hợp với màu được chỉ định. Để phát hiện các dải màu cụ thể, hãy xem hue.
Usage:
optical.color()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Pick up and move a Blue Block to the top of the Conveyor
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 360, MM)
conveyor_motor.spin(FORWARD)
while not optical.color() == BLUE:
wait(2, MSEC)
conveyor_motor.stop()
# VR threads — Do not delete
vr_thread(main)
độ sáng#
brightness trả về lượng ánh sáng phản xạ từ vật thể dưới dạng số thập phân (float) biểu thị phần trăm.
Tỷ lệ phần trăm càng cao nghĩa là càng nhiều ánh sáng được phản xạ trở lại cảm biến quang học. Tỷ lệ phần trăm càng thấp nghĩa là càng ít ánh sáng được phản xạ trở lại.
Usage:
optical.brightness()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Move the preloaded Block to the top of the Conveyor
conveyor_motor.spin(FORWARD)
while not 0 < optical.brightness():
wait(2, MSEC)
conveyor_motor.stop()
# VR threads — Do not delete
vr_thread(main)
sắc độ#
hue trả về giá trị sắc độ của màu được phát hiện dưới dạng số thập phân (float) từ 0 đến 359.
Sắc độ là một cách để mô tả màu sắc bằng các con số xung quanh vòng tròn màu.

Usage:
optical.hue()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Pick up and move a Blue Block to the top of the Conveyor
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 360, MM)
conveyor_motor.spin(FORWARD)
while not 220 < optical.hue() < 260:
wait(2, MSEC)
conveyor_motor.stop()
# VR threads — Do not delete
vr_thread(main)
đối tượng được phát hiện#
object_detected đăng ký một hàm sẽ được gọi bất cứ khi nào Cảm biến quang học phát hiện một vật thể mới.
Usage:
optical.object_detected(callback, arg)
Thông số |
Sự miêu tả |
|---|---|
|
Một hàm được định nghĩa trước đó sẽ được thực thi khi Cảm biến quang học phát hiện một vật thể mới. |
|
Tùy chọn. Một tuple chứa các đối số để truyền cho hàm gọi lại. Xem Sử dụng hàm có tham số để biết thêm thông tin. |
def ready_block():
# Stop the conveyor when Block is at the Sensor
conveyor_motor.stop()
def main():
# Move the preloaded Block near the top of the Conveyor
conveyor_motor.spin(FORWARD)
optical.object_detected(ready_block)
# VR threads — Do not delete
vr_thread(main)
vật thể bị mất#
object_lost đăng ký một hàm sẽ được gọi bất cứ khi nào Cảm biến quang học mất dấu vật thể được phát hiện.
Usage:
optical.object_lost(callback, arg)
Thông số |
Sự miêu tả |
|---|---|
|
Một hàm được định nghĩa trước đó sẽ thực thi khi Cảm biến quang học mất một đối tượng được phát hiện. |
|
Tùy chọn. Một tuple chứa các đối số để truyền cho hàm gọi lại. Xem Sử dụng hàm có tham số để biết thêm thông tin. |
def ready_block():
# Stop the conveyor when Block is at the top
conveyor_motor.stop()
def main():
# Move the preloaded Block to the top of the Conveyor
conveyor_motor.spin(FORWARD)
optical.object_lost(ready_block)
# VR threads — Do not delete
vr_thread(main)
GPS#
vị trí x#
x_position trả về tọa độ x hiện tại của cảm biến GPS (Game Positioning System™) trên sân.
Usage:
gps.x_position(units)
Thông số |
Sự miêu tả |
|---|---|
đơn vị |
Đơn vị của giá trị bù: |
def main():
# Pick up a second Block
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
while not gps.x_position(MM) > -795:
wait(2, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
vị trí y#
y_position trả về tọa độ y hiện tại của cảm biến GPS (Game Positioning System™) trên sân.
Usage:
gps.y_position(units)
Thông số |
Sự miêu tả |
|---|---|
đơn vị |
Đơn vị của giá trị bù: |
def main():
# Pick up a second Block
conveyor_motor.spin_for(FORWARD, 200, DEGREES)
intake_motor.spin(FORWARD)
drivetrain.drive(FORWARD)
while not -450 > gps.y_position(MM):
wait(2, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
tiêu đề#
heading trả về hướng mà robot hiện đang đối mặt dựa trên các giá trị đọc từ cảm biến GPS (Game Positioning System™) trong khoảng từ 0 đến 359 độ.
Usage:
gps.heading()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
def main():
# Score the preloaded Block into a Center Goal
drivetrain.set_turn_velocity(30, PERCENT)
drivetrain.turn(LEFT)
while not 40 > gps.heading():
wait(2, MSEC)
drivetrain.drive_for(FORWARD, 1000, MM)
drivetrain.turn(RIGHT)
while not gps.heading() > 310:
wait(2, MSEC)
drivetrain.drive_for(REVERSE, 400, MM)
conveyor_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)