ไจโร#

การแนะนำ#

เซ็นเซอร์ไจโรเป็นเซ็นเซอร์ตรวจจับการเคลื่อนไหวที่ตรวจจับการหมุนรอบแกนเดียว สามารถวัดได้ว่าหุ่นยนต์หมุนไปมากแค่ไหน ทำให้สามารถติดตามทิศทางและการวางตัวได้

หน้านี้ใช้ drivetrain_gyro เป็นตัวอย่างชื่อเซ็นเซอร์ไจโร โปรดแทนที่ด้วยชื่อที่คุณกำหนดเองตามต้องการ

ด้านล่างนี้คือรายการวิธีการทั้งหมดที่มีให้เลือกใช้:

การดำเนินการ — ปรับเทียบหรือปรับทิศทางและการหมุนของเซ็นเซอร์ไจโร

  • calibrate — ปรับเทียบเซ็นเซอร์ไจโรเพื่อการติดตามทิศทางที่เสถียร

  • set_heading — ตั้งค่าทิศทางของเซ็นเซอร์ไจโรเป็นค่าที่ระบุ

  • set_rotation — ตั้งค่าการหมุนของเซ็นเซอร์ไจโร

  • reset_heading — ตั้งค่าทิศทางของเซ็นเซอร์ไจโรเป็น 0

  • reset_rotation — ตั้งค่าการหมุนของเซ็นเซอร์ไจโรเป็น 0

ตัวอ่านค่า — อ่านค่าทิศทาง การหมุน และสถานะจากเซ็นเซอร์ไจโร

  • heading — ส่งคืนหัวข้อปัจจุบัน

  • rotation — ส่งคืนการหมุนสะสม

  • rate — ส่งคืนความเร็วเชิงมุมรอบแกน x, y หรือ z

  • is_calibrating — ส่งคืนว่าเซ็นเซอร์ไจโรกำลังทำการปรับเทียบอยู่หรือไม่

  • installed — ส่งคืนว่าเซ็นเซอร์ไจโรเชื่อมต่อกับสมองหรือไม่

ฟังก์ชันเรียกกลับ — เรียกใช้โค้ดเมื่อเซ็นเซอร์ไจโรตรวจจับการเคลื่อนไหวหรือการเปลี่ยนแปลง

  • changed — ลงทะเบียนฟังก์ชันที่จะเรียกเมื่อเซ็นเซอร์ไจโรตรวจพบการเปลี่ยนแปลง

ตัวสร้าง — กำหนดค่าและตั้งค่าเซ็นเซอร์ไจโรด้วยตนเอง

  • Gyro — สร้างเซ็นเซอร์ไจโร

การกระทำ#

calibrate#

calibrate จะทำการปรับเทียบเซ็นเซอร์ไจโร บรรทัดคำสั่งถัดไปทั้งหมดจะรอจนกว่าการปรับเทียบจะเสร็จสมบูรณ์ก่อนจึงจะดำเนินการ การปรับเทียบเป็นกระบวนการภายในที่วัดและชดเชยสัญญาณรบกวนและการเบี่ยงเบนของเซ็นเซอร์ในช่วงเวลาที่กำหนด ในระหว่างนี้ เซ็นเซอร์ไจโรจะต้องอยู่นิ่งสนิท (เช่น บนพื้นผิวที่มั่นคงโดยไม่มีการเคลื่อนไหวภายนอกใดๆ) การเคลื่อนไหวในระหว่างการปรับเทียบจะทำให้ได้ผลลัพธ์ที่ไม่ถูกต้อง

Usage:
calibrate()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

# Start Gyro Sensor calibration
drivetrain_gyro.calibrate()
# Print after calibration
while drivetrain_gyro.is_calibrating():
    wait(0.1, SECONDS)
brain.screen.print("Done!")

set_heading#

set_heading ตั้งค่าทิศทางของเซ็นเซอร์ไจโรให้เป็นค่าเฉพาะ

Usage:
set_heading(value, units)

พารามิเตอร์

คำอธิบาย

ค่า

ค่าหัวเรื่องที่จะตั้งค่า

หน่วย

ไม่บังคับ หน่วยที่ใช้แทนหัวข้อใหม่:

  • DEGREES (ค่าเริ่มต้น)
  • TURNS
# Turn the robot around
drivetrain_gyro.set_heading(180)
drivetrain.turn_to_heading(0)

set_rotation#

set_rotation กำหนดค่าการหมุนของเซ็นเซอร์ไจโรให้เป็นค่าเฉพาะ

Usage:
set_rotation(value, units)

พารามิเตอร์

คำอธิบาย

value

ค่าหัวเรื่องที่จะตั้งค่า

units

ตัวเลือกเสริม หน่วยที่ใช้แสดงค่าการหมุนใหม่:

  • DEGREES (ค่าเริ่มต้น)
  • TURNS
