الماكرو#

مقدمة#

وحدات ماكرو VEX AIM Python عبارة عن كتل برمجية جاهزة يمكن سحبها وإفلاتها في مشروع Python. كل وحدة ماكرو عبارة عن مجموعة من أوامر Python التي تعمل معًا لجعل الروبوت يُكمل سلوكًا أكبر.

هذه ليست دوالًا منفردة يتم استدعاؤها من الكود. بل يتم إدراج كل ماكرو كسلسلة أكواد جاهزة يمكن استخدامها كما هي أو تعديلها بعد إضافتها إلى المشروع.

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

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

العواطف — اجعل الروبوت يتصرف بشكل معبر.

  • act happy — يجعل الروبوت يتصرف بسعادة.

  • act sad — يجعل الروبوت يتصرف بحزن.

  • act silly — يجعل الروبوت يتصرف بحماقة.

  • act angry — يجعل الروبوت يتصرف بغضب.

  • act excited — يجعل الروبوت يتصرف بحماس.

رؤية الذكاء الاصطناعي (كرة رياضية) - استدر نحو الكرات الرياضية أو اجمعها.

رؤية الذكاء الاصطناعي (البرميل البرتقالي) - اتجه نحو البراميل البرتقالية أو اجمعها.

رؤية الذكاء الاصطناعي (البرميل الأزرق) - اتجه نحو البراميل الزرقاء أو اجمعها.

الرؤية بالذكاء الاصطناعي (روبوت AIM) - استدر أو تحرك نحو روبوتات AIM الأخرى.

رؤية الذكاء الاصطناعي (علامة أبريل) - استدر أو تحرك نحو علامات أبريل.

المشاعر#

act happy#

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# act happy
robot.screen.show_emoji(HAPPY)
wait(.5,SECONDS)
robot.sound.play(ACT_HAPPY)
wait(115, MSEC)

robot.screen.show_emoji(HAPPY, LOOK_RIGHT)
robot.led.on(ALL_LEDS, YELLOW)
robot.turn_for(RIGHT, 4, 100)
robot.led.on(ALL_LEDS, WHITE)
robot.screen.show_emoji(HAPPY, LOOK_LEFT)
robot.turn_for(RIGHT, -8, 100)
robot.led.on(ALL_LEDS, YELLOW)
robot.screen.show_emoji(HAPPY, LOOK_RIGHT)
robot.turn_for(RIGHT, 4, 100)

wait(100,MSEC)
for i in range(3):
    robot.screen.show_emoji(QUIET)
    robot.led.on(ALL_LEDS, WHITE)
    robot.move_for(1,-90)
    robot.screen.show_emoji(HAPPY)
    robot.led.on(ALL_LEDS, YELLOW)
    robot.move_for(1,90)

robot.stop_all_movement()
robot.led.off(ALL_LEDS)
wait(.5,SECONDS)

act sad#

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# act sad
robot.screen.show_emoji(SAD)
wait(.5,SECONDS)
robot.sound.play(ACT_SAD)
wait(115, MSEC)

robot.led.on(ALL_LEDS, Color(0, 0, 250))
robot.screen.show_emoji(SAD, LOOK_RIGHT)
robot.move_for(11, 135, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 100))
robot.screen.show_emoji(SAD, LOOK_FORWARD)
robot.move_for(11, 315, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 50))
robot.screen.show_emoji(SAD, LOOK_LEFT)
robot.move_for(11, 225, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 10))
robot.screen.show_emoji(SAD, LOOK_FORWARD)
robot.move_for(11, 45, 70)
wait(.5,SECONDS)
robot.led.off(ALL_LEDS)

act silly#

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# act silly
robot.screen.show_emoji(SILLY)
wait(.5,SECONDS)
robot.sound.play(ACT_SILLY)
wait(115,MSEC)

robot.turn_for(RIGHT, 360, 100, wait=False)
face_list = [SILLY, HAPPY, EXCITED, PROUD, THRILLED, LAUGHING]
colors = [BLUE, CYAN, GREEN, ORANGE, PURPLE, RED, WHITE, YELLOW]

while robot.is_turn_active():
    robot.screen.show_emoji(SILLY)
    robot.led.on(ALL_LEDS, random.choice(colors))
    wait(110,MSEC)
    robot.screen.show_emoji(random.choice(face_list))
    wait(110,MSEC)

