Обслуживание линий электропередач (ЛЭП) — сложная и зачастую опасная задача, требующая значительных затрат времени и ресурсов. Платформа дрона «Шмель» предлагает инновационное решение, позволяющее выполнять автономные задачи, такие как мониторинг, проверка тока и установка оборудования на ЛЭП без физического участия человека. В этой статье мы разберём процесс разработки платформы, её аппаратные и программные компоненты, а также ключевые вызовы и их решения.

Зачем нужны дроны для обслуживания ЛЭП?

Традиционные методы обслуживания ЛЭП, такие как использование вышек, вертолётов или ручной труд специалистов, дороги, трудоёмки и связаны с рисками для безопасности. Дроны могут стать безопасной и экономичной альтернативой, выполняя следующие задачи:

  • Проверка наличия тока: Неинвазивное измерение электрического тока.

  • Периодический мониторинг: Оценка состояния ЛЭП в реальном времени.

  • Мониторинг состояния: Проверка физической целостности проводов.

  • Стыковка с проводами: Установка ремонтных зажимов или датчиков на ЛЭП.

Согласно документации проекта, задачи вроде мониторинга имеют низкую сложность, так как не требуют физического взаимодействия с проводами, тогда как стыковка с проводами классифицируется как задача средней сложности из-за необходимости точной навигации и механических операций.

Аппаратное и программное обеспечение

Аппаратная платформа

Платформа «Шмель» — это модульный дрон, предназначенный для выполнения специализированных задач по обслуживанию ЛЭП. Основные компоненты:

  • Полётный контроллер: Обеспечивает стабильность и автономное управление.

  • Сервоприводы: Используются для точных механических операций, таких как установка ремонтных зажимов.

  • Датчики: Камеры для навигации и инфракрасные датчики (ИКЗ) для обнаружения коротких замыканий.

  • Механизм захвата: Позволяет дрону фиксироваться на проводах для установки оборудования.

Платформа предназначена для установки ремонтных зажимов, муфт и датчиков, минимизируя необходимость вмешательства человека.

Программное обеспечение

Программная часть базируется на кастомной прошивке полётного контроллера, интегрированной с фреймворком Clover (популярной платформой для разработки дронов). Основные функции ПО:

  • Автономное управление полётом: Взлёт, посадка и следование траектории.

  • Навигация с ArUco-маркерами: Использование компьютерного зрения для ориентации относительно проводов.

  • PID-регулятор: Обеспечение точного позиционирования и следования траектории.

Работа в команде

Наша команда состояла из двух человек, и мы распределили задачи следующим образом:

Сборка и программирование дрона, разработка Aruco map: Плешевич Милена.  

Программирование и защита проекта: Бондарь Георгий.

Каждый участник внёс значительный вклад в разработку и успешную реализацию проекта, обеспечив интеграцию всех компонентов системы и её защиту.

фото команд
фото команд

Шаг 1: Настройка автономного полёта

Платформа «Шмель» была протестирована на базовые автономные функции, включая:

  • Автономный взлёт на 1 и 2,5 метра.

  • Автономная посадка.

  • Тестирование сервоприводов для механических операций.

Пример кода на Python с использованием фреймворка Clover для автономного взлёта на 1 метр:

import rospy

from clover import srv

from std_srvs.srv import Trigger

rospy.init_node('autonomous_flight')

# Прокси для сервисов навигации и посадки

get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)

navigate = rospy.ServiceProxy('navigate', srv.Navigate)

land = rospy.ServiceProxy('land', Trigger)

# Взлёт на 1 метр

navigate(x=0, y=0, z=1, speed=0.5, frame_id='body', auto_arm=True)

rospy.sleep(5)  # Ожидание взлёта

# Посадка

land()

Этот код инициализирует ROS-ноду, командует дрону взлететь на 1 метр и затем приземлиться. Сервис navigate использует локальную систему координат (frame_id='body') для простоты.

Проблемы и решения

Изначально платформа сталкивалась с отсутствием полной автономии при использовании пульта дистанционного управления. Решением стало интегрирование фреймворка Clover в полётный контроллер «Шмеля», что позволило выполнять задачи автономно.

