نظام نقل الحركة#

مقدمة#

يستخدم روبوت VEX IQ (الجيل الثاني) نظام نقل الحركة للتحرك والانعطاف. ويتكون نظام نقل الحركة من محركات وعجلات تعمل معًا لتحريك الروبوت.

A configured drivetrain can use a connected Gyro Sensor, the Brain’s built-in Inertial Sensor, or no sensor. When a sensor is used, the drivetrain uses it to help the robot move and turn precisely. At the start of each project, the drivetrain calibrates the sensor automatically. Keep the robot still for about 2 seconds during calibration, so the robot can move and turn correctly.

تستخدم هذه الصفحة اسم مجموعة نقل الحركة drivetrain كمثال. استبدله بالاسم الذي قمت بتكوينه حسب الحاجة.

توجد طرق عديدة لبرمجة نظام نقل الحركة. فيما يلي قائمة بجميع طرق برمجة نظام نقل الحركة:

الإجراءات — تحريك الروبوت وتدويره.

  • drive — يحرك الروبوت للأمام أو للخلف إلى الأبد.

  • drive_for — يحرك الروبوت للأمام أو للخلف لمسافة محددة.

  • turn — يقوم بتدوير الروبوت إلى اليسار أو اليمين إلى الأبد.

  • turn_for — يقوم بتدوير الروبوت إلى اليسار أو اليمين لعدد محدد من الدرجات.

  • turn_to_heading — يُدير الروبوت ليواجه اتجاهًا محددًا من -359 إلى 359 درجة. سيسلك الروبوت أقصر مسار للوصول إلى الاتجاه المستهدف.

  • turn_to_rotation — يقوم بتدوير الروبوت إلى دوران محدد.

  • stop — يوقف حركة الروبوت.

  • calibrate_drivetrain — يقوم بمعايرة المستشعر المُكوّن مع مجموعة نقل الحركة.

المُعدِّلات — اضبط إعدادات نظام نقل الحركة.

  • set_drive_velocity — يخبر الروبوت بالسرعة التي يجب أن يقود بها.

  • set_turn_velocity — يخبر الروبوت بمدى سرعة الدوران.

  • set_stopping — يحدد كيفية توقف الروبوت عن الحركة: عن طريق الكبح أو الانزلاق أو الثبات.

  • set_timeout — يحدد مقدار الوقت الذي سيحاول فيه الروبوت إنهاء الحركة.

  • set_heading — يغير اتجاه الروبوت الحالي إلى اتجاه جديد.

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

  • set_turn_threshold — يحدد مدى قرب الروبوت من زاوية الهدف قبل اكتمال الدوران.

  • set_turn_constant — يغير مدى قوة تصحيح الروبوت لدورانه.

المستلمون — تحقق من حالة الحركة.

  • heading — يعيد اتجاه الروبوت الحالي من 0 إلى 359 درجة.

  • rotation — يعيد الدوران الحالي للروبوت.

  • velocity — تُرجع هذه الدالة مدى سرعة قيادة الروبوت.

  • current — تُرجع مقدار التيار الكهربائي الذي يستخدمه نظام نقل الحركة.

  • is_moving — تُرجع ما إذا كان الروبوت يتحرك، كقيمة منطقية.

  • is_done — تُرجع ما إذا كان الروبوت قد انتهى من الحركة، كقيمة منطقية.

  • is_turning — تُرجع ما إذا كان الروبوت يدور، كقيمة منطقية.

  • power — يعيد مدى سرعة استخدام مجموعة نقل الحركة للطاقة.

  • torque — تُرجع مقدار عزم الدوران الذي يستخدمه نظام نقل الحركة.

  • efficiency — يعيد مدى كفاءة استخدام مجموعة نقل الحركة للطاقة.

  • temperature — تُرجع مدى سخونة مجموعة نقل الحركة.

المنشئون — إنشاء وتكوين نظام نقل الحركة يدويًا.

  • DriveTrain — يقوم بإنشاء مجموعة نقل الحركة بدون مستشعر جيروسكوب أو مستشعر قصور ذاتي.

  • SmartDrive — يقوم بإنشاء مجموعة نقل الحركة باستخدام مستشعر جيروسكوب أو مستشعر قصور ذاتي.

