Разработка платформы дрона «Шмель» для обслуживания линий электропередач

от автора

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программная часть базируется на кастомной прошивке полётного контроллера, интегрированной с фреймворком 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-маркеров и продвинутого управления полётом, платформа успешно решает задачи, такие как проверка тока и установка оборудования. В будущем возможно добавление новых датчиков и алгоритмов обнаружения неисправностей в реальном времени.


ссылка на оригинал статьи https://habr.com/ru/articles/912646/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *