Работа с API

Установка библиотеки

1. Проверка наличия Git

Перед началом работы убедитесь, что Git установлен на вашем компьютере.

Откройте командную строку (cmd) или PowerShell и выполните команду: git --version при установленном Git вы увидите версию.

В случае если Git не найден, установите его с официального сайта, обязательно перезагрузите компьютер после установки

2. Установка библиотек через pip (рекомендуется)

Библиотеку можно установить напрямую из GitHub

pip3 install git+https://github.com/EurusAero/eurus_edu.git#subdirectory=libs/python/EurusEdu

3. Установка библиотек через клонирование репозитория

  • Склонируйте репозиторий

    git clone https://github.com/EurusAero/eurus_edu.git

  • Установите библиотеку из локальной директории

    pip3 install ./eurus_edu/libs/python/EurusEdu/

Создание объектов дрона и камеры

drone = EurusControl(ip, drone_port)
camera = EurusCamera(ip, camera_port)

Входные параметры:

  • ip: ip дрона
  • port: int порт
  • do_log: bool true для переключения логирования
  • log_file: str файл для логирования
  • socket_timeout_time: Максимальное время ожидания подключения в секундах. Если соединение не установлено за указанное время, генерируется исключение
  • auto_connect: Если True, подключение к дрону выполняется автоматически при создании объекта. Если False, необходимо самостоятельно вызвать метод подключения

Подключение:

drone.connect()
camera.connect()

Методы дрона

connect

Подключиться к дрону / камере

Пример:

drone.connect()
camera.connect()

disconnect

Отключиться от дрона / камеры

Пример:

drone.connect()
camera.connect()

arm

Включить моторы дрона (ARM)

drone.arm()

disarm

Выключить моторы дрона (DISARM).

drone.disarm()

takeoff

Взлёт дрона на заданную высоту с указанной скоростью

Параметры:

  • altitude - высота взлёта (м)
  • speed - скорость взлёта (м/с) (Значение по умолчанию: 1)

Пример:

drone.takeoff(altitude = 1.5, speed = 0.5)
time.sleep(6)

При взлёте дрон автоматически армится и переходит в режим управления полётом. Локальная система координат сбрасывается в точку (0, 0, 0)

Незаполненные числовые параметры устанавливаются в значение 0

land

Посадка дрона

drone.land()

Дрон плавно снижает высоту и выполняет посадку в текущей точке

move_to_local_point

Полет к заданной точке в локальной системе координат

Параметры:

  • x — координата X (м)
  • y — координата Y (м)
  • z — координата Z (м)
  • yaw — угол поворота (градусы)
    • если задан (float) — дрон повернётся на указанный угол
    • если None — угол рысканья не изменяется
  • speed — скорость полёта к целевой точке (м/с). Значение по умолчанию: 1

Пример:

drone.takeoff(1)
time.sleep(5)

drone.move_to_local_point(
    x=2,
    y=0,
    z=1,
    yaw=90
) # Дрон летит на 2 метра вперёд и разворачивается на 90 градусов

move_in_body_frame

Полёт в системе координат, связанной с текущим местоположением дрона (body frame)

Параметры:

  • x - смещение вперёд относительно текущей позиции (м)
  • y - смещение влево относительно текущей позиции (м)
  • z - целевая высота относительно земли (м)
  • yaw - угол поворота (градусы)
    • если задан (float) — дрон повернётся на указанный угол
    • если None — угол рысканья не изменяется
  • speed - скорость полёта (м/с). Значение по умолчанию: 1

Пример:

drone.takeoff(1)
time.sleep(6)

drone.move_in_body_frame(
    x=4,
    y=3,
    z=1,
    yaw = 90,
    speed = 0.8)

Команда задаёт перемещение относительно текущей позиции дрона, где оси напралены вдоль корпуса коптера

set_velocity

Установка скоростей движения дрона.

Параметры:

  • vx — скорость по X (м/с)
  • vy — скорость по Y (м/с)
  • vz — скорость по Z (м/с)
  • yaw_rate — скорость вращения (град/с)

Пример:

drone.set_velocity(
    vx=0.5,
    vy=0,
    vz=0,
    yaw_rate=20
)

time.sleep(3)
drone.set_velocity(0, 0, 0, 0)

Команда действует до следующего вызова set_velocity

get_telemetry

Получить текущую телеметрию дрона

Формат ответа:

  • None - если телеметрия недоступна
  • dict - при успешном получении данных

Структура telemetry:

state

  • connected — есть ли соединение
  • armed — состояние моторов
  • mode — текущий режим
  • system_status — состояние системы

battery

  • voltage - напряжение (В)
  • cell_voltage - напряжение на одну ячейку (В)
  • current - ток (А)
  • percentage — заряд (%)