الإجراءات#

drive#

يُحرّك الأمر drive الروبوت للأمام أو للخلف باستمرار. سيستمر الروبوت في الحركة حتى يُعطى أمرًا آخر، مثل الانعطاف أو التوقف.

Usage:
drivetrain.drive(direction, velocity, units)

حدود

وصف

direction

اتجاه حركة الروبوت: FORWARD أو REVERSE.

velocity

Optional. The velocity to drive with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float). If no velocity is provided, the robot drives at the current drive velocity.

units

اختياري. وحدة السرعة: PERCENT (افتراضي)، RPM (دورات في الدقيقة)، أو VelocityUnits.DPS (درجات في الثانية).

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive slowly in reverse then stop
drivetrain.drive(REVERSE, 20, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

drive_for#

يُحرّك drive_for الروبوت للأمام أو للخلف لمسافة محددة. سينتظر البرنامج حتى ينتهي الروبوت من الحركة قبل تنفيذ السطر التالي من التعليمات البرمجية.

Usage:
drivetrain.drive_for(direction, distance, units, velocity, units_v, wait)

حدود

وصف

direction

اتجاه حركة الروبوت: FORWARD أو REVERSE.

distance

المسافة التي يقطعها الروبوت. يمكن أن تكون هذه القيمة integer أو عدد عشري (float).

units

اختياري. وحدة المسافة: INCHES (افتراضي)، MM (ملليمترات)، أو DistanceUnits.CM (سنتيمترات).

velocity

Optional. The velocity to drive with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float). If no velocity is provided, the robot drives at the current drive velocity.

units_v

اختياري. وحدة السرعة: RPM (دورات في الدقيقة، افتراضي)، PERCENT، أو VelocityUnits.DPS (درجات في الثانية).

wait

اختياري. wait=True (افتراضي) يجعل المشروع ينتظر حتى ينتهي الروبوت من الحركة قبل تنفيذ سطر التعليمات البرمجية التالي. wait=False يجعل سطر التعليمات البرمجية التالي يُنفذ فورًا.

# Drive forward and backward
drivetrain.drive_for(FORWARD, 10)
drivetrain.drive_for(REVERSE, 10)

# Quickly drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM, 100, PERCENT)
drivetrain.drive_for(REVERSE, 200, MM, 100, PERCENT)

turn#

يؤدي الضغط على زر turn إلى تدوير الروبوت يمينًا أو يسارًا بشكل دائم. سيستمر الروبوت في الدوران حتى يتم إعطاؤه إجراءً آخر، مثل القيادة أو التوقف.

Usage:
drivetrain.turn(direction, velocity, units)

حدود

وصف

direction

اتجاه دوران الروبوت: LEFT أو RIGHT.

velocity

Optional. The velocity to turn with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float). If no velocity is provided, the robot turns at the current turn velocity.

units

اختياري. وحدة السرعة: RPM (دورات في الدقيقة، افتراضي)، PERCENT، أو VelocityUnits.DPS (درجات في الثانية).

# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()

# Quickly turn right and left, then stop
drivetrain.turn(RIGHT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.turn(LEFT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

turn_for#

يُدير turn_for الروبوت يمينًا أو يسارًا لعدد محدد من الدرجات أو الدورات. وتُحسب زاوية الدوران بالنسبة إلى الموضع الحالي للروبوت. سينتظر البرنامج حتى ينتهي الروبوت من الدوران قبل تنفيذ السطر التالي من التعليمات البرمجية.

Usage:
drivetrain.turn_for(direction, angle, units, velocity, units_v, wait)

حدود

وصف

direction

اتجاه دوران الروبوت: LEFT أو RIGHT.

angle

مقدار دوران الروبوت. يمكن أن يكون هذا العدد integerfloat).

units

اختياري. وحدة الدوران: DEGREES (افتراضي) أو TURNSالدورة الواحدة تساوي 360 درجة.

velocity

Optional. The velocity to turn with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float). If no velocity is provided, the robot turns at the current turn velocity.

