Hệ thống truyền động#

Giới thiệu#

Robot 123 có hệ thống truyền động hai bánh cho phép nó di chuyển và rẽ. Các phương pháp điều khiển hệ thống truyền động kiểm soát cách robot di chuyển.

Hệ thống truyền động có thể đo khoảng cách theo hai cách: bước và mm (milimet). Một bước tương ứng với một ô vuông trên máy đo khoảng cách 123 Field.

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ể.

  • drive_until — Di chuyển robot tiến hoặc lùi cho đến khi nó phát hiện vật thể, va chạm hoặc đường kẻ.

  • 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 độ.

  • 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_timeout — Đặt thời gian robot sẽ cố gắng hoàn thành một chuyển động.

  • set_heading — Thay đổi hướng hiện tại của robot thành một hướng mới.

Người nhận hàng — Kiểm tra trạng thái di chuyển.

  • is_stopped — Trả về giá trị Boolean cho biết robot đã dừng di chuyển hay chưa.

  • get_heading — Trả về hướng hiện tại của robot từ 0 đến 359 độ.

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:
robot.drive(direction)

Thông số

Sự miêu tả

direction

Hướng di chuyển của robot: FORWARD hoặc REVERSE.

# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()

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:
robot.drive_for(direction, distance, unit)

Thông số

Sự miêu tả

direction

Hướng di chuyển của robot: FORWARD hoặc REVERSE.

distance

Quãng đường robot di chuyển. Có thể là số nguyên hoặc số thập phân.

unit

Đơn vị khoảng cách: MM (milimét) hoặc STEPS (một ô vuông trên sân 123).

# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)

drive_until#

drive_until di chuyển robot tiến hoặc lùi cho đến khi phát hiện vật cản, va chạm hoặc vạch kẻ đường.

Usage:
robot.drive_until(direction)

Thông số

Sự miêu tả

direction

Hướng di chuyển của robot: FORWARD hoặc REVERSE.

# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)

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:
robot.turn(direction)

Thông số

Sự miêu tả

direction

Hướng quay của robot: LEFT hoặc RIGHT.

# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()

turn_for#

Lệnh turn_for cho phép robot quay sang trái hoặc phải một số độ nhất định. 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:
robot.turn_for(direction, degrees)

Thông số

Sự miêu tả

direction

Hướng quay của robot: LEFT hoặc RIGHT.

degrees

Số độ cần xoay. Số này có thể là số nguyên hoặc số thập phân.

# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)

turn_to_heading#

turn_to_heading xoay robot để hướng 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 ban đầu 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:
robot.turn_to_heading(heading)

Thông số

Sự miêu tả

heading

Hướng mà robot nên quay, từ -359 đến 359 độ.

# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)

stop#

stop dừng chuyển động của robot.

Usage:
robot.stop()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()

Biến đổi#

set_timeout#

set_timeout thiết lập số giây mà 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:
robot.set_timeout(time, unit)

Thông số

Sự miêu tả

time

Khoảng thời gian cho phép thực hiện một chuyển động. Khoảng thời gian này có thể là số nguyên hoặc số thập phân.

unit

Đơn vị thời gian: MSEC hoặc SECONDS.

# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)

set_heading#

Lệnh set_heading thay đổi hướng hiện tại của robot thành một giá trị hướng mới.

Ví dụ, nếu robot đã quay mặt sang phải, việc đặt hướng về 0 độ sẽ biến vị trí quay mặt sang phải đó thành 0 độ mới.

Usage:
robot.set_heading(heading)

Thông số

Sự miêu tả

heading

Giá trị hướng, tính bằng độ, cần thiết lập cho robot.

# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)

Người nhận#

is_stopped#

is_stopped trả về một Boolean báo cáo xem robot đã dừng di chuyển hay chưa.

  • True — Robot đã dừng lại.

  • False — Robot vẫn đang di chuyển.

Usage:
robot.is_stopped()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
    if robot.is_stopped():
        robot.led.glow(BLUE)
    else:
        robot.led.glow(GREEN)
    wait(0.05, SECONDS)

get_heading#

get_heading trả về hướng mà robot hiện đang đối mặt dưới dạng số nguyên từ 0 đến 359 độ.

Hướng di chuyển ban đầu của robot là 0 độ.

Usage:
robot.get_heading()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())