Создание собственной системы стабилизации

rual

Коллеги, интересно, котонить испытывал качество получения ГНСС высоты? Какова величина ошибки (относительной) и скорость вычисления? Интересует качество 3м вектора скорости и положения по ГНСС.

alexeykozin
rual:

Коллеги, интересно, котонить испытывал качество получения ГНСС высоты? Какова величина ошибки (относительной) и скорость вычисления? Интересует качество 3м вектора скорости и положения по ГНСС.

делал, но это было достатоно давно, во времена 3329 медиатека и 6 юблокса
высота в обеих случаях параметр достаточно нестабильный, в идеальных условиях под открытым небом можно запросто получить ошибку 20-30м,
странность в том что если изначально жпс захватил с ошибкой высоту он так и будет показывать о относительной ошибкой по высоте достаточно долгое время,
но если сделать ему холодный рестарт то высота с высокой вероятностью перескочит

rual
alexeykozin:

, в идеальных условиях под открытым небом можно запросто получить ошибку 20-30м,
странность в том что если изначально жпс захватил с ошибкой высоту он так и будет показывать о относительной ошибкой по высоте достаточно долгое время,

Мне длительная ошибка не важна, гораздо важней получить текущий вектор перемещения в пределах 2-3 мин

oleg70
rual:

Коллеги, интересно, котонить испытывал качество получения ГНСС высоты?

Качество , мягко говоря, не очень… Зависит от того какие спутники используются модулем GPSв данный момент для расчета онной, если те которые “над головой”, то более менее точно, если в горизонте, то соответственно нет…, так что точночть динамически непредсказуемо скачет и довольно сильно… (испытывал только бюджетные модули EB230, EB500, SIM68, может у каких нибуть “крутых” подругому, не знаю…)

alexeykozin

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

вот недавно обсуждали комплект сантиметровой точности состоящий из
-модуля выполняющего роль станции дифф коррекции
-бортового модуля
-пары модемов для передачи данных
swiftnav.com/piksi.html
но ценник доступный пожалуй только юрлицам

вот кстати сравнительная табличка точности по высоте
docs.swiftnav.com/…/Understanding_Piksi_RTK_GPS_te…

rual
oleg70:

так что точночть динамически непредсказуемо скачет и довольно сильно…

Олег, сильно это сколько ±50?

alexeykozin:

вот кстати сравнительная табличка точности по высоте

Спасибо за табличку, Алексей, но всё ж хотелось знать именно величину “скачков”.
Тут сыну ракету прикупил, при среднем ветре её на парашюте метров на 200 может отнести, есть задумка сделать подруливание к точке старта, но использовать барик внутри падающей трубки кажется бессмысленным.

alexeykozin

кстати это будет первая хобийная крылатая ракета)

rual
alexeykozin:

кстати это будет первая хобийная крылатая ракета)

))) даже если будет, то уже не первая. В тубе есть несколько видео.

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

SergejK
alexeykozin:

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

rual

Проблема видится только в качестве получения 3м вектора скорости (включая вертикаль), ну и высоты раскрытия парашюта.

alexeykozin
SergejK:

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

в мануале написано что в консоли включается вывод в формате нмеа

SergejK
alexeykozin:

в мануале написано что в консоли включается вывод в формате нмеа

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

oleg70
rual:

сильно это сколько ±50?

На сколько я помню (давно это было), может и больше, просто интересовался, в своё время, принципами работы модулей, - там чистая математика и геометрия заточены в основном на позиционировании в плоскости, а высота как “бесплатное приложение”… Александр, а что, нет под рукой для эксперимента ни одного модуля ? а то могу сейчас прям на столе зацепить свой sim68 (продвинутый 66 каналов, чуйка уухх ))) и отчитаться, если надо.

rual
oleg70:

Александр, а что, нет под рукой для эксперимента ни одного модуля ?

Да модули то есть, кто их вверх-вниз таскать будет? Я думал может кто логами богат…

oleg70
rual:

может кто логами богат…

Аж самому стало интересно (😃), уже вот включил и смотрю, : высота по гуглю у меня 160 метров…, модуль при 10 спутниках (под крышей ж/б дома) показывает разброс +/- 15 метров, Но блин точно вокруг 160 (!), прыжки происходят при захвате/потере очередного спутника… двигаю модуль вверх/вниз - эффект странный: опускаю - высота растёт, поднимаю - падает… короче лажа (наверно переотражение и т.д.)
Вывод - не всё так плохо…(беру свои слова обратно:)) Только надо учитывать что я на свои платки ставлю дополнительный LPF (чтоб не забивался от видео 1.3 Ггц), может это влияет на общую картину… ды и такие эксперименты надо проводить долго в течение суток чтоб был адекватный результат, а так везде пишут что точность по высоте в несколько раз меньше точности по горизонтали…

alexeykozin

с ракетой жпс может и фикс потерять математика там не любит резких ускорений

rual
alexeykozin:

с ракетой жпс может и фикс потерять математика там не любит резких ускорений

Возможно, всё нужно проверять. Видимо сначала придётся делать “спускаемый аппарат” , поднимать на коптере и скидывать с тормозной ленточкой, писать логи. Зимой как раз удобно, внизу снег, не разобьётся. Стартовое ускорение мне мешать не будет, активный участок начинается с невесомости - верхней точки полёта.
Сам алгоритм руления отлажу в виртуале.

rual

Проверил на виртуалке полёт без компаса, на ровных участках полета есть небольшой увод, при выполнении правой спирали (разворота) рыск сводится к реальному, при левом - уходит на 90гр…

alexeykozin

нашел в ардукоптере одну печальку. поскольку арду изначальн описался под самоль - там нет алгоритма расчета воздушной скорости (силы воздействия ветра)

полагая что ожидаемое ускорение мультироторного аппарата в плоскости горизонта можно описать как G * косинус угла наклона ( питч и крен) разделенное на массу аппарата
полагая что ускорение от внешнего воздействия также может быть описано a = f/m

немного поразмыслив если методом калибровки найти пропорцию kff определяющую неточность измерений между
тягамоторов * COS(кренпитч) = ускорение_в_горизонтальной плоскости * kff то любые внешние воздействия на аппарат будут эквивалентны вычисляемой величине. исходя из константы веса аппарата и получаемой экспериментально парусности можно будет вычислить даже скорость ветра

тяга моторов = сумма векторов акселерометров

тоесть сила внешнего воздействия = сумма векторов акселерометров * COS(кренпитч) - ускорение_в_горизонтальной плоскости * kff

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

oleg70
alexeykozin:

тяга моторов = сумма векторов акселерометров

Это как ? И вообще, поделитесь секретом - как вычисляется линейное ускорение коптера по осям ? (никогда не копался в готовых кодах), есть подозрение что вещь эта довольно “шумная” и для расчетов непригодная…

alexeykozin

проекция акселей на плоскость горизонта?
github.com/diydrones/ardupilot/…/AP_AHRS_DCM.cpp#L…

_accel_ef[i] = _dcm_matrix * _ins.get_accel(i);
_accel_ef[i] - это 3д вектор где
_accel_ef[i].x - ускорение на север
_accel_ef[i].y - ускорение на восток
_accel_ef[i].z - ускорение вверх

_dcm_matrix - матрица поворотов (горизонт коптера)
_ins.get_accel(i) - конкретный акселерометр с номером i

или как читают регистры мпу чтобы получить значения гир и акселей?

oleg70:

есть подозрение что вещь эта довольно “шумная” и для расчетов непригодная…

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