Методы синтеза регуляторов 2

Ещё один теоретический пост который должен немного прояснить то как применять метод описанный в прошлый раз. Там остался вопрос о том где взять модель. И теперь надо сказать как решать эту проблему.


Вопрос о полноте модели

Одна и та же физическая система может быть описана в различной степени точно. Пусть примером будет коптер. Возьмем за состояние системы три угла полученные интегрированием данных гироскопа. Либо три не связанных компонента матрицы вращения, не важно. Размерность системы равна трем. Однако размерность коптера как механической системы гораздо выше. Попробуем сосчитать. Во первых это твердое тело, то есть шесть степеней свободы, по каждой есть положение и скорость, это дает 12. Каждая моторно-винтовая система имеет свое угловое положение и скорость, положением винтов можно пренебречь, оно не имеете значимого эффекта, важна только скорость, то есть для квадрокоптера добавляется 4. Складываем и получаем 16.

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

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

Метод первый

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

Метод второй

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

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

Метод прост но вычислительно дорог. Позволяет моделировать не только твердые тела, но и например веревки. Интерактивный пример для двухмерного случая можно увидеть по следующей ссылке.

sourceforge.net/projects/caphgame/

Таким образом можно получить нелинейную модель в численном виде, и так же численно её линеаризовать.

Теперь пора рассказать о линеаризации. Упростим задачу до одномерной. Имеется некоторая нелинейная функция одного аргумента.



Нужно получить её линейную аппроксимацию в окрестности некоторой точки. Обычно система координат построена так, чтобы этой точкой был ноль. Такая аппроксимация может быть получена как первые члены ряда Тейлора, или проще как линейная функция с коэффициентом равным производной линеаризуемой функции в целевой точке.



Не надо однако забывать о том, что мы работаем с дискретной системой. В этом случае коэффициент может быть оценен приближенно как частное конечных приращений.



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

Метод третий

Это модификация второго метода отличающаяся тем, что численная модель заменяется на реальную. Для этого понадобится, чтобы система уже хотя бы как-то работала и можно было получать навигационные данные. Отличие от предыдущего случая в том, что здесь нельзя выбирать состояние системы и смотреть, что будет на следующем шаге, вместо этого есть траектории системы, скорее всего не полные (только часть вектора состояния). Это означает, что нужно восстановить полное состояние (или обрезать модель) например с помощью наблюдателя, и осуществить линеаризацию например с помощью метода наименьших квадратов.
  • +2
  • 20 марта 2012, 01:26
  • amaora

Комментарии (13)

RSS свернуть / развернуть
Во первых это твердое тело, то есть шесть степеней свободы, по каждой есть положение и скорость, это дает 16.
А не 12?
0
  • avatar
  • Vga
  • 20 марта 2012, 02:04
Действительно, ошибка, но суть не меняется.
0
Но поправить стоит :)
0
Кстати, название топика тоже стоит поправить.
0
  • avatar
  • evsi
  • 20 марта 2012, 17:53
Выкладываете статью на известный ресурс, а заголовок не проверяете. Пожалейте великий и могучий.
+1
Пожалейте великий и могучий.

Т-с-с… Осторожно, тут по врееменам не особо любят читавших учебник русского языка. :D
0
«Для поддержания демократии нужно периодически производить показательные бомбёжки чужих территорий.» (С) )))))))))
0
Yeah, well… I'm gonna go build my own theme park, with blackjack and hookers.

xDDD
0
для третьего метода пожалуй надо еще добавить что потребуется фильтр калмана, что бы собрать все данные для наблюдателя
0
Фильтр Калмана это и есть наблюдатель, для стохастической модели системы и получаемых данных, если я его правильно понимаю. В трейтьем пункте проблема с наблюдателем в том, что для его синтеза нужно уже иметь модель системы, как и для фильтра Калмана. Возможно будет достаточно `ручного` вычисления недостающих частей вектора состояния.
0
Куда делись все картинки?!
0
ompldr.org наверно валяется.
0
У меня avast ругается на ompldr.org/какя-то_х… ня
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.