Шаг 2: Навигация с использованием ArUco-маркеров

Для точной навигации, особенно при стыковке с проводами, платформа использует ArUco-маркеры — специальные метки для компьютерного зрения. Они размещаются на калибровочной карте рядом с ЛЭП, обеспечивая точки привязки для определения положения и ориентации дрона.

В презентации приведена таблица координат маркеров. Вот пример кода на Python с использованием OpenCV для обнаружения и обработки ArUco-маркеров:

import cv2

import numpy as np

# Захват видеопотока с камеры

cap = cv2.VideoCapture(0)

# Определение словаря ArUco

aruco_dict = cv2.aruco.Dictionary_get(cv2.aruco.DICT_6X6_250)

parameters = cv2.aruco.DetectorParameters_create()

while True:

    ret, frame = cap.read()

    if not ret:

        break

    # Обнаружение маркеров

    corners, ids,  = cv2.aruco.detectMarkers(frame, arucodict, parameters=parameters)

    

    if ids is not None:

        # Оценка позы маркера

        rvec, tvec,  = cv2.aruco.estimatePoseSingleMarkers(corners, 0.05, cameramatrix, dist_coeffs)

        # Отрисовка маркеров

        cv2.aruco.drawDetectedMarkers(frame, corners, ids)

        

        # Использование вектора смещения для корректировки позиции дрона

        print(f"Позиция маркера {ids[0]}: {tvec[0]}")

    cv2.imshow('Frame', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):

        break

cap.release()

cv2.destroyAllWindows()

Этот код обнаруживает ArUco-маркеры в видеопотоке, оценивает их трёхмерную позу и предоставляет данные для управления положением дрона. Координаты маркеров из презентации (например, маркер 1 в точке (0.185, 0.185, 0.0) с длиной 0.22 м) используются для калибровки системы.

Масштабирование поля маркеров

Тестирование показало, что изначальное поле маркеров было слишком маленьким для надёжной навигации. Решением стало увеличение масштаба поля до 40×40 см, что улучшило точность обнаружения и навигации вокруг ЛЭП.

ArUco-map
ArUco-map
txt версия ArUco-map
txt версия ArUco-map

Шаг 3: Управление полётом с отслеживанием траектории

Для обеспечения точной стыковки и навигации платформа «Шмель» развивала подходы к управлению полётом. В презентации описана эволюция методов:

  1. Перемещение позиционной цели: Дрон следует за движущейся точкой на траектории.

  2. Управление целевыми скоростями: Скорости корректируются в зависимости от кривизны траектории.

  3. Упреждающая связь ускорения: Добавление предсказательного управления для учёта изменений.

  4. Цель страховочного положения: Введение запасной позиции для предотвращения аварий.

  5. Вращающиеся оси управления: Использование PID-регулятора для минимизации отклонений от траектории.

Пример реализации PID-регулятора для отслеживания траектории:

import numpy as np

class PIDController:

    def init(self, kp, ki, kd):

        self.kp = kp  # Пропорциональный коэффициент

        self.ki = ki  # Интегральный коэффициент

        self.kd = kd  # Дифференциальный коэффициент

        self.prev_error = 0

        self.integral = 0

    def compute(self, setpoint, actual, dt):

        error = setpoint - actual

        self.integral += error * dt

        derivative = (error - self.prev_error) / dt

        output = self.kp  error + self.ki  self.integral + self.kd * derivative

        self.prev_error = error

        return output

Пример использования

pid = PIDController(kp=1.0, ki=0.1, kd=0.05)

setpoint = np.array([0.185, 0.185, 0.0])  # Целевая позиция (из ArUco-маркера)

actual = np.array([0.1, 0.1, 0.0])        # Текущая позиция дрона

dt = 0.01  # Шаг времени

control_output = pid.compute(setpoint[0], actual[0], dt)

print(f"Выход регулятора: {control_output}")

Этот PID-регулятор корректирует положение дрона, минимизируя отклонение от целевой траектории, что обеспечивает плавное движение к проводам ЛЭП.

Тестирование и результаты

