Создание собственной системы стабилизации
Александр, а можете в своей системе проверить такую вещь.
вненсти ошибку в компас к примеру 15 градусов а затем накапливая ошибку жпс и инав скорости вычислить на сколько повернут компас?
Могу, только завтра, но смысла не вижу.
вот какая есть придумка:
дано в инерциалке есть векторы скоростей vel_x vel_y
при этом vel_x это скорость + на север
vel_y это скорость + на востокдано мы достоверно знаем курс по жпс при скорости от 50см в сек gpscourse диапазон 0-360 градусов
искомое - найти угол ошибки компаса
Идея понятна, но использовать угол между курсом и рыском для коррекции ахрс неправильно, так как расхождение углов может быть честно вызвано сносом ЛА боковым ветром и называется скольжением
Поэтому предлагаю внести скольжение как параметр в автопилот, а не ахрс.
Идея понятна, но использовать угол между курсом и рыском для коррекции ахрс неправильно, так как расхождение углов может быть честно вызвано сносом
heading (в терминологии ардупилота направление носа ЛА) тут непричем
coursegpsDeg360 - это курс жпс, снимаемый с навигационного модуля, он не меняется при вращении рамы в плоскости горизонта. даже если аппарат летит хвостом вперед изза сдувания ветром (направление вектора от предыдущей точки жпс к текущей)
courseInavDeg360 - это курс по показаниям инав, также независимо от положения носа ЛА с учетом ошибки компаса
courseInavDeg360 - это курс по показаниям инав, также независимо от положения носа ЛА с учетом ошибки компаса
Алексей, как получить курс ИНС, если ИНС у нас как таковой нет? Я хочу сказать, что курс по по отвязанной ИНС вообще не с чем не коррелирует. А если он подтянут к ГНСС, то это есть курс ГНСС запаздывающий по фазе подтягивающего регулятора.
А если он подтянут к ГНСС, то это есть курс ГНСС запаздывающий по фазе подтягивающего регулятора.
разумеется речь про подтянутую к ГНСС систему, при этом гипотеза в том что запаздывание существенно в части позиции, но поскольку ускорение содержит минимальную ошибку, а скорость как первая производная ускорения то курс исчисленный из арктангенса векторов скоростей будетвесьма достоверным.
пришла в голову идея вытянуть из лога полетас ошибкой компаса данные инав и жпс и попробовать прогнать их через этот алгоритм (расчитать разницу на всех стадиях “унитаза”)
разумеется речь про подтянутую к ГНСС систему, при этом гипотеза в том что запаздывание существенно в части позиции, но поскольку ускорение содержит минимальную ошибку, а скорость как первая производная ускорения то курс исчисленный из арктангенса векторов скоростей будетвесьма достоверным.
Собственно ошибка она и есть производная.
пришла в голову идея вытянуть из лога полетас ошибкой компаса данные инав и жпс и попробовать прогнать их через этот алгоритм (расчитать разницу на всех стадиях “унитаза”)
Это правильно, я уже писал про это,
при длительных поворотах истинный курс легко привязывается к вектору движения через отслеживание центростремительного ускорения. Для висящего коптера не актуально, с другой стороны для него актуально использовать инерциалку и при мелких перемещениях не так важен истинный курс.
тут проблема в другом, когда нет длительно действующей горизонтальной составляющей ускорения ахрс отвязывается от реального азимута в пользу показаний компаса. Сегодня проверил это в симе, выставил склонение 90 в контроллере (истинный курс повернут вправо на 90 гр), получается что при нахождении самоля в длительной спирали азимут пытается докрутиться до истинного, но после выравнивания компас возвращает его назад. Конечно можно уменьшить вес компаса и ввести автодокуртку склонения, но надо серьёзно править код… Да и для плавного полета копера этот метод работать не будет, слишком слабые СРЕДНИЕ горизонтальные ускорения, только если постоянно воронку крутить )). Есть мысли, буду думать.
вообще конечно лучше иметь ДИСС на борту, это бы решило все проблемы с горизонтом, ИНС и курсом. Вот есть такие модули для коптера надо нужно два ортогональных и чтоб лепестки аннтен не пересекались.
Еще вариант решения по азимуту: радиокомпас +ГНСС, зная положение оператора с аппой и своё текущее легко вычислить свой азимут, плюсом бонусы по возврату к точке старта, и ещё туда бы доплер получилась бы устойчивая ниточка к “оператору” даже без ГНСС. Вот такая моя буйная фантазия с утра))))
Кстати вот видео нашел
Вот настроил угловое управление таким квадриком (на шасси Ан-72), но удержание никак не могу ((( сильно странно себя ведёт
Кста, по поводу экспиримента с внесением в компас, 15гр я визуально не различаю. Видимо “растяг” между компасом и истинным курсом небольшой. Но как это на квадрике скажется пока непонятно. Как разберусь с удержанием позиции проверю.
Коллеги, интересно, котонить испытывал качество получения ГНСС высоты? Какова величина ошибки (относительной) и скорость вычисления? Интересует качество 3м вектора скорости и положения по ГНСС.
Коллеги, интересно, котонить испытывал качество получения ГНСС высоты? Какова величина ошибки (относительной) и скорость вычисления? Интересует качество 3м вектора скорости и положения по ГНСС.
делал, но это было достатоно давно, во времена 3329 медиатека и 6 юблокса
высота в обеих случаях параметр достаточно нестабильный, в идеальных условиях под открытым небом можно запросто получить ошибку 20-30м,
странность в том что если изначально жпс захватил с ошибкой высоту он так и будет показывать о относительной ошибкой по высоте достаточно долгое время,
но если сделать ему холодный рестарт то высота с высокой вероятностью перескочит
, в идеальных условиях под открытым небом можно запросто получить ошибку 20-30м,
странность в том что если изначально жпс захватил с ошибкой высоту он так и будет показывать о относительной ошибкой по высоте достаточно долгое время,
Мне длительная ошибка не важна, гораздо важней получить текущий вектор перемещения в пределах 2-3 мин
Коллеги, интересно, котонить испытывал качество получения ГНСС высоты?
Качество , мягко говоря, не очень… Зависит от того какие спутники используются модулем GPSв данный момент для расчета онной, если те которые “над головой”, то более менее точно, если в горизонте, то соответственно нет…, так что точночть динамически непредсказуемо скачет и довольно сильно… (испытывал только бюджетные модули EB230, EB500, SIM68, может у каких нибуть “крутых” подругому, не знаю…)
тогда когда ятестил - данные по высоте мне опказались совершенно недостоверными. поэтому и в ардуплейне и в ардукоптере игнорируется высота по навигационным системам
вернее не применятся к расчетам, но логируется.
но в любом случае сейчас приемники более продвинутые.
например юблокс выпустил новую серию модулей с raw data 8t на основе пары таких модулей возможно достичь сантиметровой точности используя ПО rtklib
вот недавно обсуждали комплект сантиметровой точности состоящий из
-модуля выполняющего роль станции дифф коррекции
-бортового модуля
-пары модемов для передачи данных
swiftnav.com/piksi.html
но ценник доступный пожалуй только юрлицам
вот кстати сравнительная табличка точности по высоте
docs.swiftnav.com/…/Understanding_Piksi_RTK_GPS_te…
так что точночть динамически непредсказуемо скачет и довольно сильно…
Олег, сильно это сколько ±50?
вот кстати сравнительная табличка точности по высоте
Спасибо за табличку, Алексей, но всё ж хотелось знать именно величину “скачков”.
Тут сыну ракету прикупил, при среднем ветре её на парашюте метров на 200 может отнести, есть задумка сделать подруливание к точке старта, но использовать барик внутри падающей трубки кажется бессмысленным.
кстати это будет первая хобийная крылатая ракета)
кстати это будет первая хобийная крылатая ракета)
))) даже если будет, то уже не первая. В тубе есть несколько видео.
В части ракетомоделизма, меня увлекла одна идея - сделать АП без искусственного горизонта. Идея примерна та же, что и у тебя измерение отклонения скорости ИНС от ГНСС. Только схема здесь такая: имеем простой угловой стабилизатор угловой скорости(СУС) (АКРО режим), он не позволит ЛА делать быстрые эволюции; имеем ГНСС на борту, которая дает радиус-вектор на точку старта, а так же вектор текущей скорости (усредненный за 1-2 сек); задача АП “интуитивно” совместить радиус-вектор на базу и вектор текущей скорости, не определяя своего положения в пространстве, просто немножко подруливая, в добавок к воздействию от СУС.
Пара таких модулей до сих пор в углу пылятся, на момент тестов я так и не получил я от них не то что РТК навигации, даже как обычный GPS их было вообще невозможно использовать. Вроде новые прошивки выходят, кто знает, может и заработает когда-нить.
Проблема видится только в качестве получения 3м вектора скорости (включая вертикаль), ну и высоты раскрытия парашюта.
даже как обычный GPS их было вообще невозможно использовать. Вроде новые прошивки выходят, кто знает, может и заработает когда-нить.
в мануале написано что в консоли включается вывод в формате нмеа
в мануале написано что в консоли включается вывод в формате нмеа
Так до встраивания в аппарат тогда даже дело и не дошло, было года полтора-два назад это. Тыкался с консолью, стабильного приема спутников так и не получил, а без этого о какой либо навигации мечтать не приходится. Недавно прошивал последнюю версию, ждал минут 20 на встроеной антенне - фикса не дождался. Спутников ловил очень мало и неустойчиво. Пасмурно конечно было, но ублокс работал тогда без проблем. На мой взгляд сыроват еще проект.
сильно это сколько ±50?
На сколько я помню (давно это было), может и больше, просто интересовался, в своё время, принципами работы модулей, - там чистая математика и геометрия заточены в основном на позиционировании в плоскости, а высота как “бесплатное приложение”… Александр, а что, нет под рукой для эксперимента ни одного модуля ? а то могу сейчас прям на столе зацепить свой sim68 (продвинутый 66 каналов, чуйка уухх ))) и отчитаться, если надо.
Александр, а что, нет под рукой для эксперимента ни одного модуля ?
Да модули то есть, кто их вверх-вниз таскать будет? Я думал может кто логами богат…
может кто логами богат…
Аж самому стало интересно (😃), уже вот включил и смотрю, : высота по гуглю у меня 160 метров…, модуль при 10 спутниках (под крышей ж/б дома) показывает разброс +/- 15 метров, Но блин точно вокруг 160 (!), прыжки происходят при захвате/потере очередного спутника… двигаю модуль вверх/вниз - эффект странный: опускаю - высота растёт, поднимаю - падает… короче лажа (наверно переотражение и т.д.)
Вывод - не всё так плохо…(беру свои слова обратно:)) Только надо учитывать что я на свои платки ставлю дополнительный LPF (чтоб не забивался от видео 1.3 Ггц), может это влияет на общую картину… ды и такие эксперименты надо проводить долго в течение суток чтоб был адекватный результат, а так везде пишут что точность по высоте в несколько раз меньше точности по горизонтали…
с ракетой жпс может и фикс потерять математика там не любит резких ускорений
с ракетой жпс может и фикс потерять математика там не любит резких ускорений
Возможно, всё нужно проверять. Видимо сначала придётся делать “спускаемый аппарат” , поднимать на коптере и скидывать с тормозной ленточкой, писать логи. Зимой как раз удобно, внизу снег, не разобьётся. Стартовое ускорение мне мешать не будет, активный участок начинается с невесомости - верхней точки полёта.
Сам алгоритм руления отлажу в виртуале.
Проверил на виртуалке полёт без компаса, на ровных участках полета есть небольшой увод, при выполнении правой спирали (разворота) рыск сводится к реальному, при левом - уходит на 90гр…
нашел в ардукоптере одну печальку. поскольку арду изначальн описался под самоль - там нет алгоритма расчета воздушной скорости (силы воздействия ветра)
полагая что ожидаемое ускорение мультироторного аппарата в плоскости горизонта можно описать как G * косинус угла наклона ( питч и крен) разделенное на массу аппарата
полагая что ускорение от внешнего воздействия также может быть описано a = f/m
немного поразмыслив если методом калибровки найти пропорцию kff определяющую неточность измерений между
тягамоторов * COS(кренпитч) = ускорение_в_горизонтальной плоскости * kff то любые внешние воздействия на аппарат будут эквивалентны вычисляемой величине. исходя из константы веса аппарата и получаемой экспериментально парусности можно будет вычислить даже скорость ветра
тяга моторов = сумма векторов акселерометров
тоесть сила внешнего воздействия = сумма векторов акселерометров * COS(кренпитч) - ускорение_в_горизонтальной плоскости * kff
как правило для внутрених целей стабилизации полета точное вычисления скорости воздушного потока не требуется. достаточно знать силу внешнего воздействия для того чтобы ее моментально компенсировать