Search
Write a publication
Pull to refresh
14
0
Сергей Ахрамович @AkhramovichSA

User

Send message

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

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

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

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

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

Про измерение расстояния не знал, очень интересно. Уже нашел материалы, почитал как это реализовано.

А такой вопрос - ими можно как-то сканировать радиоэфир?

Эх, работали бы все так системы без задержек и сбоев. Для IMU кстати это еще применимо, так как он, на удивление, очень надежен и работает как часы. А вот по сигналам управлению с пульта, или ГНСС-датчика данные могу пропадать или существенно задерживаться.

Олег, такое уточнение. То, что вы называете режимом ACRO на самом деле не ACRO. Изучая различные материалы, я заметил, что это общее заблуждение. В коде реализована простая стабилизация угловой скорости или еще называют режим RATE или RATE_CONTROL.

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

Как я понял, режим ACRO должен еще отслеживать установленный угол после возврата джойстика в 0, т.е. это тот же режим ANGLE, только изменение угла происходит не джойстиком, а джойстик меняет угловую скорость вращения квадрокоптера.

  1. В таких системах реального времени ничего ждать не надо, в IMU есть проверка на готовность данных, если данных нет, то пропускаем и обрабатываем цикл дальше.

low-pass здесь стандартный, но надо делать конечно все дискретной форме, как и ПИД-регуляторы. Здравствуй z-преобразование :-)

Большие дроны вообще лучше на стальную цепь сажать :-)

В большинстве модулей ESP8285 (как правило на приемнике) или ESP32 используется как контроллер и реализуют логику, например FHSS. А за радиочасть отвечают микросхемы типа SX1276 которые подключены к микроконтроллеру по SPI.

Для ELRS и CRSF уже есть много готовых библиотек, например вот эта: https://github.com/BobbyIndustries/crsfSerial. Для ESP32 подключается легко.

Подвес обязательно делать делать и уж точно не из ниток. У вас маленький дрон и его отладка безопасна, а когда отлаживаешь дроны от 7 дюймов, то очень опасно. Мы для начала сделали одноосный подвес с жестким креплением и регулируемым противовесом. Можно быстро собрать из станочного профиля и цилиндрическим валом из нержавейки в подшипниках. Был правда момент когда он поднял подвес и попытался с ним улететь.

Я старался не делать громоздких выводов. Но, раскрытие этих формул есть в коде javascript-библиотеки, методы «norm» и «mod».
Я выложил статью на github в которой проведено такое исследование.
Ben Kenwright — A Beginners Guide to Dual-Quaternions.pdf
Примерный перевод главы «11. Результаты»:
Бикватернион объединяет перемещение и вращение в одну переменную состояния. Это переменная состояния предлагает надежный, однозначный, вычислительно эффективный способ представления преобразования твердого тела.
Вычислительные затраты различных матриц и бикватерниона:
Матрица4х4: 64 умножений + 48 сложений.
Матрица4х3: 48 умножений + 32 сложений.
Бикватернион: 42 умножений + 38 сложений.

В наших тестах мы обнаружили, что метод умножения бикватернионных преобразований в среднем на 10% быстрее по сравнению с умножением матриц. Мы не использовали преимущества архитектуры ЦП, используя параллельные методы, такие как SIMD, которые могут еще больше улучшить скорость вычислений, как продемонстрировал Паллави [MEHU10] (как для матриц, так и для умножения кватернионов).

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

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


Чем бикватернион лучше, просто вектора и кватерниона?
Или в случае кораблей 2d вектора и одного угла?

Да, в статье приведен пример в 2D, хотя весь код в библиотеки можно применять для вычислений в трехмерном пространстве. Сделано это лишь для того чтобы и так не перегружать пример еще большим кодом.
Бикватернион лучше тем, что он в себе содержит полную информацию об ориентации и положении в пространстве объекта в одном числе, пусть и в сложном гиперкомплексном.
Используя этот математический аппарат можно, например, применять различные методы управления объектами, там обнаруживаются иногда очень интересные случаи.


Приведу пример такого случая.
При синтезе оптимального управления квадракоптером по высоте стояла задача: с высоты 100 м опуститься на 10 м.
С использованием математического аппарата векторов и углов ориентации квадракоптер просто уменьшал тягу винтов и опускался до нужной высоты.
При использовании бикватернионов квадракоптер повел себя иначе, он перевернулся винтами вниз, увеличил тягу и при прилете до требуемой высоты перевернулся обратно винтами вверх.


ps: Еще такой вопрос чем отличаются норма и модуль бикватерниона и почему они содержат символ Клиффорда?

Бикватернион, по сути своей — дуальный кватернион = q1 + εq2.
Но часто его представляют в виде двух кватернионов, как это сделано в статье, поэтому здесь символ Клиффорда опущен, хотя его наличие надо всегда подразумевать у дуальной части q2.


Если совсем утрировать, то норма — это сумма квадратов компонентов бикватерниона, а модуль — корень квадратный из суммы квадратов компонентов бикватерниона.
Эти величины используются в других операциях, например, в операции вычисления обратного бикватерниона (в коде dual_quaternion.js в методе inverse как раз реализована операция деления бикватерниона на дуальное число), или при использовании численных методов интегрирования бикватерниона приходится его нормировать.

Да, вы правы. Просто в статьях иногда эти понятия путают (из статьи убрал).
Также неверно называть его «комплексный кватернион».

Information

Rating
9,146-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Software Architect
C++
Python
PHP
Delphi
Database
Creating project architecture