Платформа «Шмель» была протестирована на следующие задачи:

  • Автономный взлёт и посадка: Успешно выполнены на высотах 1 и 2,5 метра.

  • Работа сервоприводов: Проверена для развёртывания оборудования.

  • Точность навигации: Улучшена благодаря масштабированию поля ArUco-маркеров до 40×40 см.

Интеграция Clover и усовершенствованные алгоритмы управления решили проблему отсутствия автономности, обеспечив надёжную работу в реальных условиях.

Первые тесты полета дрона в автономном режиме
Первые тесты полета дрона в автономном режиме

Заключение

Платформа дрона «Шмель» демонстрирует потенциал автономных дронов в обслуживании ЛЭП. Благодаря сочетанию надёжного аппаратного обеспечения, навигации на основе ArUco-маркеров и продвинутого управления полётом, платформа успешно решает задачи, такие как проверка тока и установка оборудования. В будущем возможно добавление новых датчиков и алгоритмов обнаружения неисправностей в реальном времени.

Комментарии (12)


  1. LuckyStarr
    25.05.2025 14:19

    Выкидыш нейронки? С единственным комментарием автора?


    1. NutsUnderline
      25.05.2025 14:19

      сам себя не похвалишь - никто не похвалит ;)


  1. HEXFFFFFFFF
    25.05.2025 14:19

    Уже несколько лет занимаюсь беспилотниками. До этого 30 лет it и электроники. Текст очень слабенький, знаний явно недостаточно, подходы к решению задачи дилетанский. Знаний пайтона для решения подобных задач явно недостаточно))) Ребята пока похоже даже не знают в какую сторону копать. Печально что современное образование в таком состоянии...


    1. AkhramovichSA
      25.05.2025 14:19

      Это подрастающее поколение из кванториумов.

      Они еще не сталкивались с трудностями, которые возникают при создании и запуске новых проектов, будь то технические проблемы или бюрократические сложности.


      1. NutsUnderline
        25.05.2025 14:19

        а что вы сразу у плохом то. если это хоть как то работает и правильно продемонстрировать о может хорошо взлететь и некисло срезать углы.


        1. AkhramovichSA
          25.05.2025 14:19

          Я как раз хочу сказать о позитивном. Если на Хабре опубликована данная статья о том, как молодая команда справилась с задачей, то можно предположить, что ещё десять команд реализовали подобный проект, но не стали о нём писать. А значит, есть ещё сто команд, которые пытались решить эту задачу.

          Естественный процесс обучения, и я только рад тому, что это делается на реальном железе, а не в математических моделях.


    1. Misha-Kushch
      25.05.2025 14:19

      И в какую сторону стоит копать


      1. HEXFFFFFFFF
        25.05.2025 14:19

        Ну во первых существует несколько платформ( кодовая база) для беспилотников, основная- ардупилот, все остальные типа айнав и прочие ее клоны. Все это написано на С. Стоит начать с ее изучения. Серьезные проекты не обойдуться без модификации этоко кода под проект. Стоит так же изучить электронику полетных контроллеров и прочей бортовой электроники, использование стандартных модулей в серьезном проекте недопустимо, надо модифицировать под себя. Так же стоит погрузиться в стандарты, наприер изучить протокол мавлинк. Ну итд.


        1. NutsUnderline
          25.05.2025 14:19

          по данному материалу нельзя даже однозначно сказать что они этого НЕ сделали и НЕ знают. просто что то написали, для кого то для чего то, серьезно это оценивать просто напросто не стоит


  1. NutsUnderline
    25.05.2025 14:19

    с вижу то оно все изящно и красиво. но вопросов много. например какое железо должно все это тянуть. что будет если код искажен (умышлено).

    впрочем, юные ученые не умеют отвечать на поставленные вопросы.


    1. AkhramovichSA
      25.05.2025 14:19

      Погодите, им еще рано, не все сразу. То что у них взлетело и что-то работает -- это уже большое достижение.


      1. NutsUnderline
        25.05.2025 14:19

        написать на чем у них питон крутиться вроде несложно. вот написали они статью (зачем то) им задали вопросы ответа нет. почему? причина может быть очень разной, и мне хотелось бы ее понять. просто это не первые статьи от "молодых дарований" и я начинаю обращать внимание на этот момент, который может все поменять.