เฉื่อย#
การแนะนำ#
IQ (รุ่นที่ 2) สมอง มีเซ็นเซอร์วัดความเฉื่อยในตัว เซ็นเซอร์นี้จะวัดการเคลื่อนไหวและการหมุนของสมอง
เซ็นเซอร์วัดความเฉื่อยใช้ส่วนประกอบสองส่วนในการทำงานนี้ ไจโรสโคปจะวัดการหมุน เช่น ทิศทาง การหมุน อัตราการหมุน และการวางแนว ส่วนแอ็กเซลเลอโรเมตรจะวัดการเปลี่ยนแปลงของการเคลื่อนที่ เช่น การเร่งความเร็วหรือการลดความเร็วตามแกน x, y และ z
หน้านี้ใช้ brain_inertial เป็นตัวอย่างชื่อเซ็นเซอร์วัดแรงเฉื่อย โปรดแทนที่ด้วยชื่อที่คุณกำหนดเองตามต้องการ
ด้านล่างนี้คือรายการวิธีการทั้งหมดที่มีให้เลือกใช้:
การวางแนว — อ่านและควบคุมทิศทาง การหมุน และการปรับเทียบเซ็นเซอร์
heading— ส่งคืนทิศทางที่เซ็นเซอร์หันไป ตั้งแต่ 0 ถึง 359.99 องศาrotation— ส่งคืนระยะทางที่เซ็นเซอร์หมุนไปcalibrate— ปรับเทียบเซ็นเซอร์เฉื่อยset_heading— ตั้งค่าทิศทางปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็นค่าทิศทางใหม่set_rotation— ตั้งค่าการหมุนปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็นค่าการหมุนใหม่is_calibrating— ส่งคืนว่าเซ็นเซอร์เฉื่อยกำลังทำการปรับเทียบอยู่หรือไม่reset_heading— รีเซ็ตทิศทางปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็น 0 องศาreset_rotation— รีเซ็ตการหมุนปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็น 0 องศาchanged— ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อทิศทางของเซ็นเซอร์ความเฉื่อยเปลี่ยนแปลง
การเคลื่อนที่ — วัดความเร่ง ความเร็วในการหมุน และมุมเอียง
acceleration— ส่งคืนอัตราเร็วที่เซ็นเซอร์เร่งความเร็วหรือชะลอความเร็วบนแกนที่เลือกgyro_rate— ส่งคืนความเร็วในการหมุนของเซ็นเซอร์บนแกนที่เลือกorientation— ส่งคืนมุมม้วน มุมเงย หรือมุมหันเหของเซ็นเซอร์เฉื่อย
ตัวสร้าง — กำหนดค่าและตั้งค่าเซ็นเซอร์วัดความเฉื่อยด้วยตนเอง
Inertial— สร้างเซ็นเซอร์เฉื่อย
ปฐมนิเทศ#
heading#
ทิศทาง (Heading) คือทิศทางที่เซ็นเซอร์หันไป โดยวัดเป็นองศาตั้งแต่ 0 ถึง 359.99 องศา ค่า Heading heading ซึ่งแสดงทิศทางปัจจุบันของเซ็นเซอร์
ทิศทางเริ่มต้นคือ 0 องศา หากเซ็นเซอร์หมุนเลย 359.99 องศา ทิศทางจะวนกลับไปที่ 0 องศา
Usage:
brain_inertial.heading(units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
เลือกได้ตามต้องการ หน่วยวัด: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Rotation is how much the sensor has turned, measured in degrees. Unlike heading, rotation can increase past 359.99 degrees or decrease below 0 degrees. At the beginning of a project, the rotation value is set to 0 degrees. rotation returns the Inertial Sensor’s current rotation.
การหมุนไปทางขวาจะเพิ่มมุมการหมุน และการหมุนไปทางซ้ายจะลดมุมการหมุน ตัวอย่างเช่น การหมุนไปทางขวาครบสองรอบจะทำให้ได้มุมการหมุน 720 องศา การหมุนไปทางซ้ายครบหนึ่งรอบจาก 0 องศาจะทำให้ได้มุมการหมุน -360 องศา
Usage:
brain_inertial.rotation(units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
เลือกได้ตามต้องการ หน่วยการหมุน: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate ปรับเทียบเซ็นเซอร์เฉื่อย บรรทัดถัดไปทั้งหมดจะรอให้การปรับเทียบเสร็จสมบูรณ์ก่อนจึงจะทำงาน การปรับเทียบช่วยให้เซ็นเซอร์วัดการหมุนได้อย่างถูกต้องโดยการวัดและชดเชยสัญญาณรบกวนและการเบี่ยงเบนของเซ็นเซอร์ในช่วงเวลาที่กำหนด ในระหว่างนี้ สมอง ต้องอยู่นิ่งสนิทบนพื้นผิวที่มั่นคง การเคลื่อนไหวในระหว่างการปรับเทียบอาจทำให้ได้ผลลัพธ์ที่ไม่ถูกต้อง
VEX Brain จะพยายามปรับเทียบเซ็นเซอร์วัดความเฉื่อยในตัวโดยอัตโนมัติเมื่อเริ่มต้นทุกโครงการ อย่างไรก็ตาม หากหุ่นยนต์ถูกยกหรือเคลื่อนย้ายในระหว่างการเริ่มต้นโครงการ เซ็นเซอร์อาจไม่สามารถปรับเทียบได้อย่างถูกต้องหรือให้ค่าการปรับเทียบที่ไม่ถูกต้อง
Usage:
brain_inertial.calibrate()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# 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#
ทิศทาง (Heading) คือทิศทางที่เซ็นเซอร์หันไป โดยวัดเป็นองศาตั้งแต่ 0 ถึง 359.99 คำสั่ง set_heading() จะเปลี่ยนทิศทางปัจจุบันของเซ็นเซอร์วัดความเฉื่อยเป็นค่าทิศทางใหม่
ตัวอย่างเช่น หากเซ็นเซอร์หันไปทางขวา การตั้งค่าทิศทางเป็น 0 องศา จะทำให้ตำแหน่งที่หันไปทางขวานั้นกลายเป็น 0 องศาใหม่ จากนั้นเซ็นเซอร์จะสามารถติดตามทิศทางอื่นๆ โดยอิงจากทิศทางใหม่นั้นได้
Usage:
brain_inertial.set_heading(value, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าทิศทาง (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับเซ็นเซอร์ ค่านี้สามารถเป็นได้ตั้งแต่ 0 ถึง 359.99 |
|
เลือกได้ตามต้องการ หน่วยวัด: |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
การหมุนคือจำนวนองศาที่เซ็นเซอร์หมุนไป ต่างจากทิศทาง การหมุนสามารถเพิ่มขึ้นเกิน 359.99 องศา หรือลดลงต่ำกว่า 0 องศาได้ ในตอนเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา คำสั่ง set_rotation() จะเปลี่ยนค่าการหมุนปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็นค่าใหม่
ตัวอย่างเช่น หากเซ็นเซอร์หมุนไปทางขวาครบสองรอบ ค่าการหมุนของเซ็นเซอร์จะเป็น 720 องศา การตั้งค่าการหมุนเป็น 0 องศาจะรีเซ็ตค่าการหมุนจาก 720 เป็น 0 องศา จากนั้นเซ็นเซอร์จะสามารถติดตามการหมุนตามค่าใหม่นั้นได้
Usage:
brain_inertial.set_rotation(value, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าการหมุน (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับเซ็นเซอร์ ค่านี้สามารถเป็นจำนวนเต็มหรือทศนิยม (float) ก็ได้ |
|
เลือกได้ตามต้องการ หน่วยการหมุน: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating จะส่งคืนค่าว่าเซ็นเซอร์ความเฉื่อยกำลังทำการปรับเทียบอยู่หรือไม่
True— เซ็นเซอร์วัดความเฉื่อยกำลังปรับเทียบFalse— เซ็นเซอร์วัดความเฉื่อยไม่ได้รับการปรับเทียบ
Usage:
brain_inertial.is_calibrating()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# 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 รีเซ็ตค่าทิศทางปัจจุบันของเซ็นเซอร์วัดความเฉื่อยเป็น 0 องศา
หลังจากใช้วิธีนี้แล้ว ทิศทางปัจจุบันของเซ็นเซอร์จะกลายเป็นทิศทาง 0 องศาใหม่
Usage:
brain_inertial.reset_heading()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# 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 จะรีเซ็ตการหมุนปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็น 0 องศา
หลังจากใช้วิธีนี้แล้ว เซ็นเซอร์จะติดตามการเลี้ยวในอนาคตโดยเริ่มต้นจากค่าการหมุน 0 องศาใหม่
Usage:
brain_inertial.reset_rotation()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# 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 ลงทะเบียนฟังก์ชันที่จะถูกเรียกเมื่อทิศทางของเซ็นเซอร์ความเฉื่อยเปลี่ยนแปลง
Usage:
brain_inertial.changed(callback, arg)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ฟังก์ชันที่จะทำงานเมื่อทิศทางของเซ็นเซอร์วัดความเฉื่อยเปลี่ยนแปลง |
|
ไม่บังคับ: ชุดอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ |
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)
การเคลื่อนไหว#
acceleration#
ความเร่ง คือ อัตราเร็วที่เซ็นเซอร์เคลื่อนที่เร็วขึ้นหรือช้าลง ค่าความเร่ง acceleration ตั้งแต่ -4.0 G ถึง 4.0 G ในรูปแบบทศนิยม
G คือหน่วยที่ใช้ในการวัดความเร่ง 1 G คือความเร่งประมาณที่คุณรู้สึกจากแรงโน้มถ่วงขณะนั่งอยู่เฉยๆ
ค่าที่ได้อาจเป็นบวกหรือลบ ขึ้นอยู่กับทิศทางของการเร่งความเร็วบนแกนที่เลือก ตัวเลือกแกนได้แก่ XAXIS, YAXISและ ZAXIS
Usage:
brain_inertial.acceleration(axis)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
แกน |
แกนที่ใช้วัดความเร่ง:
|
# 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#
ค่า Gyro rate คือความเร็วในการหมุนของเซ็นเซอร์วัดความเฉื่อย ค่า gyro_rate gyro_rate จะแสดงความเร็วในการหมุนปัจจุบันของเซ็นเซอร์วัดความเฉื่อยในแกนที่เลือก
ค่าที่ได้อาจเป็นบวกหรือลบ ขึ้นอยู่กับทิศทางการหมุนของเซ็นเซอร์บนแกนนั้น
Usage:
brain_inertial.gyro_rate(axis, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
แกนที่จะใช้ในการส่งค่าอัตราการหมุนของไจโรสโคปกลับมา:
|
|
ตัวเลือกเสริม หน่วยอัตราการหมุนของไจโรสโคป:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
ค่าการวางแนว (Orientation) คือมุมปัจจุบันของเซ็นเซอร์ความเฉื่อยบนแกนหมุนที่เลือกไว้ ค่าการวางแนว orientation ที่แสดงค่าการม้วนตัว (roll), การเอียง (pitch) หรือการหัน (yaw) ของเซ็นเซอร์ความเฉื่อย
Roll, Pitch และ Yaw อธิบายถึงวิธีการต่างๆ ที่เซ็นเซอร์สามารถเอียงหรือหมุนได้
Usage:
brain_inertial.orientation(axis, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
มุมการวางแนวที่จะกลับมา:
|
|
เลือกได้ตามต้องการ หน่วยการวางแนว: |
# 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)
ผู้สร้าง#
ตัวสร้าง (Constructor) ใช้สำหรับสร้างวัตถุ Inertial ด้วยตนเอง เช่น เมื่อทำการกำหนดค่าเซ็นเซอร์วัดความเฉื่อยภายนอก VEXcode
Inertial#
Inertial สร้างเซ็นเซอร์วัดแรงเฉื่อย
Usage:
Inertial(smartport)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ตัวเลือกเสริม หากใช้เซ็นเซอร์ความเฉื่อยในตัวของ IQ (รุ่นที่ 2) Brain ไม่จำเป็นต้องใช้ Smart Port หากเชื่อมต่อเซ็นเซอร์ความเฉื่อยภายนอก ให้ระบุ Smart Port ที่เชื่อมต่อเซ็นเซอร์ความเฉื่อย โดยเขียนเป็น |
# 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)


