Разработка для коптеров / Хабр

Разработка для коптеров / Хабр Конструкторы

# assembly/setup

The Pixhawk 4 Wiring Quick Start provides instructions on how to assemble required/important peripherals including GPS, Power Management Board etc.

# building firmware

To build PX4 for this target:

# pinouts

Download Pixhawk 4 pinouts from here(opens new window).

# purchase

Order from Holybro(opens new window).

# serial port mapping

UARTDevicePort
UART1/dev/ttyS0GPS
USART2/dev/ttyS1TELEM1 (flow control)
USART3/dev/ttyS2TELEM2 (flow control)
UART4/dev/ttyS3TELEM4
USART6/dev/ttyS4RC SBUS
UART7/dev/ttyS5Debug Console
UART8/dev/ttyS6PX4IO

# supported platforms / airframes

Any multicopter / airplane / rover or boat that can be controlled with normal RC servos or Futaba S-Bus servos.
The complete set of supported configurations can be seen in the Airframes Reference.

# voltage ratings

Pixhawk 4 can be triple-redundant on the power supply if three power sources are supplied. The three power rails are: POWER1, POWER2 and USB.

Normal Operation Maximum Ratings

Under these conditions all power sources will be used in this order to power the system:

  1. POWER1 and POWER2 inputs (4.9V to 5.5V)
  2. USB input (4.75V to 5.25V)
Смотрите про коптеры:  Робот-танк управляемый акселерометром

Absolute Maximum Ratings

Under these conditions the system will not draw any power (will not be operational), but will remain intact.

  1. POWER1 and POWER2 inputs (operational range 4.1V to 5.7V, 0V to 10V undamaged)
  2. USB input (operational range 4.1V to 5.7V, 0V to 6V undamaged)
  3. Servo input: VDD_SERVO pin of FMU PWM OUT and I/O PWM OUT (0V to 42V undamaged)

Бортовая электроника

Основной компонент, который мы разрабатывали самостоятельно, — плата стабилизации. Изначально она была основана на платформе Arduino Uno, потом заменили на более мощную Due, что позволило увеличить частоту ПИД-регуляторов с 40Гц до 66.(6)Гц.

Пропеллеры коптера приводятся в движение компактными бесколлекторными двигателями в связке со стандартными контроллерами оборотов — ESC. Мы используем ESC с изменённой прошивкой.

Для питания всей системы используется литий-полимерный аккумулятор (3S). Из соображений безопасности мы решили сделать систему мониторинга напряжения на аккумуляторе. В штатном режиме использования аккумуляторов система ведёт себя достаточно стабильно. Однако на начальных этапах работы мы наблюдали эффекты, вызванные неоптимальным использованием батарей:

Для наших целей ESC было решено перепрограммировать. Благодаря использованию прошивки tgy (от SimonK) мы добились уменьшения задержки системы на пути от центрального контроллера до двигателей. В результате компоненты ПИД и угловая скорость стали более синусоидальными, а поведение всей системы приблизилось к поведению математической модели.

Для измерения динамических параметров используются следующие датчики:

Возможности игрового робота

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

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

  • Гипоаллергенность. У животных-роботов нет шерсти, а изготавливаются они из безопасных для людей материалов. Поэтому электронные питомцы не способны вызывать аллергию у домочадцев.
  • Минимум затрат времени. Не требуют постоянного выгула, внимания со стороны хозяев. Их можно спокойно оставить дома на любой неограниченный срок, либо просто отключить.
  • Полная безопасность. Электронные псы, в отличие от живых, не способны причинить вреда маленьким детям, поэтому их можно оставлять с ними без всякой опаски.
  • Отсутствие необходимости в каких-либо документах. К примеру, если вы собираетесь отправиться в семейное путешествие с ребёнком, можно без проблем взять его электронного любимца с собой. Роботу не потребуется ставить прививки, оформлять дополнительные документы, проходить карантин при въезде в другую страну.
  • Минимум финансовых затрат. Расходы на содержание такой собаки составляют всего 1-2% от затрат на настоящего пса. Если живому питомцу регулярно требуется корм, прививки, помощь ветеринара, прочий уход, то для электронного аналога нужно лишь немного электроэнергии для подзарядки аккумуляторных батарей.

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

  • Они способны запоминать и исполнять десятки команд и сценариев поведения.
  • Можно самостоятельно обучать роботизированных питомцев различным командам, не создавая электронных программ и не обращаясь за помощью к специалистам.
  • Взаимодействие и взаимопонимание. Собаки оснащены системой искусственного интеллекта, позволяющей им развлекать не только детей, но и взрослых. Существуют модификации, предназначенные для игр с настоящими животными в отсутствие хозяев. Кроме того, они способны взаимодействовать с другими электронными собаками, подобно живым домашним питомцам.
  • Возможность самостоятельно учиться и запоминать предпочтения хозяина в процессе игрового общения с ним.
  • Способность выражать различные эмоции при помощи мимики, телодвижений, музыки, световой индикации.

