Smalltim OSD and autopilot (часть 1)

smalltim

>Вертикальные датчики используются
только для стартовой выставки, или в полёте также участвуют в вычислении углов?

Вертикальные датчики используются равноценно с горизонтальными в течение всего полета, система автокалибруется непрерывно в процессе измерения углов. В формуле расчета используются, разумеется, все датчики. Ограничений на углы наклона нет, система выдает корректные углы наклона в любой ориентации и, вообще говоря, не беспокоится о том, какие датчики - горизонтальные, а какие - вертикальные. Потому что при крене, например, в 90 градусов, горизонтальными датчиками становятся те, что раньше стояли вертикально, а 4-датчиковая голова становится “на попа” и 2 датчика смотрят под углом 45 градусов на землю, а 2 - под 45 в небо 😃

Из-за некоммутативности поворотов могут быть разночтения, например, в перевернутом полете:

  • можно считать, что это угол тангажа 180 градусов
    или
  • можно считать что это угол крена 180 градусов

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

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

Горизонту можно доверять всегда, когда есть градиент температуры небо-земля, когда сама линия горизонта не поломана горами, и когда на окошки ИК датчиков не попадают капли дождя или снег. Как именно работает математика, рассказывать не буду - надеюсь, понимаете почему 😃

>горизонтальные датчики установлены диагонально

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

>20-30м ещё куда ни шло, но 100 многовато. Как лечить?

Модуль GPS, особенно после холодного стата (когда несколько дней не включался) цепляется за спутники сразу как только находит необходимое для определения позиции количество спутников, отсюда вылезает проблема:

  • он находит 3-4-5 спутников, определяет позицию и выдает на телеметрию
  • телеметрия выжидает, пока не придет несколько десятков пакетов с достовеной информацией о позиции и запоминает ее
  • модуль находит еще 2-3-4 спутника и корректирует позицию, выдавая более точные координаты
  • телеметрия уже запомнила позицию старта и эти более точные координаты оказываются в стороне от запомненной точки старта.

Как лечить - выждать, когда координаты устаканятся, и рестартнуть телеметрию переподачей питания.

blade
samabs:

Здравствуйте!
Высота 43м, но с высотой ладно, Как лечить?

А с чего взято, что высота точки старта- должна быть=“0” ? 😃
Москва к примеру- вся на холмах высотой около 100 м стоИт,
а Голландия “- 20”.
GPS же от уровня мирового океана высоту показывает 😃
А сброс ошибки телеметрии- я уже как то писал, как реализовать: на гребёнке для программирования есть вывод от ноги “ресет” и “земля”: делается кнопка на проводке, выводимая в удобное для нажимания место и одевается на эти ноги (программировать то не так часто приходится, как летать?)
После того, как ЖПС наловил спутников- нажимаем эту кнопку, телеметрия воспринимает данные с ЖПС и записывает их, как истинную точку старта.

Brandvik

Тим, я как обычно с вопросами и рац предложениями. 😃
На сей раз по датчикам и достоверности показаний.
Уже забыл, искуственный горизонт будет?
А если будет то вот залетели мы в тучку и одна из пар татчиков выдала разницу температур 0. Получаестя что верить уже нельзя. Как в таком случае ведет себя АП и стабилизация?
Может быть стоит вывести какой то сигнализатор такого состояния и приближения к такому состоянию? Ну не знаю, типа если разница температур любой пары подошла к 1 и падает то выводить что то типа процентного отношения?
Что скажешь?

smalltim

>А с чего взято, что высота точки старта- должна быть=“0” ? 😃
Москва к примеру- вся на холмах высотой около 100 м стоИт,
а Голландия “- 20”.
GPS же от уровня мирового океана высоту показывает

Александр, не пугайте людей!! 😃

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

Т_САН

Тимофей как приобрести платку теллеметрии собр. зелен.

smalltim

>Уже забыл, искуственный горизонт будет?
Да, конечно.

>А если будет то вот залетели мы в тучку и одна из пар татчиков выдала разницу температур 0. Получаестя что верить уже нельзя. Как в таком случае ведет себя АП и стабилизация?

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

Индикации такого режима сейчас нет, обящательно добавлю иконку на экран.

>Тимофей как приобрести платку теллеметрии собр. зелен.

Ну у нас же получилось уже связаться через личку, давайте там и продолжим!

Александр, хороший совет про сброс:

на гребёнке для программирования есть вывод от ноги “ресет” и “земля”: делается кнопка на проводке, выводимая в удобное для нажимания место и одевается на эти ноги

blade
smalltim:

Александр, хороший совет про сброс:

