Quán tính#

Giới thiệu#

Cảm biến quán tính đo lường chuyển động và hướng quay của robot.

Cảm biến quán tính sử dụng hai bộ phận để thực hiện điều này. Con quay hồi chuyển đo lường sự quay, chẳng hạn như hướng, độ quay, tốc độ quay và hướng định vị. Gia tốc kế đo lường sự thay đổi trong chuyển động, chẳng hạn như tăng tốc hoặc giảm tốc dọc theo các trục x, y và z.

Để các lệnh quán tính hiển thị trong VEXcode V5, cần phải cấu hình Cảm biến quán tính trong cửa sổ Thiết bị.

Dưới đây là danh sách các phương pháp có sẵn:

Định hướng — Đọc và điều khiển hướng, xoay và hiệu chuẩn cảm biến.

  • heading — Trả về hướng mà cảm biến đang hướng tới, từ 0 đến 359,99 độ.

  • rotation — Trả về mức độ xoay của cảm biến.

  • gyro_rate — Trả về tốc độ quay của cảm biến trên trục đã chọn.

  • orientation — Trả về góc cuộn, nghiêng hoặc xoay của Cảm biến quán tính.

  • set_heading — Đặt hướng hiện tại của Cảm biến quán tính thành một giá trị hướng mới.

  • set_rotation — Đặt góc quay hiện tại của Cảm biến quán tính thành một giá trị góc quay mới.

  • calibrate — Hiệu chuẩn Cảm biến quán tính.

  • reset_heading — Đặt lại hướng hiện tại của Cảm biến quán tính về 0 độ.

  • reset_rotation — Đặt lại góc quay hiện tại của Cảm biến quán tính về 0 độ.

  • is_calibrating — Trả về trạng thái hiện tại của Cảm biến quán tính đang hiệu chuẩn.

  • changed — Đăng ký một hàm để chạy khi giá trị của Cảm biến quán tính thay đổi.

  • installed — Kiểm tra xem Cảm biến quán tính có được cài đặt hay không.

Chuyển động — Đo gia tốc, va chạm và hướng chuyển động.

  • acceleration — Trả về tốc độ tăng hoặc giảm của cảm biến trên trục đã chọn.

  • collision — Đăng ký một hàm để chạy khi Cảm biến quán tính phát hiện va chạm.

  • set_turn_type — Đặt hướng rẽ trả về giá trị hướng dương.

  • get_turn_type — Trả về hướng rẽ nào trả về giá trị hướng dương.

Người xây dựng

  • Inertial – Tạo cảm biến quán tính.

Định hướng#

heading#

Hướng (heading) là hướng mà cảm biến đang đối mặt, được đo bằng độ từ 0 đến 359,99. Lệnh heading trả về hướng hiện tại của cảm biến dưới dạng số thực.

Góc quay ban đầu là 0 độ. Nếu cảm biến quay vượt quá 359,99 độ, góc quay sẽ quay trở lại 0 độ.

Usage:
inertial_1.heading(units)

Thông số

Sự miêu tả

units

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

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

rotation#

Góc quay là lượng mà cảm biến đã xoay, được đo bằng độ. Không giống như hướng, góc quay có thể tăng lên quá 359,99 độ hoặc giảm xuống dưới 0 độ. 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 Cảm biến quán tính dưới dạng số thực.

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 độ. Xoay một vòng sang trái từ vị trí 0 độ sẽ tạo ra góc quay -360 độ.

Usage:
inertial_1.rotation(units)

Thông số

Sự miêu tả

units

Tùy chọn. Đơn vị xoay: DEGREES (mặc định) hoặc TURNS

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

gyro_rate#

Tốc độ quay con quay hồi chuyển là tốc độ quay của cảm biến quán tính. gyro_rate trả về tốc độ quay hiện tại của cảm biến quán tính trên trục đã chọn dưới dạng số thực.

Giá trị có thể dương hoặc âm tùy thuộc vào hướng quay của cảm biến trên trục đó.

Usage:
inertial_1.gyro_rate(axis, units)

Thông số

Sự miêu tả

axis

Trục dùng để trả về tốc độ quay hồi chuyển:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

units

