Hệ thống truyền động#
Giới thiệu#
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ó.
Có rất nhiều cách để lập trình hệ thống truyền động. Dưới đây là danh sách tất cả các phương pháp lập trình hệ thống truyền động:
Thao tác — Di chuyển và xoay robot.
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.
Bộ điều chỉnh — Điều chỉnh các thiết lập hệ thống truyền động.
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.
Bộ phận truyền động — Kiểm tra trạng thái hệ thống truyền động.
Hành động#
drive#
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)
drive_for#
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)
turn#
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)
turn_for#
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)
turn_to_heading#
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)
turn_to_rotation#
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)
stop#
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#
set_heading#
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)
set_rotation#
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)
set_timeout#
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 |
|
Tùy chọn. Đơ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)
set_drive_velocity#
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)
set_turn_velocity#
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#
heading#
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.print("Heading: ")
brain.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotation#
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.print("Rotation: ")
brain.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
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ố. |
is_moving#
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ố. |