Я готов ещё пять копеек заработать: если сделать ещё одну кнопку- закорачивающую шунт датчика тока, и нажимать её одновременно с “ресет”, то отпадёт ещё одна извечная проблема: подсчёт электричества, съеденного самой телеметрией-автопилотом и видеосистемой 😃
Т.е. ни один народный мА/час- не пройдёт мимо зоркого ока пилота !

baychi
blade:

кнопку закорачивающую шунт датчика тока

Не прокатит. Сопротивление кнопки должно быть существенно меньше сопротивления шунта. Вы представляете себе такую кнопку на модели? 😉

smalltim

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

samabs
blade:

А с чего взято, что высота точки старта- должна быть=“0” ? 😃
Москва к примеру- вся на холмах высотой около 100 м стоИт,
а Голландия “- 20”.
GPS же от уровня мирового океана высоту показывает 😃
А сброс ошибки телеметрии- я уже как то писал, как реализовать: на гребёнке для программирования есть вывод от ноги “ресет” и “земля”: делается кнопка на проводке, выводимая в удобное для нажимания место и одевается на эти ноги (программировать то не так часто приходится, как летать?)
После того, как ЖПС наловил спутников- нажимаем эту кнопку, телеметрия воспринимает данные с ЖПС и записывает их, как истинную точку старта.

Если не сложно, можно “ноги” на картинке показать?

smalltim

Кнопку - на ногу, помеченную RST (ближняя к разъему видеовыхода) и на ногу с черным квадратом (земля)

blade
smalltim:

Стоп-стоп-стоп.

“Ну, шо ж вы не даёте ни одному мужику- на дохтура выучиться ?” (В.И.Чапаев)
Ладно- не надо мне ещё 5 копеек 😛.

blade
samabs:

Если не сложно, можно “ноги” на картинке показать?

Кстати, о ногах: если ноги процесссора, через которые он шьётся (ISP)- не задействованы в дальнейшей работе (вопрос Тиму?),- очень бы советовал этот же “кнопочный” разъём использовать для их защиты от статики: т.е. каждую ногу (по отдельности!) посадить на “землю” при помощи ёмкостей 0,1 мф, навешенных на разъём (на плате- низззя!, сами понимаете, почему 😃 )
Ибо висящий в “воздухе” порт, (особенно- зимой, при низкой влажности и высокой синтетичности одежды)- верный путь к помиранию процессора от крив…ласковых ручек моделиста, “поудобнее укладывающего плату в фюзеляже” 😦

Egland

2 smalltim

Отправил вам письмо с полным оффтопиком на @mail.ru. Очень надеюсь, что дойдёт. Личка, к сожалению, забита…

FPVmaster

2 smalltim
Не, математика мне и не нужна. Я другого не могу понять. Вертиальные датчики используются для определения градиента, так? Допустим самолёт летит боком (90 градусов крена). Вертикальные датчики уже не фиксируют градиент! В любом случае он уже “не тот”. Как в этом случае определяется угол?..

Хвост_Слона
smalltim:

Хвост Слона, выходи из спячки, бросаю вызов!

Вах! И меня посчитали!😁
Оч. удачно все совпало, я как раз авральный проект закончил (не модельный), теперь здесь регулярно и постоянно буду, плотно поработаем.

baychi
FPVmaster:

Допустим самолёт летит боком (90 градусов крена). Вертикальные датчики уже не фиксируют градиент! В любом случае он уже “не тот”. Как в этом случае определяется угол?..

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

Dikoy
FPVmaster:

Вертикальные датчики уже не фиксируют градиент!

Каждая пара датчиков (их дельта) есть вектор. Вертикаль - тоже вектор. Сначала определяем значение (модуль) вектора вертикали сложением квадратов её разложений на оси, а далее просто работаем в трёхмерной системе координат из дельт датчиков, где каждая дельта есть разложение вертикали на оси, как обычно в таком случае. В случае диагонального расположения ещё и учитываем поворот на 45 градусов.
Обрисовал в кратце, на самом деле там всё немножко посложнее. Но прЫнцып, думаю, ясен.
Есть и ещё способы рассчёта, но думаю тиму ближе векторный 😃

baychi:

поэтому их используют в CoPilot-ах,

А есть ли ещё автопилоты с 4 датчиками, не использующие вертикальную пару? Или все из ныне производимых шестиголовые?

Т_САН

smalltim Отправил в личку 4 сообщ. а в ответ тишина наверно не доходят.

smalltim

Переполнена, как обычно 😦
Я на выходных отдыхаю 😃
Личку почистил, Ваши сообщения вижу.