селезень: поиск фиксированных точек и точек обрезки системы - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть LeafSystem в Drake, с динамикой \ dot {x} = f (x, u), написанной в DoCalcTimeDerivatives. Фиксированные точки и точки обрезки этой системы не тривиально найти. Следовательно, я представляю, что для нахождения фиксированных точек нужно написать задачу нелинейной оптимизации:

найди х, ты; S.T. Р (х, у) = 0

или

найди х, ты; мин ф (х, и) ^ 2

Мне интересно, как мне воспользоваться преимуществами динамики, которую я уже написал в DoCalcTimeDerivatives LeafSystem, и написать нелинейную оптимизацию для поиска по x и u, чтобы найти неподвижные точки и точки обрезки в селезенке? Будем весьма благодарны за некоторые существующие примеры в Drake!

1 Ответ

0 голосов
/ 01 мая 2018

Это просто написать для вашего случая (и только немного сложнее написать для общего случая ... это в моем списке TODO).

Предполагая, что ваш завод поддерживает символьные данные, тогда, глядя на оптимизацию траектории, вы поймете, как вы можете написать ограничение: https://github.com/RobotLocomotion/drake/blob/master/systems/trajectory_optimization/direct_transcription.cc#L212 (версия autodiff чуть ниже):

fwiw, общий случай из старой версии Matlab здесь: https://github.com/RobotLocomotion/drake/blob/last_sha_with_original_matlab/drake/matlab/solvers/FixedPointProgram.m

...