robot.screen.show_emoji(SILLY)
robot.led.off(ALL_LEDS)
wait(.5,SECONDS)

act angry#

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# act angry
robot.screen.show_emoji(ANGRY)
wait(.5,SECONDS)
robot.sound.play(ACT_ANGRY)
wait(115,MSEC)

robot.led.on(ALL_LEDS, RED)
robot.move_for(25, 0, 50)
wait(50,MSEC)

for i in range(5):
    robot.screen.show_emoji(ANNOYED)
    robot.move_for(5, 180, 50)
    robot.screen.show_emoji(ANGRY)
    wait(50,MSEC)

wait(.5,SECONDS)
robot.led.off(ALL_LEDS)

act excited#

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# act excited
robot.screen.show_emoji(EXCITED)
wait(.5,SECONDS)
robot.sound.play(ACT_EXCITED)
wait(115, MSEC)

for angle in [3,-3,2,-2,2,-2,2,-2,1,-1]:
    if angle > 0:
        robot.screen.show_emoji(EXCITED, LOOK_RIGHT)
        robot.led.on(LED4, ORANGE)
        robot.led.on(LED5, ORANGE)
        robot.led.on(LED6, ORANGE)
        robot.led.off(LED1)
    else:
        robot.screen.show_emoji(EXCITED, LOOK_LEFT)
        robot.led.on(LED1, ORANGE)
        robot.led.on(LED2, ORANGE)
        robot.led.on(LED3, ORANGE)
        robot.led.off(LED6)
    robot.turn_for(RIGHT, angle)
    robot.led.off(ALL_LEDS)

robot.screen.show_emoji(EXCITED, LOOK_FORWARD)
wait(.5,SECONDS)

رؤية الذكاء الاصطناعي (كرة رياضية)#

turn right until sports ball#

