เฉื่อย#
การแนะนำ#
เซ็นเซอร์วัดความเฉื่อยจะวัดว่าหุ่นยนต์เคลื่อนที่และหมุนอย่างไร
เซ็นเซอร์วัดความเฉื่อยใช้ส่วนประกอบสองส่วนในการทำงานนี้ ไจโรสโคปจะวัดการหมุน เช่น ทิศทาง การหมุน อัตราการหมุน และการวางแนว ส่วนแอ็กเซลเลอโรเมตรจะวัดการเปลี่ยนแปลงของการเคลื่อนที่ เช่น การเร่งความเร็วหรือการลดความเร็วตามแกน x, y และ z
ด้านล่างนี้คือรายการวิธีการที่มีให้เลือกใช้:
การวางแนว — อ่านและควบคุมทิศทาง การหมุน และการปรับเทียบเซ็นเซอร์
heading— ส่งคืนทิศทางที่เซ็นเซอร์หันไป ตั้งแต่ 0 ถึง 359.99 องศาrotation— ส่งคืนระยะทางที่เซ็นเซอร์หมุนไปgyro_rate— ส่งคืนความเร็วในการหมุนของเซ็นเซอร์บนแกนที่เลือกorientation— ส่งคืนมุมม้วน มุมเงย หรือมุมหันเหของเซ็นเซอร์เฉื่อยcalibrate— ปรับเทียบเซ็นเซอร์เฉื่อยset_heading— ตั้งค่าทิศทางปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็นค่าทิศทางใหม่set_rotation— ตั้งค่าการหมุนปัจจุบันของเซ็นเซอร์ความเฉื่อยเป็นค่าการหมุนใหม่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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
เลือกได้ตามต้องการ หน่วยวัด: |
# 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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
เลือกได้ตามต้องการ หน่วยการหมุน: |
# 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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
แกนที่จะใช้ส่งคืนค่าอัตราการหมุนของไจโรสโคป:
|
|
ตัวเลือกเสริม หน่วยอัตราการหมุนของไจโร:
|
# 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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
มุมการวางแนวที่จะส่งคืน:
|
|
ตัวเลือกเสริม หน่วยการวางแนว:
|
# 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)
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)
set_heading#
ทิศทาง (Heading) คือทิศทางที่เซ็นเซอร์หันไป โดยวัดเป็นองศาตั้งแต่ 0 ถึง 359.99 คำสั่ง set_heading จะเปลี่ยนทิศทางปัจจุบันของเซ็นเซอร์วัดความเฉื่อยเป็นค่าทิศทางใหม่
ตัวอย่างเช่น หากเซ็นเซอร์หันไปทางขวา การตั้งค่าทิศทางเป็น 0 องศา จะทำให้ตำแหน่งที่หันไปทางขวานั้นกลายเป็น 0 องศาใหม่ จากนั้นเซ็นเซอร์จะสามารถติดตามทิศทางอื่นๆ โดยอิงจากทิศทางใหม่นั้นได้
Usage:
inertial_1.set_heading(value, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าทิศทาง (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับเซ็นเซอร์ ค่านี้สามารถเป็นได้ตั้งแต่ 0 ถึง 359.99 |
|
เลือกได้ตามต้องการ หน่วยวัด: |
# 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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าการหมุน (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับเซ็นเซอร์ ค่านี้สามารถเป็นจำนวนเต็มหรือทศนิยม (float) ก็ได้ |
|
เลือกได้ตามต้องการ หน่วยการหมุน: |
# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)
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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
A previously defined function that executes when the Inertial Sensor’s value changes. |
|
ตัวเลือกเสริม ทูเปิลที่มีอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ ดู การใช้ฟังก์ชันที่มีพารามิเตอร์ สำหรับข้อมูลเพิ่มเติม |
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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
แกนที่ใช้วัดความเร่ง:
|
# 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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
A previously defined function that executes when a collision is detected. |
|
ตัวเลือกเสริม ทูเปิลที่มีอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ ดู การใช้ฟังก์ชันที่มีพารามิเตอร์ สำหรับข้อมูลเพิ่มเติม |
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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
เลือกประเภทการเลี้ยว:
|
get_turn_type#
get_turn_type จะส่งคืนค่าทิศทางการเลี้ยวที่เป็นบวก
LEFT— การเลี้ยวซ้ายจะให้ค่าทิศทางเป็นบวกRIGHT— การเลี้ยวขวาจะให้ค่าทิศทางเป็นบวก
Usage:
inertial_1.get_turn_type()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
ผู้สร้าง#
Inertial#
Inertial สร้างเซ็นเซอร์วัดแรงเฉื่อย
Usage:
Inertial(smartport)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
พอร์ตอัจฉริยะที่เชื่อมต่อกับเซ็นเซอร์วัดความเฉื่อย จะเขียนในรูปแบบ |
# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)