Tùy chọn. Đơn vị tốc độ quay hồi chuyển:

  • VelocityUnits.DPS (mặc định)
  • VelocityUnits.RPM
  • VelocityUnits.PERCENT

# Display the rate of change of
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(inertial_1.gyro_rate(AxisType.ZAXIS, VelocityUnits.DPS))
drivetrain.stop()

orientation#

Định hướng là góc hiện tại của Cảm biến quán tính trên trục quay đã chọn. Định hướng orientation Cảm biến quán tính, từ -180,00 đến 180,00 độ, dưới dạng số thực.

Các thuật ngữ “roll”, “pitch” và “yaw” mô tả các hướng khác nhau mà cảm biến có thể nghiêng hoặc xoay.

Usage:
inertial_1.orientation(type, units)

Thông số

Sự miêu tả

type

Góc định hướng cần quay trở lại:

  • AxisType.PITCH
  • AxisType.ROLL
  • AxisType.YAW

units

Tùy chọn. Đơn vị định hướng:

  • DEGREES (mặc định)
  • RotationUnits.TURNS

# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
    brain.screen.clear_screen()
    brain.screen.print(inertial_1.orientation(AxisType.ROLL, DEGREES))
    brain.screen.next_row()
    brain.screen.print(inertial_1.orientation(AxisType.PITCH, DEGREES))
    brain.screen.next_row()
    brain.screen.print(inertial_1.orientation(AxisType.YAW, DEGREES))
    brain.screen.next_row()
    brain.screen.set_cursor(1, 1)
    wait(0.1, SECONDS)

set_heading#

Hướng (heading) là hướng mà cảm biến đang đối mặt, được đo bằng độ từ 0 đến 359,99. Lệnh set_heading thay đổi hướng hiện tại của Cảm biến quán tính thành một giá trị hướng mới.

Ví dụ, nếu cảm biến đã xoay sang bên phải, việc đặt hướng về 0 độ sẽ biến vị trí hướng sang phải đó thành 0 độ mới. Sau đó, cảm biến có thể theo dõi các hướng khác dựa trên hướng mới đó.

Usage:
inertial_1.set_heading(value, units)

Thông số

Sự miêu tả

value

Giá trị góc quay, tính bằng độ, cần thiết lập cho cảm biến. Giá trị này có thể nằm trong khoảng từ 0 đến 359,99.

units

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

# Turn the robot around
inertial_1.set_heading(180, DEGREES)
drivetrain.turn_to_heading(0)

set_rotation#

Góc quay là mức độ xoay của cảm biến, được đo bằng độ. Không giống như hướng, góc quay có thể tăng lên quá 359,99 độ hoặc giảm xuống dưới 0 độ. 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 Cảm biến quán tính thành một giá trị mới.

Ví dụ, nếu cảm biến đã quay hai vòng hoàn chỉnh sang phải, giá trị quay của nó sẽ là 720 độ. Việc đặt giá trị quay về 0 độ sẽ thiết lập lại giá trị quay từ 720 về 0 độ. Sau đó, cảm biến có thể theo dõi các vòng quay dựa trên giá trị mới này.

Usage:
inertial_1.set_rotation(value, units)

Thông số

Sự miêu tả

value

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

units

Tùy chọn. Đơn vị xoay: DEGREES (mặc định) hoặc TURNS

# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)

calibrate#

calibrate hiệu chỉnh Cảm biến quán tính.

Hiệu chuẩn giúp cảm biến đo các góc quay một cách chính xác. Giữ cảm biến cố định trong quá trình hiệu chuẩn. Nếu cảm biến di chuyển trong quá trình hiệu chuẩn, các giá trị hướng, độ xoay, tốc độ quay hồi chuyển và hướng định vị có thể không được đo 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.

Usage:
inertial_1.calibrate()

Thông số

Sự miêu tả

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

# Start calibration.
inertial_1.calibrate()
# Print that the Inertial Sensor is calibrating while
# waiting for it to finish calibrating.
while inertial_1.is_calibrating():
    brain.screen.clear()
    brain.screen.print("Inertial Sensor Calibrating")
    wait(50, MSEC)

reset_heading#

