Единый протокол

utya1988

Я вот и написал, что сделано всё в Simulink, тоесть 80 процентов кода, написал Matlab 😒
Поскольку не особо умею программировать, вот и спрашиваю тех кто это знает или сталкивался с этим. Под online имею ввиду вывод телеметрии на экран ноутбука в время полёта/езды/проведения экспериментов.
Насчёт ссылок, читал. Понял что для интеграции данного протокола не обязательно его как бы программировать, а достаточно header библиотеку подцепить вот здесь это написано.

Mikele_P
utya1988:

Я пишу диссертацию по теме инерциальной навигации. И так результат моих двухгодичных исследований.

Да… Не споро… Я так понял за оставшийся год нужно сделать “прорыв”? Тяжко будет. Я примерно на вашем же месте топчусь пол года. Но да меня никто не стегает. Сам для себя делаю.

utya1988:

12 измерений с IMU (в будущем будет 3 угла и 2 координаты).

Можете сказать, что именно измеряете? По моим подсчетам – 3 цифры угловых скоростей с Гироскопа и 3 цифры с ДЛУ. (еще максимум 3 цифры с электронного компаса)

utya1988:

Да это всё классно такие циферки бегут по экранчику, могу писать на карту, но хочется online и чтобы красиво.

AdruIMU_test. Данные получает по COM-порту. Там где-то описание текстового формата для данных визуализации.

utya1988:

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

Да. Диссер – не диплом. И если уж связались с микроконтроллером, то придется букафки учить, аднака… 😃 Хотя бы язык C для МК.

utya1988:

Самое быстрое не спортивное решение это наверное, взять какой-то APM, и на него уже подавать значения с моей плата, а он уже будет это всё конвертировать в mavlink. Как мою плату научить выдавать сигнала на понятном языке для всех gcs?

Не знаю, даже, помогут ли вам тут… А что за зверь-то такой GCS? А то мож я уже свою поделку под нее перетачивать начну.

Yahen
utya1988:

Под online имею ввиду вывод телеметрии на экран ноутбука в время полёта/езды/проведения экспериментов.

Хм… вариантов - куча. Последовательный интерфейс, последовательный интерфейс через USB, USB Host, Bluetooth, Wifi. Это то, что навскидку
Я, например, в своих поделках на блютус подсел. Плата около полутора грамм весит и пару долларов. И проводов не нужно к компьютеру, голова не болит, подключай хоть к планшету хоть к буку. И дальность в несколько метров как раз. Из “ничего не нужно кроме кабеля” - USB, либо последовательный интерфейс через USB.
Как бы с этого обычно вообще начинают знакомство с МК. Меня смущает то, что с гироскопа Вы осилили снять показания, а на компьютер передать - нет. Как-бы задачи несоизмеримые по сложности.

utya1988

2Yahen, всё верно говорите насчёт bluetooth и съёма данных с гироскопа. Данная проблема решена. Я вывожу по uart, а там через xbee и меня всё устраивало до поры. Пока мне не попались приложения GCS, подал туда свои циферки, но он то их не понимает. Тут и встал вопрос о унифицированном протоколе вывода. Чтобы все понимали мои показания. Вот и спрашиваю.

2 Mikele_P

Можете сказать, что именно измеряете? По моим подсчетам – 3 цифры угловых скоростей с Гироскопа и 3 цифры с ДЛУ. (еще максимум 3 цифры с электронного компаса)

у меня на борту:
4 акселерометра, 2 гироскопа, 3 магнитометра и gps=)) Каждый ДУС, аксель имеют свою полосу пропускания и масштабные коэффициенты, характеристики. Поскольку плата будет использоваться в разных условиях, хочу посмотреть как каждый датчик будет себя вести и по прицепу избыточности уже фильтровать.

RedSun

Вот здесь лежат сырцы первого Ардупилота. В файле GCS_Standard_text.pde прописан интерфейс для наземной станции. Вот здесь лежит сама наземная станция. Читайте документацию и аккуратно настраивайте - все заведется. Внимательно посмотрите, в каких единицах передаются данные.
Удачи !

Mikele_P
utya1988:

4 акселерометра, 2 гироскопа, 3 магнитометра

Одноосевых или трехосевых? По-моему для самолета маловато будет 2 гира. Осей-то три. Читал про систему фильтрации (что-то на английском языке. исследования проводили). Для серьезного приложения гироскопов (ДУС) должно быть не менее чем по 2 группы на ось в разных масштабах измерений с перекрытием в рабочей зоне, чтоб охватывать диапазон по-шире. И для уменьшения искожений не менее чем по два в группе в одном масштабе. Даже от двух погрешность по дрейфу падает, если не изменяет память, в 4-8 раз. (синергетический эффект)
А фильтровать ИМХО лучше уже разработанным алгоритмом.(не помню как звать на вскидку. найду – отпишусь. или тут подскажут.) там идет преобразование не из углов, а из векторов. Данные от гироскопа (угловые скорости по 3-м осям) помножаются на время между замерами и дают приблизительное смещение вектора направленного на землю. данные этого вектора весово смешиваются с данными от 3-х осевого акселерометра – корректируют. Пробовал. Если точно измерить ДУС, то при резких скачках угловой скорости достаточно точно определяет крен и тангаж. А вот курс – “плывет” по шуму ДУСа. Еще по той же схеме туда можно (опционально) замешивать данные от 3-х осевого компаса. Тогда и курс держать будет на ура. Данные вектора легко преобразуются в углы.
У меня один трехосевой ГИР и ДЛУ в одном флаконе. Компаса нет. Но мне пока крен-тангажа хватает чтоб помучиться и курс, скорее всего, я буду ровнять по ГПСу.

