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

Giới thiệu#

Robot VEX IQ (thế hệ thứ 2) sử dụng hệ thống truyền động để di chuyển và xoay hướng. Hệ thống truyền động bao gồm các động cơ và bánh xe hoạt động cùng nhau để di chuyển robot.

Hệ thống truyền động được cấu hình có thể sử dụng Cảm biến con quay hồi chuyển, Cảm biến quán tính tích hợp sẵn của Brain, hoặc không sử dụng cảm biến nào. Khi sử dụng cảm biến, hệ thống truyền động sẽ sử dụng nó để giúp robot di chuyển và quay chính xác. Khi bắt đầu mỗi dự án, hệ thống truyền động sẽ tự động hiệu chỉnh cảm biến. Giữ robot đứng yên trong khoảng 2 giây trong quá trình hiệu chỉnh để robot có thể di chuyển và quay chính xác.

Trang này sử dụng drivetrain làm ví dụ về tên hệ thống truyền động. Hãy thay thế bằng tên đã cấu hình của riêng bạn nếu cầ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 độ. Robot sẽ xoay theo hướng ngắn nhất để đạt được hướng mục tiêu.

  • turn_to_rotation — Xoay robot theo hướng cụ thể.

  • stop — Dừng chuyển động của robot.

  • calibrate_drivetrain — Hiệu chỉnh cảm biến được cấu hình với hệ thống truyền động.

Bộ điều chỉnh — Điều chỉnh các thiết lập hệ thống truyền động.

  • set_drive_velocity — Cho robot biết tốc độ lái xe.

  • set_turn_velocity — Cho robot biết tốc độ quay.

  • set_stopping — Cho biết cách robot sẽ dừng di chuyển: bằng cách phanh, trượt hoặc giữ nguyên.

  • set_timeout — Đặt khoảng 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.

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

  • set_turn_threshold — Cho biết robot phải đến gần góc mục tiêu bao nhiêu trước khi hoàn thành một lượt rẽ.

  • set_turn_constant — Thay đổi mức độ robot điều chỉnh hướng rẽ của nó.

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

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

  • rotation — Trả về góc xoay hiện tại của robot.

  • velocity — Trả về tốc độ di chuyển của robot.

  • current — Trả về lượng dòng điện mà hệ thống truyền động đang sử dụng.

  • is_moving — Trả về giá trị Boolean cho biết robot có đang di chuyển hay không.

  • is_done — Trả về giá trị Boolean cho biết robot đã hoàn thành việc di chuyển hay chưa.

  • is_turning — Trả về giá trị Boolean cho biết robot có đang quay hay không.

  • power — Trả về tốc độ sử dụng năng lượng của hệ thống truyền động.

  • torque — Trả về lượng mô-men xoắn mà hệ thống truyền động đang sử dụng.

  • efficiency — Trả về mức độ hiệu quả của hệ thống truyền động khi sử dụng năng lượng.

  • temperature — Trả về nhiệt độ của hệ thống truyền động.

Người thiết kế — Tự tay tạo và cấu hình hệ thống truyền động.

  • DriveTrain — Tạo một hệ thống truyền động không có Cảm biến Con quay hồi chuyển hoặc Cảm biến Quán tính.

  • SmartDrive — Tạo hệ thống truyền động với Cảm biến Con quay hồi chuyển hoặc Cảm biến Quán tính.

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, velocity, units)

Thông số

Sự miêu tả

direction

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

velocity

Tùy chọn. Vận tốc di chuyển từ 0% đến 100% khi sử dụng PERCENT, từ 0 đến 120 vòng/phút khi sử dụng RPM, hoặc từ 0 đến 720 độ/giây khi sử dụng VelocityUnits.DPSGiá trị này có thể là integer hoặc số thập phân (float). Nếu không cung cấp vận tốc, robot sẽ di chuyển với vận tốc hiện tại.

units

Tùy chọn. Đơn vị vận tốc: PERCENT (mặc định), RPM (vòng/phút), hoặc VelocityUnits.DPS (độ/giây).

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive slowly in reverse then stop
drivetrain.drive(REVERSE, 20, PERCENT)
wait(2, SECONDS)
drivetrain.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:
drivetrain.drive_for(direction, distance, units, velocity, units_v, wait)

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. Giá trị này có thể là số nguyên integer hoặc số thập phân (float).

units

Tùy chọn. Đơn vị khoảng cách: INCHES (mặc định), MM (milimet), hoặc DistanceUnits.CM (centimet).

