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

smalltim

Борис, под конец режима автономного полета (полет по точкам длился 38 секунд, еще 8 секунд возврат на базу, потом ручное), перед включением ручного управления самолет удаляется от базы со скоростью около 40-50кмч по ГПС, так что 100 там нету.
Удаляется прямо, хотя АП пишет, что до базы нужно довернуть на 150 градусов влево (правильно считает, ГПС данные и траектория подтверждают), выставляет крена 40 градусов влево (у Вас, очевидно, стоит чувствительность по курсу 50% и пределы на крен в поворотах 40 градусов). И при этом АП считает, что с датчиков как раз идут требуемые 40 градусов крена влево.
Да, вот она, проблема с датчиками. Ваш самолет может лететь прямо с креном 40 градусов?

KBV

Нет конечно, не может. Спасибо 😃 Попробую протереть спиртом, если не поможет- обращусь за новым.

ps Ах вотано в чем дело! А то уже начал сомневаться в своей адекватности- как мог летать с таким горизонтом???.. А оно плавающее было и вылазило в неподходящий момент (наверное на холоде термоусадка дубела или при деформации фюзеляжа). Ну тогда все понятно 😃
Еще раз спасибо! Вопрос решен!

smalltim

Настроил общение АП и IMU по I2C, вбил в Контрольную Панель соответствующие опции (галка подключения IMU вместо пиродатчиков, калибровка компаса IMU).
Дополнительных настроек IMU не предполагается.
Выбор положения платы IMU не предполагается. Платка компактная, 26х28мм, на шлейфике, разместить ее как положено не проблема на любой модели.

На столе система ведет себя превосходно. Ошибка калибровки компаса или наличие мощных магнитных помех на разумном расстоянии (30-40см) не дает погрешностей на углы крена и тангажа, ошибка по углу курса не выше 10 градусов.
Любые сколь угодно продолжительные манипуляции с платой IMU в руках не выбивают плату из стабильного режима - я не могу вертеть-качать-дергать ее так быстро, чтобы сбить горизонт.
Ударные нагрузки (бросить плату на поверхность), разумеется, сбивают горизонт, время восстановления зависит от того, насколько сбит горизонт, скорость восстановления по углам крена-тангажа оголо 5 градусов в секунду, по углу курса - около 3 градусов в секунду. Это сейчас фиксировано, но, наверное, будет настраиваться автоматически со стороны АП.

Вбил в IMU анализ шумов/насыщения на датчиках (для предотвращения раскачки при вибрациях или слишком высокой чувствительности системы и т.д.), но пока не использую со стороны АП.
Вбиваю 2 алгоритма компенсации центробежных ускорений (по данным от АП и без них), плюс интегрирование линейного положения модели в пространстве для квадриков-вертолей (для четкого висения без ползания из-за дрейфа GPS), и, пожалуй, всё.

Обновление прошивки IMU не предполагается, поэтому необходимо сейчас как можно лучше вылизать всю математику получения углов и положения аппарата, а логику выбора режимов компенсации, подстройки чувствительности и т.д. возложить на АП - он и так уже 90% этой работы делает, работая с пиродатчиками.

Сейчас цикл опроса датчиков+математики IMU вертится с частотой около 600 Гц. Думаю, этого достаточно для любых самых шустрых аппаратов.
АП вынимает данные из IMU с частотой 125 Гц. Думаю, для самых шустрых аппаратов надо будет поднять до 250 Гц, и перейти на быстрый PPM или I2C.

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

baychi
smalltim:

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

А если завтра изобретут алгоритм получше Марга? 😃
Что-то плохо верится, что сразу получится версия не требующая доработок после первых испытаний в воздухе.
Но в любом случае готов проверить новый IMU, как только появится опытная партия.

smalltim

Во-первых, без испытаний на всех типах моделей IMU выбущена не будет.

Во-вторых, все ключевые параметры математики IMU могут изменяться со стороны АП, так что главный тут, по-прежнему, АП, а IMU для него лишь инструмент - набор датчиков со своей математикой. Если надо, АП может быстро вправить мозги плате IMU.

В-третьих, в случае крайней необходимости можно запилить обновление прошивки IMU средствами АП.

Юрий_Захаров
smalltim:

Обновление прошивки IMU не предполагается

Элементная база не позволяет? Или так и задумано?

smalltim:

возложить на АП - он и так уже 90% этой работы делает, работая с пиродатчиками.

Но ведь с пиродатчиками всё по-другому?

baychi
smalltim:

без испытаний на всех типах моделей IMU выбущена не будет.

Это сколько же еще ждать? 😃

PS: Если-б ты с IMU платки брал только сами показания MEMS-ов, а алгоритм определения положения крутился бы на АП - перещивка скорее всего не потребовалась. Но эта задачка явно не для Меги…

smalltim
Юрий_Захаров:

Элементная база не позволяет? Или так и задумано?

Так задумано, по крайней мере, сейчас. Я же обновляю прошивку IMU, пока работаю над ней 😃

baychi:

Это сколько же еще ждать?

Совсем недолго. Для отработки 90% функций IMU достаточно сидеть дома и грубо говоря вертеть плату во все стороны всячески, включая неочевидные и диковинные варианты, погода-зима-холод - не помеха. Оставшиеся 10% проверяются в поле.

baychi:

PS: Если-б ты с IMU платки брал только сами показания MEMS-ов, а алгоритм определения положения крутился бы на АП - перещивка скорее всего не потребовалась. Но эта задачка явно не для Меги…

Конечно, не для Меги.
Тут смысл в том, чтобы реализовать на IMU правильный устойчивый алгоритм определения углов и положения, а со стороны АП ненавязчиво поправлять IMU, руля логикой, коэффициентами, компенсациями и т.д.

Еще одна важная фишка - я стараюсь максимально упростить настройку IMU для пользователя. Т.е., в идеале, к тому, что сейчас есть, добавляется одна галка в Контрольной Панели - “IMU подключена” и калибровка компаса.
Остальное - коэффициенты чувствительности и т.д. - уже есть и так, для работы с пиродятчиками. А то, что я не хочу показывать пользователю, я настрою автоматически.

Ну, и для всяких коптеров надо настраивать тип аппарата, но это к IMU не относится, это настройки АП.

c4Faraon
smalltim:

Совсем недолго. Для отработки 90% функций IMU достаточно сидеть дома и грубо говоря вертеть плату во все стороны всячески, включая неочевидные и диковинные варианты, погода-зима-холод - не помеха. Оставшиеся 10% проверяются в поле.

А можно выложить видеоролик как это шустро выглядит на компе (отработка углов и наклонов).
Просто на платке ОпенПилота все очень шустро на компе отображается, хочется сравнить

how-eee
smalltim:

Обновление прошивки IMU не предполагается

А не получится как с фишкой?

baychi:

Но в любом случае готов проверить новый IMU, как только появится опытная партия.

+1. возьмите меня тоже в тестеры!

ps продаю комлект пирометров 😉 😁

river3
c4Faraon:

А можно выложить видеоролик как это шустро выглядит на компе (отработка углов и наклонов).
Просто на платке ОпенПилота все очень шустро на компе отображается, хочется сравнить

Саня , Тим уже выкладывал , вот видео rcopen.com/forum/f90/topic205896/3592

Nikki
smalltim:

Добавление: в низу окошка редактирования полетных точек надо из выпадающего списка выбрать тип карты - спутник, ландшафт, карта, и т.д.

Соответствующий скриншот Контрольной панели из Мануала:

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

PS.
А нет ли в природе симулятора, который может сливать данные о полете в АП (вместо телеметрических датчиков), и рулиться, соответственно, автопилотом? Т.е. по схеме пульт–>приемник–>АП<–usb–>симулятор.

smalltim
Nikki:

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

Да, не совсем удобно, согласен. +1 в список хотелок, попробую сделать так, как Вы предлагаете.

ilves