В перечень дополнительных возможностей современных модификаций роботов от ведущих производителей также входят:

  • Производить аудио- и видеосъёмку с сохранением информации на флеш-карте, или встроенном носителе.
  • Подключаться к интернету, и при помощи Wi-Fi-соединения поддерживать удалённую связь с мобильным устройством владельца.
  • Исполнять функции органайзера: работать будильником, напоминать о предстоящих событиях.
  • Отслеживать температуру в доме и передавать данные о ней на смартфон хозяина.
  • Проигрывать музыкальные файлы из интернета через встроенные динамики.
  • Встроенный интерактивный переводчик для распознавания команд на разных языках.
  • Способность самостоятельной подзарядки аккумуляторов от внешних источников электроэнергии.
  • Определять прикосновение человеческой руки, а также отличать лица домочадцев от лиц посторонних людей.
  • Рассчитывать расстояние и крутизну уклона для безопасного движения и спуска.

Благодаря такому набору дополнительных функций, электронная собака служит не только игрушкой, но и настоящим помощником, выступая одной из составляющих системы Smart Home.

Воспроизводимость результатов

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

Грабли

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

С одной стороны, существует минимальная мощность, которую уменьшить нельзя, или моторы просто остановятся. С другой, уменьшение мощности может быть необходимо для правильной работы алгоритма. Если мощность (throttle) уменьшить слишком сильно, ПИД может «зашкаливать» в нижнюю сторону. Чтобы решить эту проблему, мы ограничиваем доступные пилоту мощности.

Разработка для коптеров / Хабр
Другая опасность — влияние побочных вибраций от моторов на Разработка для коптеров / ХабрРазработка для коптеров / Хабр

Как играть с интерактивным питомцем?

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

Набор возможных команд зависит от каждой конкретной модификации. Одна из самых «продвинутых» моделей на современном рынке, пёс Aibo от Sony, с самого начала ведёт себя как обычный щенок. В процессе общения с хозяевами формируется характер и стиль поведения электронного питомца.

В базовый список команд для собак роботов средней ценовой категории входят:

  • Лежать.
  • Сидеть.
  • Играть с неким предметом (мячом, палкой и т.д.).
  • Кушать (возможность самостоятельного поиска источника электроэнергии и подзарядки).
  • Исполнять различные трюки, в зависимости от заложенной программы.

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

Калибровка пид

Для углов Разработка для коптеров / ХабрРазработка для коптеров / ХабрРазработка для коптеров / Хабр

Хотя такой подход не самый эффективный (мы не знаем «срок годности» коэффициентов количественно и считаем их константами), на практике задача стабилизации коптера в полёте была нами решена. Правда, возникла проблема с управлением, но об этом позднее.

Матчасть

Определим невязку — разницу между требуемым и реальным значением некоторой величины:

Разработка для коптеров / Хабр

 — требуемое значение величины (угол с джойстика),

Разработка для коптеров / Хабр

 — текущее значение величины (угол с датчика).

Зададим момент сил для угла Разработка для коптеров / Хабр

где

Разработка для коптеров / Хабр

 — пропорциональная,

Разработка для коптеров / Хабр

 — интегральная,

Разработка для коптеров / Хабр

 — дифференциальная составляющие.


Знак минус говорит о том, что при положительных

Разработка для коптеров / Хабр

воздействие направлено против отклонения.

В чём смысл этой формулы? Напишем уравнение динамики, положив Разработка для коптеров / ХабрРазработка для коптеров / Хабр

 — момент инерции.

