Quán tính#
Giới thiệu#
IQ (thế hệ thứ 2) Bộ não bao gồm Cảm biến quán tính tích hợp. Cảm biến này đo lường cách Bộ não di chuyển và xoay.
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.
Trang này sử dụng brain_inertial làm ví dụ về tên Cảm biến quán tính. Hãy thay thế nó bằng tên do bạn cấu hình nếu cần.
Dưới đây là danh sách tất cả các phương pháp hiện có:
Đị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.calibrate— Hiệu chuẩn 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.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.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 độ.changed— Đăng ký một hàm để chạy khi hướng của Cảm biến quán tính thay đổi.
Chuyển động — Đo gia tốc, tốc độ quay và độ nghiêng.
acceleration— Trả về tốc độ tăng hoặc giảm của cảm biến trên trục đã chọ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.
Hàm khởi tạo — Tự tay khởi tạo và cấu hình cảm biến quán tính.
Inertial— Tạo một 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. heading trả về hướng hiện tại của cảm biến.
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:
brain_inertial.heading(units)
Thông số |
Sự miêu tả |
|---|---|
|
Tùy chọn. Đơn vị hướng: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.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.
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:
brain_inertial.rotation(units)
Thông số |
Sự miêu tả |
|---|---|
|
Tùy chọn. Đơn vị xoay: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate hiệu chỉnh Cảm biến quán tính. Tất cả các dòng tiếp theo sẽ đợi quá trình hiệu chỉnh hoàn tất trước khi chạy. Hiệu chỉnh giúp cảm biến đo các lượt quay chính xác bằng cách đo và bù nhiễu và độ trôi của cảm biến trong một khoảng thời gian xác định. Trong thời gian này, Bộ não phải hoàn toàn đứng yên trên một bề mặt ổn định. Chuyển động trong quá trình hiệu chỉnh có thể tạo ra kết quả không chính xác.
Bộ điều khiển VEX Brain tự động cố gắng hiệu chỉnh cảm biến quán tính tích hợp khi bắt đầu mỗi dự án. Tuy nhiên, nếu robot đang được mang hoặc di chuyển trong quá trình bắt đầu dự án, cảm biến có thể không hiệu chỉnh đúng cách hoặc cho kết quả hiệu chỉnh không chính xác.
Usage:
brain_inertial.calibrate()
Tham số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
set_heading#
Hướng là hướng mà cảm biến đang đối mặt, được đo bằng độ từ 0 đến 359,99. 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:
brain_inertial.set_heading(value, units)
Thông số |
Sự miêu tả |
|---|---|
|
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. |
|
Tùy chọn. Đơn vị hướng: |
# Turn the robot around
brain_inertial.set_heading(180)
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 toàn 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:
brain_inertial.set_rotation(value, units)
Thông số |
Sự miêu tả |
|---|---|
|
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). |
|
Tùy chọn. Đơn vị xoay: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
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:
brain_inertial.is_calibrating()
Tham số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
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:
brain_inertial.reset_heading()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)
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:
brain_inertial.reset_rotation()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)
changed#
changed đăng ký một hàm sẽ được gọi khi hướng của Cảm biến quán tính thay đổi.
Usage:
brain_inertial.changed(callback, arg)
Thông số |
Sự miêu tả |
|---|---|
|
Một hàm được thực thi khi hướng của cảm biến quán tính thay đổi. |
|
Tùy chọn. Một bộ giá trị (tuple) các tham số để truyền cho hàm gọi lại. |
def heading_changed():
brain.screen.set_cursor(1, 1)
brain.screen.clear_screen()
brain.screen.print("my heading ")
brain.screen.next_row()
brain.screen.print("has changed!")
wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)
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à XAXIS, YAXISvà ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Thông số |
Sự miêu tả |
|---|---|
trục |
Trục dùng để đo gia tốc:
|
# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
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.
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:
brain_inertial.gyro_rate(axis, units)
Thông số |
Sự miêu tả |
|---|---|
|
Trục để trả về tốc độ con quay hồi chuyển:
|
|
Tùy chọn. Đơn vị tốc độ quay hồi chuyển:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
Hướng (Orientation) là góc hiện tại của Cảm biến quán tính trên trục quay đã chọn. orientation trả về góc cuộn (roll), góc nghiêng (pitch) hoặc góc lệch (yaw) của Cảm biến quán tính.
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:
brain_inertial.orientation(axis, units)
Thông số |
Sự miêu tả |
|---|---|
|
Góc định hướng để quay trở lại:
|
|
Tùy chọn. Đơn vị định hướng: |
# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
brain.screen.clear_screen()
brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
Các hàm tạo#
Các hàm tạo được sử dụng để tạo thủ công các đối tượng Inertial , chẳng hạn như khi cấu hình Cảm biến quán tính bên ngoài VEXcode.
Inertial#
Inertial tạo ra một Cảm biến quán tính.
Usage:
Inertial(smartport)
Tham số |
Sự miêu tả |
|---|---|
|
Tùy chọn. Nếu sử dụng Cảm biến quán tính tích hợp của IQ (thế hệ thứ 2) Brain, thì không cần Cổng thông minh. Nếu kết nối Cảm biến quán tính bên ngoài, hãy chỉ định Cổng thông minh mà Cảm biến quán tính được kết nối, được viết dưới dạng |
# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)