Жизненный вопрос возник, может разбирали?
Как будет работать автопилот, если мотор/регуль сгорел.
Не завалит модель?
Как заранее проверить поведение и настройки подправить?

Вот была у меня возможность проверить, но как-то не сообразил.
А повторить сложно.
Вылетать маленький аккум до 0 и включить? Опасно… да и аккум жалко.

smalltim

Если мотор/регуль сгорел, то есть несколько вариантов поведения, в зависимости от текущего режима.
В любом режиме главная беда - потеря скорости.

  1. В ручном режиме просто сажаем модель на ближайшую подходящую площадку и всё.
  2. В режиме стабилизации или в Круиз-Контроле без удержания скорости АП адекватно рулит моделью до тех пор, пока присутствует скорость и, следовательно, управляемость. Рулите как в ручном режиме, планируя, просто со стабилизацией полет поспокойне и поплавнее. В целом - так же, ищем место, сажаем модель и всё.
  3. В круиз-контроле с удержанием скорости, в автовозврате и в полете по точкам АП будет стремиться удержать целевую высоту, но модель при этом будет плавно снижаться - мотора-то нет.
    Постепенно требуемый положительный тангаж (и, следовательно, отклонение РВ, элевонов или что там еще поставлено на модели) станет таким высоким, что модель начнет валиться на крыло. Свалится, наберет скорость, выровняется. Опять свалится, наберет скоротсь, выровняется. И так до самой земли.

В общем, конечно, не морква прямиком в землю, но моделька будет помята, ничего хорошего.

ilves

Самое главное-как раз режим автовозврата(с остальными понятно).
Скорее всего, если модель далеко, видео и связь пропадёт на довольно большой высоте(запросто на 100 и более метрах). Т.е. ещё долго ей лететь на автопилоте.

Есть ли возможности подстроек автовозврата для планирования?
Чувствительность по высоте снижать? Плохо может оказаться для нормального полёта…
В любом случае будет периодическое сваливание?
Как проверить такой режим на практике, заранее?
Круиз-режим с удержанием высоты и газа в 0% будет полностью аналогичен?

smalltim
ilves:

Есть ли возможности подстроек автовозврата для планирования? Чувствительность по высоте снижать? Плохо может оказаться для нормального полёта…

Первое, что в голову приходит - ограничить отрицательный тангаж в автономном полете (автовозврат, полет по точкам) где-нибудь в минус 2-3 градуса. Тогда АП просто не сможет резко снижаться до целевой, будет планировать.
Однако ж, у меня в Контрольной Панели стоит ограничение, позволено ставить -15 градусов или больше: защита от неправильных действий юзера. А вдруг он поставит 0 или очень маленькое значение, и что будет делать АП, когда надо реально быстро снижаться? 😃

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

ilves:

В любом случае будет периодическое сваливание?

Думаю, да. Зависит от модели, но шанс 99%.

ilves:

Как проверить такой режим на практике, заранее?

Выделить на АП сквозной канал, повесить его на тумблер на аппе, замиксовать его во всех режимах (ручное/стаб-круиз/автовозврат-полет по точкам) микшерами АП на выходной канал газа, с инвертом и с весом 100%. Тогда АП в любом режиме будет миксовать значение с тумблера на газ. Этакий Throttle Cut силами АП.

На выходном канале газа будет расчитанный автопилотом газ, если тумблер в нуле, и рассчитанный автопилотом газ минус 100% (конечно, обрезанный по калиброванному диапазону в канале газа, то есть, в итоге, 0%) при тумблере в 100%.

Врубаем автовозврат, самик летит как обычно. Щелкаем тумблер в 100% и смотрим, как ведет себя с придушенным газом.

Микшера и сквозные каналы АП - сила! 😃

ilves:

Круиз-режим с удержанием высоты и газа в 0% будет полностью аналогичен?

Да. Можно не плясать с микшерами и сквозными каналами (но лучше это попробовать, очень полезная штука).

Только в круиз-контроле нет возможности удерживать газ. Есть возможность удерживать скорость, АП в этом режиме играет газом сам.

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