يُوجّه هذا الأمر الروبوت نحو اليمين حتى يرصد مستشعر الرؤية الذكي كرة رياضية، ثم يتجه نحوها. استخدمه عندما يحتاج الروبوت للبحث عن كرة رياضية قبل التحرك نحوها أو جمعها.

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn right until sports ball is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(SPORTS_BALL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until sports ball#

يُوجّه هذا الأمر الروبوت إلى اليسار حتى يرصد مستشعر الرؤية الذكي كرة رياضية، ثم يتجه نحوها. استخدمه عندما يحتاج الروبوت للبحث عن كرة رياضية قبل التحرك نحوها أو جمعها.

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn left until sports ball is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(SPORTS_BALL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

get sports ball#

يُحرّك هذا الماكرو الروبوت نحو كرة رياضية مُكتشفة حتى يجمعها. استخدمه بعد أن يتمكن الروبوت من رؤية كرة رياضية، أو بعد استخدام ماكرو “الدوران حتى الكرة الرياضية” للعثور عليها.

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Get sports ball
while True:
    vision_data = robot.vision.get_data(SPORTS_BALL)

    if vision_data[0].exists:
        if robot.has_sports_ball():
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)

رؤية الذكاء الاصطناعي (البرميل البرتقالي)#

turn right until orange barrel#

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

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn right until orange barrel is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(ORANGE_BARREL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until orange barrel#

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

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn left until orange barrel is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(ORANGE_BARREL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

get orange barrel#

يُحرّك هذا الماكرو الروبوت نحو برميل برتقالي مُكتشف حتى يجمعه. استخدمه بعد أن يتمكن الروبوت من رؤية برميل برتقالي، أو بعد استخدام ماكرو “الدوران حتى الوصول إلى برميل برتقالي” للعثور عليه.

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Get orange barrel
while True:
    vision_data = robot.vision.get_data(ORANGE_BARREL)

    if vision_data[0].exists:
        if robot.has_orange_barrel():
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)

رؤية الذكاء الاصطناعي (البرميل الأزرق)#

turn right until blue barrel#

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

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn right until blue barrel is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(BLUE_BARREL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until blue barrel#

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

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn left until blue barrel is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(BLUE_BARREL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

get blue barrel#

يُحرّك هذا الماكرو الروبوت نحو برميل أزرق مُكتشف حتى يجمعه. استخدمه بعد أن يتمكن الروبوت من رؤية برميل أزرق، أو بعد استخدام ماكرو “الدوران حتى البرميل الأزرق” للعثور عليه.

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Get blue barrel
while True:
    vision_data = robot.vision.get_data(BLUE_BARREL)

    if vision_data[0].exists:
        if robot.has_blue_barrel():
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)

رؤية الذكاء الاصطناعي (روبوت AIM)#

turn right until AIM robot#

يُوجّه هذا الأمر الروبوت نحو اليمين حتى يكتشف مستشعر الرؤية بالذكاء الاصطناعي روبوت VEX AIM Coding آخر، ثم يتجه نحوه. استخدمه عندما يحتاج الروبوت إلى البحث عن روبوت آخر قبل التحرك نحوه.

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn right until AIM robot is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(AIM_ROBOT)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until AIM robot#

يقوم هذا الأمر بتوجيه الروبوت إلى اليسار حتى يكتشف مستشعر الرؤية بالذكاء الاصطناعي روبوت VEX AIM Coding آخر، ثم يتجه نحوه. استخدمه عندما يحتاج الروبوت إلى البحث عن روبوت آخر قبل التحرك نحوه.

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn left until AIM robot is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(AIM_ROBOT)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

move to AIM robot#

يُحرّك هذا الماكرو الروبوت باتجاه روبوت VEX AIM آخر حتى يقترب منه بما يكفي للتوقف. استخدمه بعد أن يتمكن الروبوت من رؤية روبوت آخر، أو بعد استخدام ماكرو “الدوران حتى الوصول إلى روبوت AIM” للعثور عليه.

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Move to AIM robot
while True:
    vision_data = robot.vision.get_data(AIM_ROBOT)

    if vision_data[0].exists:
        if vision_data[0].width >= 140:
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)

رؤية الذكاء الاصطناعي (أبريل تاج)#

turn right until AprilTag#

يُوجّه هذا الماكرو الروبوت إلى اليمين حتى يرصد مستشعر الرؤية بالذكاء الاصطناعي علامة AprilTag رقم 0، ثم يتجه نحوها. استخدمه عندما يحتاج الروبوت للبحث عن علامة AprilTag قبل التحرك نحوها. لتغيير علامة AprilTag التي سيتجه إليها الروبوت، استبدل 0 في TAG0 بأي رقم من 0 إلى 37 (يمكن استخدام علامات AprilTag من 5 إلى 37 مع علامات AprilTag المطبوعة من AIM Printables).

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn right until AprilTag ID 0 is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(TAG0)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until AprilTag#

يُوجّه هذا الماكرو الروبوت إلى اليسار حتى يرصد مستشعر الرؤية بالذكاء الاصطناعي علامة AprilTag رقم 0، ثم يتجه نحوها. استخدمه عندما يحتاج الروبوت للبحث عن علامة AprilTag قبل التحرك نحوها. لتغيير علامة AprilTag التي سيتجه إليها الروبوت، استبدل 0 في TAG0 بأي رقم من 0 إلى 37 (يمكن استخدام علامات AprilTag من 5 إلى 37 مع علامات AprilTag المطبوعة من AIM Printables).

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Turn left until AprilTag ID 0 is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(TAG0)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

move to AprilTag#

يُحرّك هذا الماكرو الروبوت باتجاه علامة AprilTag رقم 0 حتى يقترب منها بما يكفي للتوقف. استخدمه بعد أن يتمكن الروبوت من رؤية علامة AprilTag، أو بعد استخدام ماكرو “الدوران حتى علامة AprilTag” للعثور عليها. لتغيير علامة AprilTag التي سيتحرك إليها الروبوت، استبدل 0 في TAG0 بأي رقم من 0 إلى 37 (يمكن استخدام علامات AprilTag من 5 إلى 37 مع علامات AprilTag المطبوعة من AIM Printables).

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

يوضح الكود أدناه تسلسل بايثون الذي يُضاف إلى مشروعك عند سحب هذا الماكرو من صندوق الأدوات. يمكنك استخدام التسلسل كما هو أو تعديله بعد إضافته.

# Move to AprilTag ID 0
while True:
    vision_data = robot.vision.get_data(TAG0)

    if vision_data[0].exists:
        if vision_data[0].width >= 60:
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)