เฉื่อย#
การแนะนำ#
สมองมีเซ็นเซอร์วัดการเคลื่อนไหวในตัว เซ็นเซอร์นี้สามารถวัดการเคลื่อนไหวหรือการหมุนของสมองได้
เซ็นเซอร์วัดแรงเฉื่อยใช้ส่วนประกอบสองส่วนในการทำงานนี้ ไจโรสโคป วัดการหมุน เช่น ทิศทางที่สมองหันไปและระยะการหมุน มาตรวัดความเร่ง วัดการเปลี่ยนแปลงของการเคลื่อนไหว เช่น การเร่งความเร็ว การลดความเร็ว หรือการหยุดกะทันหันระหว่างการชน
วิธีการวัดความเฉื่อยสามารถใช้ในการติดตามการเลี้ยว รีเซ็ตค่าทิศทางหรือการหมุน วัดมุมม้วน มุมเงย และมุมหันเห และรายงานความเร่งได้
มีหลายวิธีในการเขียนโค้ดสำหรับเซ็นเซอร์วัดแรงเฉื่อย ด้านล่างนี้คือรายการวิธีการเขียนโค้ดสำหรับเซ็นเซอร์วัดแรงเฉื่อยทั้งหมด:
การจัดวางตำแหน่ง — กลับไปที่ตำแหน่งเดิมและตั้งค่าว่าสมองหันหน้าไปทางใด หมุนไปในทิศทางใด หรือเอียงไปในทิศทางใด
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)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าหัว (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับสมอง ค่านี้สามารถเป็นจำนวนเต็มตั้งแต่ 0 ถึง 359 ได้ |
set_rotation#
การหมุนคือจำนวนองศาที่สมองหมุนไป ต่างจากทิศทาง การหมุนสามารถเพิ่มขึ้นเกิน 359 องศาหรือลดลงต่ำกว่า 0 องศาได้ ในตอนเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา คำสั่ง set_rotation จะเปลี่ยนค่าการหมุนปัจจุบันของสมองเป็นค่าใหม่
ตัวอย่างเช่น หากสมองหมุนไปทางขวาครบสองรอบ ค่าการหมุนของมันจะเป็น 720 องศา การตั้งค่าการหมุนเป็น 0 องศาจะรีเซ็ตค่าการหมุนจาก 720 เป็น 0 องศา จากนั้นสมองจะสามารถติดตามการหมุนโดยใช้ค่าใหม่นั้นได้
Usage:
inertial.set_rotation(rotation)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าการหมุน (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับสมอง ค่านี้สามารถเป็นจำนวนเต็มได้ |
การเคลื่อนไหว#
get_acceleration#
ความเร่ง คือ อัตราเร็วที่สมองหมุนเร็วขึ้นหรือช้าลง ฟังก์ชัน get_acceleration จะส่งคืนค่าความเร่งของสมองบนแกนที่เลือก ตั้งแต่ -4.0 G ถึง 4.0 G
G คือหน่วยที่ใช้ในการวัดความเร่ง 1 G คือความเร่งประมาณที่คุณรู้สึกจากแรงโน้มถ่วงขณะนั่งอยู่เฉยๆ
ค่าที่ได้อาจเป็นบวกหรือลบ ขึ้นอยู่กับทิศทางของการเร่งความเร็วบนแกนที่เลือก ตัวเลือกแกนได้แก่ X, Yและ Z
Usage:
inertial.get_acceleration(axis)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
แกนที่ใช้วัดความเร่ง: |
# 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)