เฉื่อย#

การแนะนำ#

เซ็นเซอร์วัดความเฉื่อยจะวัดว่าหุ่นยนต์เคลื่อนที่และหมุนอย่างไร

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

เพื่อให้คำสั่ง Inertial ปรากฏใน VEXcode V5 จะต้องกำหนดค่าเซ็นเซอร์ Inertial ในหน้าต่าง Devices ก่อน

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

การวางแนว — อ่านและควบคุมทิศทาง การหมุน และการปรับเทียบเซ็นเซอร์

  • heading — ส่งคืนทิศทางที่เซ็นเซอร์หันไป ตั้งแต่ 0 ถึง 359.99 องศา

  • rotation — ส่งคืนระยะทางที่เซ็นเซอร์หมุนไป

  • gyro_rate — ส่งคืนความเร็วในการหมุนของเซ็นเซอร์บนแกนที่เลือก

  • orientation — ส่งคืนมุมม้วน มุมเงย หรือมุมหันเหของเซ็นเซอร์เฉื่อย

  • set_heading — ตั้งค่าทิศทางปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็นค่าทิศทางใหม่

  • set_rotation — ตั้งค่าการหมุนปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็นค่าการหมุนใหม่

  • calibrate — ปรับเทียบเซ็นเซอร์เฉื่อย

  • reset_heading — รีเซ็ตทิศทางปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็น 0 องศา

  • reset_rotation — รีเซ็ตการหมุนปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็น 0 องศา

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

  • changed — ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อค่าของเซ็นเซอร์ความเฉื่อยเปลี่ยนแปลง

  • installed — ตรวจสอบว่ามีการติดตั้งเซ็นเซอร์เฉื่อยหรือไม่

การเคลื่อนที่ — วัดความเร่ง การชน และพฤติกรรมการเลี้ยว

  • acceleration — ส่งคืนอัตราเร็วที่เซ็นเซอร์เร่งความเร็วหรือชะลอความเร็วบนแกนที่เลือก

  • collision — ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อเซ็นเซอร์เฉื่อยตรวจพบการชน

  • set_turn_type — กำหนดทิศทางการเลี้ยวที่จะส่งค่าหัวทิศทางบวกกลับมา

  • get_turn_type — ส่งคืนทิศทางการเลี้ยวใดที่ส่งคืนค่าหัวทิศทางบวก

ผู้สร้าง

  • Inertial – สร้างเซ็นเซอร์เฉื่อย

ปฐมนิเทศ#

heading#

ทิศทาง (Heading) คือทิศทางที่เซ็นเซอร์หันไป โดยวัดเป็นองศาตั้งแต่ 0 ถึง 359.99 องศา ค่า Heading heading จะแสดงทิศทางปัจจุบันของเซ็นเซอร์ในรูปแบบทศนิยม

ทิศทางเริ่มต้นคือ 0 องศา หากเซ็นเซอร์หมุนเลย 359.99 องศา ทิศทางจะวนกลับไปที่ 0 องศา

Usage:
inertial_1.heading(units)

พารามิเตอร์

คำอธิบาย

units

เลือกได้ตามต้องการ หน่วยวัด: DEGREES (ค่าเริ่มต้น) หรือ TURNS

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

rotation#

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

การหมุนไปทางขวาจะเพิ่มมุมการหมุน และการหมุนไปทางซ้ายจะลดมุมการหมุน ตัวอย่างเช่น การหมุนไปทางขวาครบสองรอบจะทำให้ได้มุมการหมุน 720 องศา การหมุนไปทางซ้ายครบหนึ่งรอบจาก 0 องศาจะทำให้ได้มุมการหมุน -360 องศา

Usage:
inertial_1.rotation(units)

พารามิเตอร์

คำอธิบาย

units

เลือกได้ตามต้องการ หน่วยการหมุน: DEGREES (ค่าเริ่มต้น) หรือ TURNS

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

gyro_rate#

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