velocity

Tùy chọn. Vận tốc di chuyển từ 0% đến 100% khi sử dụng PERCENT, từ 0 đến 120 vòng/phút khi sử dụng RPM, hoặc từ 0 đến 720 độ/giây khi sử dụng VelocityUnits.DPSGiá trị này có thể là integer hoặc số thập phân (float). Nếu không cung cấp vận tốc, robot sẽ di chuyển với vận tốc hiện tại.

units_v

Tùy chọn. Đơn vị vận tốc: RPM (vòng/phút, mặc định), PERCENThoặc VelocityUnits.DPS (độ/giây).

wait

Tùy chọn. wait=True (mặc định) khiến dự án chờ cho đến khi robot hoàn thành chuyển động trước khi dòng mã tiếp theo được thực thi. wait=False khiến dòng mã tiếp theo được thực thi ngay lập tức.

# Drive forward and backward
drivetrain.drive_for(FORWARD, 10)
drivetrain.drive_for(REVERSE, 10)

# Quickly drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM, 100, PERCENT)
drivetrain.drive_for(REVERSE, 200, MM, 100, PERCENT)

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, velocity, units)

Thông số

Sự miêu tả

direction

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

velocity

Tùy chọn. Vận tốc quay từ 0% đến 100% khi sử dụng PERCENT, từ 0 đến 120 vòng/phút khi sử dụng RPM, hoặc từ 0 đến 720 độ/giây khi sử dụng VelocityUnits.DPSGiá trị này có thể là integer hoặc số thập phân (float). Nếu không cung cấp vận tốc, robot sẽ quay với vận tốc quay hiện tại.

units

Tùy chọn. Đơn vị vận tốc: RPM (vòng/phút, mặc định), PERCENThoặc VelocityUnits.DPS (độ/giây).

# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()

# Quickly turn right and left, then stop
drivetrain.turn(RIGHT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.turn(LEFT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

turn_for#

Lệnh turn_for cho phép robot quay sang trái hoặc phải một số độ hoặc vòng quay cụ thể. Vòng quay này đượ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, velocity, units_v, wait)

Thông số

Sự miêu tả

direction

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

angle

Góc quay của robot. Giá trị này có thể là số nguyên integer hoặc số thập phân (float).

units

Tùy chọn. Đơn vị xoay: DEGREES (mặc định) hoặc TURNSMột vòng xoay tương đương 360 độ.

velocity

Tùy chọn. Vận tốc quay từ 0% đến 100% khi sử dụng PERCENT, từ 0 đến 120 vòng/phút khi sử dụng RPM, hoặc từ 0 đến 720 độ/giây khi sử dụng VelocityUnits.DPSGiá trị này có thể là integer hoặc số thập phân (float). Nếu không cung cấp vận tốc, robot sẽ quay với vận tốc quay hiện tại.

units_v

Tùy chọn. Đơn vị vận tốc: RPM (vòng/phút, mặc định), PERCENThoặc VelocityUnits.DPS (độ/giây).

wait

Tùy chọn. wait=True (mặc định) khiến dự án chờ cho đến khi robot quay xong trước khi dòng mã tiếp theo được thực thi. wait=False khiến dòng mã tiếp theo được thực thi ngay lập tức.

# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)

# Quickly turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES, 100, PERCENT)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES, 100, PERCENT)

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, velocity, units_v, wait)

Thông số

Sự miêu tả

angle

Hướng mà robot nên đối mặt, tính bằng độ. Giá trị này có thể là số nguyên integer hoặc số thập phân (float) từ -359 đến 359.

units

Tùy chọn. Đơn vị hướng: DEGREES (mặc định).

velocity

Tùy chọn. Vận tốc quay từ 0% đến 100% khi sử dụng PERCENT, từ 0 đến 120 vòng/phút khi sử dụng RPM, hoặc từ 0 đến 720 độ/giây khi sử dụng VelocityUnits.DPSGiá trị này có thể là integer hoặc số thập phân (float). Nếu không cung cấp vận tốc, robot sẽ quay với vận tốc quay hiện tại.

units_v

Tùy chọn. Đơn vị vận tốc: PERCENT (mặc định), RPM (vòng/phút), hoặc VelocityUnits.DPS (độ/giây).

wait

Tùy chọn. wait=True (mặc định) khiến dự án chờ cho đến khi robot quay xong trước khi dòng mã tiếp theo được thực thi. wait=False khiến dòng mã tiếp theo được thực thi ngay lập tức.