Для простоты уберём интегральную составляющую (Разработка для коптеров / ХабрРазработка для коптеров / ХабрРазработка для коптеров / Хабр

где

Т. е. чем больше пропорциональная составляющая, тем более «резкой» будет реакция на воздействие (больше амплитуда). Чем больше дифференциальная составляющая, тем быстрее будет происходить затухание (больше декремент).

Из модели затухающих колебаний получаем выражение для коэффициента затухания:

Из возможных решений уравнения нам подходит режим, близкий к критическому (граница апериодичности,

Разработка для коптеров / Хабр

) — нет отрицательного «перелёта» графика, переходный процесс короткий. Как видно, критический режим задается всего одним соотношением на коэффициенты ПИД-регулятора.

Интегральная составляющая устраняет статическую ошибку. Пусть невязка Разработка для коптеров / ХабрРазработка для коптеров / ХабрРазработка для коптеров / Хабр

Более подробный анализ уравнения ПИД-регулятора можно найти в других статьях: раз, два.

Новая жизнь легендарной игрушки

В 2023 году японская компания Sony сообщила о начале работы над созданием нового поколения роботов Aibo, в котором будут объединены последние достижения развлекательных и аудиовизуальных технологий и новейшие разработки в области робототехники и искусственного интеллекта.

От заявления о новой разработке до ее первого показа публике прошло не слишком много времени. Новый робот sony aibo был представлен на презентации, состоявшейся 31 октября 2023 года. Журналисты, присутствовавшие на мероприятии, были восхищены не только внешним видом обновленного робота, но и его поведением.

С первого взгляда были заметны внешние изменения, полученные собакой роботом айбо в процессе ее создания:

  • движения стали более естественными, что стало возможным благодаря большому числу осей перемещения частей пластикового тела;
  • действия, выполняемые новым Аибо, стали более естественными, присущими реальному животному;
  • звуки, издаваемые собачкой стали разнообразнее и отражают ситуацию, в которой она находится;
  • разработчики снабдили модель выразительными глазами, способными передавать эмоции. При возмущении или обиде она даже умеет закатывать их;
  • Aibo получила способность различать людей, живущих в доме, а также на каждого из них реагировать по-разному.

Как говорят разработчики, благодаря целому набору уникальных характеристик, присущих обновленной версии робота, она будет иметь эмоциональную связь со своим окружением. Это сделает робота собаку sony aibo 2023 года, полноценным членом семьи.

Новая игрушка расширит способности робота-собаки sony aibo

Представленная в конце 2023 года в Японии робот-собака Sony Aibo, получившая не только новую электронику и механику, но и искусственный интеллект, поступила в сентябре прошлого года в продажу в США по цене $2900, включая подписку для доступа к облаку и LTE-связи на трёхлетний период.

Этот электронный питомец постоянно совершенствуется, умело подстраивается под своего хозяина и может запоминать предпочтения до сотни людей. И если уж он так недёшево обходится владельцам, то почему бы не купить Aibo игровой аксессуар всего за $40. Кубик Aidice, который уже поступил в американскую розницу, — не первая специализированная игрушка, с которой робопёс любит возиться. В стартовом комплекте с ним идёт косточка Aibone и розовый мячик.

Новую безделицу Aibo может удерживать, вращать, бросать и складывать — в наборе идут два кубика, но их число можно увеличить. По словам Sony, со временем могут быть добавлены и другие способы взаимодействия. Как это выглядит вживую можно посмотреть на YouTube, так как в Японии Aidice уже некоторое время доступен в продаже.

Игрушка расширяет умения Aibo и призвана способствовать её развитию. С тех пор, как в 1999 году Sony впервые представила публике робота-собаку, она прошла долгий путь развития. Текущая версия наделена большим набором датчиков, камер и двигателей в сочетании с технологией глубинного обучения, благодаря которой Aibo может распознавать окружение, предметы, людей и даже определять настроение.

Вполне вероятно, что Sony не остановится на текущем наборе аксессуаров, чтобы порадовать владельцев Aibo и разнообразить взаимодействие с ним. Кстати, в январе компания представила модификацию робота Aibo Choco Edition в окрасе биглей и с функцией патрулирования жилища, которая станет доступна и для обычной модели после обновления до версии 2.0 в феврале.

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL ENTER.

О нас

Мы — студенты МФТИ (в своём большинстве), которые в свободное время занимаются проектом на мастерской TechnoWorks. Кроме коптера у нас живут и другие проекты: железные и программные. О них мы расскажем как-нибудь потом. А еще у нас можно придумать и реализовать свою идею (а мы поможем найти людей).

Если есть желание присоединиться к нашей команде, свяжитесь с нами! Мастерская активно расширяется, для новых участников у нас полно творческой и технической работы. И печенек.

Первая авария

Слишком большая дифференциальная составляющая на практике приводит к автоколебаниям, чего не должно быть в теории. Почему? Уберём все составляющие, кроме дифференциальной, и решим уравнение:

Разработка для коптеров / ХабрРазработка для коптеров / Хабр

т. е. величина

Разработка для коптеров / Хабр

превращается в линейную комбинацию

Разработка для коптеров / Хабр

и её производной. То же самое происходит с моментом сил, который также является гармонической функцией в этом примере. При определенных

Разработка для коптеров / Хабр

коэффициенты линейной комбинации могут быть такими, что возникнут незатухающие автоколебания.

Разработка для коптеров / Хабр
Также результат работы составляющих ПИД приходится ограничивать по модулю. Иначе значение Разработка для коптеров / Хабр

Компромиссом является установка не слишком маленьких коэффициентов в совокупности с введением ограничения сверху на все три составляющие: пропорциональную, интегральную и дифференциальную.

Стоит сказать, что реальная коррекция в почти горизонтальном положении — около 1–2 попугаев процентов мощности моторов (полётная мощность около 60%).

Разработка для коптеров / Хабр
Рассмотрим решение уравнения второго порядка (1), которое в одном из случаев является затухающей синусоидой.

На практике действительно получается что-то похожее (пример справа). Для демонстрации коэффициенты специально ухудшены для увеличения времени затухания. Оригинальную прошивку ESC пришлось заменить, т. к. она вносила существенную задержку, из-за которой математическая модель плохо описывала реальную систему.

Разработка для коптеров / Хабр
Поскольку Разработка для коптеров / Хабр

Планы и перспективы

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

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

Полёт коптера с нашей системой стабилизации

лето 2023.зима 2023.весна 2023

Популярные модели собак-роботов

Рассмотрим несколько популярных моделей электронных псов, представленных на современном рынке:

  • Aibo. Свою родословную этот, один из самых интеллектуально развитых электронных псов, ведёт из 90-х годов ХХ века. Именно тогда компания Sony представила первую версию этой умной собаки. Современная Aibo наделена способностью к самообучению, и её характер полностью формируется под воздействием общения с владельцем. Стоимость японского робота пса, по отечественным меркам, отнюдь не мала – свыше 70 тысяч рублей.
  • Spot-Mini от компании Boston Dynamics способен демонстрировать чудеса интеллекта, даже несмотря на отсутствие головы. На её месте возможна установка манипулятора, с помощью которого Spot-Mini может производить довольно сложные действия, например, открывать двери. К слову, подобную модель электронного пса держит дома глава корпорации Amazon, мультимиллионер Джефф Безос.
  • Smartpet. Это не совсем робот, а скорее приставка к смартфону, исполненная в виде стилизованного щенка. Мобильное устройство вставляется в крепление, находящееся на месте головы, и его монитор превращается в лицо собаки. Для оживления пса потребуется загрузить специальное приложение, и на дисплее появится мордочка, которая может выражать около тысячи эмоций. А сам пёс-подставка, перебирая миниатюрными лапками, может передвигаться, повинуясь голосовым командам хозяина.

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

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

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

  • Не оставляйте наедине с роботом ребёнка младше 3-х лет.
  • Не допускайте контакта включённой и движущейся игрушки с волосами малыша.
  • Не играйте с роботом рядом с лестничными спусками, на столах или иных возвышениях, откуда он может упасть.
  • Избегать попадания воды внутрь электронного механизма.
  • Регулярно проверяйте уровень заряда АКБ игрушки.
  • При зарядке не применять устройства от других приборов.

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

Программируем квадрокоптер на arduino (часть 1) / comments / habr

У вас двойной период измерен, не заметил сходу. То уж подумал, что разучился считать в уме =)

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

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

