القصور الذاتي#
مقدمة#
يقيس مستشعر القصور الذاتي كيفية تحرك الروبوت ودورانه.
يستخدم المستشعر بالقصور الذاتي جزأين للقيام بذلك. يقيس الجيروسكوب الدوران، مثل الاتجاه والدوران ومعدل الدوران والاتجاه. ويقيس مقياس التسارع التغيرات في الحركة، مثل التسارع أو التباطؤ على طول المحاور س، ص، ع.
فيما يلي قائمة بالطرق المتاحة:
التوجيه — قراءة والتحكم في الاتجاه والدوران ومعايرة المستشعر.
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#
الاتجاه هو الاتجاه الذي يواجهه المستشعر، ويتم قياسه بالدرجات من 0 إلى 359.99. 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 درجة أو ينقص عن صفر درجة. في بداية المشروع، تُضبط قيمة الدوران على صفر درجة. يُعيد الأمر rotation قيمة الدوران الحالية للمستشعر بالقصور الذاتي كعدد عشري.
يؤدي الانعطاف يمينًا إلى زيادة الدوران، بينما يؤدي الانعطاف يسارًا إلى تقليله. على سبيل المثال، ينتج عن الانعطاف دورتين كاملتين إلى اليمين دوران مقداره 720 درجة. أما الانعطاف دورة كاملة واحدة إلى اليسار من وضع الصفر فينتج عنه دوران مقداره -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 تُعيد سرعة الدوران الحالية لمستشعر القصور الذاتي على المحور المحدد كقيمة عشرية.
يمكن أن تكون القيمة موجبة أو سالبة اعتمادًا على اتجاه دوران المستشعر على ذلك المحور.
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 الميل أو الانحراف لمستشعر القصور الذاتي، من -180.00 إلى 180.00 درجة، كقيمة عشرية.
يصف كل من الدوران والانحراف والالتفاف الطرق المختلفة التي يمكن للمستشعر من خلالها أن يميل أو يدور.
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#
الاتجاه هو الاتجاه الذي يواجهه المستشعر، ويتم قياسه بالدرجات من 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)
حدود |
وصف |
|---|---|
|
قيمة الدوران، بالدرجات، التي سيتم ضبطها للمستشعر. يمكن أن تكون هذه القيمة عددًا صحيحًا أو عددًا عشريًا (عددًا عشريًا). |
|
اختياري. وحدة الدوران: |
# 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 تُرجعان تسارع المستشعر بالقصور الذاتي على المحور المحدد، من -4.0 G إلى 4.0 G، كقيمة عشرية.
وحدة قياس التسارع هي 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)