# 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)

# Turn twice slowly
drivetrain.turn_to_heading(90, DEGREES, 20, PERCENT)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES, 20, PERCENT)

turn_to_rotation#

turn_to_rotation xoay robot theo một hướng cụ thể.

Độ quay là mức độ robot đã quay, được đo bằng độ hoặc vòng quay. Khi bắt đầu một dự án, giá trị độ quay được đặt là 0 độ. Độ 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, velocity, units_v, wait)

Thông số

Sự miêu tả

angle

Giá trị xoay, tính bằng độ hoặc số vòng, mà robot sẽ quay tới. Giá trị này có thể là số nguyên integer hoặc số thập phân (float).

units

Tùy chọn. Đơn vị xoay: DEGREES (mặc định) hoặc TURNSMột vòng quay tương đương 360 độ.

velocity

Tùy chọn. Vận tốc quay từ 0% đến 100% khi sử dụng PERCENT, từ 0 đến 120 vòng/phút khi sử dụng RPM, hoặc từ 0 đến 720 độ/giây khi sử dụng VelocityUnits.DPSGiá trị này có thể là integer hoặc số thập phân (float). Nếu không cung cấp vận tốc, robot sẽ quay với vận tốc quay hiện tại.

units_v

Tùy chọn. Đơn vị vận tốc: PERCENT (mặc định), RPM (vòng/phút), hoặc VelocityUnits.DPS (độ/giây).

wait

Tùy chọn. wait=True (mặc định) khiến dự án chờ cho đến khi robot quay xong trước khi dòng mã tiếp theo được thực thi. wait=False khiến dòng mã tiếp theo được thực thi ngay lập tức.

# 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)

# Turn left then slowly spin in a
# circle clockwise
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES, 20, PERCENT)

stop#

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

Usage:
drivetrain.stop(mode)

Thông số

Sự miêu tả

mode

Tùy chọn. Cách robot sẽ dừng lại: BRAKE (mặc định), BRAKE, hoặc COAST

  • COAST — Dừng ngay lập tức.
  • HOLD — Giảm tốc độ cho đến khi dừng hẳn.
  • HOLD — Dừng ngay lập tức và giữ nguyên vị trí bánh xe.

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop(COAST)

calibrate_drivetrain#

calibrate_drivetrain là một hàm tích hợp dùng để hiệu chỉnh Cảm biến Con quay hồi chuyển hoặc Cảm biến Quán tính được cấu hình với hệ thống truyền động.

Hiệu chuẩn giúp cảm biến đo chuyển động chính xác. Giữ robot đứng yên khoảng 2 giây trong quá trình hiệu chuẩn. Nếu robot di chuyển trong quá trình hiệu chuẩn, cảm biến có thể không đo được chuyển động chính xác.

Dự án sẽ chờ đến khi quá trình hiệu chuẩn hoàn tất trước khi dòng mã tiếp theo được thực thi.

Lưu ý: Chức năng này không thể được sử dụng bên trong VS Code.

Usage:
calibrate_drivetrain()

Thông số

Sự miêu tả

Hàm này không có tham số.

Biến đổi#

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ả

velocity

Tốc độ quay từ 0% đến 100% khi sử dụng PERCENT, từ 0 đến 120 vòng/phút khi sử dụng RPM, hoặc từ 0 đến 720 độ mỗi giây khi sử dụng VelocityUnits.DPSGiá trị này có thể là integer hoặc số thập phân (float).

units

Tùy chọn. Đơn vị vận tốc: PERCENT (mặc định), RPM (vòng/phút), hoặc VelocityUnits.DPS (độ/giây).

# 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)

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ả

velocity

Tốc độ quay từ 0% đến 100% khi sử dụng PERCENT, từ 0 đến 120 vòng/phút khi sử dụng RPM, hoặc từ 0 đến 720 độ/giây khi sử dụng VelocityUnits.DPSGiá trị này có thể là integer hoặc số thập phân (float).

units

Tùy chọn. Đơn vị vận tốc: PERCENT (mặc định), RPM (vòng/phút), hoặc VelocityUnits.DPS (độ/giây).

# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 360)

set_stopping#

set_stopping thiết lập cách robot sẽ dừng chuyển động: bằng cách phanh, chạy trượt hoặc giữ nguyên vị trí.

Usage:
drivetrain.set_stopping(mode)

Thông số