Дальше посчитать нужные максимальные обороты движка исходя из необходимых оборотов на роторах и редуктора. Потом поделить получившиеся обороты в krpmна напряжение аккумулятора под нагрузкой ближе к разрядке получить значение в kv (krpm/v). По этому значению и габаритам подбирать.

Насчёт необходимой периферии на тиньке не скажу, с телефона сейчас.

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

Разработка для коптеров / Хабр

На рисунке приведена упрощённая блок-схема программы, исполняемой на контроллере платы стабилизации. Главной частью является цикл. Если хотя бы одно действие в нём не выполняется вовремя, частота перестаёт быть постоянной, и стабилизация работает неверно.

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

Решение jrowberg’а привело к проблемам при использовании на сильно загруженном микроконтроллере. Код в примере опирается на синхронность считывания данных. FIFO-буфер датчика, в который записываются посчитанные величины, переполняется в случае несвоевременного считывания.

Поскольку всегда считывается первый элемент из FIFO, то при частичной заполненности появляется задержка между помещением новых данных в FIFO и их обработкой на Arduino. В свою очередь, эта задержка приводит к возникновению автоколебаний. При переполнении буфер приходится очищать:

его размер 1024, что не делится на 42 — размер пакета. Поэтому, когда буфер переполняется, в начале FIFO находится часть какого-то постороннего пакета. Иными словами, начиная с определенного момента структура нарушается: начало FIFO не совпадает с началом пакета, и считать корректные данные невозможно.

