5.6.1.2. Приклад 2: Контролюйте швидкість шасі

Контроль швидкості шасі є типовою практикою миттєвого управління. Після видачі команди управління робот негайно рухається з заданою швидкістю.

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

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

ep_chassis= ep_robot.chassis

• Використовуйте метод dirve_speed () в об’єкті chassis, щоб контролювати швидкість шасі. Параметри x, y та z методу представляють швидкість руху вперед, поперек та обертання відповідно. У цьому прикладі швидкість руху вперед x встановлено на 0,5 м/с. Параметр timeout використовується для визначення періоду очікування. Якщо після закінчення цього періоду команда контролю швидкості не надходить, SDK дає вказівку роботу зупинитися. У цьому прикладі час очікування встановлено на 5 секунд, а швидкість – на 0 після того, як робот рухається із заданою швидкістю протягом 3 секунд:

ep_chassis.drive_speed(x=0.5, y=0, z=0, timeout=5)
time.sleep(3)
ep_chassis.drive_speed(x=0, y=0, z=0, timeout=5)

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

Для повного процесу контролю швидкості шасі зверніться до прикладів програми /02_chassis/03_speed.py. У цій програмі швидкість роботи змінюється щоразу, коли робот рухається із зазначеною швидкістю протягом трьох секунд.

import time
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.3
    z_val = 30

    # 前进 3秒
    ep_chassis.drive_speed(x=x_val, y=0, z=0, timeout=5)
    time.sleep(3)

    # 后退 3秒
    ep_chassis.drive_speed(x=-x_val, y=0, z=0, timeout=5)
    time.sleep(3)

    # 左移 3秒
    ep_chassis.drive_speed(x=0, y=-y_val, z=0, timeout=5)
    time.sleep(3)

    # 右移 3秒
    ep_chassis.drive_speed(x=0, y=y_val, z=0, timeout=5)
    time.sleep(3)

    # 左转 3秒
    ep_chassis.drive_speed(x=0, y=0, z=-z_val, timeout=5)
    time.sleep(3)

    # 右转 3秒
    ep_chassis.drive_speed(x=0, y=0, z=z_val, timeout=5)
    time.sleep(3)

    # 停止麦轮运动
    ep_chassis.drive_speed(x=0, y=0, z=0, timeout=5)

    ep_robot.close()