5.6.2.1. Приклад 1: Керуйте шасі, щоб перемістити на задану відстань

Керування шасі для переміщення на вказану відстань – це сценарій управління діями завдання.

• Спочатку ініціалізуйте об’єкт робота, як описано в розділі Ініціалізація робота.

• Інтерфейс для управління шасі належить до модуля chassis. Тому спочатку отримайте об’єкт chassis, як описано в розділі Отримання об’єктів модуля. У цьому прикладі вам також потрібно отримати led модуль, оскільки ви також будете керувати світлом броні. У цьому прикладі використовується метод 1 для отримання об’єктів модуля.

ep_chassis = ep_robot.chassis
ep_led = ep_robot.led

• У цьому прикладі, щоб продемонструвати характеристики дій із завданнями, ефект броньованого світла буде налаштований після того, як ви керуватимете переміщенням шасі. Використовуйте метод move() в об’єкті шасі, щоб контролювати відносне переміщення шасі. Параметри x і y методу представляють відстань переміщення осі x та осі y відповідно. Параметр z вказує швидкість обертання осі z. У цьому прикладі відстань переміщення осі x встановлено на 0,5 м, а параметри y та z встановлено на 0. Ви можете використовувати параметр xy_speed для визначення швидкості переміщення по осях x та y, а також використовуйте параметр z_speed, щоб вказати швидкість обертання осі z. У цьому прикладі швидкість руху осей x і y встановлено як 0,7 м/с, а швидкість обертання осі z встановлено на 0. Щоб встановити ефект світла броні, зверніться до Прикладу 2: Налаштуйте світло броні робота. Далі ми будемо використовувати три методи для контролю дій із переміщенням шасі:

○ Спосіб 1: Після виконання дії завдання негайно викликайте метод wait_for_completed () :

ep_chassis.move(x=x_val, y=0, z=0, xy_speed=0.7).wait_for_completed()
ep_led.set_led(comp=led.COMP_ALL, r=255, g=0, b=0, effect=led.EFFECT_ON)

○ Спосіб 2: Викличте метод wait_for_completed () після виконання інших команд:

chassis_action = ep_chassis.move(x=x_val, y=0, z=0, xy_speed=0.7)
ep_led.set_led(comp=led.COMP_ALL, r=255, g=0, b=0, effect=led.EFFECT_ON)
chassis_action.wait_for_completed()

○ Спосіб 3: Не використовуйте метод wait_for_completed (), а використовуйте затримку, щоб забезпечити завершення дії:

ep_chassis.move(x=x_val, y=0, z=0, xy_speed=0.7)
ep_led.set_led(comp=led.COMP_ALL, r=255, g=0, b=0, effect=led.EFFECT_ON)
time.sleep(10)

Три механізми виклику інтерфейсу дій із завданнями відповідають різній поведінці робота. У методі 1 робот рухається у вказане положення, а потім встановлює броньоване світло на суцільно -червоний колір. У методах 2 та 3 під час руху світло броні буде світитися червоним кольором.

Порада

Ми рекомендуємо використовувати метод 1 та метод 2, оскільки викликати wait_for_completed () у відповідний час менш ризиковано.

• Звільніть відповідні ресурси, як описано в розділі Звільнення ресурсів роботів.

Повний процес керування шасі для переміщення на вказану відстань див. У прикладі програми /02_chassis/01_move.py.

from robomaster import robot


if __name__ == '__main__':
    ep_robot = robot.Robot()
    ep_robot.initialize(conn_type="sta")

    ep_chassis = ep_robot.chassis

    x_val = 0.5
    y_val = 0.6
    z_val = 90

    # 前进 0.5米
    ep_chassis.move(x=x_val, y=0, z=0, xy_speed=0.7).wait_for_completed()

    # 后退 0.5米
    ep_chassis.move(x=-x_val, y=0, z=0, xy_speed=0.7).wait_for_completed()

    # 左移 0.6米
    ep_chassis.move(x=0, y=-y_val, z=0, xy_speed=0.7).wait_for_completed()

    # 右移 0.6米
    ep_chassis.move(x=0, y=y_val, z=0, xy_speed=0.7).wait_for_completed()

    # 左转 90度
    ep_chassis.move(x=0, y=0, z=z_val, z_speed=45).wait_for_completed()

    # 右转 90度
    ep_chassis.move(x=0, y=0, z=-z_val, z_speed=45).wait_for_completed()

    ep_robot.close()