reset_heading đặt lại hướng hiện tại của Cảm biến quán tính về 0 độ.

Sau khi sử dụng phương pháp này, hướng hiện tại của cảm biến sẽ trở thành hướng 0 độ mới.

Usage:
inertial_1.reset_heading()

Thông số

Sự miêu tả

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

reset_rotation#

reset_rotation đặt lại góc quay hiện tại của Cảm biến quán tính về 0 độ.

Sau khi sử dụng phương pháp này, cảm biến sẽ theo dõi các lượt rẽ tiếp theo từ giá trị xoay 0 độ mới.

Usage:
inertial_1.reset_rotation()

Thông số

Sự miêu tả

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

is_calibrating#

is_calibrating trả về trạng thái hiện tại của Cảm biến quán tính, cho biết liệu cảm biến này có đang được hiệu chuẩn hay không.

  • True — Cảm biến quán tính đang hiệu chuẩn.

  • False — Cảm biến quán tính không đang hiệu chuẩn.

Usage:
inertial_1.is_calibrating()

Thông số

Sự miêu tả

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

changed#

changed đăng ký một hàm sẽ được gọi bất cứ khi nào giá trị của Cảm biến quán tính thay đổi.

Usage:
inertial_1.changed(callback, arg)

Thông số

Sự miêu tả

callback

Một hàm được định nghĩa trước đó sẽ được thực thi khi giá trị của Cảm biến quán tính thay đổi.

arg

Tùy chọn. Một bộ 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 my_function():
  brain.screen.print("Value changed!!")

# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)

installed#

installed kiểm tra xem Cảm biến quán tính đã được cài đặt chưa.

  • True — Cảm biến quán tính đã được lắp đặt.

  • False — Cảm biến quán tính chưa được lắp đặt.

Usage:
inertial_1.installed()

Thông số

Sự miêu tả

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

Cử động#

acceleration#

Acceleration is how quickly the sensor is speeding up or slowing down. acceleration returns the acceleration of the Inertial Sensor on the selected axis, from -4.0 G to 4.0 G, as a float.

A G là đơn vị dùng để đo gia tốc. 1 G xấp xỉ gia tốc trọng trường mà bạn cảm nhận được khi ngồi yên.

Giá trị có thể dương hoặc âm tùy thuộc vào hướng gia tốc trên trục đã chọn. Các tùy chọn trục là AxisType.XAXIS, AxisType.YAXIS, và AxisType.ZAXIS.

Usage:
inertial_1.acceleration(type)

Thông số

Sự miêu tả

type

Trục dùng để đo gia tốc:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

# Return the acceleration for the Z axis of the Inertial Sensor
zaccel = inertial_1.acceleration(AxisType.ZAXIS)

collision#

Lệnh collision đăng ký một hàm sẽ được gọi bất cứ khi nào Cảm biến quán tính phát hiện va chạm đột ngột.

Usage:
inertial_1.collision(callback, arg)

Thông số

Sự miêu tả

callback

Một hàm được định nghĩa trước đó sẽ được thực thi khi phát hiện va chạm.

arg

Tùy chọn. Một bộ 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 my_function():
  brain.screen.print("Collision!")

# Call my_function whenever a collision is detected
inertial_1.collision(my_function)

set_turn_type#

set_turn_type thiết lập hướng rẽ trả về giá trị hướng dương.

Usage:
inertial_1.set_turn_type(turntype)

Thông số

Sự miêu tả

turntype

Loại hướng rẽ cần thiết lập:

  • LEFT
  • RIGHT

get_turn_type#

get_turn_type trả về hướng rẽ nào, trả về các giá trị hướng dương.

  • LEFT — Rẽ trái sẽ trả về giá trị hướng dương.

  • RIGHT — Rẽ phải sẽ trả về giá trị hướng dương.

Usage:
inertial_1.get_turn_type()

Thông số

Sự miêu tả

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

Các hàm tạo#

Inertial#

Inertial tạo ra một Cảm biến quán tính.

Usage:
Inertial(port)

Thông số

Sự miêu tả

port

Cổng thông minh mà cảm biến quán tính được kết nối, từ 1 đến 21.

# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)