Разработка для коптеров

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

Коптеры разные. Единого стандарта нет. В основе любого коптера лежит полетный контроллер который аккумулирует данные с датчиков, управляет стабилизацией и положением в пространстве. Управляя с пульта вы отправляете команды полетному контроллеру, в результате чего изменяются обороты двигателей, что позволяет перемещаться в воздухе. В более продвинутых коптерах кроме пульта, управление доступно с наземной станции (Ground Station). Использование бортового мини-компьютера с подключением непосредственно к полетному контролеру сочетает в себе достоинства ручного пульта и наземной станции, позволяет автоматизировать полет и взаимодействовать с внешним миром.

Для моего проекта требовалась готовая платформа с возможностью расширения. В то же время хотелось что бы все работало «из коробки». Необходимо поднимать 500-600 грамм груза, в том числе бортовой мини-компьютера для обработки данных непосредственно в полете. Ну и конечно цена должна быть в разумных пределах. В то время вышел Solo — новая модель от 3DR на Pixhawk 2, в которой помимо «полного фарша», установлен мини-компьютер под управлением Linux, связь по WiFi, возможность подключения непосредственно к полетному контроллеру и к бортовому компьютеру. Грузоподъемность до 700 грамм. В общем то что нужно и через некоторое время он был у меня.

При включении контроллер создает WiFi сеть, коптер доступен по адресу 10.1.1.10, а контроллер 10.1.1.1. и в том и другом случае есть ssh доступ:

ssh [email protected]
пароль TjSDBkAu

Внутри используется Linux, который базируется на

Yocto Project

1.5.1 на ARM Cortex A9/Freescale i.MX6. Система уменьшается на 8Gb microSD карте из которых 7.2Gb занимает раздел под полетные логи. По умолчанию, для операционки и кода самый минимум. Если собрались что то изменять в системе, то обязательно сделайте бэкап. Для этого придется снять двигатели, открыть корпус и достать основную плату. Размер разделов на microSD в этом случае придется изменить или заменить карту на побольше предварительно скопировав данные через ddresque и изменив размеры ext3 разделов.

В нижней части Solo есть разъем через который выведены выходы USB, UAVCAN, UART для доступа к imx6 и Pixhawk. С платы доступны дополнительные выводы в том числе из под Pixhawk, но придется взять в руки паяльник. Так например USB кабель служит для подключения сторонних устройств и работает в режиме OTG хост, для подключения внешних устройств при замыкании перемычки или как устройство при подключении к внешнему компьютеру. Для тех кто не хочется возится с паяльником разработали Accessory Breakout Board на которой большинство выводов уже есть, остается только использовать соответствующие разъемы.

Когда нет помех, сигнал от контроллера до коптера достигает больше 500 метров, 800 по спецификации, что позволяет управлять в режиме онлайн с ноутбука через WiFi сеть. При хорошей погоде коптер наблюдается на расстоянии до 300-400 метров, все что дальше превращается в точку и ручное управление доступно только с помощью FPV или автоматики. На дальние и сложные дистанции лучше заправлять скрипты управления непосредственно на Solo что бы исключить проблемы со связью и видимостью. По умолчанию доступна загрузка скриптов по sftp, rsync, а так же через утилиту solo. Для скриптов крайне желательно использовать virtualenv, иначе версии пакетов могут конфликтовать с системными.

