Специальные цены   новые товары
Закрытая тема
Показано с 1 по 17 из 17

Идея улучшения стаб. мода

Тема раздела Коптеры. Комплектующие, сборка, настройка. в категории Квадрокоптеры и мультироторы; Возникла идея добавить немного "ума" в алгоритм стабилизации (в стаб. мод. или левел мод. по другому). Сперва решил написать это ...

  1. #1

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19

    Идея улучшения стаб. мода

    Возникла идея добавить немного "ума" в алгоритм стабилизации (в стаб. мод. или левел мод. по другому). Сперва решил написать это в мультивии ветке, потому как эксперементировать собираюсь на нем, но решил создать отдельную тему, чтобы взвесить все за против, почерпнуть идеи и возможно узнать, вдруг подобное уже реализовано в других проектах.
    И так стаб. мод. хорош тем, что в идеале при отпускании стиков, коптрер пытается выравняться по горизонту, НО при этом когда горизонт достигнут, он пролжает двигаться в прежнем направлении по инерции... В случае с ГПС проблема разрешается понятно и легко (ну или легче) А если на борту только гира и аксель?!
    В общем идея такова: добавить логику противодействия при отпускании ролл/питч стиков, типа отпустили стик, а коптер привстает на дыбы для более быстрой оставновки. Ясное дело что в состояние покоя его таким образом не вывести, но если это поможет при отпускании стиков (на скорости) остановить его с точностью в 60-80% то былоб очень даже ничаво. Т.к. при движении выше 20-30 км/ч и если зарулиться потеряв управление, мне лично не помогало просто кинуть стики... Ну и как правило крЭшшш...

    Как можно реализовать:
    1. Сохраняем историю манипуляций стиками последние 2-3 секунды с шагом примерно 100мс (учитывая среднюю скорость реакции человека в 300мс). Почему 2-3 секунды? Это примерное время чтобы коптер достиг желаемой скорости при отклонении стика, т.е. когда его ускорение уже стремится к нулю а скорость постоянна...
    2. Проверяем стики на ноль (т.е. когда они в центре). Если стик в нуле, ищем его максимальное зафиксированное отклонение в истории.
    3. Находим амплитуду отклонения стика и примерное время воздействия с этой амплитудой.
    4. Формируем/симулируем обратное отклонение стика в соответствии с вычисленной амплитудой, временем воздействия на стик и коэф. (подбираем эмпирически). Возможно сюда даже придеццо прикрутить ПД-регулятор. Т.е. не только обратное пропорциональное воздествие, но и дифф. для увеличения воздействия в начале переходного процесса.

    Нюансы:
    1. Компенсация не применяется на мелкие и быстрые отклонения. Подразумевается что это корректировки пилота не требующие обратного воздействия.
    2. При отклонении стиков от нуля, немедленный сброс компенсации. К примеру, оператор отклонил по РОЛЛ на 30гр., а потом в обратную сторону на -20гр.

    Очевидные минусы:
    - в умерернный или сильный ветер это будет только мешать, т.к. будет давать компенсацию по направлению ветра. Т.е. к примеру пилот держит аппарат под углом для корректировки на ветер. Затем отпускает стик и обратная компенсация как пружина толкает его по ветру. Потому желателен штиль, либо лишь слабый ветерок. Я в принципе только так и летаю, иначе сломанные винты и гнутые лучи не приносят удовольствия .

    Что думаете?!

  2.  
  3. #2

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,561
    Может, надо раздельно суммировать отклонения*время по осям за последние * секунд?
    Roll: -30*1сек, +20*1сек, -20*0.5сек = -20
    Pitch: 0, 0, +10*3сек = +30
    Значит, противодействием будет плавнонарастающее и затухающее отклонение Roll --20, Pitch -+30

    + нормализация. Чтобы не зарулился под 45 градусов.

  4. #3

    Регистрация
    13.01.2011
    Адрес
    Москва, ЗАО
    Возраст
    42
    Сообщений
    17,432
    Записей в дневнике
    26
    Саш, я б не включал у себя такую функцию,
    я бы бросил все силы на чтонибудь типа усовершенствования режима с гпс или с каким то сенсором оптическим, вместо сонара, неудели нет лазерных дальномеров под ардуину?

  5. #4

    Регистрация
    02.06.2011
    Адрес
    Калуга
    Возраст
    32
    Сообщений
    191
    Цитата Сообщение от Covax Посмотреть сообщение
    Саш, я б не включал у себя такую функцию,
    я бы бросил все силы на чтонибудь типа усовершенствования режима с гпс или с каким то сенсором оптическим, вместо сонара, неудели нет лазерных дальномеров под ардуину?
    Кстати на счет лазерных дальномеров тоже мысль посещала. Но гуглеж выдает какие-то странные ценники. Дешевле, наверное, разобрать китайский дальномер без отражателя будет.

  6.  
  7. #5

    Регистрация
    13.01.2011
    Адрес
    Москва, ЗАО
    Возраст
    42
    Сообщений
    17,432
    Записей в дневнике
    26
    Вот вот, расставить их правильно и держать позицию по ним, даже хотя бы с помощью белого круга на земле, но чтоб он оттуда даже на полметра не вылезал.
    И еще момент, почему бы на коптере не разметить пару гир на концах перпендикулярных лучей, чтобы помогали основной гире по центру понимать, колбасит коптер или нет? или так не угловые, а линейные скорости?

  8. #6

    Регистрация
    02.06.2011
    Адрес
    Калуга
    Возраст
    32
    Сообщений
    191
    Для этого на концах лучей аксели надо ставить.

  9. #7

    Регистрация
    13.01.2011
    Адрес
    Москва, ЗАО
    Возраст
    42
    Сообщений
    17,432
    Записей в дневнике
    26
    Ну аксели, они сейчас стоят копейки же, пару акселей то можно поставить.

  10.  
  11. #8

    Регистрация
    11.10.2009
    Адрес
    г.Коломна (Моск.обл)
    Возраст
    53
    Сообщений
    5,990
    Цитата Сообщение от iBat Посмотреть сообщение
    Кстати на счет лазерных дальномеров тоже мысль посещала. Но гуглеж выдает какие-то странные ценники. Дешевле, наверное, разобрать китайский дальномер без отражателя будет.
    Лазер - это сильно! От дальномера китайского наврядли подойдет.Лежит такой. В нем единственный плюс - безопасный лазер. А вот вариант подобие мышки лазерной...и код обработки уже не раз прописан .... Плюс хорошо зарекомендовалось в Флайменторе и в Хеликомандере (правда там по картинке, стаб. изображения). Но принцип похож. Пусть для начало не высоко, потом и оптику подтянуть можно. Еще можно использовать стаб изображения через оптику фотика , как то так это представляется.... В нем ведь это все есть. И по уровню выше будет чем у Хелика. И хелик бы высако держал , но оптика не позволяет

  12. #9

    Регистрация
    13.01.2011
    Адрес
    Москва, ЗАО
    Возраст
    42
    Сообщений
    17,432
    Записей в дневнике
    26
    Нет, вот именно надо чтобы высоко и стабильно Знаем мы эти мульки с мышками, нужен чтобы на 50метрах висел точно

  13. #10

    Регистрация
    11.10.2009
    Адрес
    г.Коломна (Моск.обл)
    Возраст
    53
    Сообщений
    5,990
    Цитата Сообщение от Covax Посмотреть сообщение
    Знаем мы эти мульки с мышками, нужен чтобы на 50метрах висел точно
    Тогда брать оптику и матрицу от фотика, как основу. Может и правда кто сделает. Сложно это конечно

  14. #11

    Регистрация
    13.01.2011
    Адрес
    Москва, ЗАО
    Возраст
    42
    Сообщений
    17,432
    Записей в дневнике
    26
    А надо ли хорошую оптику и матрицу, если по лучам развесить лазеры на расстояние уже около 30см, требование к качеству оптики как бы снижается, нет?

  15. #12

    Регистрация
    11.10.2009
    Адрес
    г.Коломна (Моск.обл)
    Возраст
    53
    Сообщений
    5,990
    Цитата Сообщение от Covax Посмотреть сообщение
    А надо ли хорошую оптику и матрицу, если по лучам развесить лазеры на расстояние уже около 30см, требование к качеству оптики как бы снижается, нет?
    Тут ничего не могу сказать.... здесь у меня темное пятнышко. Хотя каКчество оптики никто не отменял. И добавлю, из теории наведения лазерных систем ....по интенсивности отраженного луча. С лазером именно это используется в силу физических свойств. И совсем нет необходимости вешать несколько лазеров, Нужно будет еще и импульсное кодироване вводить каждому источнику. Все только усложнится при этом

  16. #13

    Регистрация
    15.10.2002
    Адрес
    Белгород, Москва
    Возраст
    47
    Сообщений
    479
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Может, надо раздельно суммировать отклонения*время по осям за последние * секунд?
    Roll: -30*1сек, +20*1сек, -20*0.5сек = -20
    Pitch: 0, 0, +10*3сек = +30
    Значит, противодействием будет плавнонарастающее и затухающее отклонение Roll --20, Pitch -+30

    + нормализация. Чтобы не зарулился под 45 градусов.

    "
    stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
    stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; //вот это оно и есть
    stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
    stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; //вот это оно и есть
    "
    EE_Parameter.Stick_D - а это переменная которую нужно подбирать!

  17. #14

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,561
    Цитата Сообщение от botvoed Посмотреть сообщение
    EE_Parameter.Stick_D
    На "крутилку" пульта установить, в полете с пульта "подкручивать".

  18. #15

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Может, надо раздельно суммировать отклонения*время по осям за последние * секунд?
    Roll: -30*1сек, +20*1сек, -20*0.5сек = -20
    Pitch: 0, 0, +10*3сек = +30
    тут надо хорошо подумать + проверять на практике... пример: держим ролл на +30 и через секунду коптер набрал макс. скорость. Стик не отпускаем... скорость таже... прошло 2 сек... И если все просуммируем, то результат для формирования противодействия по Ролл будет не верным (в 2 раза болше). Т.е. суммировать по идее надо только "первую" секунду, пока идет набор скорости. Как вариант фиксировать например можно не изменяемые отклонения стика в течении делта тайм (0.5 сек к примеру)...

    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Значит, противодействием будет плавнонарастающее и затухающее отклонение Roll --20, Pitch -+30
    не обязателно плавное противодействие... изменять/корректировать же будем отклониния стиков... т.е. потом это все пройдет через ПИД регулятор... у меня такие настройки - как резко не дергай стики, наклоны отрабатывает плавно (высокий "Д" параметр...в мултибии он не классик и задает "плавность")

    Цитата Сообщение от Musgravehill Посмотреть сообщение
    + нормализация. Чтобы не зарулился под 45 градусов.
    тут поясните если можно


    Цитата Сообщение от botvoed Посмотреть сообщение
    "
    stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
    stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; //вот это оно и есть
    stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
    stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; //вот это оно и есть
    "
    EE_Parameter.Stick_D - а это переменная которую нужно подбирать!
    я так понял это из микрокоптера?
    http://forum.mikrokopter.de/topic-20272.html
    дома поразбираюсь... сейчас на работе...

  19. #16

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,561
    Цитата Сообщение от mahowik Посмотреть сообщение
    + нормализация. Чтобы не зарулился под 45 градусов.

    тут поясните если можно
    Александр, я про ограничения управляющего воздействия. Чтобы не "насуммировало" 90 градусов.
    Даже хороший алгоритм я бы сверху ограничил в рамки.

  20. #17

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Александр, я про ограничения управляющего воздействия. Чтобы не "насуммировало" 90 градусов. Даже хороший алгоритм я бы сверху ограничил в рамки.
    проблемы не будет т.к. управляющее воздействие будем вносить в отклонения стиков, а ограничение на макс. угол отклонения уже есть в ПИД регуле
    Код:
    // 50 degrees max inclination
          errorAngle = constrain(2*rcCommand[axis],-500,+500) - angle[axis] + accTrim[axis]; //16 bits is ok here

Закрытая тема

Похожие темы

  1. GYA350 в моде удерживания
    от spyder3 в разделе Бортовая электроника
    Ответов: 137
    Последнее сообщение: 07.06.2012, 19:12
  2. улучшение барахолки
    от Stracher в разделе Пыльный чулан
    Ответов: 1
    Последнее сообщение: 04.05.2011, 19:57
  3. переделка Turnigy 9X из мод 1 в мод 2
    от kudra в разделе Аппаратура, гироскопы, гувернеры, электроника
    Ответов: 7
    Последнее сообщение: 13.04.2011, 13:21
  4. Продам телевизор Philips мод. 29РТ9008/12
    от ookorokov в разделе Барахолка. Разное
    Ответов: 0
    Последнее сообщение: 22.11.2010, 15:33

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения