القصور الذاتي#

مقدمة#

يحتوي الدماغ على مستشعر قصور ذاتي مدمج. يستطيع هذا المستشعر قياس كيفية تحرك الدماغ أو دورانه.

يستخدم المستشعر بالقصور الذاتي جزأين للقيام بذلك. يقيس الجيروسكوب الدوران، مثل اتجاه الدماغ ومقدار الدوران. بينما يقيس مقياس التسارع التغيرات في الحركة، مثل التسارع أو التباطؤ أو التوقف المفاجئ أثناء الاصطدام.

يمكن استخدام الطرق القائمة على القصور الذاتي لتتبع الانعطافات، وإعادة ضبط قيم الاتجاه أو الدوران، وقياس الميلان، والانعطاف، والإبلاغ عن التسارع.

توجد طرق عديدة لبرمجة مستشعر القصور الذاتي. فيما يلي قائمة بجميع طرق برمجة مستشعر القصور الذاتي:

الاتجاه — ارجع واضبط كيف يواجه الدماغ أو يدور أو يميل.

  • get_heading — تُرجع الاتجاه الذي يواجهه الدماغ، من 0 إلى 359 درجة.

  • get_rotation — تُرجع هذه الدالة مقدار دوران الدماغ.

  • get_yaw — تُرجع مقدار دوران الدماغ إلى اليسار أو اليمين من موضع البداية.

  • get_roll — تُرجع مقدار ميل الدماغ إلى اليسار أو اليمين.

  • get_pitch — تُرجع مقدار ميل الدماغ للأمام أو للخلف.

  • calibrate — معايرة مستشعر القصور الذاتي للدماغ.

  • reset_heading — يعيد ضبط اتجاه الدماغ الحالي إلى 0 درجة.

  • reset_rotation — يعيد ضبط دوران الدماغ الحالي إلى 0 درجة.

  • set_heading — يقوم بتعيين عنوان الدماغ الحالي إلى قيمة عنوان جديدة.

  • set_rotation — يقوم بتعيين الدوران الحالي للدماغ إلى قيمة دوران جديدة.

الحركة — إرجاع كيفية تحرك الدماغ.

  • get_acceleration — تُرجع مدى سرعة تسارع أو تباطؤ الدماغ على المحور المحدد.

توجيه#

get_heading#

الاتجاه هو الاتجاه الذي يواجهه الدماغ، ويتم قياسه بالدرجات من 0 إلى 359. get_heading يعيد الاتجاه الحالي للدماغ.

الاتجاه الابتدائي هو 0 درجة. إذا تجاوزت زاوية دوران الدماغ 359 درجة، فإن الاتجاه يعود إلى 0 درجة.

Usage:
inertial.get_heading()

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

get_rotation#

الدوران هو مقدار دوران الدماغ، ويُقاس بالدرجات. على عكس الاتجاه، يمكن أن يزيد الدوران عن 359 درجة أو ينقص عن 0 درجة. في بداية المشروع، تُضبط قيمة الدوران على 0 درجة. تُعيد get_rotation قيمة الدوران الحالية للدماغ.

يؤدي الانعطاف يمينًا إلى زيادة الدوران، بينما يؤدي الانعطاف يسارًا إلى تقليله. على سبيل المثال، ينتج عن الانعطاف دورتين كاملتين إلى اليمين دوران مقداره 720 درجة. أما الانعطاف دورة كاملة واحدة إلى اليسار من وضع الصفر فينتج عنه دوران مقداره -360 درجة.

Usage:
inertial.get_rotation()

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

get_yaw#

الانحراف هو مقدار دوران الدماغ يمينًا أو يسارًا من وضعه الابتدائي، ويُقاس بالدرجات. get_yaw تُعيد قيمة الانحراف الحالية للدماغ.

يؤدي الانعطاف يمينًا إلى زيادة قيمة الانحراف، بينما يؤدي الانعطاف يسارًا إلى تقليلها. يُعدّ الانحراف مفيدًا للتحقق من الانعطاف يمينًا ويسارًا دون الحاجة إلى استخدام قيمة اتجاه الالتفاف.

Usage:
inertial.get_yaw()

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

get_roll#

يُشير مصطلح “الدوران” إلى مقدار ميل الدماغ إلى اليسار أو اليمين، ويُقاس بالدرجات. تُعيد الدالة get_roll get_roll قيمة الدوران الحالية.

عندما يكون الدماغ متجهًا للأمام، فإن الإمالة إلى اليسار تزيد من قيمة الدوران، والإمالة إلى اليمين تقلل من قيمة الدوران.

Usage:
inertial.get_roll()

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

get_pitch#

درجة الصوت هي مقدار ميل الدماغ للأمام أو للخلف، وتقاس بالدرجات. get_pitch تُعيد قيمة درجة الصوت الحالية للدماغ.

عندما يكون الدماغ متجهًا للأمام، فإن الميل للأمام يزيد من قيمة النغمة، والميل للخلف يقلل من قيمة النغمة.

Usage:
inertial.get_pitch()

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

calibrate#

calibrate معايرة مستشعر القصور الذاتي للدماغ.

تساعد عملية المعايرة المستشعر بالقصور الذاتي على قياس الانعطافات بدقة. حافظ على ثبات الدماغ لمدة ثانيتين تقريبًا أثناء المعايرة. إذا تحرك الدماغ أثناء المعايرة، فقد لا تُقاس قيم الاتجاه والدوران والانعراج والميل والانحدار بدقة.

سينتظر المشروع حتى يتم الانتهاء من عملية المعايرة قبل تشغيل السطر التالي من التعليمات البرمجية.

Usage:
inertial.calibrate()

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

reset_heading#

الاتجاه هو المكان الذي يواجهه الدماغ، ويُقاس بالدرجات. reset_heading يُعيد ضبط اتجاه الدماغ الحالي إلى 0 درجة.

بعد استخدام هذه الطريقة، يصبح اتجاه الدماغ الحالي هو الاتجاه الجديد بزاوية 0 درجة.

Usage:
inertial.reset_heading()

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

reset_rotation#

الدوران هو مقدار دوران الدماغ، ويُقاس بالدرجات. reset_rotation يُعيد ضبط دوران الدماغ الحالي إلى 0 درجة.

بعد استخدام هذه الطريقة، يتتبع الدماغ الانعطافات المستقبلية انطلاقاً من قيمة الدوران الجديدة البالغة 0 درجة.

Usage:
inertial.reset_rotation()

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

set_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 تشعر به من الجاذبية الأرضية وأنت جالس بلا حراك.

يمكن أن تكون القيمة موجبة أو سالبة حسب اتجاه التسارع على المحور المحدد. خيارات المحور هي 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)