เฉื่อย#

การแนะนำ#

สมองมีเซ็นเซอร์วัดการเคลื่อนไหวในตัว เซ็นเซอร์นี้สามารถวัดการเคลื่อนไหวหรือการหมุนของสมองได้

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

วิธีการวัดความเฉื่อยสามารถใช้ในการติดตามการเลี้ยว รีเซ็ตค่าทิศทางหรือการหมุน วัดมุมม้วน มุมเงย และมุมหันเห และรายงานความเร่งได้

มีหลายวิธีในการเขียนโค้ดสำหรับเซ็นเซอร์วัดแรงเฉื่อย ด้านล่างนี้คือรายการวิธีการเขียนโค้ดสำหรับเซ็นเซอร์วัดแรงเฉื่อยทั้งหมด:

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

  • get_heading — ส่งคืนทิศทางที่สมองหันไป ตั้งแต่ 0 ถึง 359 องศา

  • get_rotation — คืนค่าว่าสมองหมุนไปไกลแค่ไหน

  • get_yaw — คืนค่าว่าสมองหมุนไปทางซ้ายหรือขวาเท่าใดจากตำแหน่งเริ่มต้น

  • get_roll — ส่งคืนค่าว่าสมองเอียงไปทางซ้ายหรือขวาเท่าใด

  • get_pitch — ส่งคืนค่าว่าสมองเอียงไปข้างหน้าหรือข้างหลังมากน้อยแค่ไหน

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

  • reset_heading — รีเซ็ตทิศทางปัจจุบันของสมองเป็น 0 องศา

  • reset_rotation — รีเซ็ตการหมุนปัจจุบันของสมองเป็น 0 องศา

  • set_heading — ตั้งค่าหัวปัจจุบันของ Brain เป็นค่าหัวใหม่

  • set_rotation — ตั้งค่าการหมุนปัจจุบันของสมองเป็นค่าการหมุนใหม่

การเคลื่อนไหว — ย้อนกลับการเคลื่อนไหวของสมอง

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

ปฐมนิเทศ#

get_heading#

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

ทิศทางเริ่มต้นคือ 0 องศา หากสมองหมุนเกิน 359 องศา ทิศทางจะวนกลับมาที่ 0 องศา

Usage:
inertial.get_heading()

พารามิเตอร์

คำอธิบาย

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

get_rotation#

การหมุนคือจำนวนองศาที่สมองหมุนไป ต่างจากทิศทาง การหมุนสามารถเพิ่มขึ้นเกิน 359 องศาหรือลดลงต่ำกว่า 0 องศาได้ เมื่อเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา คำสั่ง get_rotation จะส่งคืนค่าการหมุนปัจจุบันของสมอง

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

Usage:
inertial.get_rotation()

พารามิเตอร์

คำอธิบาย

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

get_yaw#

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

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

Usage:
inertial.get_yaw()

พารามิเตอร์

คำอธิบาย

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

get_roll#

ค่า Roll คือค่าที่สมองเอียงไปทางซ้ายหรือขวา โดยวัดเป็นองศา get_roll จะส่งคืนค่า Roll ปัจจุบันของสมอง

เมื่อหันหัวไปข้างหน้า การเอียงไปทางซ้ายจะเพิ่มค่าการหมุน และการเอียงไปทางขวาจะลดค่าการหมุน

Usage:
inertial.get_roll()

พารามิเตอร์

คำอธิบาย

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

get_pitch#

ค่า Pitch คือค่าที่สมองเอียงไปข้างหน้าหรือข้างหลัง โดยวัดเป็นองศา get_pitch จะส่งคืนค่า Pitch ปัจจุบันของสมอง

เมื่อสมองหันไปข้างหน้า การเอียงไปข้างหน้าจะเพิ่มค่าระดับเสียง และการเอียงไปข้างหลังจะลดค่าระดับเสียง

Usage:
inertial.get_pitch()

พารามิเตอร์

คำอธิบาย

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

calibrate#

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

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

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

Usage:
inertial.calibrate()

พารามิเตอร์

คำอธิบาย

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

reset_heading#

ทิศทาง (Heading) คือทิศทางที่สมองหันหน้าไป โดยวัดเป็นองศา คำสั่ง reset_heading จะรีเซ็ตทิศทางปัจจุบันของสมองเป็น 0 องศา

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

Usage:
inertial.reset_heading()

พารามิเตอร์

คำอธิบาย

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

reset_rotation#

การหมุน คือจำนวนองศาที่สมองหมุนไป คำสั่ง reset_rotation จะรีเซ็ตการหมุนปัจจุบันของสมองกลับไปที่ 0 องศา

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

Usage:
inertial.reset_rotation()

พารามิเตอร์

คำอธิบาย

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

set_heading#

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

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

Usage:
inertial.set_heading(heading)

พารามิเตอร์

คำอธิบาย

heading

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

set_rotation#

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

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

Usage:
inertial.set_rotation(rotation)

พารามิเตอร์

คำอธิบาย

rotation

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

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

get_acceleration#

ความเร่ง คือ อัตราเร็วที่สมองหมุนเร็วขึ้นหรือช้าลง ฟังก์ชัน get_acceleration จะส่งคืนค่าความเร่งของสมองบนแกนที่เลือก ตั้งแต่ -4.0 G ถึง 4.0 G

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

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

Usage:
inertial.get_acceleration(axis)

พารามิเตอร์

คำอธิบาย

axis

แกนที่ใช้วัดความเร่ง: X, Yหรือ Z

# Build Used: Super Code Base 2.0
def main():
    # Display the acceleration after moving.
    drivetrain.set_drive_velocity(100)
    console.print("Resting: ")
    console.print(inertial.get_acceleration(X), precision=2)
    console.new_line()
    wait(1, SECONDS)
    drivetrain.drive_for(FORWARD, 500, MM, wait=False)
    wait(0.20, SECONDS)
    console.print("Startup: ")
    console.print(inertial.get_acceleration(X), precision=2)

# Start threads — Do not delete
start_thread(main)