ilves
smalltim:

Первое, что в голову приходит - ограничить отрицательный тангаж в автономном полете (автовозврат, полет по точкам) где-нибудь в минус 2-3 градуса. Тогда АП просто не сможет резко снижаться до целевой, будет планировать.

Нет, я не об этом немного.
В данном случае нам наоборот, хочется снизится до 0, пусть даже с приличным тангажём вниз, зато прямо, по заданному курсу.
Но автопилот будет пытаться удержать целевую высоту и завалит модель. Тогда уж наоборот, зажимать тангаж вверх. Но это всё неправильно, как я понял.
Похоже без правок алгоритма не обойтись. Действительно, режим специфический. Вся “защита от дурака” строится на попытках сохранять высоту и скорость газом. Тут получается фактически некий режим автопосадки, да ещё и вынужденной.

Про микшеры понял, спасибо. Попытаюсь настроить. Хотя и круизом можно.

smalltim
ilves:

В данном случае нам наоборот, хочется снизится до 0, пусть даже с приличным тангажём вниз, зато прямо, по заданному курсу.

Если скорости при нулевом (или выставленном из Контрольной Панели для этого аварийного режима) тангаже достаточно для адекватного управления моделью, то никуда он с курса на базу не денется. Контроллеры скорости, курса и высоты полностью развязаны. Т.е. для этого аварийного режима надо отрубить контроль скорости и высоты, выставив нулевой тангаж и нулевой газ, и идти на базу, управляя креном-тангажом как в режиме стабилизации при планировании.

Если надо, могу завести крыжик “лететь на базу” / “садиться спирально” и дать выбрать желаемые крены-тангажи при поломке мотора, нивапрос.

baychi

А если не мотор сгорел, а серва сломалась? Или хвост отлетел?
ИМХО, ставить вопрос о спасении модели автопилотом при отказе оборудования - бессмысленно, так как вариантов бесконечное множество и только разум человека в ручном режиме может нам здесь помочь.
А как показывает практика - посадка на автопилоте с неработающем движком (сгорел или энергия кончилась) обычно проходит неплохо, - модель садиться горизонтально и до последнего идет домой. 😃

smalltim

Александр, я всё понимаю 😃
Но ты же сам знаешь.
Рядовой пользователь, может быть, сразу и не оценит то, что за него какой-то дядя заранее подумал о возможных проблемах. Но если вдруг у кого-то сгорит мотор, и человек увидит не кувырки, а спокойно садящийся спиралью или неспешно плюхающий на базу без мотора самик, а в очках у него будет написано “бяда, насяльника, мотор айяйяй, делаю, что могу, всё под контролем”, то нервных клеток у него убавится сосвем несильно, и он поставит тому дяде еще один плюс в своей голове.
А поставить крыжик в Контрольной Палели в какое-то безопасное значение по умолчанию, добавить в АП пару строчек кода, и пусть этот кусочек кода живет себе тихонько про запас - в данном случае не очень большая проблема 😃

ilves

Не вижу ничего плохого в желании предусмотреть ВСЕ возможные варианты спасения модели с помощью автопилота(сохранение максимальной целостности:)
Сдаётся мне, что вариантов не так уж и много.
Бессмысленно рассматривать случаи, когда модель становится неуправляемой или разрушается, или происходит полный отказ важного оборудования…
Отказ одиночных серв надо заранее лечить удвоением рулей. Т.е. бороться за сохранение управления мерами, не относящимися к автопилоту. Ну и т.д.
А если модель управляется и есть возможность настроить как надо автопилот-почему нет?

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

smalltim
ilves:

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

Есть идеи даже на этот случай, к лету, думаю, опробую.

atail

Может быть, имеет смысл сделать режим удержания воздушной скорости больше какого-то минимального значения? А в случае снижения воздушной скорости - тангаж уменьшать до набора скорости. В этом случае будет планирование с максимальным безопасным тангажом. А по спирали или по прямой - на выбор.
Или, если увеличение газа не помогает набрать воздушную скорость, уменьшать тангаж.