utya1988

2 Mikele_P
все датчики 3-x осевые. Широко используется фильтр Калмана (ну про него наверно только ленивый не знает) и сейчас стал популярен альфа-бета фильтр (комплиментарный фильтр). Но это так сказать не мой путь, у меня должна быть новизна😁

Для серьезного приложения гироскопов (ДУС) должно быть не менее чем по 2 группы на ось в разных масштабах измерений с перекрытием в рабочей зоне, чтоб охватывать диапазон по-шире. И для уменьшения искожений не менее чем по два в группе в одном масштабе. Даже от двух погрешность по дрейфу падает, если не изменяет память, в 4-8 раз. (синергетический эффект)

ну вот это так сказать и пытаюсь реализовать, если дадите источники, где такое было написано, буду благодарен.

А фильтровать ИМХО лучше уже разработанным алгоритмом.(не помню как звать на вскидку. найду – отпишусь. или тут подскажут.) там идет преобразование не из углов, а из векторов.

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

данные этого вектора весово смешиваются с данными от 3-х осевого акселерометра – корректируют. Пробовал. Если точно измерить ДУС, то при резких скачках угловой скорости достаточно точно определяет крен и тангаж. А вот курс – “плывет” по шуму ДУСа. Еще по той же схеме туда можно (опционально) замешивать данные от 3-х осевого компаса. Тогда и курс держать будет на ура. Данные вектора легко преобразуются в углы.

а это в простом варианте и есть альфа-бетта фильтр, в сложном “какой-то” фильтр Калмана.

2RedSun
Я почитал Вашу ссылку и смотрю есть много протоколов

  • Supported Auto-Pilot Protocols
  • ArduPilot Legacy (ASCII)
  • ArduPilot Mega Binary
  • MatrixPilot (UavDevBoard)
  • AttoPilot
  • MAVlink
  • FY21AP II
  • Gluonpilot

Какой из них максимально востребованный?

Mikele_P
utya1988:

похоже на алгоритмы расчёта углов через кватернионы

Точно так. Просто слово это умное забыл.

utya1988:

Широко используется фильтр Калмана и сейчас стал популярен альфа-бета фильтр

Альфа-бета – ИМХО туповат. Идея, конечно хорошая, но это попытка сгладить значения за счет статистики. А в нашем случае, когда оно должно жить сейчас, т.е. он-лайн – оно не канает. Сглаживая оно угробляет точность. Да и Кальман не безгрешен. И его пробовал. Коррекция одних данных через другие – более эффективна.
Уж лучше делать массивы датчиков. И по данным большого массива получать более точные данные по угловым скоростям. А значит, интегрируя по времени (время между замерами считать) получать данные по углам. (хотя уж лучше получать вектора)
Или, как вариант “совмещать ужа с ежом”. У вас куча ДЛУ. В одной из книг читал, что если их разнести от ЦТ на некоторое расстояние, то можно с некоторой точностью по разности сил вычислять углы смещения. Конечно это было писано для кораблей. Но если усложнить, то и для систем вращающихся в трехмере покатит. А значит смешав их через кватернионы с данными простого ДЛУ и ГИРов можно добиться усреднения и устранения “плывунов”. Хотя, думаю, идея уже не нова.

utya1988:

если дадите источники, где такое было написано

Извините. Я-то диссер на эту тему не пишу… Источники, увы, не сохранил. Просто принял к сведению и держу в голове.

ADF

Кватернионы - слово то какое хитрое. Сейчас давно не выпендриваются, говорят: матрицы, вектора…

Yahen
ADF:

Сейчас давно не выпендриваются, говорят: матрицы, вектора…

Хм… как бы матрицы это одно, векторы - другое а кватернион - третье. 😃

ADF

Все - частный случай матрицы, такшто нефик. 😃

Yahen
ADF:

Все - частный случай матрицы, такшто нефик

Так можно и натуральные числа к матрицам свести. Тоже типа частный случай 😃

ADF

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

RedSun
Mikele_P:

Или, как вариант “совмещать ужа с ежом”. У вас куча ДЛУ. В одной из книг читал, что если их разнести от ЦТ на некоторое расстояние, то можно с некоторой точностью по разности сил вычислять углы смещения. Конечно это было писано для кораблей. Но если усложнить, то и для систем вращающихся в трехмере покатит.

Подозреваю, что речь шла не про измерение углов, а про измерение угловых ускорений, из которых углы получаются двойным интегрированием. Уж лучше честный ДУС, благо их есть и незадорого 😃

utya1988:

2RedSun
Я почитал Вашу ссылку и смотрю есть много протоколов
Какой из них максимально востребованный?

Вам оно для чего ? Если хочется получать красивые картинки из наземки, то достаточно любого, который эта самая наземка понимает. Творение ХеппиКилмора понимает почти все из Вашего списка. Родной для нее ArduPilot Legacy (ASCII). Я Вам прислал ссылку на код, который этот протокол реализует. Вполне достаточно для экспериментов…
Сырцы, реализующие другие протоколы, придется выковыривать из других проектов. Это вполне реально, я как-то приживил к ардупилоту глюоновскую наземку. Требует аккуратности и понимания того, что делаешь.