Sự miêu tả

mode

Cách robot dừng lại:

  • BRAKE — Dừng ngay lập tức.
  • COAST — Giảm tốc độ cho đến khi dừng hẳn.
  • HOLD — Dừng ngay lập tức và giữ nguyên vị trí bánh xe.

Nếu không sử dụng phương pháp này, robot sẽ sử dụng BRAKE khi dừng lại.

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ả

value

The amount of time the robot can try to finish a movement. This can be a positive integer or decimal (float).

units

Tùy chọn. Đơn vị thời gian: MSEC (mili giây, mặc định) hoặc SECONDS.

# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)

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ả

heading

Giá trị hướng, tính bằng độ hoặc số vòng quay, cần thiết lập cho robot. Giá trị này có thể là số nguyên integer hoặc số thập phân (float).

units

Tùy chọn. Đơn vị hướng: DEGREES (mặc định) hoặc TURNSMột vòng quay tương đương 360 độ.

# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)

set_rotation#

Góc quay là mức độ robot đã xoay, được đo bằng độ hoặc vòng quay. 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ả

rotation

Giá trị xoay, tính bằng độ hoặc số vòng, cần thiết lập cho robot. Giá trị này có thể là số nguyên integer hoặc số thập phân (float).

units

Tùy chọn. Đơn vị xoay: DEGREES (mặc định) hoặc TURNSMột vòng quay tương đương 360 độ.

# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)

set_turn_threshold#

set_turn_threshold thiết lập khoảng cách tối thiểu mà robot phải đạt được so với góc mục tiêu trước khi hoàn tất quá trình rẽ.

Ngưỡng nhỏ hơn có thể giúp robot rẽ chính xác hơn, nhưng quá trình rẽ có thể mất nhiều thời gian hơn. Ngưỡng lớn hơn có thể giúp quá trình rẽ hoàn tất nhanh hơn, nhưng độ chính xác có thể giảm đi.

Usage:
drivetrain.set_turn_threshold(value)

Thông số

Sự miêu tả

value

Ngưỡng rẽ, tính bằng độ. Giá trị này có thể là số nguyên integer hoặc số thập phân (float). Ngưỡng rẽ mặc định là 1 độ.

# Set the turn threshold to 5 degrees
drivetrain.set_turn_threshold(5)

set_turn_constant#

set_turn_constant thay đổi mức độ robot điều chỉnh hướng rẽ.

Giá trị càng cao thì robot càng thực hiện các thao tác điều chỉnh hướng mạnh mẽ hơn. Giá trị càng thấp thì robot càng thực hiện các thao tác điều chỉnh hướng nhẹ nhàng hơn. Giá trị mặc định là 1.0.

Usage:
drivetrain.set_turn_constant(value)

Thông số

Sự miêu tả

value

Hằng số lượt. Giá trị này có thể là số thập phân (float) từ 0,1 đến 4,0. Giá trị mặc định là 1,0.

# Increase the turn constant to 2.0
drivetrain.set_turn_constant(2.0)

Người nhận#

heading#

Hướng quay là hướng mà robot đang đối mặt, được đo bằng độ. Lệnh heading trả về hướng quay hiện tại của robot từ 0 đến 359 độ.

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

Usage:
drivetrain.heading(units)

Thông số

Sự miêu tả

units

Tùy chọn. Đơn vị để quay trở lại hướng: DEGREES (mặc định) hoặc TURNSMột vòng quay tương đương với 360 độ.

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading())

rotation#

Góc quay là mức độ robot đã xoay, được đo bằng độ hoặc vòng quay. Khi bắt đầu một dự án, giá trị góc quay được đặt là 0 độ. rotation sẽ 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ả

units

Tùy chọn. Đơn vị quay trở lại: DEGREES (mặc định) hoặc TURNSMột vòng quay tương đương 360 độ.

# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation())

velocity#

velocity trả về tốc độ di chuyển của robot.