Mavlink (Micro Air Vehicle Communication Protocol) это открытый коммуникационный протокол, который поддерживают большинство открытых полетных контроллеров: APM/Pixhawk, MultiWii, Navio и другие. С помощью mavlink можно отправлять управляющие команды, задавать миссии и получать телеметрию. Со времени своего появления его начали использоваться не только для микро авиации (copter, plane), но и для управления микро- машинами, катерами и даже подводными лодками. В зависимости от типа транспортного средства и используемого контроллера, функционал немного отличается.

Для python протокол mavlink реализован в модуле pymavlink. Напрямую его использовать не очень комфортно и в DroneKit частично реализовали свою обертку. Частично, потому что на практике, сделано далеко не все, и к mavlink постоянно приходится обращаться. Нереализованные возможности mavlink’a есть и в полетных контроллерах, т.е. наличие того или иного функционала приходится проверять и тестировать. Некоторые команды и режимы могут быть не только не реализованы, но и иметь отличные от других названия. Поэтому лучше разрабатывать под определенный контроллер и быть уверенным в его будущей поддержке.

Solo достаточно большой, 46 см между моторами, с винтами еще больше, т.е. в небольшом помещении его лучше не запускать. Навигация в помещении через GPS не работает, поэтому дальше идем на улицу. Перед полетом, посмотрим текущие параметры коптера:

#!/usr/bin/python
#-*- coding: utf-8 -*-

from dronekit import connect

# Подключаемся к коптеру
# объект нашего коптера для работы через DroneKit.
vehicle = connect('udpin:0.0.0.0:14550', wait_ready=True)

# Атрибуты коптера
print "Vehicle state:"
# Объект с координатами широты, долготы, высоты и относительной высоты. 
# Высота считается относительно уровня моря, а относительная высота применяется к стартовой позиции.
print " Global Location: %s" % vehicle.location.global_frame
print " Global Location (relative altitude): %s" % vehicle.location.global_relative_frame
print " Local Location: %s" % vehicle.location.local_frame
# Позиция в кординатах pitch, yaw, roll
print " Attitude: %s" % vehicle.attitude
# Текущий вольтаж, ток и оставшийся уровень заряда
print " Battery: %s" % vehicle.battery
# Время последней удавшаяся проверки связи с коптером. 
print " Last Heartbeat: %s" % vehicle.last_heartbeat
# Направление, в градусах относительно севера
print " Heading: %s" % vehicle.heading
# Скорость по земле
print " Groundspeed: %s" % vehicle.groundspeed
# Скорость в воздухе
print " Airspeed: %s" % vehicle.airspeed
# можем запускать двигатели или нет
print " Is Armable?: %s" % vehicle.is_armable
# Запущены ли двигатели
print " Armed: %s" % vehicle.armed
# Режим в котором сейчас находимся
print " Mode: %s" % vehicle.mode.name

vehicle.close()
print "Done."

Режимы

это набор заранее определенных действий и доступного функционала. Так в ALT_HOLD будет сохраняться заданная высота и доступны функции перемещения, AUTO запускает миссии, а LAND сажает коптер и выключает моторы. В некоторых режимах необходим GPS и GPS Lock перед стартом, другие работают без него. При необходимости можно сделать собственные режимы и запрограммировать необходимое поведение.

Пора взлетать:

#!/usr/bin/python
#-*- coding: utf-8 -*-

import time
from dronekit import connect, VehicleMode, LocationGlobalRelative

# Подключаемся
vehicle = connect('unpin:10.1.1.10:14550', wait_ready=True)

