Обслуживание линий электропередач (ЛЭП) — сложная и зачастую опасная задача, требующая значительных затрат времени и ресурсов. Платформа дрона «Шмель» предлагает инновационное решение, позволяющее выполнять автономные задачи, такие как мониторинг, проверка тока и установка оборудования на ЛЭП без физического участия человека. В этой статье мы разберём процесс разработки платформы, её аппаратные и программные компоненты, а также ключевые вызовы и их решения.
Зачем нужны дроны для обслуживания ЛЭП?
Традиционные методы обслуживания ЛЭП, такие как использование вышек, вертолётов или ручной труд специалистов, дороги, трудоёмки и связаны с рисками для безопасности. Дроны могут стать безопасной и экономичной альтернативой, выполняя следующие задачи:
Проверка наличия тока: Неинвазивное измерение электрического тока.
Периодический мониторинг: Оценка состояния ЛЭП в реальном времени.
Мониторинг состояния: Проверка физической целостности проводов.
Стыковка с проводами: Установка ремонтных зажимов или датчиков на ЛЭП.
Согласно документации проекта, задачи вроде мониторинга имеют низкую сложность, так как не требуют физического взаимодействия с проводами, тогда как стыковка с проводами классифицируется как задача средней сложности из-за необходимости точной навигации и механических операций.
Аппаратное и программное обеспечение
Аппаратная платформа
Платформа «Шмель» — это модульный дрон, предназначенный для выполнения специализированных задач по обслуживанию ЛЭП. Основные компоненты:
Полётный контроллер: Обеспечивает стабильность и автономное управление.
Сервоприводы: Используются для точных механических операций, таких как установка ремонтных зажимов.
Датчики: Камеры для навигации и инфракрасные датчики (ИКЗ) для обнаружения коротких замыканий.
Механизм захвата: Позволяет дрону фиксироваться на проводах для установки оборудования.
Платформа предназначена для установки ремонтных зажимов, муфт и датчиков, минимизируя необходимость вмешательства человека.
Программное обеспечение
Программная часть базируется на кастомной прошивке полётного контроллера, интегрированной с фреймворком 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 см, что улучшило точность обнаружения и навигации вокруг ЛЭП.


Шаг 3: Управление полётом с отслеживанием траектории
Для обеспечения точной стыковки и навигации платформа «Шмель» развивала подходы к управлению полётом. В презентации описана эволюция методов:
Перемещение позиционной цели: Дрон следует за движущейся точкой на траектории.
Управление целевыми скоростями: Скорости корректируются в зависимости от кривизны траектории.
Упреждающая связь ускорения: Добавление предсказательного управления для учёта изменений.
Цель страховочного положения: Введение запасной позиции для предотвращения аварий.
Вращающиеся оси управления: Использование 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-маркеров и продвинутого управления полётом, платформа успешно решает задачи, такие как проверка тока и установка оборудования. В будущем возможно добавление новых датчиков и алгоритмов обнаружения неисправностей в реальном времени.