units_v

اختياري. وحدة السرعة: RPM (دورات في الدقيقة، افتراضي)، PERCENT، أو VelocityUnits.DPS (درجات في الثانية).

wait

اختياري. wait=True (افتراضي) يجعل المشروع ينتظر حتى ينتهي الروبوت من الدوران قبل تنفيذ سطر التعليمات البرمجية التالي. wait=False يجعل سطر التعليمات البرمجية التالي يُنفذ فورًا.

# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)

# Quickly turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES, 100, PERCENT)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES, 100, PERCENT)

turn_to_heading#

الاتجاه هو المسار الذي يواجهه الروبوت، ويُقاس بالدرجات. يُشير الأمر turn_to_heading إلى توجيه الروبوت نحو اتجاه محدد من -359 إلى 359 درجة. سيسلك الروبوت أقصر مسار للوصول إلى الاتجاه المستهدف.

اتجاه بدء الروبوت هو 0 درجة.

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

Usage:
drivetrain.turn_to_heading(angle, units, velocity, units_v, wait)

حدود

وصف

angle

الاتجاه الذي يجب أن يواجهه الروبوت، بالدرجات. يمكن أن يكون هذا الاتجاه عددًا integer أو عددًا عشريًا (float) يتراوح بين -359 و359.

units

اختياري. وحدة العنوان: DEGREES (افتراضي).

velocity

Optional. The velocity to turn with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float). If no velocity is provided, the robot turns at the current turn velocity.

units_v

اختياري. وحدة السرعة: PERCENT (افتراضي)، RPM (دورات في الدقيقة)، أو VelocityUnits.DPS (درجات في الثانية).

wait

اختياري. wait=True (افتراضي) يجعل المشروع ينتظر حتى ينتهي الروبوت من الدوران قبل تنفيذ سطر التعليمات البرمجية التالي. wait=False يجعل سطر التعليمات البرمجية التالي يُنفذ فورًا.

# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)

# Turn twice slowly
drivetrain.turn_to_heading(90, DEGREES, 20, PERCENT)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES, 20, PERCENT)

turn_to_rotation#

turn_to_rotation يقوم بتدوير الروبوت إلى دوران محدد.

الدوران هو مقدار دوران الروبوت، ويُقاس بالدرجات أو الدورات. في بداية المشروع، تُضبط قيمة الدوران على صفر درجة. كما يمكن ضبط الدوران باستخدام الدالة set_rotation.

قيم الدوران مطلقة. وهذا يعني أن اتجاه الدوران يعتمد على دوران الروبوت الحالي. الدوران إلى اليمين يزيد من الدوران، والدوران إلى اليسار يقلل منه.

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

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

Usage:
drivetrain.turn_to_rotation(angle, units, velocity, units_v, wait)

حدود

وصف

angle

قيمة الدوران، بالدرجات أو الدورات، التي سيدور إليها الروبوت. يمكن أن تكون هذه القيمة عددًا integer أو عددًا عشريًا (float).

units

اختياري. وحدة الدوران: DEGREES (افتراضي) أو TURNSالدورة الواحدة تساوي 360 درجة.

velocity

Optional. The velocity to turn with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float). If no velocity is provided, the robot turns at the current turn velocity.

units_v

اختياري. وحدة السرعة: PERCENT (افتراضي)، RPM (دورات في الدقيقة)، أو VelocityUnits.DPS (درجات في الثانية).

wait

اختياري. wait=True (افتراضي) يجعل المشروع ينتظر حتى ينتهي الروبوت من الدوران قبل تنفيذ سطر التعليمات البرمجية التالي. wait=False يجعل سطر التعليمات البرمجية التالي يُنفذ فورًا.

# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)

# Turn left then slowly spin in a
# circle clockwise
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES, 20, PERCENT)

stop#

stop يوقف حركة الروبوت.

Usage:
drivetrain.stop(mode)

حدود

وصف

mode