def arm_and_takeoff(aTargetAltitude):
    """ Запускае двигатели и взлетаем до высоты aTargetAltitude
    """
    print "Предполетные проверки"
    while not vehicle.is_armable:
        print "Ждем коптер..."
        time.sleep(1)

    print "Запускаем двигатели"
    # Устанавливаем GUIDED режим
    vehicle.mode    = VehicleMode("GUIDED")
    # Запускаем моторы
    vehicle.armed   = True

    #  Ждем пока моторы раскрутятся. 
    # Поскольку все происходит в реальном мире, нужно не забывать что на выполнение действий требуется время.
    while not vehicle.armed:
        print " Ждем моторы..."
        time.sleep(1)

    print "Взлет!"
    # Взлетаем до нужной высоты
    vehicle.simple_takeoff(aTargetAltitude) 

    # Даем задание подняться до нужной высоты
    #  и… ждем пока поднимемся.
    while True:
        print " Текущая высота: ", vehicle.location.global_relative_frame.alt
        # Что бы не скучно было, смотрим как высоко уже поднялись
        if vehicle.location.global_relative_frame.alt>=aTargetAltitude*0.95:
            print "Поднялись на %d метров" % vehicle.location.global_relative_frame.alt
            break
        time.sleep(1)
    
    print "Достигли заданной высоты"

# Запускаемся и поднимаемся на 20 метров
arm_and_takeoff(20)

После коннекта, ждем пока все предполетные проверки будут закончены и vehicle.is_armable станет True. Далее переключаемся в режим GUIDED который позволяет последовательно задавать точки при достижении которых коптер будет ждать «дальнейших указаний». Коэффициент 0.95 не обязателен, но точность датчиков не идеальна, и это приходится учитывать. С другой стороны это позволяет не терять время, поскольку присутствует инерция и скорость в полете не равномерна. Последние сантиметры займут несколько лишних секунд, а у нас батарейка быстро садится и ± лишний метр высоты не критичен.

Настало время куда-нибудь улететь слетать. Задаем широту, долготу и высоту места куда отправим коптер.

# Задаем координаты нужной точки
a_location = LocationGlobalRelative(-27.114346, -109.357912, 20)
# полетели 
vehicle.simple_goto(a_location)

Не забудьте поменять координаты на ваши! Если вдруг забыли, то перехватить управление Solo можно кнопкой Pause на пульте или подняв оба стика в правый верхний угол. В крайнем случае, я надеюсь что вы подключили планшет и получаете данные с gps, а на борту можно рассмотреть номер телефона для связи.

В полете можно контролировать некоторые параметры, например скорость:

# Путевая скорость, м/с
vehicle.groundspeed = 7.5

В данном случае нет механизма нотификации о достижении заданной цели… помните что коннект mavlink’a мы делали по UDP? те наше сообщение может уйти в никуда, и такое иногда случается, особенно на длинных дистанциях.

Зная скорость и расстояние рассчитать время прибытия и поставить таймер не проблема. В идеальном случае это сработает. Для коптера любой ветер, встречный, попутный, боковой вносит свои коррективы. Штиль «на земле» совсем не означает что на 30-50-100 метрах ветра нет, поэтому линейный расчет будет очень и очень приблизительный.

Более точный способ это конечно проверять позицию по GPS/Glonass/Gallileo/Beidou. В зависимости от используемого чипа и его настроек, проверка имеет смысл не чаще чем 1-10 раз в секунду, иногда интервал больше. При этом точность расположения может быть плюс-минус несколько метров.

def is_arrived(lat, lon, alt, precision=0.3):
    
    # текущая позиция
    veh_loc = vehicle.location.global_relative_frame
   
    # получаем данные в метрах
    diff_lat_m = (lat - veh_loc.lat) * 1.113195e5
    diff_lon_m = (lon - veh_loc.lon) * 1.113195e5
    diff_alt_m = alt - veh_loc.alt

    # отклонение
    dist_xyz = math.sqrt(diff_lat_m**2   diff_lon_m**2   diff_alt_m**2)

    if dist_xyz < precision:
        print "Прибыли на место"
        return True
    else:
        print "Еще не долетели"
        return False

# проверяем долетели или еще нет
while not is_arrived(lat, lon, alt):
    # ждем еще 3 секунды
    time.sleep(3)


# прилетели на место и сделали что-нибудь полезное
time.sleep(10)

Достигнув заданной точки, возвращаемся домой. По аналогии, задать координату и так же по прибытии посадить используя режим LAND — это сложный путь. Дело в том что при старте данные о начальной позиции сохраняются на все время полета, а для возврата домой существует режим RTL (Return To Launch). В RTL коптер сначала поднимается до «высоты возврата» RTL_ALT, это позволяет исключить возможность столкновения с деревьями и высотными объектами, возвращает коптер в точку старта, автоматически сажает девайс и выключает моторы.