ค่าที่ได้อาจเป็นบวกหรือลบ ขึ้นอยู่กับทิศทางการหมุนของเซ็นเซอร์บนแกนนั้น

Usage:
inertial_1.gyro_rate(axis, units)

พารามิเตอร์

คำอธิบาย

axis

แกนที่จะใช้ส่งคืนค่าอัตราการหมุนของไจโรสโคป:

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

units

ตัวเลือกเสริม หน่วยอัตราการหมุนของไจโร:

  • VelocityUnits.DPS (ค่าเริ่มต้น)
  • 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#

Orientation is the Inertial Sensor’s current angle on a selected turning axis. orientation returns the roll, pitch, or yaw of the Inertial Sensor, from -180.00 to 180.00 degrees, as a float.

Roll, Pitch และ Yaw อธิบายถึงวิธีการต่างๆ ที่เซ็นเซอร์สามารถเอียงหรือหมุนได้

Usage:
inertial_1.orientation(type, units)

พารามิเตอร์

คำอธิบาย

type

มุมการวางแนวที่จะส่งคืน:

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

units

ตัวเลือกเสริม หน่วยการวางแนว:

  • DEGREES (ค่าเริ่มต้น)
  • 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#

ทิศทาง (Heading) คือทิศทางที่เซ็นเซอร์หันไป โดยวัดเป็นองศาตั้งแต่ 0 ถึง 359.99 คำสั่ง set_heading จะเปลี่ยนทิศทางปัจจุบันของเซ็นเซอร์วัดความเฉื่อยเป็นค่าทิศทางใหม่

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

Usage:
inertial_1.set_heading(value, units)

พารามิเตอร์

คำอธิบาย

value