اختياري. كيفية توقف الروبوت: BRAKE (افتراضي)، BRAKE، أو COAST

  • COAST — يتوقف فورًا.
  • HOLD — يبطئ حتى يتوقف.
  • HOLD — يتوقف فورًا ويثبت موضع العجلات.

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop(COAST)

calibrate_drivetrain#

calibrate_drivetrain هي وظيفة مدمجة تقوم بمعايرة مستشعر الجيروسكوب أو مستشعر القصور الذاتي المجهز مع مجموعة نقل الحركة.

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

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

ملاحظة: لا يمكن استخدام هذه الوظيفة داخل VS Code.

Usage:
calibrate_drivetrain()

حدود

وصف

لا تحتوي هذه الدالة على أي معلمات.

المتحولون#

set_drive_velocity#

يُحدد set_drive_velocity سرعة قيادة الروبوت. كلما زادت النسبة المئوية، زادت سرعة الروبوت، وكلما انخفضت، قلت سرعته.

يبدأ كل مشروع بالروبوت وهو يقود بسرعة 50% بشكل افتراضي.

ملاحظة: السرعة العالية تجعل الروبوت يتحرك بسرعة أكبر، لكنها قد تكون أقل دقة. السرعة المنخفضة تجعل الروبوت يتحرك ببطء، لكنها قد تكون أكثر دقة.

Usage:
drivetrain.set_drive_velocity(velocity, units)

حدود

وصف

velocity

The velocity to drive with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float).

units

اختياري. وحدة السرعة: PERCENT (افتراضي)، RPM (دورات في الدقيقة)، أو VelocityUnits.DPS (درجات في الثانية).

# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)

set_turn_velocity#

يُحدد set_turn_velocity سرعة دوران الروبوت. كلما زادت النسبة المئوية، زادت سرعة الدوران، وكلما انخفضت، قلت سرعة الدوران.

يبدأ كل مشروع بالروبوت وهو يدور بسرعة 50% بشكل افتراضي.

ملاحظة: السرعة العالية تجعل الروبوت يدور بشكل أسرع، لكنها قد تكون أقل دقة. السرعة المنخفضة تجعل الروبوت يدور بشكل أبطأ، لكنها قد تكون أكثر دقة.

Usage:
drivetrain.set_turn_velocity(velocity, units)

حدود

وصف

velocity

The velocity to turn with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float).

units

اختياري. وحدة السرعة: PERCENT (افتراضي)، RPM (دورات في الدقيقة)، أو VelocityUnits.DPS (درجات في الثانية).

# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 360)

set_stopping#

set_stopping يحدد كيفية توقف الروبوت عن الحركة: عن طريق الكبح، أو الانزلاق، أو الثبات.

Usage:
drivetrain.set_stopping(mode)

حدود

وصف

mode

كيفية توقف الروبوت:

  • BRAKE — يتوقف فورًا.
  • COAST — يتباطأ حتى يتوقف.
  • HOLD — يتوقف فورًا ويثبت موضع العجلات.

إذا لم يتم استخدام هذه الطريقة، فسيستخدم الروبوت BRAKE عند التوقف.

set_timeout#

يُحدد set_timeout المدة الزمنية التي سيحاول فيها الروبوت إنهاء حركة معينة. إذا لم يتمكن الروبوت من إكمال الحركة خلال هذه المدة، فسيتوقف عن المحاولة وينتقل إلى السطر التالي من التعليمات البرمجية. هذا يمنع الروبوت من التوقف في حركة معينة.

Usage:
drivetrain.set_timeout(value, units)

حدود

وصف

value

مقدار الوقت الذي يمكن للروبوت أن يحاول فيه إنهاء حركة ما. يمكن أن يكون هذا عددًا صحيحًا موجبًا integer ) أو عددًا عشريًا (float).

units

اختياري. وحدة الوقت: MSEC (مللي ثانية، افتراضي) أو SECONDS.

# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)

set_heading#

الاتجاه هو المسار الذي يواجهه الروبوت، ويُقاس بالدرجات. يُغيّر set_heading الاتجاه الحالي للروبوت إلى قيمة اتجاه جديدة.

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