local_position

  • x, y, z - позиция (м)
  • roll, pitch, yaw - углы (градусы)

velocity

  • vx, vy, vz- скорости (м/с)

point_reached

  • True - целевая точка достигнута
  • False - ошибка

Пример:

telemetry = drone.get_telemetry()

if telemetry:
    print("Высота:", telemetry["local_position"]["z"])
    print("Батарея:", telemetry["battery"]["percentage"], "%")

laser_shot

Произвести выстрел из лазерной пушки

Результат:

  • True - выстрел выполнен
  • False - ошибка

Пример:

if drone.laser_shot():
    print("Выстрел выполнен")

Команда не блокирует управление полётом

Текущий поток блокируется на ~0.5 секунды до получения ответа

led_control

Управление светодиодной лентой

Параметры:

  • effect - режим свечения

Поддерживаемые режимы:

  • base - режим "комета" белого цвета
  • static - статичный цвет
  • rainbow - радуга
  • komet - бегущий эффект
  • blink - мигание
  • clear - выключение

Дополнительные параметры:

  • r, g, b - цвет (значения от 0 до 255)
  • nLED - количество светодиодов
  • brightness - яркость (значения от 0 до 1)
  • speed - скорость свечения (значения от 0 до 1)

Пример:

drone.led_control(
    effect="static",
    r=255,
    g=0,
    b=0,
    brightness=0.8
    speed=0.3
)

Методы камеры

start_stream

Запуск видеопотока

stop_stream

Остановка видеопотока

read

Возвращает последний кадр

Результат:

  • True / False - результат получения кадра
  • Сам кадр при успешном получении

get_detection

Возвращает словарь

Поддерживаются три состояния мишеней:

  • Выключенные мишени - не светятся, возвращаются в массиве targets
  • Синие мишени - светятся синим цветом, возвращаются в массиве blue_targets
  • Красные мишени - светятся красным цветом,возвращаются в массиве red_targets

Описание полей ответа:

  • x - координата центра мишени по оси X (в пикселях)
  • y - координата центра мишени по оси Y (в пикселях)
  • w - ширина рамки мишени (в пикселях)
  • h - высота рамки мишени (в пикселях)
  • conf - уверенность детекции (от 0.0 до 1.0)
  • class - класс обнаруженного объекта:

    target - выключенная мишень

    blue target - синяя мишень

    red target - красная мишень

Пример:

{
    "command": "targets_response",
    "red_targets": [
        {
            "x": 230.0,
            "y": 277.5,
            "w": 89.5,
            "h": 96.75,
            "conf": 0.75,
            "class": "red target"
        }
    ],
    "blue_targets": [
        {
            "x": 213.25,
            "y": 162.88,
            "w": 101.0,
            "h": 108.25,
            "conf": 0.86,
            "class": "blue target"
        }
    ],
    "targets": [
        {
            "x": 229.25,
            "y": 278.25,
            "w": 91.5,
            "h": 98.5,
            "conf": 0.88,
            "class": "target"
        },
        {
            "x": 213.88,
            "y": 162.75,
            "w": 100.75,
            "h": 107.5,
            "conf": 0.87,
            "class": "target"
        }
    ],
    "all_targets": [
        {
            "x": 229.25,
            "y": 278.25,
            "w": 91.5,
            "h": 98.5,
            "conf": 0.88,
            "class": "target"
        },
        {
            "x": 213.88,
            "y": 162.75,
            "w": 100.75,
            "h": 107.5,
            "conf": 0.87,
            "class": "target"
        },
        {
            "x": 213.25,
            "y": 162.88,
            "w": 101.0,
            "h": 108.25,
            "conf": 0.86,
            "class": "blue target"
        },
        {
            "x": 230.0,
            "y": 277.5,
            "w": 89.5,
            "h": 96.75,
            "conf": 0.75,
            "class": "red target"
        }
    ],
    "received_at": 1769432799.1361434
}

Ошибки подключения

Heartbeat

После успешного подключения к дрону библиотека автоматически начинает отправлять heartbeat-сообщения

Heartbeat отправляется каждые 0,5 секунды и используется для контроля активности соединения между компьютером и дроном

Если дрон не получает heartbeat более 2 секунд, соединение считается потерянным. В этом случае автоматически выполняются следующие действия:

  1. Включается световая индикация ошибки подключения (Цвет, эффект и яркость индикации определяются параметрами секции [connection_error] файла eurus.ini)

  2. Дрон инициирует автоматическую посадку

Данный механизм позволяет безопасно завершить полёт при потере связи с управляющим компьютером

results matching ""

    No results matching ""