print "Возвращаемся"
vehicle.mode = VehicleMode("RTL")

Через некоторое время коптер прилетит и после посадки радостно пропиликает о прибытии. Можно выдохнуть… все хорошо! Результат на видео:

Проблема в том что может и не прилететь, не долететь, или прилететь не туда. Любая ошибка стоит дорого. И это не только коптер, но и груз на нем. Кроме чисто программных ошибок и проблем с оборудованием, есть проблемы с обслуживанием. Например желательно наличие ровной и чистой площадки для взлета/посадки, можно сесть одной ногой на камень… и перевернуться. Даже со взлетом появляются определенные проблемы, например если нужно взлететь с яхты которая качается на волнах.

Что бы не было так больно от падений и прочих неприятностей скрипты тестирум в SITL (Software in the Loop). SITL это симулятор полетов, позволяет отработать различные ситуации, в том числе некоторые погодные условия, особенности местности, сбои в работе GPS, потерю сигнала и т.д. Работает SITL не всегда корректно, но в целом неплохо. Полноценное тестирование заменить в любом случае не получится. Для визуализации в 3D используется связка SITL с FlightGear или jMAVSim.

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

Сбор первого квадрокоптера python возможно ли?

Здравствуйте!

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

НО:

Хоть это мой и первый квадрокоптер, покупать готовые модели я не хочу и модели с готовым кодом тоже. Мне будет очень интересно написать весь код самому, конечно же, я буду подсматривать в интернет, изучать то, чего пока не знаю, но в общем, хочу написать все сам. Подскажите пожалуйста, какие комплектующие нужны для квадрокоптера, возможно ли написать код для управления ним только на Python и что мне будет полезно почитать перед началом закупки материалов и непосредственно сборкой.

О себе: Python я знаю хорошо, написать код смогу (если, что подчитаю, подучу), спаять и собрать все смогу, если, что есть помощники, бюджет: 300-350$

Стоимость новой версии aibo

Поскольку модель в январе 2023 года уже поступила в продажу на территории Японии, ее средняя цена уже известна. Приобретение Айбо обойдется покупателю примерно 1700 $. К ним придется добавить около 26 $ на покупку «электронной косточки». Она предназначена для оживления общения с питомцем.

Поскольку для обучения питомца необходима связь с интернетом, осуществляемая с помощью встроенных модулей Wi-Fi и LTE, а все данные его личности хранятся в облачном сервисе, то за его использование придется ежемесячно вносить плату в размере еще 26 $.

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

Телеметрия

Дистанционное управление реализовано в двух режимах (для обеспечения более гибкого процесса разработки):

  1. С помощью модулей xBee Pro в конфигурации «коптер  ПК».
  2. С помощью выделенной радиочастоты (2.4ГГц) в конфигурации «пульт ДУ ↦ коптер».

Помимо управления через пульт ДУ происходит пересылка критических данных между коптером и ПК в режиме реального времени, для чего используются xBee Pro и приложение собственной разработки (см. скриншот). На компьютере можно видеть значение углов и угловой скорости, напряжение на аккумуляторе, мощность двигателей.

Данные, пересылаемые между коптером и ПК:

  • ПК ↦ Коптер: канал управления (ПК/пульт ДУ), мощность моторов, настройка для включения/выключения стабилизации, коэффициенты ПИД и ограничения;
  • Коптер ↦ ПК: углы, угловая скорость, компоненты Разработка для коптеров / Хабр, Разработка для коптеров / Хабр, Разработка для коптеров / Хабр, данные с джойстика (мощность 3 угла), мощности моторов, напряжение на аккумуляторе.

Благодаря датчику от InvenSense, начальная обработка данных с датчиков происходит на встроенном процессоре (DMP). Мы разгружаем плату стабилизации, которая может использовать в качестве вычислителя даже маломощный AVR-микроконтроллер.

Итоги

Главное достижение — отличная команда энтузиастов, способных работать над сложными робототехническими проектами. Мы верим, что всё дело в творческом подходе, возможности для самореализации, а также бесценном практическом опыте, которого всегда не хватает.

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

В настоящий момент мы усовершенствуем то, что сделали, и разрабатываем новые функции автоматизации.

Оцените статью
Радиокоптер.ру
Добавить комментарий