Usage:
drivetrain.set_heading(heading, units)

حدود

وصف

heading

قيمة الاتجاه، بالدرجات أو الدورات، التي سيتم ضبطها للروبوت. يمكن أن تكون هذه القيمة عددًا integer أو عددًا عشريًا (float).

units

اختياري. وحدة الاتجاه: DEGREES (افتراضي) أو TURNSالدورة الواحدة تساوي 360 درجة.

# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)

set_rotation#

الدوران هو مقدار دوران الروبوت، ويُقاس بالدرجات أو الدورات. في بداية المشروع، تُضبط قيمة الدوران على صفر درجة. يُغيّر set_rotation قيمة الدوران الحالية للروبوت إلى قيمة جديدة.

على سبيل المثال، إذا أكمل الروبوت دورتين كاملتين إلى اليمين، ستكون قيمة دورانه 720 درجة. ضبط قيمة الدوران على 0 درجة سيعيد ضبطها من 720 إلى 0 درجة. بعد ذلك، يمكن للروبوت الدوران وفقًا لهذه القيمة الجديدة.

Usage:
drivetrain.set_rotation(rotation, units)

حدود

وصف

rotation

قيمة الدوران، بالدرجات أو الدورات، التي يتم ضبطها للروبوت. يمكن أن تكون هذه القيمة عددًا integer أو عددًا عشريًا (float).

units

اختياري. وحدة الدوران: DEGREES (افتراضي) أو TURNSالدورة الواحدة تساوي 360 درجة.

# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)

set_turn_threshold#

set_turn_threshold يحدد مدى قرب الروبوت من زاوية الهدف قبل اكتمال الدوران.

يمكن أن يؤدي استخدام عتبة أصغر إلى زيادة دقة الانعطافات، لكن قد يستغرق الروبوت وقتًا أطول لإتمامها. أما استخدام عتبة أكبر فيمكن أن يؤدي إلى إتمام الانعطافات بشكل أسرع، لكنها قد تكون أقل دقة.

Usage:
drivetrain.set_turn_threshold(value)

حدود

وصف

value

عتبة الانعطاف، بالدرجات. يمكن أن تكون هذه القيمة integer (عدد عشري) أوfloatعدد عشري). عتبة الانعطاف الافتراضية هي درجة واحدة.

# Set the turn threshold to 5 degrees
drivetrain.set_turn_threshold(5)

set_turn_constant#

set_turn_constant يغير مدى قوة تصحيح الروبوت لدورانه.

كلما زادت القيمة، زادت قوة استجابة الروبوت عند تصحيح المنعطفات. وكلما انخفضت القيمة، زادت رقة استجابة الروبوت عند تصحيح المنعطفات. القيمة الافتراضية هي 1.0.

Usage:
drivetrain.set_turn_constant(value)

حدود

وصف

value

ثابت الدوران. يمكن أن يكون هذا عددًا عشريًا (float) من 0.1 إلى 4.0. القيمة الافتراضية هي 1.0.

# Increase the turn constant to 2.0
drivetrain.set_turn_constant(2.0)

المحصلون#

heading#

الاتجاه هو المسار الذي يواجهه الروبوت، ويُقاس بالدرجات. يُعيد الأمر heading اتجاه الروبوت الحالي من 0 إلى 359 درجة.

اتجاه بدء الروبوت هو 0 درجة.

Usage:
drivetrain.heading(units)

حدود

وصف

units

اختياري. وحدة قياس اتجاه العودة: DEGREES (افتراضي) أو TURNSالدورة الواحدة تساوي 360 درجة.

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading())

rotation#

الدوران هو مقدار دوران الروبوت، ويُقاس بالدرجات أو الدورات. في بداية المشروع، تُضبط قيمة الدوران على صفر درجة. يُشير rotation إلى الدوران الحالي للروبوت.

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

Usage:
drivetrain.rotation(units)

حدود

وصف

units

اختياري. وحدة قياس الدوران: DEGREES (افتراضي) أو TURNSالدورة الواحدة تساوي 360 درجة.

# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation())

velocity#

السرعة velocity تُحددان مدى سرعة قيادة الروبوت.

It can return velocity as a percentage from -100% to 100%, in RPM from -127 rpm to 127 rpm, or in VelocityUnits.DPS. A positive value means the robot is driving forward. A negative value means the robot is driving in reverse.

Usage:
drivetrain.velocity(units)

حدود

وصف

units

اختياري. وحدة عرض السرعة: PERCENT (افتراضي)، RPM (دورات في الدقيقة)، أو VelocityUnits.DPS (درجات في الثانية).

current#

current returns how much electrical current the drivetrain is using, measured in amps (amperes). Current is the amount of electricity flowing through the drivetrain.

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

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

Usage:
drivetrain.current(units)

حدود

وصف

units

اختياري. وحدة إرجاع التيار: CurrentUnits.AMP (أمبير، افتراضي).

is_moving#

تُشير القيمة المنطقية is_moving . ويمكن استخدام هذه القيمة للتحكم في توقيت سلوكيات أخرى بناءً على حركة الروبوت.

  • True — الروبوت يتحرك.

  • False — الروبوت لا يتحرك.

تعمل هذه الطريقة جنبًا إلى جنب مع طرق Drivetrain التالية التي تحتوي على المعلمة wait : drive_for, turn_for, turn_to_heading, و turn_to_rotation.

Usage:
drivetrain.is_moving()

حدود

وصف

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

is_done#

تُشير القيمة المنطقية is_done إلى ما إذا كان الروبوت قد انتهى من الحركة. ويمكن استخدام هذه القيمة للتحكم في توقيت سلوكيات أخرى بناءً على حركة الروبوت.

  • True — انتهى الروبوت من الحركة.

  • False — الروبوت لا يزال يتحرك.

تعمل هذه الطريقة جنبًا إلى جنب مع طرق Drivetrain التالية التي تحتوي على المعلمة wait : drive_for, turn_for, turn_to_heading, و turn_to_rotation.

Usage:
drivetrain.is_done()

حدود

وصف

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

is_turning#

تُشير القيمة المنطقية is_turning . ويمكن استخدام هذه القيمة للتحكم في توقيت سلوكيات أخرى بناءً على حركة الروبوت.

  • True — الروبوت يدور.

  • False — الروبوت لا يدور.

تعمل هذه الطريقة جنبًا إلى جنب مع طرق Drivetrain التالية التي تحتوي على المعلمة wait : turn_for, turn_to_heading, و turn_to_rotation.

Usage:
drivetrain.is_turning()

حدود

وصف

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

power#

power returns how much power the drivetrain is using, measured in watts. Power shows how quickly the drivetrain is using energy.

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

يمكن استخدام هذا لمقارنة الحركات أو التحقق مما إذا كان نظام نقل الحركة يعاني من مشكلة. إذا استمرت الطاقة مرتفعة، فقد يسخن نظام نقل الحركة أو يستهلك الطاقة بكفاءة أقل.

Usage:
drivetrain.power()

حدود

وصف

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

torque#

يوضح عزم الدوران مدى قوة دفع أو سحب مجموعة نقل الحركة أثناء دوران العجلات.

torque يعيد مقدار عزم الدوران الذي يستخدمه نظام نقل الحركة، مقاسًا بالنيوتن متر (Nm) أو البوصة رطل (InLb).

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

يمكن استخدام هذا للتحقق مما إذا كان نظام نقل الحركة يعاني من مشكلة أو لمقارنة مقدار الدفع الذي تحتاجه الحركات المختلفة.

Usage:
drivetrain.torque(units)

حدود

وصف

units

اختياري. وحدة إرجاع عزم الدوران: TorqueUnits.NM (نيوتن متر، افتراضي) أو TorqueUnits.INLB (بوصة رطل).

efficiency#

efficiency تُظهر مدى كفاءة استخدام مجموعة نقل الحركة للطاقة، كنسبة مئوية من 0% إلى 100%.

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

يمكن استخدام هذا لمقارنة الحركات أو التحقق مما إذا كان نظام نقل الحركة يهدر الطاقة بدلاً من استخدامها للحركة.