ค่าทิศทาง (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับเซ็นเซอร์ ค่านี้สามารถเป็นได้ตั้งแต่ 0 ถึง 359.99

units

เลือกได้ตามต้องการ หน่วยวัด: DEGREES (ค่าเริ่มต้น) หรือ TURNS

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

set_rotation#

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

ตัวอย่างเช่น หากเซ็นเซอร์หมุนไปทางขวาครบสองรอบ ค่าการหมุนของเซ็นเซอร์จะเป็น 720 องศา การตั้งค่าการหมุนเป็น 0 องศาจะรีเซ็ตค่าการหมุนจาก 720 เป็น 0 องศา จากนั้นเซ็นเซอร์จะสามารถติดตามการหมุนตามค่าใหม่นั้นได้

Usage:
inertial_1.set_rotation(value, units)

พารามิเตอร์

คำอธิบาย

value

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

units

เลือกได้ตามต้องการ หน่วยการหมุน: DEGREES (ค่าเริ่มต้น) หรือ TURNS

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

calibrate#

calibrate ปรับเทียบเซ็นเซอร์ความเฉื่อย

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

โปรเจ็กต์จะรอจนกว่าการปรับเทียบจะเสร็จสิ้นก่อนจึงจะเริ่มรันโค้ดบรรทัดถัดไป

Usage:
inertial_1.calibrate()

พารามิเตอร์

คำอธิบาย

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

# 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 จะรีเซ็ตค่าทิศทางปัจจุบันของเซ็นเซอร์วัดความเฉื่อยเป็น 0 องศา

หลังจากใช้วิธีนี้แล้ว ทิศทางปัจจุบันของเซ็นเซอร์จะกลายเป็นทิศทาง 0 องศาใหม่

Usage:
inertial_1.reset_heading()

พารามิเตอร์

คำอธิบาย

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

reset_rotation#

reset_rotation จะรีเซ็ตการหมุนปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็น 0 องศา

หลังจากใช้วิธีนี้แล้ว เซ็นเซอร์จะติดตามการเลี้ยวในอนาคตโดยเริ่มต้นจากค่าการหมุน 0 องศาใหม่

Usage:
inertial_1.reset_rotation()

พารามิเตอร์

คำอธิบาย

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

is_calibrating#

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

  • True — เซ็นเซอร์วัดความเฉื่อยกำลังปรับเทียบ

  • False — เซ็นเซอร์ความเฉื่อยไม่ได้รับการปรับเทียบ

Usage:
inertial_1.is_calibrating()

พารามิเตอร์

คำอธิบาย

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

changed#

changed ลงทะเบียนฟังก์ชันที่จะถูกเรียกใช้ทุกครั้งที่ค่าของเซ็นเซอร์ความเฉื่อยเปลี่ยนแปลง

Usage:
inertial_1.changed(callback, arg)

พารามิเตอร์

คำอธิบาย

callback

A previously defined function that executes when the Inertial Sensor’s value changes.

arg

ตัวเลือกเสริม ทูเปิลที่มีอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ ดู การใช้ฟังก์ชันที่มีพารามิเตอร์ สำหรับข้อมูลเพิ่มเติม

def my_function():
  brain.screen.print("Value changed!!")

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

installed#

installed ตรวจสอบว่ามีการติดตั้งเซ็นเซอร์วัดแรงเฉื่อยหรือไม่

  • True — ติดตั้งเซ็นเซอร์วัดแรงเฉื่อยเรียบร้อยแล้ว

  • False — ไม่ได้ติดตั้งเซ็นเซอร์วัดแรงเฉื่อย

Usage:
inertial_1.installed()

พารามิเตอร์

คำอธิบาย

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

การเคลื่อนไหว#

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.

G เป็นหน่วยที่ใช้ในการวัดความเร่ง 1 G คือความเร่งประมาณที่คุณรู้สึกจากแรงโน้มถ่วงขณะนั่งอยู่เฉยๆ

ค่าที่ได้อาจเป็นบวกหรือลบ ขึ้นอยู่กับทิศทางของการเร่งความเร็วบนแกนที่เลือก ตัวเลือกแกนได้แก่ AxisType.XAXIS, AxisType.YAXISและ AxisType.ZAXIS

Usage:
inertial_1.acceleration(type)

พารามิเตอร์

คำอธิบาย

type

แกนที่ใช้วัดความเร่ง:

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

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

collision#

collision ลงทะเบียนฟังก์ชันที่จะถูกเรียกใช้เมื่อใดก็ตามที่เซ็นเซอร์ความเฉื่อยตรวจพบแรงกระแทกหรือการชนอย่างกะทันหัน

Usage:
inertial_1.collision(callback, arg)

พารามิเตอร์

คำอธิบาย

callback

A previously defined function that executes when a collision is detected.

arg

ตัวเลือกเสริม ทูเปิลที่มีอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ ดู การใช้ฟังก์ชันที่มีพารามิเตอร์ สำหรับข้อมูลเพิ่มเติม

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 กำหนดทิศทางการเลี้ยวที่จะส่งคืนค่าหัวทิศทางที่เป็นบวก

Usage:
inertial_1.set_turn_type(turntype)

พารามิเตอร์

คำอธิบาย

turntype

เลือกประเภทการเลี้ยว:

  • LEFT
  • RIGHT

get_turn_type#

get_turn_type จะส่งคืนค่าทิศทางการเลี้ยวที่เป็นบวก

  • LEFT — การเลี้ยวซ้ายจะให้ค่าทิศทางเป็นบวก

  • RIGHT — การเลี้ยวขวาจะให้ค่าทิศทางเป็นบวก

Usage:
inertial_1.get_turn_type()

พารามิเตอร์

คำอธิบาย

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

ผู้สร้าง#

Inertial#

Inertial สร้างเซ็นเซอร์วัดแรงเฉื่อย

Usage:
Inertial(port)

พารามิเตอร์

คำอธิบาย

port

พอร์ตอัจฉริยะที่เชื่อมต่อกับเซ็นเซอร์วัดแรงเฉื่อย มีจำนวน 1 ถึง 21 พอร์ต

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