# Turn the robot around
drivetrain_gyro.set_rotation(-180)
drivetrain.turn_to_rotation(0)

reset_heading#

reset_heading จะรีเซ็ตค่าทิศทางของเซ็นเซอร์ไจโรเป็น 0

Usage:
reset_heading()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5,SECONDS)
drivetrain_gyro.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)

reset_rotation#

reset_rotation จะรีเซ็ตการหมุนของเซ็นเซอร์ไจโรเป็น 0

Usage:
reset_rotation()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5,SECONDS)
drivetrain_gyro.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)

ผู้รับ#

heading#

heading จะส่งคืนค่าทิศทางปัจจุบันของเซ็นเซอร์ไจโร

Usage:
heading(units)

พารามิเตอร์

คำอธิบาย

units

(ไม่บังคับ) หน่วยที่ใช้แสดงทิศทาง:

  • DEGREES (ค่าเริ่มต้น)
  • TURNS
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(drivetrain_gyro.heading())

rotation#

การหมุน rotation การหมุนปัจจุบันของเซ็นเซอร์ไจโร

Usage:
rotation(units)

พารามิเตอร์

คำอธิบาย

units

ตัวเลือกเสริม หน่วยที่ใช้แสดงการหมุน:

  • DEGREES (ค่าเริ่มต้น)
  • TURNS
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(drivetrain_gyro.rotation())

rate#

rate จะส่งคืนค่าอัตราการเปลี่ยนแปลงปัจจุบันของการหมุนของเซ็นเซอร์ไจโรในหน่วยที่ระบุ

Usage:
rate(units)

พารามิเตอร์

คำอธิบาย

units

ตัวเลือกเสริม หน่วยที่ใช้แสดงอัตราการหมุนของไจโร:

  • DPS (ค่าเริ่มต้น)
  • RPM
  • PERCENT
# Display the rate of change of 
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(drivetrain_gyro.rate())
drivetrain.stop()

is_calibrating#

is_calibrating ตรวจสอบว่าเซ็นเซอร์ไจโรกำลังทำการปรับเทียบอยู่หรือไม่

  • True — กำลังปรับเทียบเซ็นเซอร์ไจโร

  • False — เซ็นเซอร์ไจโรไม่ได้รับการปรับเทียบ

Usage:
is_calibrating()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

# Start Gyro Sensor calibration.
drivetrain_gyro.calibrate()
# Print after calibration
while drivetrain_gyro.is_calibrating():
    wait(0.1, SECONDS)
brain.screen.print("Done!")

installed#

installed จะส่งคืนค่าบูลีนที่ระบุว่าเซ็นเซอร์ไจโรเชื่อมต่อกับสมองหรือไม่

  • True — เซ็นเซอร์ไจโรเชื่อมต่อกับสมอง

  • False — เซ็นเซอร์ไจโรไม่ได้เชื่อมต่อกับสมอง

Usage:
installed()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

# Display a message if the Gyro Sensor is
# installed.
if drivetrain_gyro.installed():
    brain.screen.print("Installed!")

การเรียกกลับ#

changed#

changed ลงทะเบียนฟังก์ชันเรียกกลับสำหรับเมื่อทิศทางของเซ็นเซอร์ไจโรเปลี่ยนแปลง

Usage:
changed(callback, arg)

พารามิเตอร์

คำอธิบาย

callback

ฟังก์ชันเรียกกลับที่จะถูกเรียกเมื่อทิศทางของเซ็นเซอร์ไจโรเปลี่ยนแปลง

arg

ไม่บังคับ: ชุดอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ

def gyro_changed():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Heading: ")
    brain.screen.print(drivetrain_gyro.heading()) 
# Display the heading when the gyro detects a change
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
drivetrain_gyro.changed(gyro_changed)

ผู้สร้าง#

ตัวสร้าง (Constructor) ใช้สำหรับสร้างอ็อบเจ็กต์ Gyro ด้วยตนเอง ซึ่งจำเป็นสำหรับการกำหนดค่าเซ็นเซอร์ Gyro นอก VEXcode

Gyro#

Gyro สร้างเซ็นเซอร์ไจโร

Usage:
Gyro(smartport)

พารามิเตอร์

คำอธิบาย

smartport

พอร์ตอัจฉริยะที่เชื่อมต่อกับเซ็นเซอร์ไจโร จะเขียนแทนด้วย PORTx โดยที่ x คือหมายเลขของพอร์ต

# Create the Brain
brain = Brain()
# When constructing Gyro Sensor "drivetrain_gyro" with a 
# SmartDrive "drivetrain"
drivetrain_gyro = Gyro(Ports.PORT1)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, drivetrain_gyro, 200)

drivetrain_gyro.set_heading(180)
drivetrain.turn_to_heading(0)