Usage:
drivetrain.efficiency()

حدود

وصف

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

temperature#

temperature تُرجع متوسط ​​درجة حرارة مجموعة نقل الحركة بوحدة درجة الحرارة المحددة.

تُشير درجة الحرارة إلى مدى سخونة محركات نظام نقل الحركة. ارتفاع درجة الحرارة يعني أن المحركات تزداد سخونة أثناء عملها. يجب أن تبقى درجة حرارة المحركات أقل من 55 درجة مئوية للحفاظ على أدائها الأمثل.

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

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

Usage:
drivetrain.temperature(units)

حدود

وصف

units

اختياري. وحدة عرض درجة الحرارة: TemperatureUnits.CELSIUS (افتراضي) أو TemperatureUnits.FAHRENHEIT.

المُنشئون#

Constructors are used to create DriveTrain and SmartDrive objects in code. This is useful when configuring a drivetrain without using the Devices window.

يجب إنشاء كائنين على الأقل من Motor أو MotorGroup قبل إنشاء مجموعة نقل الحركة.

DriveTrain#

DriveTrain يقوم بإنشاء مجموعة نقل الحركة بدون مستشعر القصور الذاتي أو مستشعر الدوران.

Usage:
DriveTrain(lm, rm, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

المعلمة

وصف

lm

The left motor or motor group.

rm

The right motor or motor group.

wheelTravel

اختياري. محيط عجلات نظام الدفع. القيمة الافتراضية هي 300 مليمتر.

trackWidth

اختياري. المسافة بين العجلتين اليمنى واليسرى. القيمة الافتراضية هي 320 مليمترًا.

wheelBase

اختياري. المسافة بين العجلات الأمامية والخلفية. القيمة الافتراضية هي 320 مليمترًا.

units

اختياري. وحدة قياس المسافة لـ wheelTravelو trackWidthو wheelBase: MM (افتراضي)، INCHES، أو DistanceUnits.CM (سنتيمترات).

externalGearRatio

اختياري. نسبة التروس المستخدمة لضبط مسافات القيادة في حال استخدام التروس. يمكن أن تكون هذه النسبة عددًا integer ) أو عددًا عشريًا (float). القيمة الافتراضية هي 1.0.

# Create left and right drive motor objects
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT2, 1.0, True)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

# Create two motor group objects for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT3, 1.0, True)
right_motor_b = Motor(Ports.PORT4, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

SmartDrive#

SmartDrive يقوم بإنشاء مجموعة نقل الحركة المجهزة بـ مستشعر القصور الذاتي أو مستشعر الدوران.

Usage:
SmartDrive(lm, rm, g, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

المعلمة

وصف

lm

The left motor or motor group.

rm

The right motor or motor group.

g

المستشعر بالقصور الذاتي أو مستشعر الدوران المستخدم بواسطة مجموعة نقل الحركة.

wheelTravel

اختياري. محيط عجلات نظام الدفع. القيمة الافتراضية هي 300 مليمتر.

trackWidth

اختياري. المسافة بين العجلتين اليمنى واليسرى. القيمة الافتراضية هي 320 مليمترًا.

wheelBase

اختياري. المسافة بين العجلات الأمامية والخلفية. القيمة الافتراضية هي 320 مليمترًا.

units

اختياري. وحدة قياس wheelTravelو trackWidthو wheelBase: MM (ملليمترات، افتراضي) أو INCHES.

externalGearRatio

اختياري. نسبة التروس المستخدمة لضبط مسافات القيادة في حال استخدام التروس. يمكن أن تكون هذه النسبة عددًا integer ) أو عددًا عشريًا (float). القيمة الافتراضية هي 1.0.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Make left and right drive motors
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

# Create a SmartDrive object with wheelTravel 200
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

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

# Create the Inertial Sensor
brain_inertial = Inertial()

# Create two motor groups for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT5, 1.0, True)
right_motor_b = Motor(Ports.PORT6, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

# Create a SmartDrive object with wheelTravel 200 mm
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)