Прямая транскрипция нелинейной системы с функцией стоимости, зависящей от K матриц, возвращаемых изменяющимся во времени LQR - PullRequest
2 голосов
/ 12 июля 2020

Я работаю над реализацией алгоритма оптимизации траектории под названием DIRTREL, который, по сути, представляет собой прямую транскрипцию с добавленной функцией стоимости. Однако функция стоимости включает в себя K матриц, полученных путем линеаризации системы вокруг переменных решения (x, u) и использования дискретного изменяющегося во времени LQR. Мой вопрос заключается в том, как наиболее эффективно и кратко express это в drake, поскольку мой текущий подход описывает систему символически и приводит к чрезвычайно длинным символьным c уравнениям (которые будут только увеличиваться в длине с увеличением временных шагов) из-за рекурсивного характера уравнение разности Риккати, и если этот символ c подход даже подходит.

Для получения дополнительных сведений:

  1. Укажите мою систему как LeafSystem
  2. Объявить Математическая программа с переменными решения x, u
  3. Чтобы получить изменяющуюся во времени линеаризованную динамику, укажите класс, который принимает переменные динамики и решения на одном временном шаге и возвращает якобианы для этого временного шага с символом c. Якобиан ( args)
  4. Добавить функцию стоимости, которая принимает всю траекторию, так что все x, u

Внутри функции стоимости:

  1. Получить линеаризованные матрицы A_i , B_i, G_i (G_i для шума) для каждого временного шага с использованием класса, который принимает решение va riables и возвращает якобианы
  2. Вычислите стоимость TVLQR (S [n]) с помощью разностных уравнений Риккати, используя матрицы A_i и B_i и решив для Ks
  3. , верните стоимость математической программы, которая по сути, большая линейная комбинация K-матриц

С одной стороны, я не уверен в наиболее удобном способе символьного вычисления обратного, но меня больше всего беспокоит моя методология и то, будут ли эти символы c описание соответствующее.

1 Ответ

2 голосов
/ 13 июля 2020

Я думаю, что есть несколько деталей, которые стоит обсудить по DIRTREL:

  1. Стоимость до go матрицы S[n] зависит от линеаризованной динамики Ai, Bi. Я думаю, что в DIRTREL вам нужно будет решить задачу нелинейной оптимизации, которая требует градиента стоимости. Итак, чтобы вычислить градиент вашей стоимости, вам понадобится градиент S[n], который требует градиента Ai, Bi. Так как Ai и Bi являются градиентом функции динамики f(x, u), вам нужно будет вычислить градиент второго порядка динамики.
  2. У нас был документ о выполнении траектории оптимизация и оптимизация функции затрат, относящейся к стоимости LQR - go. DIRTREL внес несколько улучшений в нашу статью. В нашей реализации мы рассматривали S также как переменную решения, поэтому наши переменные решения равны x, u, S, при этом ограничение включает как динамическое ограничение x[n+1] = f(x[n], u[n]), так и уравнение Риккати как ограничение на S. Я думаю, что подход DIRTREL лучше масштабируется с меньшим количеством переменных решения, но я не сравнивал числовую производительность между двумя подходами.
  3. Я не уверен, почему вам нужно вычислять обратное символьно. Во-первых, какое обратное вам нужно вычислить? Во-вторых, Drake поддерживает автоматическое c дифференцирование для вычисления градиента числового значения. Я бы рекомендовал выполнять числовые вычисления вместо вычисления символов c. Поскольку при численной оптимизации вам нужны только значение и градиент стоимости / ограничений, обычно гораздо эффективнее вычислять эти значения численно, чем сначала получить выражение symboli c, а затем вычислить выражение symboli c .
...