Обслуживание линий электропередач (ЛЭП) — сложная и зачастую опасная задача, требующая значительных затрат времени и ресурсов. Платформа дрона «Шмель» предлагает инновационное решение, позволяющее выполнять автономные задачи, такие как мониторинг, проверка тока и установка оборудования на ЛЭП без физического участия человека. В этой статье мы разберём процесс разработки платформы, её аппаратные и программные компоненты, а также ключевые вызовы и их решения.
Зачем нужны дроны для обслуживания ЛЭП?
Традиционные методы обслуживания ЛЭП, такие как использование вышек, вертолётов или ручной труд специалистов, дороги, трудоёмки и связаны с рисками для безопасности. Дроны могут стать безопасной и экономичной альтернативой, выполняя следующие задачи:
Проверка наличия тока: Неинвазивное измерение электрического тока.
Периодический мониторинг: Оценка состояния ЛЭП в реальном времени.
Мониторинг состояния: Проверка физической целостности проводов.
Стыковка с проводами: Установка ремонтных зажимов или датчиков на ЛЭП.
Согласно документации проекта, задачи вроде мониторинга имеют низкую сложность, так как не требуют физического взаимодействия с проводами, тогда как стыковка с проводами классифицируется как задача средней сложности из-за необходимости точной навигации и механических операций.
Аппаратное и программное обеспечение
Аппаратная платформа
Платформа «Шмель» — это модульный дрон, предназначенный для выполнения специализированных задач по обслуживанию ЛЭП. Основные компоненты:
Полётный контроллер: Обеспечивает стабильность и автономное управление.
Сервоприводы: Используются для точных механических операций, таких как установка ремонтных зажимов.
Датчики: Камеры для навигации и инфракрасные датчики (ИКЗ) для обнаружения коротких замыканий.
Механизм захвата: Позволяет дрону фиксироваться на проводах для установки оборудования.
Платформа предназначена для установки ремонтных зажимов, муфт и датчиков, минимизируя необходимость вмешательства человека.
Программное обеспечение
Программная часть базируется на кастомной прошивке полётного контроллера, интегрированной с фреймворком 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-маркеров и продвинутого управления полётом, платформа успешно решает задачи, такие как проверка тока и установка оборудования. В будущем возможно добавление новых датчиков и алгоритмов обнаружения неисправностей в реальном времени.
Комментарии (12)
HEXFFFFFFFF
25.05.2025 14:19Уже несколько лет занимаюсь беспилотниками. До этого 30 лет it и электроники. Текст очень слабенький, знаний явно недостаточно, подходы к решению задачи дилетанский. Знаний пайтона для решения подобных задач явно недостаточно))) Ребята пока похоже даже не знают в какую сторону копать. Печально что современное образование в таком состоянии...
AkhramovichSA
25.05.2025 14:19Это подрастающее поколение из кванториумов.
Они еще не сталкивались с трудностями, которые возникают при создании и запуске новых проектов, будь то технические проблемы или бюрократические сложности.
NutsUnderline
25.05.2025 14:19а что вы сразу у плохом то. если это хоть как то работает и правильно продемонстрировать о может хорошо взлететь и некисло срезать углы.
AkhramovichSA
25.05.2025 14:19Я как раз хочу сказать о позитивном. Если на Хабре опубликована данная статья о том, как молодая команда справилась с задачей, то можно предположить, что ещё десять команд реализовали подобный проект, но не стали о нём писать. А значит, есть ещё сто команд, которые пытались решить эту задачу.
Естественный процесс обучения, и я только рад тому, что это делается на реальном железе, а не в математических моделях.
Misha-Kushch
25.05.2025 14:19И в какую сторону стоит копать
HEXFFFFFFFF
25.05.2025 14:19Ну во первых существует несколько платформ( кодовая база) для беспилотников, основная- ардупилот, все остальные типа айнав и прочие ее клоны. Все это написано на С. Стоит начать с ее изучения. Серьезные проекты не обойдуться без модификации этоко кода под проект. Стоит так же изучить электронику полетных контроллеров и прочей бортовой электроники, использование стандартных модулей в серьезном проекте недопустимо, надо модифицировать под себя. Так же стоит погрузиться в стандарты, наприер изучить протокол мавлинк. Ну итд.
NutsUnderline
25.05.2025 14:19по данному материалу нельзя даже однозначно сказать что они этого НЕ сделали и НЕ знают. просто что то написали, для кого то для чего то, серьезно это оценивать просто напросто не стоит
NutsUnderline
25.05.2025 14:19с вижу то оно все изящно и красиво. но вопросов много. например какое железо должно все это тянуть. что будет если код искажен (умышлено).
впрочем, юные ученые не умеют отвечать на поставленные вопросы.
AkhramovichSA
25.05.2025 14:19Погодите, им еще рано, не все сразу. То что у них взлетело и что-то работает -- это уже большое достижение.
NutsUnderline
25.05.2025 14:19написать на чем у них питон крутиться вроде несложно. вот написали они статью (зачем то) им задали вопросы ответа нет. почему? причина может быть очень разной, и мне хотелось бы ее понять. просто это не первые статьи от "молодых дарований" и я начинаю обращать внимание на этот момент, который может все поменять.
LuckyStarr
Выкидыш нейронки? С единственным комментарием автора?
NutsUnderline
сам себя не похвалишь - никто не похвалит ;)