Nó có thể trả về vận tốc dưới dạng phần trăm từ -100% đến 100%, từ -127 vòng/phút đến 127 vòng/phút ( RPM , hoặc theo VelocityUnits.DPS (độ trên giây). Giá trị dương nghĩa là robot đang di chuyển về phía trước. Giá trị âm nghĩa là robot đang di chuyển về phía sau.

Usage:
drivetrain.velocity(units)

Thông số

Sự miêu tả

units

Tùy chọn. Đơn vị trả về vận tốc: PERCENT (mặc định), RPM (vòng/phút), hoặc VelocityUnits.DPS (độ/giây).

current#

current trả về lượng dòng điện mà hệ thống truyền động đang sử dụng, được đo bằng ampe (ampe). Dòng điện là lượng điện năng chảy qua hệ thống truyền động.

Giá trị dòng điện cao hơn có nghĩa là hệ thống truyền động đang sử dụng nhiều dòng điện hơn. Điều này có thể xảy ra khi robot đang đẩy vào một vật thể hoặc cố gắng di chuyển khi bị kẹt.

Điều này có thể được sử dụng để kiểm tra xem hệ thống truyền động có gặp khó khăn trong quá trình vận hành hay không. Nếu dòng điện vẫn cao, hệ thống truyền động có thể bị nóng lên hoặc sử dụng năng lượng kém hiệu quả hơn.

Usage:
drivetrain.current(units)

Thông số

Sự miêu tả

units

Tùy chọn. Đơn vị trả về dòng điện: CurrentUnits.AMP (ampe, mặc định).

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.

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_moving()

Thông số

Sự miêu tả

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

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_turning#

Tham số is_turning trả về giá trị Boolean cho biết robot có đang quay hay không. Tham số 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 quay.

  • False — Robot không quay.

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 : turn_for, turn_to_heading, và turn_to_rotation.

Usage:
drivetrain.is_turning()

Thông số

Sự miêu tả

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

power#

power cho biết lượng điện năng mà hệ thống truyền động đang sử dụng, được đo bằng watt. Power cho thấy hệ thống truyền động đang tiêu thụ năng lượng nhanh như thế nào.

Giá trị công suất cao hơn có nghĩa là hệ thống truyền động đang tiêu thụ năng lượng nhanh hơn. Điều này có thể xảy ra khi robot đang đẩy vào một vật thể hoặc cố gắng di chuyển khi bị kẹt.

Chức năng này có thể được sử dụng để so sánh các chuyển động hoặc kiểm tra xem hệ thống truyền động có đang gặp khó khăn hay không. Nếu công suất vẫn cao, hệ thống truyền động có thể bị nóng lên hoặc sử dụng năng lượng kém hiệu quả hơn.

Usage:
drivetrain.power()

Thông số

Sự miêu tả

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

torque#

Mô-men xoắn thể hiện lực đẩy hoặc lực kéo mà hệ thống truyền động có thể tạo ra khi bánh xe quay.

torque trả về lượng mô-men xoắn mà hệ thống truyền động đang sử dụng, được đo bằng Newton-mét (Nm) hoặc inch-pound (InLb).

Giá trị mô-men xoắn cao hơn có nghĩa là hệ thống truyền động đang đẩy hoặc kéo mạnh hơn. Điều này có thể xảy ra khi robot đang đẩy vào một vật thể hoặc cố gắng di chuyển khi bị kẹt.

Chức năng này có thể được sử dụng để kiểm tra xem hệ thống truyền động có đang gặp khó khăn hay không, hoặc để so sánh lực đẩy cần thiết cho các chuyển động khác nhau.

Usage:
drivetrain.torque(units)

Thông số

Sự miêu tả

units

Tùy chọn. Đơn vị trả về mô-men xoắn: TorqueUnits.NM (newton mét, mặc định) hoặc TorqueUnits.INLB (inch pound).

efficiency#

Hiệu suất efficiency thể hiện mức độ hiệu quả sử dụng năng lượng của hệ thống truyền động, được biểu thị bằng phần trăm từ 0% đến 100%.

Hiệu suất cho thấy bao nhiêu phần trăm công suất của hệ truyền động được sử dụng cho chuyển động. Giá trị hiệu suất càng cao nghĩa là càng nhiều công suất của hệ truyền động được sử dụng để di chuyển. Giá trị hiệu suất thấp có thể xảy ra khi hệ truyền động hoạt động mạnh nhưng không di chuyển nhiều, chẳng hạn như khi robot bị kẹt hoặc đang đẩy vào vật cản.

Điều này có thể được sử dụng để so sánh các chuyển động hoặc kiểm tra xem hệ thống truyền động có đang lãng phí năng lượng thay vì sử dụng nó để chuyển động hay không.

Usage:
drivetrain.efficiency()

Thông số

Sự miêu tả

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

temperature#

temperature trả về nhiệt độ trung bình của hệ thống truyền động theo đơn vị nhiệt độ đã chọn.

Nhiệt độ cho biết động cơ hệ thống truyền động đang nóng lên như thế nào. Nhiệt độ càng cao nghĩa là động cơ càng nóng lên trong quá trình hoạt động. Động cơ cần duy trì nhiệt độ dưới 55°C để hoạt động hết công suất.

Nếu động cơ quá nóng, chúng sẽ giảm dòng điện tối đa để tự bảo vệ. Ở nhiệt độ 70°C, động cơ sẽ ngừng hoạt động cho đến khi nguội hẳn.

Chức năng này có thể được sử dụng để kiểm tra xem hệ thống truyền động có bị quá nóng trong quá trình chuyển động lặp đi lặp lại, hoạt động đường dài hoặc khi nó tác động lực lên vật thể hay không.

Usage:
drivetrain.temperature(units)

Thông số

Sự miêu tả

units

Tùy chọn. Đơn vị nhiệt độ trả về: TemperatureUnits.CELSIUS (mặc định) hoặc TemperatureUnits.FAHRENHEIT.

Các hàm tạo#

Các hàm tạo được sử dụng để tạo các đối tượng DriveTrain và SmartDrive trong mã. Điều này hữu ích khi cấu hình hệ thống truyền động mà không cần sử dụng cửa sổ Thiết bị.

Ít nhất hai đối tượng Motor hoặc MotorGroup phải được tạo trước khi tạo hệ thống truyền động.

DriveTrain#

DriveTrain tạo ra một hệ thống truyền động không có Cảm biến con quay hồi chuyển hoặc Cảm biến quán tính.

Usage:
DriveTrain(lm, rm, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

Tham số

Sự miêu tả

lm

động cơ hoặc nhóm động cơ.

rm

The right motor or motor group.

wheelTravel

Tùy chọn. Chu vi của các bánh xe truyền động. Mặc định là 300 milimét.

trackWidth

Tùy chọn. Khoảng cách giữa bánh xe bên trái và bên phải. Mặc định là 320 milimét.

wheelBase

Tùy chọn. Khoảng cách giữa bánh trước và bánh sau. Mặc định là 320 milimét.

units

Tùy chọn. Đơn vị cho wheelTravel, trackWidthvà wheelBase: MM (milimét, mặc định), INCHEShoặc DistanceUnits.CM (centimet).

externalGearRatio

Tùy chọn. Tỷ số truyền được sử dụng để điều chỉnh quãng đường truyền nếu sử dụng hộp số. Tỷ số này có thể là số nguyên integer hoặc số thập phân (float). Giá trị mặc định là 1.0.

# Create left and right drive motor objects
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT2, 1.0, True)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

# Create two motor group objects for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT3, 1.0, True)
right_motor_b = Motor(Ports.PORT4, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

SmartDrive#

SmartDrive tạo ra một hệ thống truyền động với Cảm biến con quay hồi chuyển hoặc Cảm biến quán tính.

Usage:
SmartDrive(lm, rm, g, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

Tham số

Sự miêu tả

lm

động cơ hoặc nhóm động cơ.

rm

The right motor or motor group.

g

Cảm biến con quay hồi chuyển hoặc Cảm biến quán tính được sử dụng bởi hệ thống truyền động.

wheelTravel

Tùy chọn. Chu vi của các bánh xe truyền động. Mặc định là 300 milimét.

trackWidth

Tùy chọn. Khoảng cách giữa bánh xe bên trái và bên phải. Mặc định là 320 milimét.

wheelBase

Tùy chọn. Khoảng cách giữa bánh trước và bánh sau. Mặc định là 320 milimét.

units

Tùy chọn. Đơn vị cho wheelTravel, trackWidthvà wheelBase: MM (milimét, mặc định), INCHEShoặc DistanceUnits.CM (centimet).

externalGearRatio

Tùy chọn. Tỷ số truyền được sử dụng để điều chỉnh quãng đường truyền nếu sử dụng hộp số. Tỷ số này có thể là số nguyên integer hoặc số thập phân (float). Giá trị mặc định là 1.0.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Make left and right drive motors
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

# Create a SmartDrive object with wheelTravel 200
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

Nếu tạo hệ thống truyền động thông minh với nhiều động cơ, bạn cần tạo các động cơ riêng biệt trước khi nhóm chúng lại thành một nhóm động cơ.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Create two motor groups for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT5, 1.0, True)
right_motor_b = Motor(Ports.PORT6, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

# Create a SmartDrive object with wheelTravel 200 mm
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)